【分布式基础】一致性哈希

浅谈Loki分布式架构中的一致性哈希 Loki在分布式部署的模式下,保存Ingester服务的状态主要有3个渠道,分别是etcd、consul和基于gossip协议的memberlist。不管Loki用的是什么方式,它们最终都是将哈希环以KV的方式保存。再聊Loki之前,先来了解下一致性哈希的基本概念。 一致性哈希是在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法。相较于普通的哈希算法,一致性哈希除了继承数据的离散性、扩展性和容错性之外,还引入了虚拟节点的概念,极大的优化了数据在存储过程的中出现的倾斜问题。另外,遇到需要在不中. 阅读详情

分布式过程中我们将服务分散到若干的节点上,以此通过集体的力量提升服务的目的。然而,对于一个客户端来说,该由哪个节点服务呢?或者说对某个节点来说他分配到哪些任务呢?

1. 强哈希

考虑到单服务器不能承载,因此使用了分布式架构,最初的算法为 hash() mod n, hash()通常取用户ID,n为节点数。此方法容易实现且能够满足运营要求。缺点是当单点发生故障时,系统无法自动恢复。同样不也不能进行动态增加节点。

2. 弱哈希

为了解决单点故障,使用 hash() mod (n/m), 这样任意一个用户都有m个服务器备选,可由client随机选取。由于不同服务器之间的用户需要彼此交互,所以所有的服务器需要确切的知道用户所在的位置。因此用户位置被保存到memcached中。当一台发生故障,client可以自动切换到对应backup,由于切换前另外1台没有用户的session,因此需要client自行重新登录。

他比强哈希的好处是:解决了单点问题。

但存在以下问题:负载不均衡,尤其是单台发生故障后剩下一台会压力过大;不能动态增删节点;节点发生故障时需要client重新登录

3. 一致性哈希

一致性哈希也只是提出四个概念和原则,并没有提及具体实现:
1
、 balance :哈希结果尽可能的平均分散到各个节点上,使得每个节点都能得到充分利用。
2
、 Monotonicity :上面也说了,如果是用签名取模算法,节点变更会使得整个网络的映射关系更改。如果是 carp ,会使得 1/n 的映射关系更改。一致性哈希的目标,是节点变更,不会改变网络的映射关系。
3
、 spread :同一份数据,存储到不同的节点上,换言之就是系统冗余。一致性哈希致力于降低系统冗度。
4
、 load :负载分散,和 balance 其实是差不多的意思,不过这里更多是指数据存储的均衡, balance 是指访的均衡。

一致性哈希算法在1997年由麻省理工学院提出,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。

我们把每台server分成v个虚拟节点,再把所有虚拟节点(n*v)随机分配到一致性哈希的圆环上,这样所有的用户从自己圆环上的位置顺时针往下取到第一个vnode就是自己所属节点。当此节点存在故障时,再顺时针取下一个作为替代节点。



引用:

http://baike.baidu.com/view/1588037.htm



Python实现分布式核心算法:一致性哈希、选主与分布式锁实战 分布式系统从单机走向多机后,数据分片、并发控制与故障转移成为基础问题。一致性哈希通过哈希环将节点和key映射到同一空间,并借助虚拟节点改善均衡性,使扩缩容只影响相邻数据段;选主心跳用于维护节点状态并触发故障转移,分布式锁协调并发访问,幂等与限流则保障重试安全和流量稳定。这些机制能降低扩容时缓存击穿、主节点故障、重复请求和流量突增带来的风险,常用于缓存分片、服务协调、任务调度与API网关限流等场景。这套Python可运行模块按算法拆解参数入口和失败路径,便于开发者复现、调参和压测。 阅读详情

相关推荐

《点云处理算法》——GROR配准

GROR点云配准

阁楼 1315

【代码扫描修复】弱HASH(中危)

【代码扫描修复】弱HASH(中危)

ACGkaka的博客 2846

ESP32-S3数字麦克风入门:手把手教你用Arduino IDE读取MSM261S4030H0R的I2S数据

本文详细介绍了如何使用Arduino IDE读取MSM261S4030H0R数字麦克风的I2S数据,涵盖硬件连接、代码编写和数据可视化全流程。重点解决I2S引脚配置、环境噪声过滤和声波观察等实际问题,适合ESP32-S3开发者快速上手数字麦克风应用。

weixin_26742753的博客 318

Hash算法进行签名验签

