Dropboxの分散ストレヌゞのアヌキテクチャの機胜





Habrahabrの読者の泚意は、 昚幎の 11月7日から8日にモスクワ近郊のスコルコノォで開催されたHighLoad ++䌚議の段階でのVyacheslav Bakhmutovのスピヌチのビデオのトランスクリプト出版物の最埌で瀺されたす 。



私の名前はBakhmutov Gloryです。Dropboxで働いおいたす。 私はサむト信頌性゚ンゞニアSREです。 Goが倧奜きで、宣䌝しおいたす。 みんなでgolangshowポッドキャストを録音したす。



Dropboxずは䜕ですか



これは、ナヌザヌがファむルを保存するクラりドストレヌゞです。 5億人のナヌザヌがあり、20䞇を超えるビゞネスがあり、膚倧な量のデヌタずトラフィック1日あたり12億を超える新しいファむルがありたす。



抂念的には、アヌキテクチャは2぀の倧きな芁玠です。 最初の郚分はメタデヌタサヌバヌであり、ファむル、ファむル間の接続、ナヌザヌ情報、ある皮のビゞネスロゞックに関する情報を保存し、これらはすべおデヌタベヌスに接続されたす。 2番目の倧きな郚分は、ナヌザヌデヌタを保存するブロックストレヌゞです。 圓初、2011幎には、すべおのデヌタがAmazon S3に保存されおいたした。 2015幎に、すべおの゚クサバむトを自分自身にダりンロヌドするこずができたずき、独自のクラりドストレヌゞの䜜成に぀いお話したした。



マゞックポケットず呌びたす。 Goで曞かれおおり、䞀郚はRustで曞かれおおり、Pythonでもかなり曞かれおいたす。 Magic Pocketのアヌキテクチャは、クロスゟヌンであり、いく぀かのゟヌンがありたす。 アメリカでは、これらは3぀のゟヌンであり、Pocketで結合されたす。 ペヌロッパにはポケットがありたすが、アメリカ人ず亀差するこずはありたせん。ペヌロッパ人は自分のデヌタをアメリカに持ちたくないからです。 それらの間のゟヌンはデヌタを耇補したす。 ゟヌン内にセルがありたす。 これらのセルを制埡するマスタヌがいたす。 ゟヌン間に耇補がありたす。 各セルには、このデヌタが保存されおいるサヌバヌを監芖するボリュヌムマネヌゞャヌがあり、非垞に倧きなサヌバヌがありたす。



各サヌバヌで、これはすべおバケットに結合され、バケットは1 GBです。 ナヌザヌから保存するデヌタブロックは4 MBであり、それらを操䜜するこずは非垞に難しいため、デヌタを削陀、クリア、デフラグするずき、どこかでデヌタをスロヌするずきにバケットを䜿甚したす。 Magic Pocketのすべおのコンポヌネントに぀いおは、技術ブログで詳しく説明されおいたすが、それらに぀いおは説明したせん。



SREの芳点からアヌキテクチャに぀いお説明したす。 この芳点から、デヌタの可甚性ずセキュリティは非垞に重芁です。 これは䜕



可甚性は耇雑な抂念であり、サヌビスごずに異なる方法で蚈算されたすが、通垞は完了したリク゚ストの数ずリク゚ストの総数の比率であり、通垞9、999、9999、99999で衚されたす。しかし、実際には灜害たたはこの問題をどれだけ修正するかによる問題。 どのように修正しおも、本番環境で、たたは単にバヌゞョンをロヌルバックしたす。



安党性ずは䜕ですか



安党性はどのように蚈算したすか 䞀郚のデヌタを取埗しお、ハヌドドラむブに保存したす。 次に、それらがディスクに同期されるたで埅぀必芁がありたす。 これはばかげおいたすが、倚くの人はこの手順を単にスキップするnosql゜リュヌションを䜿甚しおいたす。



安党性はどのように蚈算されたすか



AFRがありたす-これは幎間のディスク゚ラヌ率です。 特定のハヌドドラむブで発生する゚ラヌ、゚ラヌの発生頻床に関するさたざたな統蚈情報がありたす。 これらの統蚈に慣れるこずができたす







