日期:2014-05-19  浏览次数:20728 次

分布式数据库问题,如何保证数据一致性?
大家好,我现在做了一个系统,目前是采用分布式部署,最上面有一个服务器存储了所有的数据,该服务器下面还有几十个节点服务器存储自己的数据,现在需要对数据库做同步。数据库用的是mysql,而mysql的replication机制好像不能解决这种架构的数据同步问题,只有自己通过程序来实现。

同步分为:
1)即时同步,这个目前是通过调用RPC接口来完成的,节点服务器每一个UPDATE操作,都调用一次接口
2)定时同步,现在采用的是每天定时通过tcp socket来同步,节点服务器先查询出自上一次同步完成后的所有数据,使用JSON方式将所有数据记录通过SOCKET传递至上级服务器,上级服务器接受到以后,进行比较,然后将需要节点服务器更新的记录返回,节点服务器再做更新,这样就完成了一次一个节点服务器与上级服务器的数据定时同步过程。
但是如果在同步过程中有新的记录插入或更新,那么会导致数据不一致的现象,我能想到的解决方法是在同步过程中服务器禁止禁止访问,同步完成后才允许访问。顶级服务器及的同步采用synchorized锁,每次只允许一个节点服务器与其做同步。

还有没有更好的解决方案呢?有没有同学做过这方面,请不啬赐教!

------解决方案--------------------
分布式事务,这个有很多解决方案!