用于实时目的的zeromq中的统一
Uniform in zeromq for realtime purpose
我需要用实时的服务器和终端来实现分析系统。
我使用ZeroMq库(pub|sub模式)向客户端发送消息(~40字节)。
如果我连接一个客户端,消息会延迟(有时会超过250毫秒)。如果我连接100个客户端,很多客户端都会失去一致性(超过750ms,没有一条消息,在大量数据之后)。这对我来说是一个非常关键的问题。
我必须发布到6000多个终端。。。每30ms发布一次,在最坏的情况下(tcp),每个客户端大约有1700字节
也许我应该使用另一种技术来实时传递消息?
正如我在评论中所说,多播是一种方式。最主要的问题是,无论你的终端离你有多远,它们是否可以加入你发布的群组。
你没有说明终端是如何连接到你的网络的(例如,互联网上的vpn,专线等等)你要求一种更好的技术,那就是多播。
现在,如果你要走tcp路线,有一些选择:
- 建立一个负载平衡基础设施,它位于您的服务这意味着你的终端无法连接到你的服务,但连接到一组负载平衡器,然后连接到您的服务例如,如果你有10个,每个只需要处理拥有600个客户。你的问题要小得多——你可以扩大规模方法不要忘记使用异步io
- 购买更好的硬件-例如solace或tervela do硬件可以扩展到大量并发tcp的消息代理连接-但这并不便宜
相关文章:
- 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)的项目结构
- 如何将ZeroMQ用于多个服务器-客户端对
- ZeroMQ 的替代方案是什么,用于移动协议缓冲区有效负载
- 用于实时目的的zeromq中的统一
- 如何在Mac OS X 10.9上安装ZeroMQ以用于C/ c++程序