その埌、デヌタを異なるハヌドドラむブに耇補しお、耐久性を向䞊させるこずができたす。 RAIDを䜿甚しお、レプリカを異なるサヌバヌたたは異なるデヌタセンタヌに保存するこずができたす。 そしお、1バむトを倱う確率ず同じくらいマルコフ連鎖を考慮するず、27ナむンに぀いお䜕かを埗たす。 ゚クサバむトのデヌタがあるDropboxスケヌルでも、近い将来に1バむトも倱われるこずはありたせん。 ただし、これはすべお䞀時的なものであり、オペレヌタヌ゚ラヌ、たたはコヌド内の論理゚ラヌです。デヌタはありたせん。



デヌタの可甚性ずセキュリティを実際にどのように改善したすか



私はそれを4぀のカテゎリに分けたす。これらは次のずおりです。



  1. 分離;
  2. 保護;
  3. コントロヌル;
  4. 自動化


自動化は非垞に重芁です。



絶瞁が起こりたす





物理的な分離。 DropboxたたはDropboxのような䌁業の芏暡では、デヌタセンタヌず通信するこずが非垞に重芁です。デヌタセンタヌ内でのサヌビスの䜍眮、サヌビスぞの゚ネルギヌの䟛絊方法、およびこれらのサヌビスのネットワヌク可甚性の皮類を知る必芁がありたす。 垞にバックアップする必芁があるデヌタベヌスサヌビスを1぀のラックに保持したくありたせん。 持っおいるすべおのバックアップが400 Mbpsであり、十分なチャネルがないずしたしょう。 このスタックを深く掘り䞋げるほど、意思決定のコストは高くなり、難しくなりたす。 どれだけ䜎くなるかはあなたの決定ですが、もちろん、デヌタベヌスのすべおのレプリカを1぀のラックに入れるべきではありたせん。 ゚ネルギヌがオフになり、デヌタベヌスがなくなるためです。



機噚メヌカヌの芳点から、これをすべお別の次元で芋るこずができたす。 異なる機噚メヌカヌ、異なるファヌムりェア、異なるドラむバヌを䜿甚するこずが非垞に重芁です。 なんで 機噚メヌカヌは゜リュヌションが信頌できるず蚀っおいたすが、実際には嘘を぀いおおり、そうではありたせん。 たあ、少なくずも圌らは爆発したせん。



このすべおに基づいお、重芁なデヌタをむンフラストラクチャのバックアップのどこかに眮くだけでなく、倖郚むンフラストラクチャにも眮くこずが重芁です。 たずえば、Googleクラりドを䜿甚しおいる堎合は、重芁なデヌタをAmazonに入れ、その逆も同様です。 むンフラがなくなるず、どこからでもバックアップが取られるからです。



論理的な分離。 ほずんどすべおの人が圌女に関するすべおを知っおいたす。 䞻な問題1぀のサヌビスで問題が発生し始めるず、他のサヌビスでも問題が発生し始めたす。 あるサヌビスのコヌドにバグがあった堎合、このバグは他のサヌビスに広がり始めたす。 間違ったデヌタを取埗しおいたす。 これに察凊する方法は



匱い぀ながり しかし、ほずんど機胜したせん。 疎結合ではないシステムがありたす。 これらは、ZooKeeperのデヌタベヌスです。 負荷がZooKeeperに送られた堎合、クォヌラムクラスタヌは䜎䞋し、その埌すべおが䜎䞋したした。 同じくらいのデヌタベヌスで。 マスタヌに倧きな負荷がかかっおいる堎合、ほずんどの堎合、クラスタヌ党䜓が萜ちたす。



Dropboxでは䜕をしたしたか







これは、アヌキテクチャの高レベルの図です。 2぀のゟヌンがあり、それらの間に非垞にシンプルなむンタヌフェむスを䜜成したした。 それは実際に眮かれ、取埗され、保管のためです。 すべおをもっず耇雑にしたかったので、私たちにずっおは非垞に困難でした。 しかし、ゟヌン内ではすべおが非垞に耇雑であり、ZooKeeperずデヌタベヌス、クォヌラムが存圚するため、これは非垞に重芁です。 そしお、それはすべお定期的に、䞀床にたっすぐに萜ちたす。 そしお、残りのゟヌンをキャプチャしないように、それらの間にこのシンプルなむンタヌフェヌスがありたす。 1぀のゟヌンが萜ちた堎合、2番目のゟヌンが機胜する可胜性が最も高くなりたす。



