アクター モデルと zeromq を使用するアプリケーションのスケールアップに問題があります。簡単に言えば、ソケットを介して通信する何千ものスレッドを作成しようとしています。Erlang 型のメッセージ パッシングで行うことと同様です。マルチコア/パフォーマンスの理由でそれを行っているわけではありませんが、このようにフレーミングすると非常にクリーンなコードが得られるからです。
哲学的な観点からは、これが zmq 開発者が達成したいことのように思えます。たとえば、http://zeromq.org/whitepapers:multithreading- magic
ただし、実際にはいくつかの制限があるようです。1024 インプロセス ソケットで、「ZMQError: 開いているファイルが多すぎます」というエラーが発生し始めます。TCP では、典型的な「Assertion failed: fds.size () <= FD_SETSIZE」クラッシュが発生します。
inproc ソケットにこの制限があるのはなぜですか? それを機能させるには、アイテムをグループ化してソケットを共有する必要がありました。より良い方法はありますか?
zmq は、この種の仕事には不適切なツールなのでしょうか? つまり、アクターのメッセージ パッシング ライブラリというよりもネットワーク ライブラリでしょうか?