0

ZMQは、独自の負荷分散を行うためのすべての柔軟性を提供することを私は知っています。ただし、すぐに使用できるブローカーで、この行を使用して約4行のコードを使用することを期待します。

zmq_device (ZMQ_QUEUE, frontend, backend);

ドキュメントにロードバランシングが行われていると記載されているように、ロードバランシングを非常にうまく行うことができます。

ZMQ_QUEUEは、一連のクライアントから要求を収集する共有キューを作成し、これらを一連のサービス間で公平に分散します。リクエストはフロントエンド接続から均等化キューイングされ、バックエンド接続間で負荷分散されます。返信は、元のリクエストを行ったクライアントに自動的に返されます。

私はバックエンドサービスの軍隊を持っていますが、フロントエンドクライアントは1:1の設定で1/10秒未満かかるものを数秒待たなければならないことがよくあります(クライアントとサービスの数は同じです)マシン)。ZMQは、箱から出してすぐに適切に負荷分散されていないのではないかと思います。帯域幅などがなくても、同じサービスに送信するリクエストが多すぎます。

これは、サービスが最大10の同時リクエストを受け入れるようにマルチスレッド化されているにもかかわらず、サービスを受け入れることができるにもかかわらず、10番目のリクエストの近くで大幅に遅くなるためだと思います。ランダムな分布が理想的です。これをすぐに実行できる方法はありますか、それとも数行のコードで実行できますか、それとも独自のブローカーを最初から作成する必要がありますか?

4

1 に答える 1

0

Fwiwの問題は、労働者が仕事をする余地がないときに仕事を引き受けていたことでした。問題はZMQレイヤー自体にはありませんでした。

于 2012-09-07T20:08:26.817 に答える