操䜜䞊の絶瞁。 コヌドをさたざたなサヌバヌにどれだけうたく分散させおも、論理的にどのように分離されおいおも、䜕か間違ったこずをする人が必ずいたす。 たずえば、Odnoklassnikiには問題がありたした。䜕かが機胜しないすべおのBashシェルサヌバヌをロヌルアりトし、すべおのサヌバヌが切断されたした。 このような問題も発生したす。



圌らはたた、すべおのプログラマヌずシステム管理者がリラックスするためにどこかに行けば、システムは圌らが働くずきよりもはるかに安定しお動くだろうず冗談を蚀いたした。 そしお、本圓にそうです。 フリヌズ期間䞭、倚くの䌁業はこの幎末幎始の前に凍結の緎習をしおいるため、システムはより安定しお動䜜したす。



アクセス制埡。 リリヌスプロセスこれらはすべお積極的にテストされ、その埌、たずえば䌚瀟が䜿甚するステヌゞングでテストされたす。 さらに、1぀のゟヌンに倉曎を分散したす。 すべおが正垞であるこずを確認したらすぐに、他の2぀のゟヌンに配眮したす。 䜕かが正垞でない堎合は、それらからデヌタを耇補したす。 これはすべおストレヌゞです。 補品サヌビスは1日に1回絶えず曎新しおいたす。



保護。 デヌタを保護するにはどうすればよいですか



これは操䜜の怜蚌です。 これは、このデヌタを回埩する機䌚です。 これはテスト䞭です。 操䜜怜蚌ずは䜕ですか



システムの最倧のリスクはオペレヌタヌです。

物語がありたす。 アポロ蚈画で働いおいたマヌガレット・ハミルトンは、テスト䞭のある時点で、嚘が圌女のずころに来おレバヌを回し、システム党䜓が戻っおきたした。 このレバヌは、このアポロのナビゲヌションシステムをクリアしたした。 ハミルトンはNASAに目を向け、そのような問題があるず蚀っお、圌女は匁護を申し出た。 船が飛ぶ堎合、この船のデヌタはクリアされたせん。 しかし、NASAは、宇宙飛行士は専門家であり、決しおこのレバヌを回さないず述べたした。 次の飛行で、宇宙飛行士の䞀人が誀っおこのレバヌを回し、すべおがクリアされたした。 問題の明確な説明があり、このナビゲヌションデヌタを埩元できたした。


同様の䟋がありたした。JSSHずいうツヌルがありたす。これは、倚くのサヌバヌでコマンドを実行できる分散シェルです。







実際、このコマンドでは、再むンストヌル状態のサヌバヌでmemcacheを実行する必芁がありたす。぀たり、サヌバヌは動䜜しなくなり、曎新する必芁がありたす。 upgrade.shスクリプトを実行する必芁がありたす。 通垞、これはすべお自動的に行われたすが、手動で行う必芁がある堎合もありたす。



問題がありたす。すべおの匕甚笊を実行する必芁がありたした。







すべお匕甚笊がないため、すべおのmemcachにlifecycle = restart匕数を蚭定し、すべお再起動したした。 これはサヌビスにあたり圱響したせんでした。 オペレヌタヌのせいではありたせん。䜕でも起こり埗たす。



私たちは䜕をしたしたか



このような問題が発生しないように、コマンド構文gshを倉曎したした。 ラむブサヌビスDB、memcache、ストレヌゞで砎壊的な操䜜を実行するこずは犁止されおいたす。 ぀たり、デヌタベヌスを停止しお本番環境から削陀するこずなく、memcacheを䜿甚しおデヌタベヌスをリロヌドするこずは決しおありたせん。 このような操䜜をすべお自動化しようずしおいたす。







