Zmq用于随机接收和回复
Zmq for random recv and reply
我有两个关于Zmq的问题:-
1) 我正在实现一个服务器,它将每分钟接收10K个请求,然后将这些请求重定向到后端。从后端获得响应后,它将发送回响应。我不能使用请求/回复,因为这种模式的限制是recv/reply应该是同步的。有人能建议我在这种情况下使用什么吗。
2) 我是否也需要在其中实现多线程。
提前谢谢。
让我首先回答Q1-对性能的要求Q2-如果需要多线程:
ZeroMQ传输开销时间是多少
从琐碎的性能测试、有意添加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(不包括多GB BLOB)上的10k/min事件流不会有问题
因此,处理性能受到后端阶段的限制
关于Q2使用内容的建议:
CCD_ 1因此从表中移出。因此,与其考虑多线程,不如考虑任何可扩展性能的方法来提高端到端处理能力——为REQ/ROUTER||ROUTER/REQ
等负载均衡器使用更高级的方案,您既可以提高处理速度,也可以添加一些故障解决功能。检查Single&多集群体系结构
对于您的消息量,这一切都与消息大小有关。假设一个大致"典型"的消息大小(比如说,通常高达几百字节)和一个可以处理该吞吐量的系统(例如,如果你要预加载消息而不是用ZMQ接收消息,它是否足够有效地处理你的消息量?),那么你就不会为每分钟10k条消息而汗流浃背。你可能每秒钟都这样做(正如你在另一个答案中看到的那样)。
ZMQ将支持您正在寻找的任何消息模式,但您必须提供更多信息来确定哪种模式最适合您。指南中有很多好的例子。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 重载==不适用于二进制树
- Insert函数不适用于2 if语句C++
- 用于矢量处理的多个线程
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 为什么模数运算符不适用于该代码
- 并行用于C++17中数组索引范围内的循环
- 用于 ARP 回复数据包的 c/c++ pcap 过滤器表达式
- Zmq用于随机接收和回复