Hash算法进行签名验签 Hash算法 哈希算法(Hash 算法,Hash 算式,散列算法,消息摘要算法) :将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。 性质 单向性。即给定一个输入数,容易计算出它的哈希值,但是已知一个哈希值根据同样的算法不能得到原输入数。 弱抗碰撞性。即给定一个输入数,要找到另一个得到给定数的哈希值,在使用同一种方法时,在计算上不可行。 强...

免费SSL证书 803

Linux 隐藏进程

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。关于第一种hook方式可以参考上一篇文章。最后推荐一个rootkit工具。

chi's blog 2051

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3404

【漏洞复现】CVE-2004-2761:使用弱哈希算法签名的 SSL 证书(SSL Certificate Signed Using Weak Hashing Algorithm)

本次复现是针对编号为CVE-2004-2761的漏洞,由于条件有限,本次复现通过创建自签名证书进行操作。解决证书链中的 SSL 证书使用弱哈希算法进行签名的问题。

qq_43455906的博客 2万+

从时序博弈到数据稳定:CS1237驱动中的信号滤波与卡尔曼实践

本文探讨了CS1237高精度ADC驱动在复杂工业环境中的信号处理挑战,重点介绍了一阶滤波与自适应卡尔曼滤波算法的实践应用。通过参数优化和动态调整策略,有效提升了数据稳定性和抗干扰能力,为嵌入式系统在噪声环境下的精密测量提供了可靠解决方案。

rnn9storyteller的博客 863

弱类型语言 Hash比较存在缺陷

转自:来自FreeBuf黑客与极客(FreeBuf.COM)-->http://www.freebuf.com/news/67007.html 最近一个被称为“Magic Hash”的PHP漏洞可以使得攻击者非法获取用户的账号信息。漏洞原因是PHP以一种特定的方式处理被哈希的字符串,攻击者可以利用其从中尝试并可能获取密码,绕过登录认证系统和其它运行在PHP哈希比较之上的函数。 漏洞描述

Lisam Blog 1576

使用 MATLAB/Simulink 进行锂电池SOC估算和等效电路建模

本文介绍了使用MATLAB/Simulink进行锂电池SOC估算与等效电路建模的方法。首先阐述了SOC估算和等效电路模型的背景及重要性,然后详细讲解了系统结构设计的主要组成部分,包括电池模块、SOC估算模块(采用卡尔曼滤波器算法)和等效电路模型等。文章重点分步说明了建模过程:从创建Simulink项目、搭建电池模块,到实现SOC估算算法(提供示例代码),构建等效电路模型(Thevenin模型示例),添加传感器模块,最后设置仿真参数。通过仿真运行分析关键指标(SOC估算误差、电压偏差等)来评估模型性能,为锂电

xiaoheshang_123的博客 263

基于DINO自监督学习对YOLO11 Backbone进行预训练

这PoolHead将获取前一层的输出并应用卷积,然后应用自适应平均池化以将特征图的空间维度减小为固定且一致的大小(1x1)。这是必需的,因为否则空间维度会根据输入的大小而变化,这将使将 DINO 头部附加到主干变得困难,因为它需要固定的输入大小。在本指南中,我们将介绍如何使用 Lightly 使用 DINO 预训练 YOLO 11主干,以及如何将其重新加载到 Ultralytics 中进行微调。您可以使用不同的大小,例如,640这与 YOLO 中的默认图像大小更一致,但它也会在训练期间消耗更多 VRAM。

如果想成为中心,那么就到中心去吧。 1014

SSL Certificate Signed Using Weak Hashing Algorithm,使用弱哈希算法签名的 SSL 证书的解决方法,在docker下Nginx生成ssl证书https

SSL Certificate Signed Using Weak Hashing Algorithm,使用弱哈希算法签名的 SSL 证书的解决方法,在docker下Nginx生成ssl证书https协议

weixin_40555654的博客 1万+

C语言关键字static的绝妙用途

为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量,在变量类型的前面加上就自动清0了,还有就是加上static关键字的,不管是变量还是关键字,在局部变量中,变量仅限于局部可见,在全局区中,static变量或函数仅限于本文件可见,当然还有一个重要的特性被忽略了。。。。       就是static修饰的局部变量 它的数值 是上一次函数调用结

Bruce.yang的嵌入式之旅 5378

分布式理论

百度百科上,“分布式”即“分布式计算”:所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行分布式计算是计算机科学中一个研究方向,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终的结果。所以,分布式是一种计算方式,我们熟知的计算方式还有:集中式计算、并行计算、客户端-服务器计算、网格计算、云计算、边缘计算,等等。

usenameR的专栏 1805

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

分布式系统设计之基础设施(一)

