背景
この記事では、サービス発見の基本原則を説明していません。コンセンサスアルゴリズムではなく、あまりにも多くの他の高度なアルゴリズムに加えて、インターネット上の情報には、上記のサービスの発見である、それは簡単に誰もが理解できるようになります。
あなたが学生の結論を見て興味を持っている場合は、テキストの末尾に進んでください。
現在、市場では、サービス発見ツールをたくさん持っている、「オープンソースサービス検出の記事では、」次のオープンソース・サービス・ディスカバリー・ツールを記載されています。
名 | タイプ | APまたはCP | 言語 | 依存関係 | 統合 |
---|---|---|---|---|---|
飼育係 | 一般的な | CP | ジャワ | JVM | クライアントバインディング |
Doozer | 一般的な | CP | 行きます | クライアントバインディング | |
Etcd | 一般的な | ミックス(1) | 行きます | クライアントバインディング/ HTTP | |
SmartStack | 専用 | の | ルビー | haproxy /飼育係 | サイドキック(神経/シナプス) |
ユーレカ | 専用 | の | ジャワ | JVM | Javaクライアント |
NSQ(lookupdの) | 専用 | の | 行きます | クライアントバインディング | |
農奴 | 専用 | の | 行きます | ローカルCLI | |
Spotifyは(DNS) | 専用 | の | N / A | バインド | DNS図書館 |
SkyDNS | 専用 | ミックス(2) | 行きます | HTTP / DNSライブラリ |
一貫性のあるパラメータを使用する場合(1)、一貫性のない読み取り可能である
SkyDNSの前にキャッシングDNSクライアントを使用する場合(2)、読み出しが矛盾することができ
上記の表では、最初の3つは大手企業が自らの意思ではなく、アプリケーションの広い範囲の車輪の後ろに、私は徹底的に研究していないが、共通しています。
また、この記事では、それがテーブルに、領事を勉強しなかったとき、14年に書かれ、領事は一般、CP、ゴー、ノー依存する必要があり 、HTTP / DNSライブラリ。
今日の時点で、コンテナフレームの配置K8Sに加えて、istio /特使は、他のよく知られたサービス発見フレームワークが登場していない持っているようだ(彼らはまた、サードパーティのサービス発見ツールと互換性がある)彼のサービス発見メカニズムを実現します。
ここで私はetcd、飼育係、領事は、下のこれら三つを比較します。
比較します
飼育係
ZooKeeperのは、命名分散同期を提供し、グループのサービスを提供し、設定情報を維持するための集中型サービスです。サービスのこれらの種類はすべて、分散アプリケーションによって何らかの形で使用されています。彼らはそこに実装されているたびに避けられないバグや競合状態を固定に入る多くの作業です。そのため、サービスのこれらの種類を実装することの難しさのため、アプリケーションは最初は通常、変更、管理が難しいの存在下で、彼らは脆くれ、それらけちります。正しく行われた場合でもアプリケーションがデプロイされている場合、これらのサービスの異なる実装は、管理の複雑さにつながります。
こうした飼育係の公式サイトの紹介、翻訳され、飼育係の機能は次のとおりです。
- 保存された中央サーバ構成情報として
- ネーミングサービス
- 分散型の同期
- パケットサービス
私たちは、それが使用される非常に大規模なサービス・ディスカバリ・フレームワークであるだけでなくとして飼育係、見ることができます。
あなただけのZooKeeper発見ツールとして機能する場合は、その構成や分散同期を格納するための機能を使用する必要があります。前者は、非同期通知メカニズムに登録ユニーク飼育係ウォッチャーを提供整合性KV記憶を有すると理解することができ、リアルタイムステータス飼育係非同期ノードは、クライアントの飼育係に通知することができます。
飼育係を使用してください
飼育係は、次の手順が使用されます。
- その選択した言語のSDKを確認し、理論的にはgithubの、それが使用されるべきで慎重に選別いくつかのサードパーティのライブラリがあります。
- 飼育係の飼育係・サーバ・インタフェースを呼び出します。
- 登録彼らのサービス
- 状態ウォッチャーによって取得リスニングサービス
- サービスプロバイダは、自分の心臓の鼓動と飼育係のサーバーを維持する必要があります。
「飼育係C APIガイドは、」8件の記事を書いたのZooKeeper C言語のAPIを使用する方法について説明します。
一般的に飼育係は、ファットクライアントを必要とする、話す、各クライアントは、飼育係のサービスをキープアライブそのSDKを介して必要と書き込みプログラムの複雑さを増します。また、それはまた、消費者のAPIは、サービス登録を実現し、発見ロジックは生存テストを達成するために、サービスプロバイダが必要です提供します。
etcd
etcdがあるため使用し、単純なのが容易で、分散ストレージシステムを使用してキーhttpプロトコルです。多くのシステムでは、このようなkubernetesとして、見つかったetcdの一部として使用したり、サポートサービス。それが唯一のストレージシステムですので、あなたが完全なサービスディスカバリ機能を提供する場合でも、ビジネスに至るまで、いくつかのサードパーティ製のツールを使用する必要があります。
例えば、etcd、レジ、confdの組み合わせで、非常にシンプルで強力なサービス発見フレームワークを構築することができるようになります。しかし、この操作は、特に比較的領事のために、少しトラブルスポットを構築することができます。シーンのほとんどがそうetcd KVは、kubernetesとして、ストレージのために使用されたされています。
領事
etcdと比較すると、飼育係、領事最大の特徴は次のとおりです。これは、使用するためのしきい値を下げ、箱から出して、利用者サービスの発見の人気の需要を統合し、任意のサードパーティ製のツールを必要としません。十分なシンプルな実装するコード。
領事は、複数のコンポーネントを持っていますが、全体として、それが発見し、インフラストラクチャのサービスを構成するためのツールです。これは、いくつかの重要な機能を提供します。
- サービス検出
- ヘルスチェック
- KVストア
- マルチデータセンター
言って始めた、領事の機能は次のとおりです。
- DNSまたはHTTPによって、アプリケーションが簡単にシステムに依存してそれらを見つけることができます
- HTTP戻りコード200、メモリがオーバーランされ、TCP接続が成功したかどうか:それはヘルスチェックのさまざまな方法を提供しています
- KVストレージ、およびhttpのAPIを提供
- 複数のデータセンターは、この時点では利用でき飼育係ではありません。
領事を使用してください
飼育係に比べてサービスの利用には、領事がサービスに統合され、特殊なSDKを必要としないので、それは任意の言語の使用を制限しないことがわかりました。私たちはどのように総領事の使用を見てください。
- 領事エージェントは、各サーバーにインストールする必要があります。
- 領事エージェント登録サービスは、プロファイルでサポートされている、またはHTTPインターフェースサービスを介してサービスを登録します。
- ヘルスチェックの方法で指定された登録サービス、領事エージェントの後、定期検査サービスは生きています。
- サービス場合は、他のサービスの生存状況を検索するだけで、エージェントおよび領事ネイティブのhttpリクエストをしたいか、DNSへの要求を開始します。
簡単に言えば、領事の使用は、すべての論理サービスの発見を満たすことができるように、単純なHTTPリクエストに頼って、任意のSDKには依存しません。
しかし、領事エージェントから全てのサービスは、飼育係ウォッチャーの仕組み、少し弱いリアルタイムに比べて、他のサービスの生存状態を得るために、可能な限りリアルタイム性を改善する方法を検討する必要があり、問題は素晴らしいことではないだろう。
概要
名前 | 利点 | 短所 | インターフェース | コンセンサスアルゴリズム |
---|---|---|---|---|
飼育係 | 1.強力なだけでなく、サービスの発見 2.サービスプロバイダのリアルタイムのステータス取得することができウォッチャーメカニズムを提供 3.dubboおよびその他のサポートフレームを |
1.ませヘルスチェック 2 SDKは、複雑高いのサービスに統合する 3は、複数のデータセンターをサポートしていません。 |
SDK | パクシ |
領事 | 1.簡単に使用するには、統合SDKを必要としません 2.自身の健康チェックに 3.サポート複数のデータセンターを 4には、Web管理インターフェイスを提供します |
1.リアルタイムの変更通知でサービス情報を取得できません | HTTP / DNS | ラフト |
etcd | 1.簡単に使用するには、統合SDKを必要としない 高度な設定2. |
1.ませヘルスチェック 、サードパーティ製のツールと一緒にサービスを完了するために、2が見つかりませんでした 3は、複数のデータセンターをサポートしていません。 |
HTTP | ラフト |
将来的には複数のデータセンターをサポートし、かつ迅速なnodejs、Pythonのサービスなど、さまざまな言語をサポートするためにするためには、私たちの領事サービス・ディスカバリ・フレームワークとして選ぶだろうが、リアルタイム情報サービスの変更通知へのアクセスの問題は、可能な限り削減する必要があります。
参考:
その他のソフトウェア対領事
サービスディスカバリー:飼育係ETCD VS VSコンスル
その他のソフトウェアVS領事
比較のZooKeeperと領事