推广

阿里大神带你领略Java一致性算法的风骚!(Paxos、Zab、Raft、选举、NWR、Hash、Gossip)

iseeyu2年前 (2024-02-22)推广126

image.png

5. Gossip

Gossip 算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵
就是在杂乱无章中寻求一致,这充分说明了 Gossip 的特点:在一个有界网络中,每个节点都随机
地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可
能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的
状态都是一致的,当然这也是疫情传播的特点。

6. 一致性 Hash

一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡。
Memcached client 也选择这种算法,解决将 key-value 均匀分配到众多 Memcached server 上
题。它可以取代传统的取模操作,解决了取模操作无法应对增删 Memcached Server 的问题
(增删 server 会导致同一个 key,在 get 操作时分配不到数据真正存储的 server,命中率会急剧下
降)。

6.1. 一致性 Hash 特性

  • 平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得
    所有的缓冲空间都得到利用。
  • 单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,
    又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓
    冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。容易看到,上面的简单求余算法
    hash(object)%N 难以满足单调性要求。
  • 平滑性(Smoothness):平滑性是指缓存服务器的数目平滑改变和缓存对象的平滑改变是一致
    的。

6.2. 一致性 Hash 原理

1.建构环形 hash 空间:

  • 考虑通常的 hash 算法都是将 value 映射到一个 32 为的 key 值,也即是 0~2^32-1 次方的
    数值空间;我们可以将这个空间想象成一个首( 0 )尾( 2^32-1 )相接的圆环。

2.把需要缓存的内容(对象)映射到 hash 空间

  • 接下来考虑 4 个对象 object1~object4 ,通过 hash 函数计算出的 hash 值 key 在环上的分

3.把服务器(节点)映射到 hash 空间

  • Consistent hashing 的基本思想就是将对象和 cache 都映射到同一个 hash 数值空间中,并
    且使用相同的 hash 算法。一般的方法可以使用 服务器(节点) 机器的 IP 地址或者机器名作为
    hash 输入。

4.把对象映射到服务节点

  • 现在服务节点和对象都已经通过同一个 hash 算法映射到 hash 数值空间中了,首先确定对象
    hash 值在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位
    到的服务器。

考察 cache 的变动

  1. 通过 hash 然后求余的方法带来的最大问题就在于不能满足单调性,当 cache 有所变动时,
    cache 会失效。
  • 移除 cache:考虑假设 cache B 挂掉了,根据上面讲到的映射方法,这时受影响的将仅是
    那些沿 cache B 逆时针遍历直到下一个 cache ( cache C )之间的对象。
  • 添加 cache:再考虑添加一台新的 cache D 的情况,这时受影响的将仅是那些沿 cache
    D 逆时针遍历直到下一个 cache 之间的对象,将这些对象重新映射到 cache D 上即可。

虚拟节点
hash 算法并不是保证绝对的平衡,如果 cache 较少的话,对象并不能被均匀的映射到 cache 上,
为了解决这种情况, consistent hashing 引入了“虚拟节点”的概念,它可以如下定义:
虚拟节点( virtual node )是实际节点在 hash 空间的复制品( replica ),一实际个节点对应了
若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在 hash 空间中以 hash
值排列。
仍以仅部署 cache A 和 cache C 的情况为例。现在我们引入虚拟节点,并设置“复制个数”为 2 ,
这就意味着一共会存在 4 个“虚拟节点”, cache A1, cache A2 代表了 cache A; cache C1,
cache C2 代表了 cache C 。此时,对象到“虚拟节点”的映射关系为:
objec1->cache A2 ; objec2->cache A1 ; objec3->cache C1 ; objec4->cache C2 ;
因此对象 object1 和 object2 都被映射到了 cache A 上,而 object3 和 object4 映射到了 cache
C 上;平衡性有了很大提高。
引入“虚拟节点”后,映射关系就从 { 对象 -> 节点 } 转换到了 { 对象 -> 虚拟节点 } 。查询物体所
在 cache 时的映射关系如下图 所示。

image.png

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56115.html

相关文章

如何做移动网站的优化。

如何做移动网站的优化。

重庆网站优化_如何做移动网站的优化 1.HTML5建站 百度移动搜索欢迎一切适合移动化设备浏览的网页,但目前HTML5是最先进的语言,强烈建议使用,能为后面的适配等工作加分不少。 域名设置上尽量简短,移动站点推荐以m、wap做为二级域名名称 URL结构上尽量简短且能够表达页面主意,目前...

上海东方财富证券合法吗?服务费骗局曝光!疯狂诈骗受害者 ...

上海东方财富证券合法吗?服务费骗局曝光!疯狂诈骗受害者 ...

上海东方财富涉及虚假宣传,诱导消费导致亏损惨重!荐股实力跟宣传严重不符,交了几万服务费被騙怎能退回?业务员虚假宣传夸大收益,诱导股民交会员费,交了费推荐的股票都是一些垃圾股票,被騙了退费需要什么证据?利景追损V:xfzs00曝光平台:上海东方财富品种:股票,股票服务费,荐股...

超级推荐如何优化,超级推荐优化目标选哪个(超级推荐点击率低怎么优化)

超级推荐如何优化,超级推荐优化目标选哪个(超级推荐点击率低怎么优化)

正常新品刚开始操作超级推荐时候,由于是新品,产品的基础较差,权重也相对来说也比较低的,我们可以适当提高出价,来增加产品的曝光程度与竞争力的。...

淘宝c店铺商标如何注册(淘宝c店怎么开)

淘宝c店铺商标如何注册(淘宝c店怎么开)

首先我们需要打开淘宝的网站,在打开网站之后输入我们的淘宝账号和密码进行登录。在登录之后的话,那么我们也就可以在界面里面看到“卖家中心”这样的一个选项。点击这样的一个选项,然后我们也就会发现在界面里面有一个开店的选项,而且在这个选项里面的话也会想要来选择开个人店铺和企业店铺这样的选项。...

关闭淘宝店铺保证金怎么转出来,手机千牛能退保证金吗(淘宝卖家怎么关闭店铺)

关闭淘宝店铺保证金怎么转出来,手机千牛能退保证金吗(淘宝卖家怎么关闭店铺)

各位淘宝商家们,如果因为某些原因不想再继续开淘宝店铺了,那么可以将这个淘宝店铺的保证金解冻并取出来哦,具体的操作方法已经为大家进行了说明。希望卖家网整理的上述内容对各位亲们会有所帮助哦。...

肯德基的竞争优势,全靠网络营销取胜。

肯德基的竞争优势,全靠网络营销取胜。

今天我们就来看一看基于肯德基都做出了哪些行动。 一.搜索引擎营销 在百度里输入肯德基三个字,就能出现一系列的网上订餐,网上菜单以及手机网的优惠券字样,肯德基的官网域名采用的就是外卖电话,。消费者只要在搜索引擎里输入肯德基三个字,就会出来和主题有关的所有项目。从而更有力地供更多的消...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片