首页 > 编程语言 >Rendezvous hashing算法介绍

Rendezvous hashing算法介绍

时间:2023-09-07 09:57:33浏览次数:38  
标签:负载 key 算法 哈希 Rendezvous 服务器 hashing

Rendezvous hashing

Rendezvous hashing用于解决分布式系统中的分布式哈希问题,该问题包括三部分:

  1. Keys:数据或负载的唯一标识
  2. Values:消耗资源的数据或负载
  3. Servers:管理数据或负载的实体
image

例如,在一个分布式系统中,key可能是一个文件名,value是文件数据,servers是连接网络的数据服务器,用于保存所有文件。假设给定一组动态服务器,下面需要将keys映射到服务器,并提供如下功能:

  1. Load Balancing: 每个服务器负责(近乎)同等数量的负载
  2. Scalability: 添加或删除服务器时不会造成大量计算
  3. Lookup Speed: 给定一个key,可以快速确定所需的服务器

动态服务器是指在系统运行的任意时间都可能会添加或删除服务器。

Rendezvous Hashing算法

Rendezvous Hashing算法的历史可以参见原文

rendezvous hashing算法的目的是获得更好的负载均衡性能。我们希望每个服务器都能负责同等数量的key-value。一种合理的方式是和普通的哈希表一样,让每个key都随机均匀地选择一个服务器。这样做的原因是,如果只是对服务器ID进行哈希,那么当修改服务器的数量时,所有的哈希值都会发生变化。当对目标服务器的选择和服务器的数量没有直接关系时,就可以避免服务器的增删带来的影响。

image

Rendezvous hashing提供了一种聪明的解决方式。相比于选择一个特定的服务器,它会为每个key生成一个随机有序的服务器列表,并选择列表中的第一个作为目标服务器。为了保证查找成功,我们需要保证每个key-value对都由key选择的第一台服务器保管。

如果选择的第一台服务器下线时,只需要将key转移到列表中的第二台服务器即可(作为新的第一台服务器)。可以看出,这种情况下只需要转移下线的服务器上的keys即可,无需变动其他服务器的keys。如下面例子,当删除S2服务器时,S2中的数据会转移到新的第一台服务器:即S1和S3,其他服务器的数据无需变动(S2不是它们的第一台服务器)。

image

哈希技巧

从上面例子可以看出,使用rendezvous hashing时,需要确保每个key都能有其特定的服务器优先列表,这样才能保证数据分布均匀。那如何为每个key生成随机排列的服务器列表呢?

可以使用常见的哈希技术来解决该问题。首先,对每个服务器进行哈希来生成一组整数哈希值,然后基于该哈希值对服务器进行排序,这样就得到了一个随机排列的服务器列表。为了保证每个key都能得到唯一的排列,需要在哈希函数中引入key。方式是将key和各个服务器(或服务器ID)作为哈希种子来生成哈希值。

image

最终的rendezvous hashing算法为:

  1. 使用随机哈希函数来计算所有key-server的哈希值
  2. 将key分配给具有最大哈希值的服务器
  3. 当添加和移除服务器时维护"第一台服务器"

Rendezvous Hashing的优势

级联故障转移:当一台服务器故障后,很多负载均衡算法会将所有负载转移到某一台服务器上,如果该故障转移的服务器无法处理新的负载,就会导致级联故障。在Rendezvous Hashing中,由于每个key都有不同的第二选择服务器,因此Rendezvous hashing可以避免该问题。使用好的哈希函数可以将负载从故障服务器均匀分布到剩余的服务器上。

基于权重的服务器:在一些场景下,我们期望基于负载均衡而非均匀随机key来分配负载。例如,需要给具有较大容量的服务器分配更多的负载。相比基于哈希值的排序,我们可以选择基于 $$ {w_i \over ln h_i(x)} $$进行排序,其中x为key, \(w_i\)为服务器i的权重, \(h_i(x)\)为哈希值(通常为[0,1])。更多细节,参见这里

更少的内存:由于可以本地计算所有的哈希函数值,因此只需要一组服务器ID列表来对应管理key-value的服务器。在实际使用中,一致性哈希之类的算法要求更多的内存(但计算量也更少)。

Rendezvous Hashing的劣势

添加服务器:在添加服务器时,由于新的服务器可能会成为系统中已存在的key的第一选择,因此很难维护"第一选择"不变性。为了维护该不变性,我们需要校验系统中服务器管理的所有keys,这会给分布式存储和pub/sub系统带来严重的问题,但着对缓存系统来说并不是一个问题。在缓存系统中,缓存服务器会共享一个中央数据存储库。当用户请求缓存系统时,如果缓存不存在,则从中央库中获取数据并缓存起来,等待下次使用。
当给缓存添加服务器时,系统会最终达成"第一选择"不变性。如果添加的服务器成为一个已存在的key的第一选择,则只会在第一次请求时会导致缓存miss。在新服务器负责该key之后,老的服务器将不会再接收到该key的请求,老数据最终会通过LRU之类的方式清理掉。

