ZooKeeperは、データセンター向けの可用性の高い調整サービスです。これは、Hadoopプロジェクトに端を発しています。その上に、ロック、フェイルオーバー、リーダー選出、グループメンバーシップ、およびその他の調整の問題を実装できます。ZooKeeperに代わるものはありますか?(もちろん自由ソフトウェア)
11 に答える
Zookeeper/ Curator、Eureka、etcd、および consul を広範囲に調べました。Zookeeper/Curator と Eureka は、多くの点で最も洗練されており、Java の世界にいる場合に統合するのが最も簡単です。Etcdは非常にクールで非常に柔軟ですが、実際には単なる HA キー ストアであるため、独自のサービス ディスカバリ システムにするには、多くのコードを記述する必要があります。
Consulは (私にとって) 両方の長所を備えています。これは、 serfの上に書かれた独自のサービス発見システムであり、クラスターのコンセンサスに raft を使用し、通信に gossip を使用します。十分に文書化された REST API を使用して検出/登録エンドポイントを公開し、DNS SRV レコードを使用してサービスを検出し、構成を使用してサービスを登録することもできます (つまり、クライアントを統合できないデータベースまたはアプリケーションを登録できます)。または、サービス ディスカバリをアプリから切り離したいだけの場合)
Consul に関するブログ記事を書きました。ここで詳細を確認し、私の「試してみる」デモについて説明します。
カスタム コードがどのように見えるかについて詳しく知りたい場合は、etcd と docker を使用したサービス ディスカバリについても説明しました。
最後に一つだけ!etcd と consul は go で記述されているため、Zookeeper などの Java ソリューションよりもメンテナンスがはるかに簡単です。必要なのは consul / etcd バイナリだけです。依存関係も、リンクされたライブラリも、jvm もありません。
Accord (C) とOpenReplica/ConCoord (Python) を発見したところ、興味深いソリューションになる可能性があります
[編集] Vagrant と Packer で有名な Hashicorp のクルーは、Serfと呼ばれる「サービスの発見とオーケストレーションのための分散型ソリューション」を準備しています。
[EDIT2] Hashicorp が再びストライキ ! Serf の上に構築されたConsulがリリースされました。売り込み: 「サービスの検出と構成のためのソリューションであり、完全に分散され、可用性が高く、複数のデータセンターにまたがる数千のノードとサービスに拡張可能です」.
はい、 Doozerd (https://github.com/ha/doozerd)もあります。よく見てください。これは、Heroku によって開発された、優れたシングル バイナリ分散コーディネーション サービスです。java/python/ruby/node のバインディング/ライブラリを使用。始めるのも遊ぶのもとても簡単です。
私の研究グループのOpenReplicaは、データセンター向けの高可用性FOSS調整サービスです。これは、ロック、フェイルオーバー、リーダー選出、グループメンバーシップ、およびその他の調整サービスの実装に使用できます。これは、2つの重要な点でZooKeeperとは異なります。
オブジェクト指向APIを使用します。これにより、調整サービスの作成がはるかに簡単になります。OpenReplicaの同期コードは、対応する教科書とまったく同じように見えます。ZooKeeperやChubbyのように、ファイルやアップコールベースのAPIをマスターする必要はありません。
これにより、レプリカセットの動的なメンバーシップ更新が可能になります。静的構成ファイルは必要ありません。システムはDNS(Authority、OpenReplicaのスレーブ、またはAmazon Route 53)に統合されています。
システムを積極的にサポートしておりますので、ご不明な点がございましたらお気軽にお問い合わせください。
さまざまなエンジニアリングのトレードオフを最適化するさまざまなツールがあります。
- ZooKeeper読み取り用にわずかにスケーリングします。多くのオブザーバーを含む書き込みは遅くなる可能性があります。それは証明されており、かなりのコミュニティがあります。
- Accord書き込み集中型の用途には興味深いようですが、典型的なユースケースにはすでにドメイン固有のソリューション (ロギング、テレメトリなど) があります。
他のものはやや興味深いですが、一般的に証明されていません。プロダクションでの使用を意図している場合は、これを誤解しないでください。
Zookeeper、etcd、および Doozer のこの比較を見つけました: http://devo.ps/blog/zookeeper-vs-doozer-vs-etcd/
Serf (serfdom.io) もシンプルなため、優れたソリューションです。ただし、SERF は、すべてのクラスター ノードにカスタム イベントを送信できる単なるクラスター マネージャーであることを考慮する必要があります。それは素晴らしいことですが、独自のシェル スクリプト (別名イベント) を作成する必要があります。この例を参照してください: " https://www.digitalocean.com/community/articles/how-to-set-up-a-serf-cluster-on-several-ubuntu-vps "
利点は、非常に単純なクラスター マネージャーが得られ、これをお気に入りの構成、展開、または継続的統合ツールと組み合わせることができることです。
興味深いように見える github に Noah と呼ばれるプロジェクトがあり、「Apache ZooKeeper に大まかに基づいている」https://github.com/lusis/Noahであり、REST サポートが重要な機能であると述べています (ZK では、これは contrib/option としてではなく、内蔵より)。
Corosyncも ZooKeeper のようです。