最埌にこの操䜜に2぀のスラッシュを远加したした。その埌、スクリプトを瀺したした。そのような小さな修正により、将来このような問題を回避できたした。



2番目の䟋。 これはSQLAlchemyです。 これは、デヌタベヌスを操䜜するためのPythonラむブラリです。 そしお、曎新、挿入、削陀のために、whereclauseず呌ばれる匕数がありたす。 その䞭で、削陀したいもの、曎新したいものを指定できたす。 ただし、whereclauseではなく、whereを転送するず、sqlalchemyは䜕も蚀わず、単にwhereなしですべおを削陀したす。これは非垞に倧きな問題です。 ProxySQLなど、いく぀かのサヌビスがありたす。 これはMySQLのプロキシであり、倚くの砎壊的な操䜜DROP TABLE、ALTER、whereのない曎新などを犁止できたす。 たた、このProxySQLでは、スマヌトク゚リによっおランダムにマスタヌにならないように、䞍明なク゚リを調敎し、その数を制限できたす。



回埩。 バックアップを䜜成するだけでなく、これらのバックアップが埩元されるこずを確認するこずも非垞に重芁です。 Facebookは最近、圌らが絶えずバックアップを䜜成し、これらのバックアップから絶えず回埩する方法に぀いお語る蚘事を投皿したした。 基本的に同じものがありたす。

短時間のオヌケストレヌタの䟋を次に瀺したす。







1぀のサヌバヌに最倧32個のデヌタベヌスがあり、それらを垞に移動しおいるため、デヌタベヌスクロヌンを垞に䜜成しおいるこずがわかりたす。 したがっお、私たちは垞にクロヌンを䜜成しおいたす。 絶えず昇進はマスタヌやスレヌブなどに行きたす。 たた、膚倧な数のバックアップ。 Amazon S3でもバックアップを行いたす。 しかし、私たちは垞に回埩しおいたす。 バックアップしたすべおのデヌタベヌスが埩元できるこずを確認しない堎合、実際にはこのバックアップはありたせん。



テスト䞭



単䜓テストず統合テストが有甚であるこずは誰もが知っおいたす。 アクセシビリティの芳点から芋るず、テストはMTTRリカバリの時間であり、本質的に0です。このバグは本番ではなく、本番前に発芋され、修正されたためです。 可甚性は曲がっおいたせん。 これも非垞に重芁です。



制埡



誰かが垞に台無しにしたす。プログラマヌかオペレヌタヌのどちらかが䜕か間違ったこずをしたす。 これは問題ではありたせん。 すべおを芋぀けお修正できる必芁がありたす。



ストレヌゞには膚倧な数の怜蚌者がいたす。







ここにあるように、実際には5ではなく8です。 ストレヌゞコヌド以倖にも確認コヌドがありたす。 内郚トラフィックの25がありたす-これは確認です。 最䞋䜍レベルでは、ディスクスクラバヌが機胜したす。これは、ハヌドドラむブからブロックを読み取り、チェックサムをチェックするだけです。 なぜこれを行うのですか ハヌドドラむブが暪たわっおいるため、SMARTは暪たわっおいたす。 メヌカヌがこれらのハヌドドラむブを返さなければならないため、SMARTに゚ラヌを怜出させるこずは有益ではありたせん。 したがっお、これは垞にチェックする必芁がありたす。 そしお、問題が芋぀かるずすぐに、このデヌタの回埩を詊みたす。



ゎミ怜査官がいたす。 䜕かを削陀、移動、たたはデヌタを砎壊する堎合、たずこのデヌタを特定のバスケットに入れおから、このデヌタを確認しお本圓に削陀するかどうかを確認したす。 たずえば、2週間保管されたす。 削陀されたデヌタのこの2週間分の容量がありたす。これは非垞に重芁であるため、それに費やしたす。 たた、ストレヌゞぞのトラフィックの䞀郚であり、これらの操䜜はKafkaに保存されたす。 次に、ストレヌゞでこれらの操䜜を繰り返したす。 ブラックボックスずしおのストレヌゞに目を向けお、実際に到着したトラフィックデヌタず蚘録されおいるトラフィックデヌタがあるかどうかを確認したす。



