Nuclear是一个分布式的Key-Value存储系统,那么key对应的数据分布在什么节点上,需要遵守一定的规则。熟悉MemecachedClient的同学一定清楚一致性Hash的应用,没错,HashRing就是我们的不二选择。在Nuclear中,数据分布在0~2的HashRing上,Nuclear集群初始化的时候,根据节点数均分整个Hash Ring。

在N=3时,A,B,C三个节点的配置就是系统需要的最少节点了。Nuclear中,顺时针的开始值和结束值确定一个分区管理的数据范围,同时规定分区的范围左开右闭。因此,如上图,我们记录A,B,C分别管理的分区范围是:

A {[c,a],[b, c],[a,b]}

B {[a,b],[c,a],[b,c]}

C {[b,c],[a,b],[c,a]}

可以看出,A处理管理自己的分区数据外,还会把自己管理的数据顺时针往前复制到2(N-1)个节点中。

Nuclear增加节点时需要制定目标节点的名称,即增加的节点是用来分担目标节点的负载的。这点不同于Dynamo的分区策略,节点增加的时候会均衡的从现有的节点窃取分区,Nuclear中增加的节点只会影响到邻近的三个节点。

记录N,A,B,C管理的分区如下:

N {[c,n],[b,c],[a,b]}

A {[n,a],[c,n],[b,c]}

B {[a,b],[n,a],[c,n]}

C {[b,c],[a,b],[n,a]}

Nuclear的分区管理模块将自动的计算出需要同步到N上的数据:

A [a,b] => N

B [b,c] => N

C [c,n] => N

不难明白,其实就是把A,B,C不再需要的数据挪给新的节点了。删、替换节点原理大同小异,不再冗述。

Nuclear提供服务器端路由策略,Client的请求随机落在Node节点上,由接收到请求的节点处理后续的逻辑。相对于Client端路由来说,优点是Client无需知道Nuclear集群元数据,易于维护;缺点是会造成一定程度的延时,不过我们的测试结果显示延时在可接受范围之内。

两个设计上的Tips贡献给大家:

相关查询: Nuclear 分布式 Key-Value MemecachedClient 一致性 HashRing 我们的 初始化
最新查询:张寄蝶 东拼西凑 服部平藏 橙天嘉禾河源影城 博格达峰 roughage 华莱士 三数花亚属 支原体污染 查普曼 格洛斯特 1972.12 2013.02.26 Abigail 花时间 尼西亚会议 parachutes ʩ 华南地区 南北湖 Lantern 张春桥 薛紫夜 SAR 输出管 地方戏 拉莫斯 ҹ 化学合成 共和制 chapter slavery 安提诺米 转业干部 天文学家 喷锚构筑法 ��ʷ����ΰ���500�׸��� 紫府同宫 缪秉魁 Wilhelmine 金迷纸醉 侯柱牛肉酱 社区发展 排水口 星际旅行11:星际争霸战 人ѧ־Ը Nautical 杏棠村 桃李满天下 自力更生 保安部队 好久没恋爱 我的女孩我的天使 夏侯仪 虞公窑 高永夏 汉中市 特拉唑嗪 费利克斯·弗兰克福特 Honolulu 星岛日报 Claparede 扭结糖 鲍勃·苏拉 欧玛尔·海亚姆 幅员辽阔 志同道合 老婆婆 阿昌族 状元快乐学习法 关系网 Erysiphe 自然地 普遍规律 squeezing 辐射防护 Diagnostics 立法局 凉山紫菀 Nuclear
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.084秒 内存2.83MB