早めに決めなければならないこと
Caitsith の仕様が、頭の中で大まかに固まってきて、決めかねている部分が幾つか出てきた。
できれば他の人の意見も貰いたいけど……そもそも誰か見てるのかな、このブログ。
TODO: アクターに届かなかった or リジェクトされたメッセージはどうするのか考える
通信障害やアクタが受け取りを拒否した場合など、メッセージが届かなかった場合に Caitsith の処理系としてはどのような挙動を見せれば良いか、という問題。
大まかな指針としては、処理系側で再送や転送は行わないということは考えている。また、可能な限りシンプルになるように調整したい。
案として考えていることは、
- 送信元に ICMP みたいなメッセージを送信
- 送信元となるアクタは数多いから、それら全てに対応を迫るのはちょっと辛い?
- アクタの継承で、デフォルトの処理を継承させればなんとか?
- 無視し、処理系側でロギング or Java レイヤに通知
- これが一番現実的な答えのような気がするな
- 無視し、一切の処理を行わない
- 簡単だけど、さてどうだろう……
- 処理系を異常停止させる
- KL1 が、単一化に失敗したときに処理系を停止させるみたいなノリで
さて、どれが一番都合が良いかな。
TODO: 信頼のおける通信経路とは、どこまでをさすのか目安を付けておく
基本、アクタ間の通信は、それがどれだけ離れていようがひとくくりとして扱うことを考えたい。するとどれだけ離れると信頼性が十分でなくなるのかを考えておく必要がある。
- 同一 vm 内の通信
- 同一マシン内の通信
- 同一 LAN 内の通信
- WAN 経由の通信
たぶん1は無条件で信頼と見なして良いとは思うけど、2番がちょっと微妙。3と4はあまり信頼性に優れてないよね。