论坛首页 综合技术论坛

tencent2012笔试题附加

浏览 13377 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-20  
楼主的问题就是一致性哈希所解的问题

一致性哈希简单说就是将每台server分成v个虚拟节点,再把所有虚拟节点(n*v)随机分配到一致性哈希的圆环上,这样所有的用户从自己圆环上的位置顺时针往下取到第一个vnode就是自己所属节点,而且一般一致性哈希需要将本节点的数据多拷贝一份到下一个节点,当此节点存在故障时,再顺时针取下一个作为替代节点,并且可以从下个节点重载数据,而如果要插入节点,其他节点位置不受影响,数据的移动是将上一个节点的数据移到新节点,将新节点数据再备份到下一个节点

另外,多说明2点:

1 一致性哈希使用中还有个小小的注意事项,就是在算法中要将数据和其备份尽量分布到不同机器的虚拟节点 

2 上面是采用双备份的方式,类似也可用三备份,对于分布式应用,三备份基本够用,多了浪费
0 请登录后投票
   发表时间:2011-10-20  
首先题目的需求是在一个服务器崩溃的时候,要把错误缩小在崩溃的服务器,而不至于影响其他服务器上的用户。

这个问题主要出在访问时服务器的确定上。

解决  把整个过程分成两阶段,1、客户端首次访问时,考虑负载均衡用ServerIPIndex[QQNUM%n]给客户分配服务器,同时给客户分配会话id,并把id同分配的服务器号记录在hash表中。2、如果客户不是第一次登陆,根据客户会话id从hash表中查询服务器号。3、对于访问过崩溃服务器的客户,可以重新分配服务器并刷新hash表。
0 请登录后投票
   发表时间:2011-10-20  
校招题么?
貌似对应届生来说还算值得一思考
0 请登录后投票
   发表时间:2011-10-20  
http://hbluojiahui.blog.163.com/blog/static/31064767201098114026211/

这个blog讲的很详细!
0 请登录后投票
   发表时间:2011-10-21  
很不错。良好+1.
0 请登录后投票
   发表时间:2011-10-21  
哈哈
题目说的很清楚
尽量考虑负载均衡
好像没人用嘛
0 请登录后投票
   发表时间:2011-10-21  
一致性哈希
http://www.cnblogs.com/leoo2sk/archive/2011/08/11/consistent-hashing-intro.html
0 请登录后投票
   发表时间:2011-10-22  
其实 这个 可以考虑下 xmemcached 的算法 实现,估计能满足 你的需求
0 请登录后投票
   发表时间:2011-10-23  
为什么不把缓存的数据放在一个共用的地方,比如说用memecache,为了提高缓存的效率问题,在memcache层次做集群,当n中的服务器死了一台,请求过来照样可以取到缓存,另外关于服务器负载情况,你可以通过某种策略去动态选择
0 请登录后投票
   发表时间:2011-10-25  
常见面试题呀 !
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics