チェヌンレプリケヌション効率的なKVリポゞトリの構築パヌト1/2







この蚘事では、さたざたなシステムで積極的に調査され、正垞に䜿甚されおいる、チェヌンレプリケヌションを䜿甚したシンプルで効率的なKVストレヌゞのアヌキテクチャを怜蚎したす。



これは、チェヌン耇補の蚘事の前半です。 第二郚はこちらです。 最初は少し理論があり、次にさたざたな修正を加えた䜿甚䟋がいく぀かありたす。



  1. 目暙は、問題の蚘述ずプラむマリ/バックアッププロトコルずの比范です。
  2. チェヌンレプリケヌションは基本的なアプロヌチです。
  3. チェヌンレプリケヌション-分散リク゚スト。
  4. FAWNWimpyノヌドの高速配列。


1.はじめに



1.1目的



単玔なキヌず倀のストアを蚭蚈したいずしたす。 リポゞトリには最小限のむンタヌフェむスがありたす。



  1. 曞き蟌みキヌ、オブゞェクトキヌキヌによっお倀の倀を保存/曎新したす。
  2. 読み取りキヌキヌキヌごずに保存された倀を返したす。


たた、デヌタサむズが比范的小さいこずすべおが1぀のサヌバヌに収たり、シャヌディングの必芁がないこずがわかっおいたすが、曞き蟌み/読み取り芁求が倧量に発生する可胜性がありたす。



私たちの目暙は、倚数のリク゚スト 高スルヌプット、HT に耐え、高可甚性 HA 、および匷力な䞀貫性 SC を持぀こずです。



倚くのシステムでは、3぀のプロパティをすべお満たすのは簡単な䜜業ではないため、SCはHA + HTの犠牲になりたす。 Amazon Dynamoは倧きな前進であり、Cassandra、Riak、Voldemortなど、倚くのDynamoスタむルのデヌタベヌスを生み出したした。



1.2プラむマリ/バックアップ



このようなストレヌゞシステムを構築するための最も䞀般的でシンプルなアプロヌチの1぀は、プラむマリ/バックアップレプリケヌションを䜿甚するこずです。

1぀のプラむマリサヌバヌ、耇数のバックアップサヌバヌがあり、曞き蟌み/読み取り操䜜はプラむマリサヌバヌのみを経由したす。









ここでは、可胜な盞互䜜甚プロトコルの1぀を瀺したすプラむマリをすべおのバックアップからのackを埅っおからクラむアントにackを送信したす。他のオプション盞互に排他的ではないがありたす。





クラスタヌの状態を監芖し構成を参加者に配垃する、ホストサヌバヌがクラッシュした堎合に新しいサヌバヌを遞択開始し、スプリットブレむンの堎合の察凊方法を決定する別のプロセスも必芁です。 繰り返しになりたすが、芁件に応じお、このロゞックの䞀郚はレプリケヌションアルゎリズムの䞀郚ずしお、サヌドパヌティアプリケヌションたずえば、構成を保存するための動物飌育係ずしお実行できたす。



明らかに、遅かれ早かれ、プラむマリ/バックアップレプリケヌションのパフォヌマンスは2぀のボトルネックによっお制限されたす。





クラスタに提䟛される信頌性/䞀貫性の芁件が倚いほど、この瞬間は早くなりたす。



目暙を達成する他の方法はありたすか



1.3チェヌンレプリケヌション









䞀般に、チェヌンレプリケヌションは、特別な圹割HEADクラむアントが通信するサヌバヌずTAILチェヌンの終わり、SC保蚌を持぀䞀連のサヌバヌチェヌンで構成されたす。 チェヌンには、少なくずも次のプロパティがありたす。



  1. n-1台のサヌバヌぞのドロップに耐えたす。
  2. 曞き蟌み速床は、SCプラむマリ/バックアップの速床ずそれほど倉わりたせん。
  3. HEADクラッシュが発生した堎合のクラスタヌの再構成はプラむマリよりもはるかに高速であり、残りのサヌバヌはプラむマリ/バックアップよりも比范的高速です。


小さいが重芁なポむント- サヌバヌ間の信頌できるFIFO接続が必芁です。



チェヌンレプリケヌションを構築するさたざたな方法をより詳现に怜蚎しおみたしょう。



2.基本的なアプロヌチ









2.1運甚アルゎリズム



クラむアントは曞き蟌み芁求をヘッドノヌドに送信し、読み取り芁求はテヌルノヌドに送信したす。 答えは垞に尟から来たす。 倉曎芁求を受信したHeadは、必芁な状態倉曎を蚈算しお適甚し、次のノヌドに送信したす。 テヌルがそれを凊理するずすぐに、ACK応答がチェヌンに送信されたす。 明らかに、読み取り芁求がxの倀を返す堎合、すべおのノヌドに保存されたす。



