首页 新闻 会员 周边

分布式应用程序怎样做到服务器数据库数据更新时,客户端数据实时同步更新

0
[已关闭问题]

如题,系统为CS架构,采用什么办法能做到数据同步,希望大家给出一些可能的解决方案,定时刷新的办法不采取。股票的程序好像数据都是最新的,不知道是怎么做的。

科比*布莱恩T的主页 科比*布莱恩T | 初学一级 | 园豆:0
提问于:2010-08-08 07:52
< >
分享
其他回答(1)
0

因为使用者都不一定具备外网IP,所有这类软件一般都是采用定时请求远程数据库的数据,或者客户手动刷新。

Astar | 园豆:40805 (高人七级) | 2010-08-08 08:09
0

你说的是行情数据吧!

客户端1分钟提交一次请求给socket server,socket server 从本地内存中获取未读取的行情返回给客户端。都是这么做的,跟数据库没关系,行情都记录在文件中,每只券每天一个文件。 行情来源是通过卫星从上交所,深交所等接收来的,每5秒收到一次全市场行情,然后用新数据刷新本地的一个dbf文件。

现在也在考虑使用tcp的服务端push方式推送行情,以前没这么做,是因为push要求的服务器资源比较多,过去的技术架构也难以维持好的性能,所以一直都使用客户端轮询。

另一个问题就是,防火墙可能被规定为禁止inbound的tcp包,这样服务器也无法推送。

你的问题,需要考虑你的数据更新频率和大小,在服务端,你可以建立一个发布-订阅总线,一个发布系统。发布系统从数据库订阅相关更新,使用SqlDependency和OracleDependency,并将更新发布到发布-订阅总线上。然后客户端向发布-订阅总线订阅更新,客户端的订阅可以是轮询查询,也可以使用tcp的双向通讯功能。客户端接收更新的方式,可以是更新的数据,也可以是更新的主题,然后再通过主题去服务器获取相关主题的更新。后一种方式,可以参考微软的Direct Push技术,这样可以使用无状态的http,以规避防火墙的限制。

Launcher | 园豆:45045 (高人七级) | 2010-08-08 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册