自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開(kāi)發(fā) 前端 Redis
Redis集群模式節(jié)點(diǎn)之間通過(guò)Gossip協(xié)議彼此之間傳遞節(jié)點(diǎn)狀態(tài)、槽等信息,沒(méi)有依賴元數(shù)據(jù)組件來(lái)維護(hù)。簡(jiǎn)化了架構(gòu)的同時(shí),通信成本也限制了集群規(guī)模。

一、通信開(kāi)銷影響因素

節(jié)點(diǎn)數(shù)量

每秒從本地實(shí)例列表選擇5個(gè)節(jié)點(diǎn),在這5個(gè)節(jié)點(diǎn)中選擇最久沒(méi)有通信的實(shí)例,向該實(shí)例發(fā)送PING消息。

即:定時(shí)發(fā)送PING消息的節(jié)點(diǎn)數(shù)量=5。

避免一些實(shí)例節(jié)點(diǎn)一直選不到,會(huì)有一個(gè)定時(shí)任務(wù)掃描兜底措施。

集群內(nèi)部每秒10次的固定頻率掃描本地緩存節(jié)點(diǎn)列表,也就是每100ms一次。

如果節(jié)點(diǎn):PONG更新時(shí)間node.pong_received>(cluster-node-timeout/2)立即向該節(jié)點(diǎn)發(fā)送PING消息,假設(shè)該數(shù)量為N。

即:兜底發(fā)送的節(jié)點(diǎn)數(shù)量=10 * N。

通過(guò)調(diào)大cluster_node_timeout可以減少通信的節(jié)點(diǎn)數(shù)量,例如:從15秒調(diào)整到30秒。

但是,cluster_node_timeout過(guò)大會(huì)影響故障發(fā)現(xiàn)的時(shí)間和新節(jié)點(diǎn)發(fā)現(xiàn)的時(shí)間。

消息大小

一次通信包含消息頭和消息體。

消息頭:PING消息頭相對(duì)固定,主要占用的發(fā)送節(jié)點(diǎn)負(fù)責(zé)的槽位(myslots[CLUSTER_SLOTS/8])占用2KB。

消息體:會(huì)攜帶一定數(shù)量的其他節(jié)點(diǎn)信息,默認(rèn)包含集群總節(jié)點(diǎn)數(shù)的1/10,最少包含集群的3個(gè)節(jié)點(diǎn),最多包含集群總節(jié)點(diǎn)數(shù)-2。

消息體clusterMsgDataGossip各個(gè)字段字節(jié)大小,共計(jì)104個(gè)字節(jié)。

屬性

大小

char nodename[CLUSTER_NAMELEN]

40字節(jié)

uint32_t ping_sent

4字節(jié)

uint32_t pong_received

4字節(jié)

char ip[NET_IP_STR_LEN]

46字節(jié)

uint16_t port

2字節(jié)

uint16_t cport

2字節(jié)

uint16_t flags

2字節(jié)

uint16_t pport

保留字段

uint16_t notused1

4字節(jié)

合計(jì)

104字節(jié)

200個(gè)節(jié)點(diǎn)的redis集群,一次通信成本:2KB的消息頭+2KB的消息體(20*104)= 4KB,一來(lái)一回8KB。

攜帶消息體的大小與集群規(guī)模相關(guān),規(guī)模越大消息體越大,通信成本越高。

達(dá)到一定程度后整體集群性能會(huì)下降,Redis Cluster官方建議最大規(guī)模1000個(gè)實(shí)例,實(shí)際中通常不會(huì)超過(guò)500個(gè)實(shí)例。

二、擴(kuò)縮容與槽位遷移

節(jié)點(diǎn)擴(kuò)縮容本質(zhì)上是槽在節(jié)點(diǎn)之間的遷移。

節(jié)點(diǎn)擴(kuò)容后,需要將原有節(jié)點(diǎn)上的槽遷移到新節(jié)點(diǎn)。

如下圖所示,當(dāng)集群中加入節(jié)點(diǎn)4時(shí),將節(jié)點(diǎn)1的Slo01,節(jié)點(diǎn)2的Slot04,節(jié)點(diǎn)3的Slot07遷移給節(jié)點(diǎn)4以實(shí)現(xiàn)數(shù)據(jù)均衡。

圖片

節(jié)點(diǎn)縮容前,需要將待下線節(jié)點(diǎn)上的槽先遷移走。