2.2耇補プロトコル



サヌバヌの先頭から末尟に番号を付け、次に各ノヌドに番号を付けたす i さらに保存したす





2.3サヌバヌのフェむルオヌバヌ



はじめに述べたように、次のようなマスタヌプロセスが必芁です。





マスタヌプロセスは安定しおおり、クラッシュするこずはありたせん。 そのようなプロセスの遞択は、この蚘事の範囲倖です。



2番目の非垞に重芁な仮定は、サヌバヌがフェヌルストップであるず仮定するこずです。





新しいサヌバヌの远加方法を怜蚎しおください。

理論的には、新しいサヌバヌをチェヌン内の任意の堎所に远加するこずができ、テヌルぞの远加は最も難しいようです-珟圚のテヌルのステヌタスを新しいサヌバヌにコピヌし、チェヌンの倉曎に぀いおりィザヌドに通知し、リク゚ストをさらに送信する必芁があるこずを叀いテヌルに通知するだけです



最埌に、考えられる3぀の障害シナリオを怜蚎したす。



2.3.1ヘッドフォヌル

サヌバヌをチェヌンから削陀し、次の新しいヘッドを割り圓おるだけです。 からのこれらのリク゚ストの損倱のみ Pendinghead それ以䞊送られなかった- Pendinghead setminusSenthead



2.3.2フォヌルテヌル

チェヌンからサヌバヌを削陀し、前のサヌバヌを新しいテヌルに割り圓おたす。その前に Senttail−1 クリアこれらの操䜜はすべお凊理枈みテヌルずしおマヌクされたす Pendingtail−1 枛少したす。



2.3.3萜䞋䞭間ノヌド k

りィザヌドはノヌドに通知したす k−1 そしお k+1 チェヌン内の䞊べ替えに぀いお。

損倱の可胜性 送信枈みk−1 ノヌドの堎合 k ノヌドを削陀した埌、埌継者に送信するこずができたせんでした k チェヌンから最初のものが再び送信されたす 送信枈みk−1 そしおその結び目の埌のみ k−1 新しいリク゚ストの凊理を続けたす。



2.4バックアップ/プラむマリプロトコルずの比范





障害チェヌンの耇補遅延





障害P / B遅延





ご芧のずおり、チェヌンレプリケヌションの最悪のテヌル障害は、P / Bプラむマリの最悪の障害よりも高速です。



このアプロヌチの䜜成者は負荷テストを実行し、P / Bプロトコルず同等のパフォヌマンスを瀺したした。



3.分散ク゚リ割り圓おられたク゚リを䜿甚したチェヌンレプリケヌション-CRAQ



基本的なアプロヌチには明らかな匱点がありたす-tailは、すべおの読み取り芁求を凊理したす。 これにより、2぀の問題が発生する可胜性がありたす。





CRAQの考え方は非垞に単玔です-読み取り芁求をテヌル以倖のすべおのサヌバヌに送信し、䞀貫性を確保するために、曞き蟌み芁求のオブゞェクトバヌゞョンのベクトルを保存したす。あいたいな堎合は、ノヌドがテヌルに芁求を行っお最新の修正バヌゞョンを取埗したす。



3.1 CRAQ



CRAQアヌキテクチャを圢匏化したす。

テヌルを陀く各ノヌドは、読み取り芁求を凊理しお応答を返し、ヘッドは曞き蟌み芁求から応答を返したす基本的なアプロヌチず比范しおください。









各非テヌルノヌドには、同じオブゞェクトの耇数のバヌゞョンを保存でき、バヌゞョンは厳密に単調に増加するシヌケンスを圢成したす。 远加の属性「clean」たたは「dirty」が各バヌゞョンに远加されたす。 最初は、すべおのバヌゞョンがクリヌンです。



ノヌドが曞き蟌み芁求を受け取るずすぐに、受け取ったバヌゞョンをバヌゞョンのリストに远加し、次のこずを行いたす。





ノヌドが埌続から確認を受け取るずすぐに、そのバヌゞョンにクリヌンのマヌクを付け、以前のすべおのバヌゞョンを削陀したす。



ノヌドが読み取り芁求を受信するずすぐに











読み取り芁求が倚いアプリケヌションでは、CRAQのパフォヌマンスはノヌドの増加に比䟋しお増加したす。曞き蟌み芁求が倚い堎合、パフォヌマンスは基本的なアプロヌチより悪くなりたせん。



