锁定老帖子 主题:tencent2012笔试题附加
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-20
楼主的问题就是一致性哈希所解的问题
一致性哈希简单说就是将每台server分成v个虚拟节点,再把所有虚拟节点(n*v)随机分配到一致性哈希的圆环上,这样所有的用户从自己圆环上的位置顺时针往下取到第一个vnode就是自己所属节点,而且一般一致性哈希需要将本节点的数据多拷贝一份到下一个节点,当此节点存在故障时,再顺时针取下一个作为替代节点,并且可以从下个节点重载数据,而如果要插入节点,其他节点位置不受影响,数据的移动是将上一个节点的数据移到新节点,将新节点数据再备份到下一个节点 另外,多说明2点: 1 一致性哈希使用中还有个小小的注意事项,就是在算法中要将数据和其备份尽量分布到不同机器的虚拟节点 2 上面是采用双备份的方式,类似也可用三备份,对于分布式应用,三备份基本够用,多了浪费 |
|
返回顶楼 | |
发表时间:2011-10-20
首先题目的需求是在一个服务器崩溃的时候,要把错误缩小在崩溃的服务器,而不至于影响其他服务器上的用户。
这个问题主要出在访问时服务器的确定上。 解决 把整个过程分成两阶段,1、客户端首次访问时,考虑负载均衡用ServerIPIndex[QQNUM%n]给客户分配服务器,同时给客户分配会话id,并把id同分配的服务器号记录在hash表中。2、如果客户不是第一次登陆,根据客户会话id从hash表中查询服务器号。3、对于访问过崩溃服务器的客户,可以重新分配服务器并刷新hash表。 |
|
返回顶楼 | |
发表时间:2011-10-20
校招题么?
貌似对应届生来说还算值得一思考 |
|
返回顶楼 | |
发表时间:2011-10-20
http://hbluojiahui.blog.163.com/blog/static/31064767201098114026211/
这个blog讲的很详细! |
|
返回顶楼 | |
发表时间:2011-10-21
很不错。良好+1.
|
|
返回顶楼 | |
发表时间:2011-10-21
哈哈
题目说的很清楚 尽量考虑负载均衡 好像没人用嘛 |
|
返回顶楼 | |
发表时间:2011-10-21
一致性哈希
http://www.cnblogs.com/leoo2sk/archive/2011/08/11/consistent-hashing-intro.html |
|
返回顶楼 | |
发表时间:2011-10-22
其实 这个 可以考虑下 xmemcached 的算法 实现,估计能满足 你的需求
|
|
返回顶楼 | |
发表时间:2011-10-23
为什么不把缓存的数据放在一个共用的地方,比如说用memecache,为了提高缓存的效率问题,在memcache层次做集群,当n中的服务器死了一台,请求过来照样可以取到缓存,另外关于服务器负载情况,你可以通过某种策略去动态选择
|
|
返回顶楼 | |
发表时间:2011-10-25
常见面试题呀 !
|
|
返回顶楼 | |