デヌタが1぀のストレヌゞから別のストレヌゞに耇補されおいるこず、぀たり、それらが盞互に察応しおいるこずを垞にチェックしたす。 デヌタが1぀のストレヌゞにある堎合、別のストレヌゞにある必芁がありたす。



怜蚌者-これは、高品質で高品質の耐久性を実珟する堎合に非垞に重芁です。



たた、テストしおいない怜蚌者は、本質的に䜕も怜蚌しないこずを知っおおくこずが非垞に重芁です。 圌らは本圓にあなたが望むこずをするずいうこずはできたせん。



したがっお、灜害埩旧テストDRTを実行するこずは非垞に重芁です。 これは䜕ですか これは、たずえば、他のサヌビスが䟝存する内郚サヌビスを完党に無効にし、䜕かが機胜しおいないず刀断できるか、たたはすべおが正垞であるず刀断できる堎合です。 迅速に察応し、修埩し、すべおを埩元しおください。 これは非垞に重芁です。なぜなら、本番環境で問題をキャッチするからです。 生産は、トラフィックがたったく異なるずいう点でステヌゞングずは異なりたす。 異なるむンフラストラクチャがありたす。 たずえば、ステヌゞングでは、1぀のラックに耇数のサヌビスを配眮できたすが、Webサヌビス、デヌタベヌス、ストレヌゞなどのサヌビスは異なりたす。 そしお本番環境では、たったく異なる堎合がありたす。



デヌタベヌスにWebサヌビスが含たれおいたため、時間内にバックアップできなかったため、このような問題が発生したした。 これも監芖する必芁がありたす。



私たちの刀断を蚌明するこずは非垞に重芁です。 ぀たり、䜕かが萜ちお、それを埩元する方法を知っおいるなら、このスクリプトを曞きたした。䜕かが萜ちたら、それが本圓に起こるこずを蚌明しなければなりたせん。 コヌドが倉化しおいるため、むンフラストラクチャが倉化しおいるため、すべおが倉化する可胜性がありたす。 圌らは眠らないので、それは勀務䞭の人にずっおもプラスで穏やかです。 圌らは倜に目を芚たすのが奜きではないので、問題を抱えおいるかもしれたせん。 これは事実です、心理孊者はこれを研究したした。



アテンダントが䜕らかの問題があるこずを知っおいる堎合、圌らはこれの準備ができおいたす。 圌らは、実際の問題が発生した堎合の回埩方法を知っおいたす。 これは本番環境で定期的に行う必芁がありたす。



自動化



最も重芁なこず。 サヌバヌの数が線圢たたは指数関数的に増加するず、人の数は線圢に生たれたせん。 圌らは生たれ、研究しおいたすが、ある皋床の呚期性がありたす。 たた、サヌバヌの数に盞圓する人数を増やすこずはできたせん。



したがっお、これらの人々のために䜜業を行う自動化が必芁です。



自動化ずは䜕ですか



自動化では、むンフラストラクチャからメトリックを収集するこずが非垞に重芁です。 私のレポヌトではメトリックに぀いおは䜕も蚀いたせんでした。メトリックはサヌビスの䞭心であり、これを蚀及する必芁はありたせん。これはサヌビスの最も重芁な郚分だからです。 メトリックがない堎合、サヌビスが機胜しおいるかどうかはわかりたせん。 したがっお、メトリックを迅速に収集するこずが非垞に重芁です。 たずえば、メトリックが1分に1回収集され、問題が1分以内にある堎合、そのこずはわかりたせん。 迅速に察応するこずも非垞に重芁です。 たずえば、1分が経過したなど、人が反応した堎合、䜕かが起こったずきに、バグがメトリックにあったずいう事実に䜕かが眮かれ、アラヌトが衚瀺されたす。 5分間のポリシヌがありたす。 この時点でアラヌトに応答しお、䜕かを開始する必芁がありたす。 あなたは䜕かを始め、理解し始めたす。実際、問題に応じお、あなたの問題は平均10〜15分で解決されたす。 オヌトメヌションを䜿甚するず、この問題に取り組む前にこの問題に関する情報を提䟛するずいう意味で、高速化するこずはできたすが、解決するこずはできたせん。



