多并发的WebSocket行情数据推送服务相关技术和解决方案

后海 发布于 2016/12/22 11:10
阅读 3K+
收藏 0

@红薯 @JFinal  你好,想跟你请教个问题:

主要的应用场景在于股票行业的app,以及web和后端服务系统的即时socket数据交互。

有别于一般意义上的单纯websocket数据推送,侧重点在于如何支持大批量的终端长连接的稳定性,和扩展性。对于数据量和推送频率很敏感,推送的数据频率非常高、数据量比较大、需要特别问题和随着用户数量的增长,可伸缩扩展支持(最起码硬件层面支持平滑的增长)。

具体状况是开盘的9点到收盘的5点之间,基本上每秒4000支股票,四个维度的订阅频道的推送。

后端目前已经使用了云端服务方面的Redis数据的存取 + NodeJs用于websocket的长连接推送。但是,支持的用户终端数量毕竟有限,不利于用户扩充后的平滑扩展。而且,能够支持的用户数量的长连接是有限的。


咨询,有没有相关的websocket方面成熟稳定可扩展的技术,或者是组合解决方案。

加载中
0
头号大宝贝
头号大宝贝

fyi:

http://www.open-open.com/lib/view/open1435905714122.html

0
yak
yak

准备测试一下go的websocket性能  但是code.google.com/p/go.net/websocket 已经下线了 用了 golang.org/x/net/websocket 这个包要连接必须设置orgin参数, 只用在浏览器环境用,没法在命令行测试   谁在本地有下载了的code.google.com/p/go.net/websocket  能否共享一份 谢谢

后海
后海
想尽量使用nodejs来做
yak
yak
回复 @乌龟壳 : 能处理多少,测试一下才知道
乌龟壳
乌龟壳
回复 @yak : 原来你是要协程,如果不强求用netty之类的来做,其实也不用开多少线程就能处理大量连接了
yak
yak
回复 @乌龟壳 : 协程更适合这种工作简单,但是需要大量链接快速响应的场景,java的线程不能起10000多个线程,那样大部分时候在做context切换
乌龟壳
乌龟壳
java不好吗?个人觉得性能角度go和java应该是一个量级的
0
JFinal
JFinal
这方面没啥经验,不过曾经看过新浪微博首席架构师杨卫华的一次有关方面的分享,新浪微博的长连接用的 jetty,性能非常好,好像是每台机器能处理上百万的连接,时间久远,可能具体数字不正确,建议搜索一下它的那篇分享,是视频的。那个时候新浪微信就是用的服务拆分,本质上现在的微服务只是换了个名字的老方案
0
K不是你的帝
K不是你的帝
既然已经redis共享数据了,那就把后端nodejs集群,然后用nginx做个websocket的负载,请求到不同的nodejs机器上
后海
后海
回复 @K不是你的帝 : 我们就是用的java netty,也就刚刚达到1万,感觉不是很理想,想看看nodejs以及其他技术或者方案能不能有更好的支撑
K不是你的帝
K不是你的帝
回复 @后海 : 单台没超过1W的原因有很多,我是javaer,不太懂nodejs,我们那个应用是netty支撑的,暂时还没做最高支持在线的测试,不知道能支持多少。
后海
后海
就是这样做的,希望单台nodejs尽可能的支撑更多连接(最起码10w+),然后,在进行集群,通过物理来横向的可扩展。 但是,目前好像单台nodejs服务支撑还不到1w,
0
opal
opal

node.js

多简单啊

0
小虫0302
小虫0302
评论不见了怎么办
返回顶部
顶部