请求时间:如果有N台服务器,由于需要校验所有的key-server组合,因此查找算法为O(N)。而一致性哈希为O(logN),当N足够大时,其查询速度也更快。

总结

Rendezvous hashing适于在中小型分布式缓存中做分布式负载均衡。如果一个系统无法满足"第一选择"不变性,则需要谨慎选择rendezvous hashing。

参考

标签:负载,key,算法,哈希,Rendezvous,服务器,hashing
From: https://www.cnblogs.com/charlieroro/p/17682568.html

相关文章

  • 代码随想录算法第一天704
    代码随想录算法第一天|704.二分查找、27.移除元素学习(复习)数组理论基础:​ (https://programmercarl.com/数组理论基础.html)​ 新了解到Java中数组地址不是连续的。704.二分查找题目题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.......
  • 嵌入式深度学习—硬件算法协同优化
    主要利用神经网络的三个特性:并行计算、数据复用模型具有稀疏性。很多模型中的权值为0或很小,数据经过以后会直接变为无用值深度学习具有鲁棒性,对数据的误差不敏感测试时固定点神经网络(Test-TimeFixed-PointNeuralNetworks)测试时固定点神经网络(Test-TimeFixed-PointNeur......
  • 代码随想录算法训练营第一天
    代码随想录算法训练营第一天|LeetCode704(二分查找)LeetCode35(搜索插入位置)LeetCode34(在排序数组中查找元素的第一个和最后一个位置 )LeetCode27(移除元素)数组理论基础数组是存放在连续内存空间上的相同类型数据的集合要点:数组下标都是从0开始的数组内存空间......
  • 分治算法学习
    思路分析:先找根(最大值)分为左右子树,转化为构建最大的左右子树,很明显,这里需要用到递归算法实现#include<bits/stdc++.h>usingnamespacestd;intnums[1001];voidconstructMaxTree(intarr[],intl,intr){ if(l>=r){ cout<<arr[l]<<""; return; } //找到最......
  • C++ 算法竞赛、02 周赛篇 | AcWing 第2场周赛
    AcWing第2场周赛竞赛-AcWing3626三元一次方程AcWing3626.三元一次方程-AcWing两层循环#include<iostream>usingnamespacestd;voidfind(intn){for(intx=0;x<=1000/3;x++){for(inty=0;y<=1000/5;y++){int......
  • 算法刷题:一步步优化系列01.最长连续序列
    题目链接:最长连续序列目录暴力解法(超时)优化内层查找(On->O1但超时)问题:重复的边界会重新迭代优化重复迭代:在值域而非定义域迭代,去重(超时)问题:值域大且元素离散度大时,会大量迭代到不存在的元素,空迭代优化空迭代:HashSet去重,每次迭代的元素都存在(26ms)从左边界重......
  • 安防监控/视频汇聚/云存储/AI视频智能算法引擎:遛狗AI检测算法详解
    根据最新修订发布的《中华人民共和国动物防疫法》规定:遛狗不栓绳,养狗不办证、未定期接种疫苗等行为都是违法行为。作为一个合格的“铲屎官"出门遛狗一定要牵好狗绳,保护他人和爱犬的安全。但就算法律明文规定,还是有很多人无视法律法规,在外遛狗不牵绳,任其自由活动。在日常管理中,遛狗......
  • 方案:TSINGSEE青犀视频AI智能算法平台电动车入梯检测解决方案
    一、方案背景随着大众的出行要求逐渐提升,交通拥堵现象也随处可见,电动车出行,就成了大家的首选。随着电动车数量的激增,众多用户为了个人方便,大多在室内停放或充电,有的甚至停放在走道、楼梯间等公共区域,由于电瓶车车体大部分为易燃可燃材料,一旦起火,燃烧速度快,并产生大量有毒烟气,人员逃......
  • 视频云存储/安防监控/AI分析/视频AI智能分析网关:垃圾满溢算法
    随着我国科技的发展和城市化进程加快,大家对于生活环境以及空气质量更加重视,要求越来越严格。城市街道垃圾以及生活区垃圾满溢已经成为城市之痛。乱扔垃圾,垃圾不入桶这些行为已经严重影响到了城市的美化问题。特别是炎热的夏日和雨水季节,大量垃圾堆放会释放有毒有害气体,暴雨过后,漂浮......
  • 安防监控/视频汇聚/云存储/AI视频智能算法引擎系统:遛狗检测算法详解
    根据最新修订发布的《中华人民共和国动物防疫法》规定:遛狗不栓绳,养狗不办证、未定期接种疫苗等行为都是违法行为。作为一个合格的“铲屎官"出门遛狗一定要牵好狗绳,保护他人和爱犬的安全。但就算法律明文规定,还是有很多人无视法律法规,在外遛狗不牵绳,任其自由活动。在日常管理中,......