海南省建设网站的公司电话号码,深圳微信网站建设,重庆做网站建设公司哪家好,河北大名网站建设招聘一致性Hash算法常用来解决数据分片时的数据扩容/缩容的性能问题。 一、业内数据分片用的Hash算法#xff0c;将节点的hash值对节点数取余。 存取通过key / value的方式对节点取余。
二、数据分片使用hash算法的优缺点#xff1a; 优点#xff1a;简单#xff0c;方便。 缺…一致性Hash算法常用来解决数据分片时的数据扩容/缩容的性能问题。 一、业内数据分片用的Hash算法将节点的hash值对节点数取余。 存取通过key / value的方式对节点取余。
二、数据分片使用hash算法的优缺点 优点简单方便。 缺点数据难以的扩容和维护。 1.当节点数从3变成4的时候前面的三个节点需要对里面的数据进行重新分配四个节点上。 2.当节点数从3变成2时也需要对3个节点数的数据重新分配到两个节点上。 这样必然会带来大量数据进行迁移在数据迁移的过程中是无法进行读写的必然会严重影响整个系统的性能。
三、用一致性hash算法解决扩容/缩容的问题 1.一致性hash算法的思路是将hash计算出来的 key 对 2的32次方取余然后将其分配到计算后的节点上。 取得的余数再映射到各个节点上如果没有找到节点对去下一个节点上找。 2.当节点扩容时假设在d~a之间增加一个e节点那么只需要将a节点中的hash取余后的值在d-e之间的数据迁移到e节点即可b、c、d节点的数据无需迁移。 3.当节点缩容时假设a节点要去除则将a节点的数据迁移到b节点即可在e-b区间之间的请求到b节点上。 4.假设a节点宕机则影响的只有(e,a] 之间的数据不可访问其他区间的数据可以正常访问。
三、通过虚拟映射解决一致性hash算法分配不均的问题。 假设现在只有三个节点a、b、ca 是0节点b是1节点c是2节点。那么这时候a节点的数据远远大于b、c节点的数据。 通过建立虚拟节点将a1节点映射到a节点b1、b2节点映射到b节点将c1、c2映射到c节点就可以解决数据分片不均的问题。