如下圖所示,當(dāng)集群中節(jié)點(diǎn)4下線,需要先將其擁有的槽位Slot01、Slot04、Slot07遷移走。

圖片

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

三、請(qǐng)求路由與重定向

數(shù)據(jù)存儲(chǔ)在槽里,槽分布在實(shí)例上,處理客戶端請(qǐng)求也是找對(duì)應(yīng)槽的過(guò)程。

請(qǐng)求重定向

請(qǐng)求路由過(guò)程如下:

  • @1 客戶端發(fā)送請(qǐng)求命令到集群任意節(jié)點(diǎn)
  • @2 計(jì)算key對(duì)應(yīng)的槽,計(jì)算公式:slot=CRC16(key)&16383
  • @3 槽在本節(jié)點(diǎn),執(zhí)行命令,每個(gè)實(shí)例維護(hù)自身負(fù)責(zé)的槽也維護(hù)其他實(shí)例負(fù)責(zé)的槽位
  • @4 槽不在本節(jié)點(diǎn),回復(fù)MOVE到其他節(jié)信息點(diǎn)
  • @5 向目標(biāo)節(jié)點(diǎn)發(fā)起請(qǐng)求

圖片

為了減少M(fèi)OVE重定向的開(kāi)銷,例如Jedis在客戶端實(shí)現(xiàn)時(shí)緩存了槽與節(jié)點(diǎn)的關(guān)系,減少通信的開(kāi)銷。

然而也增加了客戶端的復(fù)雜性,客戶端會(huì)為集群中每個(gè)節(jié)點(diǎn)獨(dú)立的連接池,集群規(guī)模大時(shí)占用更多的本地緩存。

ASK重定向

如果訪問(wèn)的槽正在做遷移,一部分?jǐn)?shù)據(jù)在源節(jié)點(diǎn),而另一部分已經(jīng)遷移到目標(biāo)節(jié)點(diǎn),這個(gè)流程是如何的?

ASK重定向流程:

  • @1 發(fā)送請(qǐng)求命令
  • @2 計(jì)算key對(duì)應(yīng)的槽
  • @3 槽在本節(jié)點(diǎn),數(shù)據(jù)也在,執(zhí)行命令
  • @4 訪問(wèn)的數(shù)據(jù)正在遷移,回復(fù)ASK信息含請(qǐng)求數(shù)據(jù)的目標(biāo)節(jié)點(diǎn)
  • @5 向目標(biāo)節(jié)點(diǎn)發(fā)起ASKING請(qǐng)求、執(zhí)行命令獲取數(shù)據(jù)

圖片

ASK的重定向是臨時(shí)性的,客戶端(Jedis)收到回復(fù)不更新客戶端槽與節(jié)點(diǎn)映射,而MOVE的重定向會(huì)更新本地槽映射關(guān)系。

責(zé)任編輯:武曉燕 來(lái)源: 瓜農(nóng)老梁
相關(guān)推薦

2015-12-11 10:42:27

數(shù)據(jù)中心運(yùn)營(yíng)成本

2019-07-24 09:43:44

大數(shù)據(jù)云存儲(chǔ)云計(jì)算

2010-03-22 09:16:15

2020-02-23 23:15:13

物聯(lián)網(wǎng)開(kāi)發(fā)物聯(lián)網(wǎng)IOT

2019-10-23 09:20:11

Redis集群主從復(fù)制

2022-09-26 00:04:32

Redis故障模式

2021-07-02 16:06:59

物聯(lián)網(wǎng)硬件成本物聯(lián)網(wǎng)

2023-06-16 11:25:33

2012-06-06 09:08:58

2011-07-03 23:03:09

網(wǎng)站排名

2021-07-02 15:50:17

物聯(lián)網(wǎng)

2022-08-28 19:36:15

數(shù)據(jù)分片KafkaRocketMQ

2009-08-28 10:05:41

影響SEO的因素

2011-06-22 16:43:02

SEO網(wǎng)站排名

2019-09-16 16:05:13

Redis集群模式

2021-01-17 16:19:11

HPC存儲(chǔ)高性能計(jì)算

2015-10-20 10:27:18

數(shù)據(jù)中心托管

2011-05-10 14:36:00

H標(biāo)簽

2011-06-29 16:05:00

網(wǎng)站排名

2011-07-01 14:25:20

網(wǎng)站收錄
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)