请教一个问题,我想把一部分不经常变更的数据放入内存中,直接从内存中加载。遇到的问题是这样做在数据更新时怎样保证在分布式部署环境中各个服务器中内存中数据的同步了?大家有什么建议?

解决方案 »

  1.   

    做法很多
    1.及时性非常不高
    分布的服务器,每隔一段时间更新内存数据2.及时性要求比较高
    一旦数据库的数据发生变化,通知每个分布的服务更新内存数据,通知方式可以使用JMS的Topic模式,及发生改变的操作发送一个Topic,每隔分布的服务获取消息进行更新。3.及时性要求非常高
    更新数据库的数据时,将更新分布服务的内存数据操作纳入同一个事物,等待所有事物完了,统一提交。
      

  2.   

    分布式缓存本身就能解决这个问题
    比如memcache,它本身就会去同步别的服务器进行数据共享..你值需要配置和使用即可.
      

  3.   

    楼上的建议不错,利用memcache的集群同步功能去完成你的内存同步操作。
      

  4.   

    推荐用:memcache ,分布式缓存同步做的还可以,用法简单。
      

  5.   

    谢谢大家!!定时更新,容易实现,但不同步有延时。我在网上找了下,发现了Jgroups能广播消息,自动识别新增机器。刚开始看,应该符合我的要求。memcache还没有接触过,要仔细看看。目前要解决两个问题:
    一:Jgroups,memcache谁更合适
    二:Jgroups,memcache是否有互补的地方,可以结合使用。
      

  6.   

    memcached只是工具,别的缓存方案也可以.
    定时刷新可能不适合你的情况,因为你说这些数据很少更新
    建议在更新操作的时候主动去更新缓存,减少缓存刷新