系统运维

Redis集群模式通信成本影响因素

字号+作者:益华科技来源:应用开发2025-11-05 11:15:10我要评论(0)

一、通信开销影响因素节点数量每秒从本地实例列表选择5个节点,在这5个节点中选择最久没有通信的实例,向该实例发送PING消息。即:定时发送PING消息的节点数量=5。避免一些实例节点一直选不到,会有一个

一、群模通信开销影响因素

节点数量

每秒从本地实例列表选择5个节点,式通素在这5个节点中选择最久没有通信的信成响因实例,向该实例发送PING消息。本影

即:定时发送PING消息的群模节点数量=5。

避免一些实例节点一直选不到,式通素会有一个定时任务扫描兜底措施。信成响因

集群内部每秒10次的本影固定频率扫描本地缓存节点列表,也就是群模每100ms一次。

如果节点:PONG更新时间node.pong_received>(cluster-node-timeout/2)立即向该节点发送PING消息,式通素假设该数量为N。信成响因

即:兜底发送的本影节点数量=10 * N。

通过调大cluster_node_timeout可以减少通信的群模节点数量,例如:从15秒调整到30秒。式通素

但是信成响因,cluster_node_timeout过大会影响故障发现的时间和新节点发现的时间。

消息大小

一次通信包含消息头和消息体。

消息头:PING消息头相对固定,主要占用的发送节点负责的槽位(myslots[CLUSTER_SLOTS/8])占用2KB。

消息体:会携带一定数量的其他节点信息,默认包含集群总节点数的1/10,高防服务器最少包含集群的3个节点,最多包含集群总节点数-2。

消息体clusterMsgDataGossip各个字段字节大小,共计104个字节。

属性

大小

char nodename[CLUSTER_NAMELEN]

40字节

uint32_t ping_sent

4字节

uint32_t pong_received

4字节

char ip[NET_IP_STR_LEN]

46字节

uint16_t port

2字节

uint16_t cport

2字节

uint16_t flags

2字节

uint16_t pport

保留字段

uint16_t notused1

4字节

合计

104字节

200个节点的redis集群,一次通信成本:2KB的消息头+2KB的消息体(20*104)= 4KB,一来一回8KB。

携带消息体的大小与集群规模相关,规模越大消息体越大,通信成本越高。

达到一定程度后整体集群性能会下降,Redis Cluster官方建议最大规模1000个实例,实际中通常不会超过500个实例。

二、扩缩容与槽位迁移

节点扩缩容本质上是槽在节点之间的迁移。

节点扩容后,需要将原有节点上的槽迁移到新节点。

如下图所示,当集群中加入节点4时,将节点1的Slo01,节点2的Slot04,节点3的Slot07迁移给节点4以实现数据均衡。亿华云计算

节点缩容前,需要将待下线节点上的槽先迁移走。

如下图所示,当集群中节点4下线,需要先将其拥有的槽位Slot01、Slot04、Slot07迁移走。

槽位迁移命令有:ADDSLOTS、DELSLOTS、FLUSHSLOTS、SETSLOT。

三、请求路由与重定向

数据存储在槽里,槽分布在实例上,处理客户端请求也是找对应槽的过程。

请求重定向

请求路由过程如下:

@1 客户端发送请求命令到集群任意节点@2 计算key对应的槽,计算公式:slot=CRC16(key)&16383@3 槽在本节点,执行命令,每个实例维护自身负责的槽也维护其他实例负责的槽位@4 槽不在本节点,回复MOVE到其他节信息点@5 向目标节点发起请求

为了减少MOVE重定向的开销,例如Jedis在客户端实现时缓存了槽与节点的关系,减少通信的开销。

然而也增加了客户端的b2b供应网复杂性,客户端会为集群中每个节点独立的连接池,集群规模大时占用更多的本地缓存。

ASK重定向

如果访问的槽正在做迁移,一部分数据在源节点,而另一部分已经迁移到目标节点,这个流程是如何的?

ASK重定向流程:

@1 发送请求命令@2 计算key对应的槽@3 槽在本节点,数据也在,执行命令@4 访问的数据正在迁移,回复ASK信息含请求数据的目标节点@5 向目标节点发起ASKING请求、执行命令获取数据

ASK的重定向是临时性的,客户端(Jedis)收到回复不更新客户端槽与节点映射,而MOVE的重定向会更新本地槽映射关系。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 探索诺基亚X7-00的卓越表现与功能(一款引人注目的智能手机助您领略新的移动体验)

    探索诺基亚X7-00的卓越表现与功能(一款引人注目的智能手机助您领略新的移动体验)

    2025-11-05 10:54

  • 猫王小音箱(探索无限可能,猫王小音箱为您带来身临其境的音乐体验)

    猫王小音箱(探索无限可能,猫王小音箱为您带来身临其境的音乐体验)

    2025-11-05 10:51

  • 以乐心智能手环ziva体验报告(乐享智能科技,掌握健康动态)

    以乐心智能手环ziva体验报告(乐享智能科技,掌握健康动态)

    2025-11-05 10:16

  • 探寻JBLEverest300耳机的卓越表现(深入解析JBLEverest300耳机的音质、舒适度和功能特点)

    探寻JBLEverest300耳机的卓越表现(深入解析JBLEverest300耳机的音质、舒适度和功能特点)

    2025-11-05 08:31

