如何在 1s 内广播消息到 30K 甚至更多的客户端?

2015-11-02 02:01:09 +08:00
 naquda

具体是这样的, 现在有个服务,是基于 JAVA Netty 的,
有一个线程在不断产生数据,基本每一秒都会有新的数据,当这个数据产生后,需要尽快的发送到所有关心这个数据的客户端,对时间很敏感,最敏感的, 1S 内都要发送完。
Netty 的话,我看用 ChannelGroup.write() 也没有并发的执行

有什么样的方案可以做到这样的事情?
查了一些资料,有些在 JAVA 上实现轻量级线程,比如 Quasar , 但具体应用资料很少。
另外, Golang 是不是很容易干这种事情?

5879 次点击
所在节点    Java
26 条回复
znoodl
2015-11-02 17:45:16 +08:00
zeromq push pull
znoodl
2015-11-02 17:45:59 +08:00
错了 pub sub
anexplore
2015-11-02 18:13:55 +08:00
@SparkMan 能否分享一下 rabbitmq 比 kafka 慢很多的场景?我以前做过 2 组测试,消息大小分别为 1k 与 40kb 的时候, rabbitmq 与 kafka ( batch 设为 100 )性能不相上下。
naquda
2015-11-02 18:15:15 +08:00
研究了下 ZeroMQ , 目前还很难用上这些技术, 主要是因为这个客户端也要做相应的修改,而我这的客户端比较特殊,并不是 X86 平台, PORTING 这些库,带来更多的未知风险, 所以还是要在传统的 SOCKET 上实现
pkking
2015-11-02 18:16:11 +08:00
socket 中的广播或者多播可以满足你
ncisoft
2015-11-15 09:22:56 +08:00
@pkking +1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/232793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX