锁定老帖子 主题:高可用性的memcached集群搭建讨论
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-02-25
第一种是比较简单的,直接增加memcached服务器数量,选一种java memcached客户端或代理,让客户端可以检测到memcached的状态,如果挂掉了,那么从服务器列表里面剔除,对key重新计算hash,这种办法就是会丢缓存里面的数据,但是可以保证只要有一台memcached可以服务,就不会对数据库产生太大的压力。但是最近找了下客户端和代理,貌似可以达到这种效果的,成熟的不多。。。 有一个xmemcached,发现有remove服务器列表的接口,但是不确定是否可以自动检测服务器状态,自动移除不可用的服务器。 第二种方案近似于淘宝Tair的实现,每台memcached服务器都有备份机,一旦发现master不能服务了,slave就补上,这种方式是比较完美,但是对于我们业务部门来说,不可能花那么大的心思来实现这一套东西。业界基于memcached的好想也没有好的这样一套开源的东西出来。 所以大家有没更好的办法? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-02-25
刚才看了下xmemcached的代码,它的removeServer和addServer接口都没有方法调用,说明不能自动的增加和减少服务器列表。。。
|
|
返回顶楼 | |
发表时间:2013-03-01
xmemcached的代码
|
|
返回顶楼 | |
发表时间:2013-03-01
|
|
返回顶楼 | |
发表时间:2013-03-02
richard_2010 写道 刚才看了下xmemcached的代码,它的removeServer和addServer接口都没有方法调用,说明不能自动的增加和减少服务器列表。。。
这个两个方法我肯定是可以增加和删减哈! 我采用的一致性hash算法 作为分布式算法的 xmemcached可以设置检测memcached节点状态,如果其中一个断开连接,xmemcached则会发起心跳 检测 节点是否已经重启并且可以重连了, 能连的话,则加入到集群列表中. 我的处理很简单,就是创建了多个xmemcached对象,然后保存在一个类似于List这样的类中! 管理器代码可以自己规划不多说了. 主节点采用同步更新,备份节点异步更新(备份节点可以有多个),当主节点出问题时,开始遍历备份节点直到找到值,如果遍历完都没有则返回null. |
|
返回顶楼 | |
发表时间:2013-03-03
LikeEJB_CC 写道 这个两个方法我肯定是可以增加和删减哈! 我采用的一致性hash算法 作为分布式算法的 xmemcached可以设置检测memcached节点状态,如果其中一个断开连接,xmemcached则会发起心跳 检测 节点是否已经重启并且可以重连了, 能连的话,则加入到集群列表中. 我的处理很简单,就是创建了多个xmemcached对象,然后保存在一个类似于List这样的类中! 管理器代码可以自己规划不多说了. 主节点采用同步更新,备份节点异步更新(备份节点可以有多个),当主节点出问题时,开始遍历备份节点直到找到值,如果遍历完都没有则返回null. 请问你xmemcached版本是多少的? 还有你主备节点是客户端另外编写代码实现备份还是用了其他插件让memcached服务器自动备份的? |
|
返回顶楼 | |
发表时间:2013-03-03
tjc 写道 http://code.google.com/p/memcache-client-forjava/
http://blog.csdn.net/cenwenchu79/article/details/2011228 放翁的客户端定制性有点强,而且貌似在客户端也会有缓存,可能不太适合我们的业务 |
|
返回顶楼 | |
发表时间:2013-03-06
session也放在里面了吗?
|
|
返回顶楼 | |
发表时间:2013-03-06
henghengdh 写道 session也放在里面了吗?
有这个打算 现在还是用的spymemcached客户端比较新的版本,有我们需求的功能: 心跳检测,自动移除服务器列表什么的。 |
|
返回顶楼 | |
发表时间:2013-03-11
用的就是xmemcached最新的版本啊! 功能可以满足你的需求
http://www.iteye.com/topic/1128229 这个是我自己写的一个xmemcached 共享session的案例. 只适用于tomcat7哈! 需要的话你可以看看 |
|
返回顶楼 | |