分布式系统设计之基础设施一个大型,稳健,成熟的分布式系统背后,是由很多系统共同支撑的,我们将这些支撑系统成为分布式系统的基础设施。分布式缓存简介 分布式缓存主要用于高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞吐能力。在请求到数据库前,优先进行缓存读取数据,降低对数据库的访问。 memcache安装(略) memcacheAPI与分布式 采用memcache协议进行通信,这

u012244265的专栏 739

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【算法】哈希、一致性哈希

-------------------------------------------------------- 此篇博客想写什么?我的理解: 1.关于哈希算法:概念、理解、应用 MD5如何运用在项目中的用户名登录注册加密上? 2.关于一致性哈希:概念、详解、应用 关于分布式、集群的概念和区别? ---------------------------------------...

zDavid_2018的博客 482

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

分布式数据管理基础

分布式数据管理基础

weixin_47692652的博客 731

缓存+一致性哈希+分布式面试题

前言 说起来开始进行面试是年前倒数第二周,上午9点,我还在去公司的公交上,突然收到蚂蚁的面试电话,其实算不上真正的面试。面试官只是和我聊了下他们在做的事情(主要是做双十一这里大促的稳定性保障,偏中间件吧),说的很详细,然后和我沟通了下是否有兴趣,我表示有兴趣,后面就收到正式面试的通知,最后没选择去蚂蚁表示抱歉。 当时我自己也准备出去看看机会,顺便看看自己的实力。当时我其实挺纠结的,一方面现在部门也正需要我,还是可以有一番作为的,另一方面觉得近一年来进步缓慢,没有以前飞速进步的成就感了,而且业务和技术偏于稳定

m0_57286679的博客 104

【Go | 从0实现简单分布式缓存】-6:GeeCache总结

总结之前 GoCache 的实现过程,这是一个从零开始用 Go 语言实现的分布式缓存系统。详细介绍了缓存淘汰策略LRU、并发控制、一致性哈希算法、分布式节点通信、缓存击穿的解决方案以及优化方向。

theaipower的博客 3万+

分布式任务调度与分片——一致性哈希算法全面解析

分布式任务调度与分片——一致性哈希算法全面解析

专注分享技术、实用优质教程、资源 810

分布式节点、一致性哈希与架构降维:从原理到Python模拟实战

随着业务系统走向微服务化和容器化,分布式节点如何被高效调度、算法如何在路由决策中发挥作用、架构如何通过分层降维降低复杂度,成为后端工程师必须面对的核心问题。一致性哈希作为经典的路由算法,能够减少节点变动带来的数据迁移;注册中心则负责维护健康节点列表并动态摘除故障实例。理解这些基础机制,是构建高可用系统的前提。文章聚焦分布式节点、一致性哈希算法与架构降维的交汇点,通过一个基于Python的模拟案例,完整展示从节点注册、心跳续约到哈希环路由的链路,帮助读者将理论映射到实际工程。

weixin_30567225的博客 349

分布式哈希表

分布式哈希表 Posted on 2011-11-26 16:42天地玄黄阅读(19)评论(0)编辑收藏 我们从浅入深一步一步介绍什么是分布式哈希表。 1、哈希函数 哈希函数是一种计算方法,它可以把一个值A映射到一个特定的范围[begin, end]之内。对于一个值的集合{k1, k2, … , kN},哈希函数把他们均匀的映射到某个范围之中。这样,...

weixin_30920853的博客 352

java分布式都有哪些知识点

分布式计算就是通过计算机网络将计算工作分布到多台主机上,多个主机一起协同完成工作。我试着列一下相关知识吧。网络通讯,网络是分布式的基础,对分布式的理解建立在对网络的理解上,包括:OSI模型的7层TCP/IP,DNS,NATHTTP,SPDY/HTTP2Telnet网络编程,是通过程序在多个主机之间通信。包括:Socket多线程非阻塞IO网络框架NettyMinaZeroMQ操作系统的网络部分RPC...

M_Jack的博客 795

关于分布式一致性哈希在微服务部署中的实战优化7

哖_少オ輕狂 210

《系统架构师成长之路》第 5 期|数据结构与算法:哈希表与一致性哈希——从 O(1) 查找到分布式分片

从单机哈希表的 O(1) 推导出发,到分布式取模分片扩容 N/(N+1) 全量失效的雪崩分析,再推一致性哈希如何把扩容影响压到 1/(N+1),并详解虚拟节点解决数据倾斜。

坐看风云变幻 351
上一篇: 【消息队列MQ】各类MQ比较
下一篇: 【linux基础】Valgrind
indie-XinYe
博客等级 码龄19年 154粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值