redis 集群读书笔记

redis 集群是redis提供分布式数据库方案,通过分片来进行数据共享,并提供复制和故障转移功能。


一个redis 集群通常由多个节点组成,在刚开始的时候,每个节点都是相互独立的,他们都处于一个只包含自己的集群当中,
要组建一个真正可工作的集群,我们必须将节点连接起来,构成一个包含多个节点的集群。
 
连接各个节点的工作可以使用CLUSTER MEET 命令来完成,该命令格式如下  CLUSTER MEET <IP> <PORT>(让node节点与ip和port所指定的节点进行握手
当握手成功,node节点会添加到当前集群中。)
启动节点
   一个节点就是一个运行在集群模式下的redis服务器啊,redis 服务器在启动时候会根据cluster-enabled配置
   选项是否为yes来决定是否开启服务器集群模式
   
集群的数据结构
    每个节点都会使用一个clusterNode结构来记录自己的状态,并为集群中的所有其他节点(包括主节点和其他节点)都会创建一个clusterNode
    结构,来记录节点状态


cluster meet 命令的实现
    通过向节点A发送cluster meet命令,客户端可以让接收命令节点A将另一个节点B添加到节点A所在的集群里面:
收到命令的节点A与节点B进行握手,此来确认彼此的存在,并为下一步通信打好基础
节点为节点BB创建一个clusterNode结构,并将该结构添加到自己的clusterState.nodes字典里面(结构体)
之后,节点A将根据cluster meet命令给定的ip与端口号,向节点B发送一条meet消息
如果一切顺利,节点B将接受节点A发送的MEET消息,节点B为节点A创建一个clusterNode结构,并将该结构添加到自己的clusterState.nodes字典里面(结构体)
之后节点B将像节点A返回一条Pong消息
如果一切顺利,节点A将收到节点B返回的pong消息,通过这条pong小心节点A可以知道节点B已经成功地接受了自己发送的meet消息
之后节点A将向节点B返回一条ping消息
如果一切顺利,节点B将收到节点A返回的ping消息,通过这条ping消息节点B知道节点A已经成功地接收到了自己返回的pong消息,握手完成。
槽指派
   redis集群通过分片的方式来保存数据库的键值对:整个数据库被分为16384个槽(slot),数据库中的每个键都属于16384个槽其中的一个,
   集群中的每个节点可以处理0个或最多16384个。当数据库当中16834个槽都有节点处理时,集群处于上线状态;相反地,如果丢处于离线
   命令:cluster addslots <slot> [slot ...]
   记录节点的槽指派信息
   slots属性和numslot属性记录了节点负责处理哪些槽
 传播节点的槽指派信息
     一个节点除了会将自己负责处理的槽记录在clusterNode结构的slots属性和numslots属性之外,他还会将自己的slots数组通过信息发送给
集群中的其他节点,以来告知其他的节点自己负责处理哪些槽 (每个节点都会将自己的slots数组通过消息发送给集群中的其他节点,并且
收到每个接收slots数组的节点将会将数组保存到相应的节点的clusternode结构里面,每个节点知道各自负责的槽位)


在集群中执行命令
    当客户端向节点发送与数据库键有关的命令时,接收命令的节点会计算出命令要处理的数据库键属于哪个槽,并检查这个槽是否属于自己。
如果是当前节点,直接执行命令,如果是键所在的槽并没有当前节点,那么节点会向客户端返回一个moved错误,指引客户端转向至 正确的节点
并再次执行命令
复制与故障转移
    redis集群的节点分为某个节点和从节点,其中主节点用于处理槽,而从节点则用于复制某个主节点,并在被复制的主节点下线时,代替下线主节点
继续处理命令请求。
设置从节点
   cluster replicate <node_id> 可以让接收命令的节点成为node_id所指定节点的从节点,并开始对主节点进行复制,这信息会通过消息发送给
   集群中的其他节点。
故障检测 
    集群中每个节点都会定期地向集群中的其他节点发送ping消息,以此来检测对方是否在线,如果收到ping消息的节点没有在规定时间内,向发送
ping消息的节点返回pong消息,那么发送的ping消息的节点就会将接收ping的消息节点标记为疑似下线。
如果在一个集群里面,半数以上负责处理槽的主节点都将某个主节点x报告为疑似下线,那么将这个主节点x将被标记为已下线,将主节点x标记为
已下线的节点会广播一条关于主节点x的fail消息,所有收到这条fail消息的节点都会立即将主节点x标记为已下线。
故障转移
    当一个从节点发现自己的正在复制的主节点进入了已下线的状态时,从节点将开始对下线主节点进行故障转移
   1)复制下线主节点的所有从节点里面,会有一个从节点被选中
   2)被选中的从节点会执行slaveof no one 命令,成为新的主节点
   3)新的节点会撤销所有对已下线主节点的槽指派,并将这些槽指定给自己
   4)新的主节点向集群广播一条pong消息,这条pong消息可以让集群中的其他节点立即知道这个节点已经由从节点变成了主节点,并且
   这个主节点已经接管了原本由已下线节点负责处理的槽
   5)新的主节点开始接收和自己负责处理槽有关的命令请求,故故障转移。
选举新的主节点
    新的主节点是通过选举产生的。
1)集群的配置纪元是一个自增计数器,它的初始值为0.
2)当集群里的某个节点开始以此故障转移操作时,集群配置纪元的值会被增一。
3)对于每个配置纪元,集群里每个负责处理的槽的主节点都有以此投票的机会,而第一个向主节点要求投票的从节点将获得主节点的投票。
4)当从节点发现自己正在复制的主节点进入已下线状态时,从节点会向集群广播一条CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST消息,要求
所有收到这条消息,并且具有投票权的主节点向这个从节点投票,
5)如果一个主节点具有投票权(它负责处理槽),并且这个主节点尚未投票给其他从节点,那么主节点将向要求投票的从节点,那么主节点
     将向要求投票返回一条CLUSTERMSG_TYPE_FAILOVER_AUTH_ACK消息,表示这个主节点支持从节点成为新的主节点
6)每个参与选举的从节点都会接收CLUSTERMSG_TYPE_FAILOVER_AUTH_ACK消息,并根据自己收到了多少条这种消息统计自己获得了多了主节点的
支持
7)如果集群里有n个具有投票权的主节点,那么当一个从节点收集到大于等于N除以2 +1 张票支持时,这个从节点就会当选成为新的主节点。
8)因为每一个配置纪元里面,每个具有投票权的主节点只能投一票,所以如果有n个主节点进行投票,那么具有大于等于n处于2+1 的从节点
只会有一个,这确保了新的主节点只会有一个。
9)如果在一个配置纪元里面没有从节点能收集到足够多的支持票,要么集群进入一个新的配置,并再次进行选举,宣布选出新的主节点为止。
内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构和技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用和技术四大架构的内容和关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)和领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级和专业级价值流,细化业务能力、流程和对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致和高效使用。应用架构方面,提出了分层解耦和服务化的设计原则,以提高灵活性和响应速度。最后,技术架构部分围绕技术框架、组件、平台和部署节点进行了详细设计,确保技术架构的稳定性和扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理和业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业和组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理和应用开发,确保数据的一致性和应用的高效性;③为技术选型和系统部署提供科学依据,确保技术架构的稳定性和扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解和实践,重点关注各架构模块之间的关联和协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。 本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了一种快速ICA实现算法一FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想和方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进一步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验和应用,我们发现ICA在提取信号特征、降噪和信号分离等方面具有广泛的潜力和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值