分析原理飼育係要求

飼育係は、データを格納することが可能であるので、我々はデータベースとしてそれを理解することができ、実際には、その基本原理自体とデータベースが類似しています。

原則データベース

私たちは、データベースは、データを格納するために使用されていることを知っているが、データはメモリまたはディスクに保存することができます。飼育係は、実際には2つの組み合わせである、持続性の目的を達成するために、ディスク上の飼育係に格納されたデータは、高速アクセスを実現するために、先のメモリに同期します。

:実際には、学生が飼育係、飼育係を使用したことを知っている必要があり、ノードの2種類があり、永続ノード一時的なノードが

  • 永続ノード:イニシアチブを削除する場合を除き、ディスク上の永続的で、常に存在します。
  • 一時的なノードが自動的に削除されます一時的なノードの満了時に、この一時的なノードのセッションを作成し、メモリ内だけで、ディスク上に保持されません。

データベース処理データの原則

確かに、クエリ要求ノードなどを作成、変更、削除する受信クライアントにデータベースとして。

飼育係には2つのカテゴリに分類され、要求:

  • トランザクション要求
  • 非トランザクション要求

トランザクション要求

飼育係は、通常、クラスタ飼育係内の各ノードのデータの一貫性保持する必要がある、つまり、クラスタモードで実行します。しかし、クラスタとMySQLは同じではありません。

  • MySQLクラスタは、サーバは、マスタサーバからの非同期同期データであるから、この中間の間隔が比較的長くてもよいです。
  • クラスタノードが書き込み要求操作を受け付けたときに飼育係クラスタは、ノードが他のノードにこの要求の書き込み操作をする必要が一致各ノードにデータを達成するように、他のノードの同期は、書き込み要求動作を実行するように、それは、データの一貫性です。私たちは通常、飼育係がそのCAP理論CPだけのことを意味します保証すると言います。

飼育係基礎となるクラスタ、データの整合性を確保する方法です実際に、それは、二相が半分+メカニズム以上のものをコミット私のマイクロチャネル公共数を見ることができますバックが基本となる実装を導入するために、別の記事を書くようにするために、興味を持っています:1:25

これらの操作は、データに影響を与えるので、クラスタ全体でこれらのトランザクション操作を確認しますので、上記の分析と組み合わせて、更新操作、新しい操作、削除を、ので、これらの操作はトランザクション要求です:トランザクション要求が含まれています。

非トランザクション要求

そして、非トランザクション要求を理解したい、クエリ操作と同様に、これらの操作は、遊び場のデータには影響しませんが存在し、そこにトランザクションのクラスタを維持する必要がないので、これらの遊び場は、非トランザクション要求です。

非トランザクション要求を扱うよりトランザクション要求に対処する飼育係は、はるかに複雑です

データはディスク上に発現しています

私たちは今、飼育係、という名前のノードのデータノードがあると/datanode、述べている125ノードは、永続的なノードであり、ノード情報がファイルに格納されていること。

我々はすべてこの方法は、方法1デ​​ィスクに格納されている次のファイルに似ていると思うことがあります。

ノード名 ノードのコンテンツ
/データノード 125

しかし、離れて、この表現から、というのがもう一つの方法があるスナップショット+トランザクションログなど方法2としては、:

現在のスナップショット:

ノード名 ノードのコンテンツ
/データノード 120

現在のトランザクションログ:

トランザクションID オペレーティング ノード名 修正前のノードのコンテンツ ノードの内容は変更され
1000010 更新 /データノード 120 121
1000011 更新 /データノード 121 125

一見すると、第二の方法は、方法よりも複雑で、より多くのディスクを取ります。しかし、我々は、上記した、飼育係は、トランザクション要求に対処してクラスタ内のノードがあることが必要トランザクション操作ので、ここでは、他のノードに同期したトランザクション操作は、他のノードに同期して表示されるためには、永続的でなければなりません異常な補償。そこで、登場し、トランザクション・ログを実際には、トランザクション・ログ・データも実行されているロールバックをこの2フェーズでは、コミットすることも非常に重要です。

だから、スナップショット、それが何であるかを使用?トランザクションログがなければなりませんが、時間が経つにつれて、ログは確かに、より多くの、それは飼育係がタイムアウトされますので、確かにすべての歴史の持続可能な伐採ではないでしょうスナップショットを、削除ログの前に。

だから、データはデータクエリがあまり便利であるので、第二の方法を、格納されている場合。飼育係も、メモリ内のデータのコピーを保存し、検索データをスピードアップするためには、上記いえば、このデータのメモリは、どのようにそれが存在する必要がありますか?

データがメモリ内に表現されています

データ実際のインメモリ表現で飼育係、そして上記の方法に非常に似ていますが、データの飼育係は、白がデータの名前であることを言うことは飼育係がする絶対必要であるノード、ファイルディレクトリ機能をしている“/”ため、飼育係をリードする、で始まります同様のツリーデータ:

image.png

親子階層マルチ-ツリーは、飼育係のソースコードと呼ばれるのDatatreeを

要求の処理ロジック

以下を参照してください。

image.png

図のため、実際の根底にある飼育係が達成ことに注意してください、ZK1はによると、リーダー、ZK2とzk3が学習者であるリーダー選挙選出されました。

非トランザクション要求は直接のDatatreeの内容を読み取るのDatatreeがメモリ内にある、それは非常に高速になります。

概要

リクエストを処理する際に、この記事では、コアコンセプトの飼育係が導入されています。

  1. トランザクション要求
  2. トランザクションログ
  3. スナップショット
  4. データツリー
  5. 2フェーズ・コミット

飼育係が達成する方法であるとき、2段階のプロセスにリクエストを送信するために詳細に説明するために次の記事。

痛みのポイントは技術革新を持っているがありますが、間違いなく痛みのポイント現象を解決するための技術です。あなたが最初の時間は、よりエキサイティングなコンテンツを学びたい場合は、マイクロチャネル公衆番号に注意してください、見て前方に助けてください:1:25

おすすめ

転載: juejin.im/post/5d14765bf265da1bb47d766c