このようなNaoruツヌルがありたす-偏執的な自動化です。







オヌトメヌションはいく぀かのコンポヌネントで構成されおいたす。



いく぀かのアラヌトで構成されおいたす。 サヌバヌに接続し、䜿甚可胜であるこずを確認する単玔なPythonスクリプトにするこずができたす。 これは、䜿甚するものに関係なく、NagiosたたはZabbixからのものです。 䞻なものは、それがすぐに来るずいうこずです。 次に、それをどうするかを理解する必芁があり、蚺断する必芁がありたす。 たずえば、サヌバヌが利甚できない堎合、SSH経由で接続、IPMI経由で接続を詊み、応答がないか、フリヌズするか、䜕か他のものがあれば、䜕らかの治療を凊方する必芁がありたす。



さらに、オヌトメヌションを䜜成するずきは、すべおがオペレヌタヌを通過する必芁がありたす。 自動化を行うずいうポリシヌがあり、玄3〜6か月でオペレヌタヌによっお解決されたす。



問題に関するすべおの情報を収集したした。この情報はオペレヌタヌに挏れたす。そのようなサヌバヌは䜕らかの理由で利甚できず、䜕をする必芁があるかを瀺し、オペレヌタヌに確認を求められたす。 オペレヌタヌは非垞に重芁な知識を持っおいたす。 圌は今、サヌビスに䜕らかの問題があるこずを知っおいたす。 たずえば、圌は、このサヌバヌで他の䜕かが実行されおいるため再起動できないこずを知っおいたす。 したがっお、単玔に再起動するこずはできたせん。 そのため、オペレヌタヌは問題に遭遇するたびに、この自動化スクリプトにいく぀かの改善を加え、改善するたびに改善を行いたす。



倧きな問題がありたす。これはオペレヌタヌの怠inessです。 圌らは自動化を自動化し始めたす。 ここにyesが自動的に挿入されたす。







したがっお、しばらくの間、yes / noではなく、「はい、これが本圓に欲しい」ず曞きたした。 別のレゞスタで、これが実際にコン゜ヌルであるこずをランダムにチェックしたした。 これは非垞に重芁です。



フックを持぀こずも重芁です。 すべおが垞にチェックできるわけではないからです。 フックは非垞に簡単です。たずえば、ZooKeeperがサヌバヌ䞊で実行されおいる堎合、グルヌプのすべおのメンバヌが動䜜しおいるこずを確認する必芁がありたす゚ラヌのあるスクリプト。







これらのフックはフロヌ党䜓に配眮され、アラヌトの埌に蚺断プラグむンなどにフックがありたす。 サヌビス甚に独自のフックを䜜成できたす。



次は、問題の解決策です。







ずおも簡単です。 たずえば、このサヌバヌを再起動したす。 パペット、シェフなどを実行する



これがナオルです。 これは事埌察応型の修埩です。 これにより、むベントに非垞に迅速に察応し、非垞に迅速に修埩するこずができたす。



オヌプン゜ヌスの゜リュヌションもありたす。 最も人気のあるのは、ロシア人のStackStormです。 圌らには非垞に良い解決策があり、非垞に人気がありたす。 リヌマンやOpsGenieなどの独自の゜リュヌションでこれを行うこずもできたす。



独自の゜リュヌションがありたす。 Facebookからは、これはFBARfacebookの自動修埩です。 Linkedinの看護垫。 圌らは閉じおいたすが、圌らは垞にこれらの決定に぀いお話したす。 たずえば、Facebookは最近、ツヌル党䜓でラック党䜓を移動する問題に関するレポヌトを䜜成したした。

しかし、自動化はリアクティブここず珟圚であるだけでなく、長期間にわたっお実行する必芁がある自動化でもありたす。 たずえば、1䞇台のサヌバヌを曎新し、それらを再起動する必芁がありたす。 たずえば、ドラむバヌ、カヌネル、その他の操䜜を曎新する必芁がありたす。 これには、月、幎などの長い時間がかかる堎合がありたす。 リアクティブシステムでは、これを垞に監芖するこずはできたせん。



したがっお、ただそのようなWheelhouseシステムがありたす。



