高分求一个SOCKET服务的解决方案

kapil 2012-05-21 11:03:12
在搞一个金融类的项目,目前是期货方向。

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

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

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

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

...全文
132 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kapil 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

你这个系统主要还是要考虑架构的合理性

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

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

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

这个结构应该没问题
[/Quote]

现在实时数据是些在本地的文件中的,专门有程序负责生成这个。

我的问题是,如果上千个线程在一秒钟之内去读取实时数据,这个并发合理吗?

我认为不太合理。

我想实现一种模式:专门有一个线程负责把实时数据读取到内存中,然后那上千个线程再去读取内存就快多了,更好的方式是类似“观察者模式”,但是不知道如何实现。
kapil 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

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

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

在大负载的情况,考虑一下队列的方式。
[/Quote]

不是HTTP访问,是SOCKET~~,我现在这个循环基本上跟队列相似,不过是服务器端主动推送给客户端的。
桃园闲人 2012-05-21
  • 打赏
  • 举报
回复
可以再开启一个专门扫描数据库变化的线程,这个线程操作一个全局对象,将数据更新到全局对象中,然后其他的所有线程只需要使用这个全局对象来获取数据。
runer 2012-05-21
  • 打赏
  • 举报
回复
你这个系统主要还是要考虑架构的合理性

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

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

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

这个结构应该没问题
runer 2012-05-21
  • 打赏
  • 举报
回复
你说的有一点问题,
你这个架构不是推送,实际上还是客户端主动去访问php的脚本
在程序合理的前提下,负载上应该没有问题

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

在大负载的情况,考虑一下队列的方式。
kapil 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

说的稀里糊涂。

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

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

客户端是FLASH,通过SOCKET调用的PHP写的SOCKET服务,在实时数据接收上,现在已经实现了SOCKET发送,但是由于PHP不支持多线程,所以现在的架构是PHP循环给多个FLASH客户端发送实时数据。

我正是担心PHP的这种架构的性能,所以考虑用JAVA来实现,但是却卡在了如何把那4组实时数据推送给上千个线程。。

不知道这么说是否理解?
runer 2012-05-21
  • 打赏
  • 举报
回复
说的稀里糊涂。

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

是不是这样的:客户访问一个flash的网页,
这个flash网页每秒调用一个php脚本,
如果发现有更新数据,就在客户端显示?
kapil 2012-05-21
  • 打赏
  • 举报
回复
自己顶一个,顺便再补充一个问题。。

就目前这4组实时数据来说,用PHP循环的方式给几千个客户端推送数据,效率怎么样?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