网友点评
精彩导读
1.下载获取字体并解压安装对于开源操作系统而言,Ubuntu平台默认自带很多字体。但通常情况下用户或许对已有字体并不能满足需要。因此,类似Windows系统一样,用户可以在Ubuntu 14.04、14.10或者像Linux Mint之类系统中安装额外的字体。步骤一: 获取字体首先,下载你所选择的字体。用户会现在你或许在考虑下载字体,通过搜索引擎可以给你提供几个免费的字体网站。用户可以先去看看Lost Type的字体(点击下载),Squirrel也是一个下载字体的网站(点击下载),用户都可以从这两个网站找的需要新字体。步骤二:Ubuntu中安装新字体对于用户来讲,下载的字体文件可能是一个压缩包,先解压它大多数字体文件格式是TTF (TrueType字体) 或者OTF (OpenType字体)。无论是哪种格式,双击字体文件后会自动用字体查看器打开。这里用户可以在右上角看到安装选项。值得注意的是:在安装字体时不会看到其他信息。几秒钟后会看到状态变成已安装,表示字体已经安装完毕。安装完毕后,用户就可以在GIMP、Pina等应用中看到你新安装的字体。2.在Ubuntu上一次安装多字体要在Ubuntu中一次安装多个字体,需要在home目录下创建一个.fonts文件夹(假如它不存在的话),并把解压后的TTF和OTF文件复制到这个文件夹内。在文件管理器中进入home目录。按下Ctrl+H 显示Ubuntu中的隐藏文件,右键创建一个文件夹并命名为.fonts。 值得提醒的是在Linux中,文件前面加上“.”意味在普通的视图中都会隐藏。另外,用户可以通过安装字体管理程序,在图形用户界面管理字体。要在Ubuntu中安装字体管理程序,打开终端并输入下面的命令:要卸载字体管理器,使用下面的命令:在此推荐一下文泉驿正黑字体作为具体示例~上图是在 Xubuntu 14.04 自带文本编辑器 Mousepad 里的字体效果。喜欢锐利清晰字体的 Ubuntu 用户,可以安装文泉驿正黑: 复制代码代码如下:sudo apt-get install fonts-wqy-zenhei 然后在系统字体设置里应用“文泉驿点阵正黑”字体即可。

1.下载获取字体并解压安装对于开源操作系统而言,Ubuntu平台默认自带很多字体。但通常情况下用户或许对已有字体并不能满足需要。因此,类似Windows系统一样,用户可以在Ubuntu 14.04、14.10或者像Linux Mint之类系统中安装额外的字体。步骤一: 获取字体首先,下载你所选择的字体。用户会现在你或许在考虑下载字体,通过搜索引擎可以给你提供几个免费的字体网站。用户可以先去看看Lost Type的字体(点击下载),Squirrel也是一个下载字体的网站(点击下载),用户都可以从这两个网站找的需要新字体。步骤二:Ubuntu中安装新字体对于用户来讲,下载的字体文件可能是一个压缩包,先解压它大多数字体文件格式是TTF (TrueType字体) 或者OTF (OpenType字体)。无论是哪种格式,双击字体文件后会自动用字体查看器打开。这里用户可以在右上角看到安装选项。值得注意的是:在安装字体时不会看到其他信息。几秒钟后会看到状态变成已安装,表示字体已经安装完毕。安装完毕后,用户就可以在GIMP、Pina等应用中看到你新安装的字体。2.在Ubuntu上一次安装多字体要在Ubuntu中一次安装多个字体,需要在home目录下创建一个.fonts文件夹(假如它不存在的话),并把解压后的TTF和OTF文件复制到这个文件夹内。在文件管理器中进入home目录。按下Ctrl+H 显示Ubuntu中的隐藏文件,右键创建一个文件夹并命名为.fonts。 值得提醒的是在Linux中,文件前面加上“.”意味在普通的视图中都会隐藏。另外,用户可以通过安装字体管理程序,在图形用户界面管理字体。要在Ubuntu中安装字体管理程序,打开终端并输入下面的命令:要卸载字体管理器,使用下面的命令:在此推荐一下文泉驿正黑字体作为具体示例~上图是在 Xubuntu 14.04 自带文本编辑器 Mousepad 里的字体效果。喜欢锐利清晰字体的 Ubuntu 用户,可以安装文泉驿正黑: 复制代码代码如下:sudo apt-get install fonts-wqy-zenhei 然后在系统字体设置里应用“文泉驿点阵正黑”字体即可。

热门资讯