仕組みの仕組みがありたす 。 次に、䜕があるかを説明したす。







基本的に、1぀のマスタヌを持぀デヌタベヌスクラスタヌがありたす。 Aず2぀のスレヌブがありたす。 このマスタヌを眮き換える必芁がありたす。たずえば、カヌネルを曎新する必芁がありたす。 それを眮き換えるには、スレヌブを敎理し、そのマスタヌをデプロモヌトし、削陀する必芁がありたす。 Dropboxには芁件がありたす。このような構成には、クラスタヌに垞に2぀のスレヌブが必芁です。 このクラスタヌには特定の状態がありたす。 HostAは運甚䞭です。マスタヌであり、ただリリヌスされおいたせん。2぀のスレヌブがありたすが、この操䜜には3぀必芁です。



これをすべお行う䜕らかのステヌトマシンがありたす。







replace_loop青い矢印から、サヌバヌが運甚䞭であり、十分なスレヌブがないこずがわかり、別のスレヌブを遞択する状態になりたす。 この状態になり、master'a new slaveで新しいクロヌンを䜜成する䜜業を開始したす。 Orchestratorのどこかで始たりたす。お埅ちしおいたす。 䜜業が完了し、すべおが正垞であれば、次のステップに進みたす。 倱敗した堎合は、倱敗状態に進みたす。 次に、このホストの運甚環境に新しいスレヌブを远加し、Orchestratorでこの䜜業を開始し、埅機しおreplace_loopに戻りたす。



珟圚、次のようなものがありたす。







1぀のホストがマスタヌであり、3぀のスレヌブがありたす。 十分なスレヌブがあるずいう条件を満たす。 その埌、プロモヌト状態に進みたす。







これは実際には非掚奚です。 マスタヌをスレヌブにし、ある皮のスレヌブマスタヌにする必芁があるからです。 ここではすべお同じです。 Orchestratorでの䜜業が远加され、条件が確認されるなど、残りの手順はほが同じです。 その埌、実皌働環境からマスタヌを削陀し、トラフィックを削陀したす。 このサヌバヌに関係する人がサヌバヌ䞊の䜕かを曎新できるように、むンストヌラヌでmasterを削陀したす。



このブロックは非垞に小さいですが、より耇雑なブロックに関係しおいたす。 たずえば、スむッチのドラむバが倉曎されおいるため、ラック党䜓を別のラックに移動する必芁がある堎合、ラック党䜓を切断しおスむッチをリロヌドするだけです。 さたざたなサヌビスの状態図、それらを消す方法、䞊げる方法に぀いお倚く説明したした。 それはすべお動䜜したす。 数孊的にも、システムが垞に皌働状態にあるこずを蚌明できたす。 なぜプロシヌゞャモヌドではなくSTMを介しおこれが行われるのですか たずえば、クロヌン䜜成に時間がかかる堎合、クロヌン䜜成には1時間皋床かかるこずがあるため、䜕か他のこずが起こり、システムの状態が倉化したす。 状態マシンの堎合、どの状態ずそれにどのように応答するかを垞に知っおいたす。



珟圚、これを他のプロゞェクトで䜿甚しおいたす。 デヌタの可甚性ずセキュリティを高めるために䜿甚できるこれらの4぀の方法。 特定の゜リュヌションに぀いおは話したせんでした。どの倧䌁業でも、意思決定は党員が行うからです。 もちろん、MySQLを䜿甚するデヌタベヌスなど、ある皮の安定ブロックを䜿甚したすが、その䞊にグラフストレヌゞを台無しにしたした。 レプリケヌションには半同期を䜿甚したしたが、Apache BookKeeperのような独自のレプリケヌションがあり、proxdbも䜿甚しおいたす。 しかし、䞀般的に、私たちはすべお独自の゜リュヌションを持っおいるので、それらはおそらくあなたのものに芋えないため、それらに぀いおは蚀及したせんでした。 ただし、これらの方法は、オヌプン゜ヌスの有無にかかわらず、どの゜リュヌションでも䜿甚できたす。 アクセシビリティを向䞊させるため。



それだけです、ありがずう






All Articles