[英]Zmq for random recv and reply
關於Zmq,我有兩個問題:
1)我正在實現一個服務器,該服務器每分鍾將接收10K個請求,然后將這些請求重定向到后端。 從后端獲取響應后,它將發送回響應。 我不能使用request / reply,因為這種模式的限制是recv / reply應該是同步的。 誰能建議我在這種情況下使用什么。
2)我是否還需要在其中實現多線程。
提前致謝。
如果需要多線程,首先讓我回答問題1-性能要求和問題2 :
通過瑣碎的性能測試,有意地添加了TCP傳輸包裝開銷,您可能會發現[usec]每發送一條消息,就會發現ZeroMQ消息處理層的“成本”。
21.936 [usec]/MSG
111.280 [usec]/MSG
39.714 [usec]/MSG
37.080 [usec]/MSG
11.351 [usec]/MSG
要了解有關郵件批量大小減輕影響的想法,請讓我們閱讀帶有增長大小的重新測試
>>> [ sender( nBatchSIZE = x ) for x in ( 1, 10, 100, 1000, 10000, 100000, 1000000 ) ]
sent 1 ... RUN took: 58 [usec] i.e. 58.0 [usec]/MSG
sent 10 ... RUN took: 156 [usec] i.e. 15.6 [usec]/MSG
sent 100 ... RUN took: 1071 [usec] i.e. 10.7 [usec]/MSG
sent 1000 ... RUN took: 10561 [usec] i.e. 10.5 [usec]/MSG
sent 10000 ... RUN took: 106478 [usec] i.e. 10.6 [usec]/MSG
sent 100000 ... RUN took: 1333242 [usec] i.e. 13.3 [usec]/MSG
根據這些數據,您的Q1系統在合理大小的MSG上不會出現10k / min的事件流問題(更不用說多GB BLOB了)
因此,處理性能受到后端階段的限制
關於第二季度使用建議:
因此, REQ/REP
不在表格中。 與其嘗試使用任何性能可擴展的方法來提高端到端處理能力,不如使用多線程,而是使用更高級的負載均衡器方案,例如REQ/ROUTER||ROUTER/REQ
等,都可以提高性能。處理速度並添加一些故障解決功能。 檢查單集群和多集群體系結構中的樣本瑣碎結構
對於您的消息量,這完全取決於消息的大小。 假設消息大小大致為“典型”(例如,通常多達幾百個字節),並且該系統可以處理該吞吐量(例如,如果要預加載消息而不是通過ZMQ接收消息,它將處理您的消息量)效率足夠高?),那么您就不會每分鍾發送10k消息就大汗淋漓。 您可能每秒都可以這樣做(如您在其他答案中所見)。
ZMQ將支持您想要的任何消息模式,但是您必須提供更多信息來確定哪種模式最適合您。 有很多的很好的例子引導 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.