幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

你知道哈希算法,但你知道一致性哈希吗?

  前言
  假如让你为淘宝这种数据量非常大的公司的设计一个可扩展的数据存储系统,你该如何存储和管理数据呢?总不能放在单个服务器上吧,肯定放不下,必然需要水平扩展。那么这样就带来一个问题,这个数据要存储在哪个服务器上呢?这就引入了本文的主题一致性哈希算法,可能你没听过,那么本文就通过一个简单的例子带你一步一步认识它。
  欢迎关注个人公众号【JAVA旭阳】数据线性分布
  假如我们现在有一组服务器,我们想提出一个在这组服务器之间进行数据存储和查找的策略。让我们从一个最最简单的方案开始。假设我们一个接一个地填满服务器,即仅当当前服务器已满时,我们才开始将数据写入下一个服务器。
  在下图中,我们有一个简单的服务器,一次只能存储4条记录。当服务器变满时,我们添加一个新服务器并向其添加新数据。
  好吧,这种方法在任何服务器上写入数据时都非常有效。当您被要求读取特定数据时会发生什么?您需要识别存储给定数据的服务器,然后获取它。你如何识别服务器?您会遍历所有服务器并线性扫描每个服务器吗?这会影响读取性能。
  例如:在上面的例子中,如果你被要求查找NewYork,因为键和服务器之间没有直接映射,你将不得不线性扫描所有服务器并搜索这个键。
  这样的效率是不是很糟糕,那么有没有更好的解决方案呢。数据哈希分布
  哈希算法想必大家都知道,Java中的HashMap就是采用的哈希算法。那么根据这个思路,我们提出了一个新的解决方案,数据根据哈希进行存储管理。
  我们看到如果我们有N个服务器,则获取记录的时间复杂度将为O(N)。我们希望在O(1)中高效地读写数据。我们首先想到的是提供O(1)查找和写入的HashMap数据结构。
  让我们看看Hashing是否可以解决我们的问题。假设我们有N个存储数据的服务器和一个具有分发数据策略的应用程序。该方法类似于HashMap使用的方法。首先,对键进行哈希处理,然后确定数据将存放的存储桶。应用程序将首先对密钥进行哈希处理,然后通过计算hash(data)N来确定哪个服务器。
  上述算法将给出写入数据的服务器编号。此外,在检索数据时,它将使用相同的逻辑,获取服务器编号并获取数据。读取和写入都在O(1)中完成。
  让我们来看一个例子。假设我们有三个名为S0、S1和S2的服务器。我们的钥匙是世界城市名称。使用哈希,我们计算需要将密钥分配到的存储桶或服务器。
  密钥的哈希和计算桶
  密钥分配
  但这在分布式系统中总是有效的吗?我们会遇到以下问题:如果我们添加更多服务器,则hash(data)N会有所不同。这意味着我们将不得不在添加新服务器时重新分配所有数据。如果删除其中一台服务器,我们将遇到同样的问题。由于此处服务器的数量N是可变的,因此所有密钥都会受到影响。
  以下是添加新服务器时发生的情况的说明。随着服务器数量从3台增长到4台,桶的计算逻辑将变为Hash4。
  新旧密钥分配
  在添加新服务器时,我们观察到三个键中的两个受到了影响。如果我们添加一个新服务器,键Madrid的桶将是0(S0)而不是1(S1)。我们必须将此密钥移动到服务器S1以确保我们的应用程序找到它。因此,我们必须重新散列所有现有密钥并将它们分配给不同的服务器。在最坏的情况下,这可能会影响系统中的所有密钥。
  看来通过哈希算法将数据分发到不同服务器中还是不大行,那还有什么更好的办法呢?这边就要隆重介绍一致性哈希。什么是一致性哈希?
  当我们想要动态添加或删除服务器时,一致性哈希解决了我们的问题。在简单散列的情况下,添加或删除服务器将影响存储在系统中的所有M密钥。然而,一致性哈希确保只有MN键受到影响,其中N是服务器的数量。
  一致性哈希使密钥的分布与系统使用的服务器数量无关。因此,我们可以在不影响整个系统的情况下扩大或缩小规模。
  从根本上说,一致性哈希使用哈希环。该算法将每个服务器映射到圆上的一个点。它首先使用服务器的IP地址,计算其散列值并为其分配圆上的一个点(角度)。以下是如何为3个服务器S1、S2、S3计算角度的简单说明:
  将服务器分配给哈希环上的点
  此外,每个密钥都使用相同的哈希算法进行哈希处理并在服务器上分配一个点。对于每个散列键,我们按顺时针方向移动并找到最近的服务器并分配给它。
  将密钥分配给哈希环上的点
  我们得到以上密钥集的以下分配:
  将密钥分配给服务器
  以下是上述密钥分配到哈希环上不同服务器的图形表示:
  在哈希环上将密钥分配给服务器
  从上图可以看出,我们从每个键顺时针方向移动,找到它的服务器。扩展和添加新服务器
  如前一节所述,我们首先计算服务器IP地址的哈希值并找到它在圆上的位置。例如:如果我们添加一个服务器S4,发现它位于圆上的S2和S0之间。此外,我们重新分配S0的键,其角度小于S3,或者换句话说,在圆上出现在S3之前。
  下图说明了此过程,其中添加了一个新服务器S3,它位于S2和S0之间。最初,键Mumbai被分配给服务器S0。在添加S3时,我们看到从键Mumbai顺时针方向遇到的第一个服务器是S3,因此我们将此键分配给S3。
  添加新服务器S3
  从上面可以看出,添加新服务器不会影响所有密钥。只有散列环上两个服务器之间出现的密钥需要重新分配。删除现有服务器
  当删除现有服务器时,只需要重新分配属于该服务器的密钥。对于属于被移除服务器的key,按顺时针方向找到哈希环上的下一个服务器。此外,然后将密钥分配给新服务器。
  下图说明了删除现有服务器的过程:
  删除服务器S1
  在上图中,删除了服务器S1。键NewYork被分配给服务器S1。删除S1后,我们从键NewYork中找到第一个服务器并找到服务器S2。因此,键NewYork被重新分配给服务器S2。
  与普通散列不同,删除服务器不需要重新散列所有密钥。只需重新分配已移除服务器的密钥。虚拟节点
  我们看到,当一个节点被移除时,分配给这个节点的所有键都会被移动到哈希环中的下一个节点。通常,在删除一个节点时,数据分布会变得不均匀,并且其中一个节点的负载会增加。
  在上述情况下,如果我们从系统中删除S0,则键London将映射到服务器S2。最终,我们会发现S2处理三个密钥,而S1只管理一个密钥。因此,数据分布不均匀。
  删除S0会给S2带来更多负载
  在理想情况下,当有M个密钥和N个服务器时,每个服务器必须有接近MN个密钥。因此,添加或删除节点会影响系统中的最大MN键。为了确保接近理想的分布,我们在系统中引入了虚拟节点。每个物理节点在哈希环上都有多个虚拟节点。
  我们使用多个哈希函数来查找虚拟节点在哈希环上的位置。每个服务器都用Sij表示,其中i表示实际服务器编号,j代表其虚拟副本。例如:对于第一台服务器,虚拟副本将是S00、S01、S02、S03等。我们使用不同的哈希函数来计算每个虚拟副本的哈希值。
  在上面的示例中,我们得到以下虚拟服务器分配:
  哈希环上的虚拟服务器
  从上图可以看出,服务器S1的虚拟副本是S10、S12和S13。这同样适用于服务器S0。这导致节点之间的数据分布接近均匀。
  对于给定的密钥,如果哈希环中的下一个服务器是S12,则它将分配给第一个物理服务器。一般而言,分配给虚拟服务器Sij的密钥将存储在物理服务器Si上。总结
  本文带大家认识了一致性哈希算法,一致性哈希于1997年推出,它已经在许多分布式系统中的得到了应用。Amazon的DynamoDB中使用它作分区组件。此外,ApacheCassandra和Voldermort等开源应用程序使用它进行数据分区。
  欢迎关注个人公众号【JAVA旭阳】

