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

分布式服务间的内存数据同步问题
征求相同的业务处理服务器间的内存数据同步方案

------解决方案--------------------
连参观的人都没有
------解决方案--------------------
memcached

如果要其他建议,必须了解楼主的业务
------解决方案--------------------
主要使用的硬软件的现场环境,可以使用运行态与XML格式数据的同步,server之间的webserver之间的传输数据同步就行了。
------解决方案--------------------
用一个远程内存数据库比如memcached之类,这时候其实并不是什么“分布式服务”的意思。这谈不上“同步数据”,因为数据根本没有在前端服务器里边。

比如前端服务器要做数据缓存,每一个服务器应该负责管理自己的,而不应该使用memcached之类的方法访问远程数据库。但是数据缓存都需要有一种缓存依赖机制,既当后台数据修改时应该尽快删除脏数据。所以这里的关键是由后端回调各个前端服务,通知业务服务器哪些类型或者范围的缓存该删除了。

与其通过访问远程内存数据库系统的方式来保存数据,还不如重新设计你的系统架构,将那些不好进行回调通知数据服务单独独立出来作为一个业务服务器,其它服务器去访问这个业务服务器。这样不仅仅“缓存”了保存了数据,而且也集中实现了业务处理。
------解决方案--------------------
基本上空洞的“内存数据同步方案”是不存在的。
------解决方案--------------------
第一个想到的方式很简单,假设一个后端服务系统有更新动作,那么就把这个数据(比如是json格式)通过回调传递给所有监听这它的前端服务系统。这个行为模式应该不会改变。

当然继续的优化的思路就是在后端服务系统的数据定义上做一些标记,除了回调通知时直接包含完整的被修改的数据,还可以有其他方式组成的通知内容。
------解决方案--------------------
基本上空洞的“内存数据同步方案”是不存在的。
----------------------------------------------
服务器间内存数据的同步,在网游服务组里,应该是有的,而不是不存在,当然,我只是猜测,没做过。

使用远程的内存服务器的方案有想过,但就整个架构的稳定性和故障兼容性方面并不是很理想。

我的业务里的分布式设计主要考虑两点:
1 服务器负载均衡
2 服务器故障切换,保证持续的服务

我的业务环境是C/S,而业务数据,并非只是数据库数据的缓存及更新,其中包含跟客户端交互的半持久性的数据,举个例子,就是跟P2P里的TRACER服务器类似
------解决方案--------------------
探讨
http://wenku.baidu.com/view/84675a114431b90d6c85c77b.html

给你看篇文档

------解决方案--------------------
学习,搬板凳
------解决方案--------------------
1. 内存数据同步这个概念很虚, 应当把问题与业务结合提出,针对业务提出解决方案。
2. 服务器间的缓存同步, 如果真的要求实时性很高的话,应当用分级缓存+缓存依赖来实现。
3. 分布式服务器访问一级缓存后,注册访问者,当一级缓存发生修改时,触发二级缓存的访问者重新获取缓存数据。