同期を維持する必要があるサーバーの小さなクラスターがあります。これに関する私の最初の考えは、1 つのサーバーを「マスター」にして、redis の pub/sub 機能を使用して更新を公開し (既にストレージに redis を使用しているため)、クラスター内の他のサーバー (スレーブ) に更新をポーリングさせることでした。長時間実行されるタスク。これは、すべてを同期させるための簡単な方法のように思えましたが、「マスター」がダウンしたらどうなるかという明らかな問題について考えました。そこで、マスターが常に存在するようにするためのテクニックを調べ始め、リーダー選挙のようなアイデアについて読むようになりました。最後に、私はApache Zookeeperに出くわしました (python バインディングを通じて、" pettingzoo")、どうやら多くのフォールト トレランス ロジックを処理してくれるようです。私は自分のリーダー選択コードを書くことができるかもしれませんが、証明およびテストされたものほど優れているとは思えません。 、Zookeeper のように。
Zookeeper を使用する際の私の主な問題は、単純なものでうまくいく場合に、セットアップに不必要に追加する可能性のある別のコンポーネントにすぎないことです。誰もこの方法で redis を使用したことがありますか? または、達成しようとしているタイプの機能を取得するために使用できる他の簡単な方法はありますか?
ペッティングズーの詳細 (スライドシェア)