复述中集群集群的示例分析

介绍

这篇文章主要为大家展示了“复述中集群集群的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“复述中集群集群的示例分析”这篇文章吧。

<强> 1。前言

复述,集群模式主要有2种:

主从集群,分布式集群。

前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡。

复述,集群提供了以下两个好处

1,将数据自动切分(分裂)到多个节点

2,当集群中的某一个节点故障时,复述,还可以继续处理客户端的请求。

一个复述,集群包含16384个哈希槽(散列槽),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式CRC16(关键)% 16384来计算键键属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。

集群中的主从复制

集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作

注意:

1,如果某一个主节点和他所有的从节点都下线的话,复述,集群就会停止工作了.redis集群不保证数据的强一致性,在特定的情况下,复述,集群会丢失已经被执行过的写命令

2,使用异步复制(异步复制)是复述,集群可能会丢失写命令的其中一个原因,有时候由于网络原因,如果网络断开时间太长,复述,集群就会启用新的主节点,之前发给主节点的数据就会丢失。

<强> 2。主从切换原理

复述的主从原理与MySQL相似,都是设置两台机器,一主一从。也就是常说的热备与冷备。设置主从的同时,设置两个哨兵进程,用来检测主节点是否宕机。若发现主节点宕机,立马从从节点内选取出合适的节点作为新的主节点。这点与VIP(虚拟IP技术有点相似)。

<强> 3。复述,群集TCP端口

每个复述,群集的节点都需要打开两个TCP连接,由于这两个连接就需要两个端口,分别是用于为客户端提供服务的常规复述,TCP命令端口(例如6379)以及通过将10000和命令端口相加(10000 + 6379)而获得的端口,就是集群端口(例如16379年)。

第二个大号端口用于群集总线,即使用二进制协议的节点到节点通信通道。节点使用群集总线进行故障检测,配置更新,故障转移授权等。客户端不应尝试与群集总线端口通信,为了保证复述,命令端口的正常使用,请确保在防火墙中打开这两个端口,否则复述,群集节点将无法通信。

命令端口和集群总线端口偏移量是固定的,始终为10000 .

请注意,为了让复述,群集正常工作,您需要为每个节点:

1,用于与客户端进行通信的普通客户端通信端口(通常为6379)对所有需要到达群集的客户端以及所有其他群集节点(使用客户端端口进行密钥迁移)都是开放的。

2,集群总线端口(客户端端口+ 10000)必须可从所有其他集群节点访问。

如果您不打开这两个TCP端口,则您的群集将无法正常工作。

集群总线使用不同的二进制协议进行节点到节点的数据交换,这更适合于使用很少的带宽和处理时间在节点之间交换信息。

<强> 4。复述,集群和码头工人

目前,复述,群集不支持NAT地址环境,并且在IP地址或TCP端口被重新映射的一般环境中。

码头工人使用一种叫做端口映射的技术:码头工人容器中运行的程序可能会暴露在与程序认为使用的端口不同的端口上。这对于在同一服务器中同时使用相同端口运行多个容器很有用。

为了使码头工人与复述,集群兼容,您需要使用码头工人的主机联网模式。请查看码头工人文档中主机的净=选项以获取更多信息。

<强> 5。复述,集群数据分片

复述,集群没有使用一致的散列,而是一种不同的分片形式,其中每个关键在概念上都是我们称之为散列槽的部分。

复述,集群中有16384个散列槽,为了计算给定关键的散列槽,我们简单地取16384模的CRC16。

复述,集群中的每个节点负责哈希槽的一个子集,例如,您可能有一个具有3个节点的集群,其中:

<李>

1,节点一个包含从0到5500的散列槽。

<李>

2节点B包含从5501到11000的散列槽。

<李>

3节点C包含从11001到16383的散列槽。

这允许轻松地添加和删除集群中的节点。例如,如果我想添加一个新节点D,我需要将节点A, B, C中的一些散列槽移动到D同样,如果我想从集群中删除节点,我可以只移动由一个使用的散列槽到B和C,当节点一个将为空时,我可以将它从群集中彻底删除。

复述中集群集群的示例分析