日期:2014-05-20  浏览次数:20775 次

高分求一个SOCKET服务的解决方案
在搞一个金融类的项目,目前是期货方向。

现在的架构:flash + php,PHP每秒钟扫描实时数据是否有变化,如果有更新就在SOCKET端用循环的方式向所有连接的客户端发送数据,因为同时推送的数据较少(现在只有4组实时数据需要给客户端推送),而且在线人数较少,所以暂时这个架构暂时还可以应付。

近期打算把SOCKET方面重写,考虑到以后可能会有上千人在线,并且会有更多品种的实时数据(如果是股票的数据可能会有几千组的实时数据),所以暂定JAVA,而且大部分功能都已经实现。

目前卡在一个地方:如果用JAVA的多线程来实现的话,上千个线程在一秒钟内同时扫描和读取实时数据不太现实,有没有简单可行的方案,比如用一个线程或者进程独立扫描实时数据,然后再把有变化的实时数据分发给那上千个线程?

请大家多多发表意见,分不够再加!



------解决方案--------------------
说的稀里糊涂。

1、flash+php是你的服务器上的架构?
2、socket端是哪端?

是不是这样的:客户访问一个flash的网页,
这个flash网页每秒调用一个php脚本,
如果发现有更新数据,就在客户端显示?

------解决方案--------------------
你说的有一点问题,
你这个架构不是推送,实际上还是客户端主动去访问php的脚本
在程序合理的前提下,负载上应该没有问题

如果是单纯用php实现socket服务,不太合适。

在大负载的情况,考虑一下队列的方式。
------解决方案--------------------
你这个系统主要还是要考虑架构的合理性

就像你说的上千个线程同时访问实时数据,是不太现实的,而且对方的接口可能也不会允许你这样的并发访问。

用java来做一个服务端的daemon程序,单进程,来抓取实时数据,放到本地,

本地服务器端的脚本以队列的方式处理客户端的请求

这个结构应该没问题
------解决方案--------------------
可以再开启一个专门扫描数据库变化的线程,这个线程操作一个全局对象,将数据更新到全局对象中,然后其他的所有线程只需要使用这个全局对象来获取数据。