We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
現状で既に、メッセージ転送のバッファ(転送先ノードが死亡していたらバッファに溜めておいて、復活したらバッファのメッセージを送る)は可能となっている。 あとは、「サービスは生きていて、Droongaのメッセージ転送の仕組みに則ったメッセージ送受信も可能」というノードに対してどうやって「書き込みメッセージをバッファに溜めておき、復活したらバッファのメッセージを送る」をどのようにして実現するかが問題である。
プラン1:現状のバッファ機構(BufferedTCPSocket)を使う。
プラン2:DispatcherとForwarderの間に新たにバッファ機構を挟み込む。
The text was updated successfully, but these errors were encountered:
プラン3:「サービスは生きていて、Droongaのメッセージ転送の仕組みに則ったメッセージ送受信も可能」というノードがバッファする。
というのはどうだろう。
Droonga::Engine#process で、自分のステータスがsuspendとかcopyingとか(「サービスは生きていて、Droongaのメッセージ転送の仕組みに則ったメッセージ送受信も可能」というノード)という状態になったら、dispatcherにメッセージを送らずにバッファする。で、ステータスがactiveとかに戻ったらまずはバッファしているメッセージから処理する。
Droonga::Engine#process
というイメージ。
Sorry, something went wrong.
メッセージを受信した側のノードが、dispatcherの所で堰き止めるということでしょうか?
送信側Dispatcher(1)→送信側Forwarder(2)→送信側BufferedTCPSocket(3)→受信側Dispatcher(4)→...
とある時に、
ということでしょうか。
プラン3は、その上でdump系のコマンドだけ堰き止めずに通すようにするという事なのだと思いますが、送信側ノードが自分の受信したdumpをForwardしてしまった時にまでそれを処理してしまうということはないでしょうか? そういう事が起こらないように特例を設けて……とやっていくと、普通のコマンドの取り扱いの中で特例がどんどん増えてしまう気がして、自分は不安が大きいです。
プラン3:3と4の間、受け側のEngine(Dispatcherより手前)で書き込み系メッセージを堰き止めるという案。
しかしこの方法だと、dumpによるデータコピーのためのメッセージまで堰き止めてしまう。 よって、このプランは不採用とする。
No branches or pull requests
現状で既に、メッセージ転送のバッファ(転送先ノードが死亡していたらバッファに溜めておいて、復活したらバッファのメッセージを送る)は可能となっている。
あとは、「サービスは生きていて、Droongaのメッセージ転送の仕組みに則ったメッセージ送受信も可能」というノードに対してどうやって「書き込みメッセージをバッファに溜めておき、復活したらバッファのメッセージを送る」をどのようにして実現するかが問題である。
プラン1:現状のバッファ機構(BufferedTCPSocket)を使う。
プラン2:DispatcherとForwarderの間に新たにバッファ機構を挟み込む。
The text was updated successfully, but these errors were encountered: