マルチサービスセットアップで東京キャビネットからの変更をプッシュするためのいくつかのテクニックは何ですか?
-
19-09-2019 - |
質問
n> 1 TCPベースの接続指向(読む: いいえ Webサイト)ロードバランス/共有構成のエンドユーザーからの接続の処理。
これらのユーザーは、一元化された東京暴君データストアの1つ以上のキーを更新することを行います。
何をお勧めしますか 押す これらの変更は、同じプライベートネットワークで実行されている別のサービスインスタンスに接続されている関心のあるユーザーに変更します(同じコロ。)?
User 1 Service 1 Tokyo Tyrant Service 2 User 2
------ --------- ------------ --------- ------
| | | | |
------> do something | | |
| | ---> put K 42 | |
| | | ----> Hey! K is now 42 |
| | | | ---> K was updated
いくつかのアイデア:
サービスnから他のすべてのサービスへのデータストアの更新の成功の変更をブロードキャストします
User 1 Service 1 Tokyo Tyrant LAN Broadcast Service 2 User 2
------ --------- ------------ ------------- --------- ------
| | | | | |
------> do something | | | |
| | ---> put K 42 | | |
| | -----------------> Hey! K is now 42 | |
| | | | --> Hey! K is now 42 |
| | | | | ---> K was updated
どのサービスを保存してください関心のある各ユーザーがログインしてログインし、それらのサービスにメッセージを送信し、関心のあるユーザーに中継します。これがIRCサーバーサーバー接続がどのように機能するかだと思います(それを調査する必要があります)。
User 1 Service 1 Tokyo Tyrant Service 2 User 2
------ --------- ------------ --------- ------
| | | | |
------> do something | | |
| | ---> put K 42 | |
| | ---> who cares? | |
| | <--- User 2 on Service 2 | |
--------------------------------------> Hey! K is now 42 |
| | | | ---> K was updated
メッセージブローカー(rabbitmqなど)を実行します。各サービスxに、関心のあるユーザーに代わってキューに購読してください。成功した「パット」に投稿してください
User 1 Service 1 Tokyo Tyrant RabbitMQ Service 2 User 2
------ --------- ------------ -------- --------- ------
| | | | <--- subscribe --| |
------> do something | | | |
| | ---> put K 42 | | |
| | ------------------- post msg --> | |
| | | |----- notify ---->| |
| | | | | ---> K was updated
さらに別のアイデアは、複製奴隷のふりをしてマスターに接続することです。
一般的に、CouchDBで見つかったが東京暴君のために「通知を変更」する方法を探しています。しかし、アイデアはより一般的です。
永続的なキューを持つメッセージブローカーを使用することをお勧めする場合 代わりは 東京暴君のようなデータストアについては、検証などを可能にするために私がそのようなものにどのように接続するかを説明してください。私はまだそのような親密ではありません。
解決
私の推奨事項(および私が使用しているもの)は、メッセージブローカーアプローチです。 rabbitmqは、さまざまなキューを購読するサービス(UN)を追跡し、ファンアウト交換を使用できます。
また、東京キャビネットには、更新を取得してキューにプッシュするために使用できるログ(奇妙な形式)があります。 Cronのみを使用してみましたが、ソケットを使用してリアルタイムで取得することは可能だと思います。