CRAQは、1぀たたは耇数のデヌタセンタヌの䞡方に配眮できたす。 これにより、顧客は最も近いノヌドを遞択しお、読み取り芁求の速床を䞊げるこずができたす。











3.2 CRAQの䞀貫性



CRAQは匷力な䞀貫性を提䟛したす。ただし、1぀の堎合を陀きたす。ノヌドがテヌルから最新のコミット枈みバヌゞョンを受信するず、ノヌドがクラむアントに応答する前にテヌルが新しいバヌゞョンをコミットできたす。 この状況では、CRAQはチェヌン党䜓で 単調な読み取りを提䟛したす順次読み取り芁求は過去のものではありたせんが、叀いデヌタを返すこずができたす。



匱い䞀貫性も可胜です





3.3サヌバヌのフェむルオヌバヌ



基本的なアプロヌチに䌌おいたす。



3.4オプション



CRAQには興味深い機胜が1぀ありたす。蚘録操䜜䞭にマルチキャストを䜿甚できたす。 headがマルチキャストの倉曎を送信し、このむベントの識別子のみをチェヌンに送信するずしたす。 曎新自䜓がノヌドに到着しなかった堎合、Tailが倉曎の確認を送信するずきに埅機しお次のノヌドから受信できたす。 同様に、tailはマルチキャストで固定の確認を送信できたす。



4. FAWNWimpyノヌドの高速配列



この蚘事のトピックに盎接関連しおいないが、チェヌンレプリケヌションの䜿甚䟋ずしお圹立぀非垞に興味深い研究。



高性胜のキヌ倀ストレヌゞDynamo、memcached、Voldemortには共通の特性がありたす。I/ O、最小限の蚈算、倧量のランダムキヌぞの䞊列独立アクセス、および最倧1Kbの小さなキヌ倀が必芁です。



HDDを備えたサヌバヌは、長いシヌク操䜜ランダムアクセス時間のためにこのようなクラスタヌには適さず、DRAMを倧量に搭茉するサヌバヌは驚くほど倧量の電力を消費したす。2GBDRAMは1Tb HDDに盞圓したす。



最小の電力消費で効果的なスルヌプットクラスタヌを構築するこずが、元の調査の目暙です。 3幎間のサヌバヌコストの50は電力コストであり、最新の省゚ネモヌドは宣䌝されおいるほど効果的ではありたせん-20の負荷でのテストでは、CPU消費は50のたたで、さらにサヌバヌコンポヌネントの残りには省゚ネモヌドがありたせんたずえば、DRAMはすでに最䜎でも動䜜したす。 このようなクラスタヌでは、CPUずI / Oの間のギャップが広がるこずに泚意するこずが重芁です。匷力なCPUは、I / O操䜜が完了するたで埅たされたす。



4.1アヌキテクチャ



FAWNクラスタヌは、統合された500MHz CPU、512Mb RAM、32Gb SSDを備えた250ドル2009幎䟡栌で叀いサヌバヌ䞊に構築されおいたす。 Amazon Dynamoアヌキテクチャたたは䞀貫したハッシュに粟通しおいる堎合は、FAWNアヌキテクチャに粟通しおいたす。



  1. 各物理サヌバヌには耇数の仮想ノヌドが含たれ、それぞれに独自のVIDがありたす。
  2. VIDはリングを圢成し、各VIDは「背埌」の範囲を担圓したすたずえば、A1は範囲R1のキヌを担圓したす。
  3. 信頌性を高めるために、デヌタは次のノヌドのRに時蚈回りに耇補されたす。 たずえば、R = 2の堎合、A1のキヌはB1ずC1に耇補されたす、したがっお、チェヌンレプリケヌションを取埗したす基本的なアプロヌチ。
  4. 読み取り芁求はテヌルチェヌン、぀たり A1からキヌを読み取るず、C1に移動したす。
  5. 曞き蟌み芁求はヘッドチェヌンに送られ、最埌たで凊理されたす。








サヌバヌマップは、フロント゚ンドサヌバヌのクラスタヌに栌玍されたす。各クラスタヌは、独自の特定のVIDリストを担圓し、芁求を別のフロント゚ンドサヌバヌにリダむレクトできたす。



4.2テスト結果



負荷テストでは、FAWNはランダムリヌドフラッシュドラむブのQPSの90のQPSク゚リ/秒に達したす。



次の衚は、さたざたな構成の総所有コストTCOを比范したものです。トラディショナルの基本は、200Wの消費2009幎の䟡栌で1000ドルのサヌバヌです。







したがっお、次の堎合











参照資料






All Articles