世界首次激光核聚变点火成功,人造太阳要来了?可控核聚变,是科幻题材中的老戏骨。无论是《三体》还是《流浪地球》,可控核聚变承载着人类冲出宇宙的多重想象,原因就在于它取之不尽、用之不竭,是解决能源问题的终极答案之一。然……双旦送礼首推!高端品质黑科技加持,华为Mate50系列让人爱临近年底,双旦也马上来临,相信不少人都有送礼的需求。而送礼这里面也有不少学问,像是面对不同的人群,送的礼物也有所差别。如何满足长辈、亲友、爱人挑选合适的礼品,相信是很多人的大难……40男人怎么驾驭老钱风老钱是一种外国的说法,是oldmoney的一种直白翻译。原因:这个词据说源自美国的俚语,是用来形容一些经过几代传承的有钱人的。近年来流行的老钱风也是这样转化而来。不过需要老钱风……一颗直径达160公里的彗星正在向地球疾驰而来,人类能否逃过一地球诞生于46亿年前,自从地球诞生以来,小行星撞击地球的事件就多次上演过。在这其中,最著名的一次事件莫过于6500万年前的恐龙大灭绝事件,当时一颗直径超过10公里、质量相当于珠……Mate20和P30在列!HarmonyOS3内测招募已开启今日,华为发布了新一批HarmonyOS3内测招募报名,此次招募覆盖的机型就包括了Mate20系列与P30系列的7款机型。此次招募的截止时间为12月14日18:00,每个……穷养长大的女生如何翻身穷养长大源自原生家庭,关于原生家庭,有一段话很火幸运的人用童年治愈一生,不幸的人用一生治愈童年。那么我们那些焦躁、自卑、不安的情绪,究竟是从哪里而来?为……王朝阵容瓦解?勇士6换1史诗级交易方案曝光,库里联手小浓眉勇士官方报告了库里的伤情。复查结果显示,库里恢复进程良好,他将在两周后重新评估。虽然恢复进程良好,但库里还是需要缺席至少2周。对于勇士而言,这2周会很难熬。勇士15胜18……散文人生最美的时光就是现在作者:子墨冬色简静,具有清雅之美,光阴里不都是花朵绽放才是美丽,素雅淡然温润如玉,一样是美丽。就如镜中霜雪,如记忆中的岁月,折叠堆积成诗词,当我们低吟浅唱的时候,依……特斯拉上海工厂被曝已停产,原因未知IT之家12月25日消息,据路透社报道,根据一份内部通知和两位知情人士的说法,特斯拉周六暂停了其上海工厂的生产,提前执行了之前的计划,即在12月的最后一周暂停工厂的大部分工作。……高成长企业丨寻路新能源汽车轻量化,新顿科技发力材料基因组平台作者丨李域编辑丨辛继召图源丨图虫新能源汽车材料革命未来已来。一组实验数据表明,若汽车整车重量降低10,能耗效率可提高68,续航里程可增加5。5。车身轻量……车身能下蹲弯腰,武汉新能源公交车本月上新长江日报大武汉客户端11月3日讯武汉新能源公交又上新了!3日,长江日报记者从武汉公交集团了解到,本月武汉将在各条公交线路上陆续更新1800台新能源公交车,助力市民低碳出行。……豆腐可以改善你的性生活一项新的研究表明,食用豆腐和其他植物性食物的人可能比肉食者享受更好的性生活,该研究发现某些植物产品可以影响激素水平并提高性活动。这项发表在《激素与行为》杂志上的研究首次观……
河南投资数亿打造新的旅游景点,占地1000亩,将成为新的地标目前,全世界都在大力发展第三产业,而第三产业的旅游地位日益凸显。一座好的旅游胜地,总有其独特的魅力,突出其独特的文化内涵,展示其高超的艺术水准,有的让人觉得雄伟壮丽,有的……陈清晨贾一凡横扫前世界冠军,闯入决赛将与韩国组合争冠北京时间8月27日,2022年羽毛球世锦赛在日本东京结束首场女双半决赛,陈清晨贾一凡获胜闯入决赛。在与日本组合松本麻佑永原和可那的比赛里,陈清晨贾一凡以2比0获胜晋级。凡尘组合……暴跌12。6之后,美芯片巨头高通调整策略,外媒结局基本清晰当以华为为代表的中国科技企业对西方企业形成反超之际,老美针对华为多次修改芯片规则,让华为芯片业务迎来一股寒流,手机业务受到了重创,本应一年前就该发布的Mate50系列,直到今年……多项黑科技产品在服贸会亮相服务贸易转型升级发展如何?这两天,智能黑科技产品在服贸会纷纷亮相,成为场上的关注焦点。满满的硬核技术,带给观众沉浸式的体验。与往年相比,今年的智能装备有哪些不一样?服务贸易的智能化转型,发展到哪一步了?……通胀仍将继续?业内人士直言未来23年,建议持有这3样东西自从2020年暴发疫情以来,世界经济出现明显衰退,以美联储为代表的全球央行纷纷采取了宽松的货币政策,但结果却引发了新一轮全球性通胀。不仅是像巴西、土耳其、阿根廷等发展中国家,发……不能忘记的惨案发生地房山三角山三角山,位于房山西北部霞云岭乡。霞云岭是红歌唱响的地方,1943年年仅19岁曹火星在霞云岭创作出《没有共产党就没有新中国》,使得百花山下的堂上小山村人尽皆知。在百花山南部有座形……无痕裤算什么?空气裤才是洋气又显瘦,3050岁的女人都适合喜欢穿裤子的姐妹举手!相信很多女人都喜欢穿裤子,为什么呢?简约、利落、方便,远比裙装更加百搭好穿。尤其是天气微凉的早秋季节,穿裤子会更加保暖一些。相比前段时间爆火的无痕裤……葡萄牙男子在自家后院发现恐龙遗骸或为欧洲最大恐龙葡萄牙男子在自家后院发现恐龙骨骼,可能是欧洲最大的恐龙。(社交媒体截图)海外网8月29日电据英国广播公司、新德里电视台29日消息,一名葡萄牙男子在自家后院发现了恐龙骨头。……入秋后,遇到这菜我从不手软,一次买20斤,晒干鲜美翻倍,特省导语:立秋后,茄子、豆角靠边站,这菜抓紧吃,晒干囤起来,美味翻倍,炒菜炖肉都好吃,错过了真可惜。大家好,我是傻姐美食,生活中唯有美食和美景不可辜负。秋天到了,是蔬菜大丰收……无人酒店好玩更要好住来源:【消费日报】从预订酒店房间到办理入住,再到接受客房服务直至退房,顾客都可以在相应的设备上自行下单完成。这种通过数字化与网络化实现酒店管理和信息化服务的新型酒店被称为……魔兽世界资料片末期休闲玩法,地图中可蹲的坐骑还是很多的魔兽世界暗影国度资料片马上就要结束了,这个资料片陪伴了我们大概有两年的时间。我们在暗影界的旅程马上就要结束了。接下来就要进入巨龙时代资料片,这个资料片是在11月29日同步上线,……面对这款便捷性超强的爱普生打印机,家长很难不心动在现下的社会当中,居家办公和居家上课现象逐渐普遍出现在我们的生活当中,而家用打印机也成为了宅家的新标配,毕竟既想要满足孩子日常学习的打印需求,又摆脱天天跑打印店的窘困日常,那么……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网