91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis cluster偏偏使用16384個槽原因是什么

發布時間:2021-10-14 14:53:08 來源:億速云 閱讀:233 作者:iii 欄目:編程語言

這篇文章主要講解了“redis cluster偏偏使用16384個槽原因是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“redis cluster偏偏使用16384個槽原因是什么”吧!

總結一下,主要兩個原因:

  1. 消息大小的考慮,槽位數越大,維護槽位信息占用空間越大,浪費帶寬,也容易導致網絡擁塞。

redis cluster中將節點加入到集群,需要執行cluster meet ip:port來完成節點的握手操作,之后節點間就可以通過定期ping-pong來交換信息,其消息頭結構體如下:

#define CLUSTER_SLOTS 16384
typedef struct {
    char sig[4];        /* Signature "RCmb" (Redis Cluster message bus). */
    uint32_t totlen;    /* Total length of this message */
    uint16_t ver;       /* Protocol version, currently set to 1. */
    uint16_t port;      /* TCP base port number. */
    uint16_t type;      /* Message type */
    uint16_t count;     /* Only used for some kind of messages. */
    uint64_t currentEpoch;  /* The epoch accordingly to the sending node. */
    uint64_t configEpoch;   /* The config epoch if it's a master, or the last
                               epoch advertised by its master if it is a
                               slave. */
    uint64_t offset;    /* Master replication offset if node is a master or
                           processed replication offset if node is a slave. */
    char sender[CLUSTER_NAMELEN]; /* Name of the sender node */
    unsigned char myslots[CLUSTER_SLOTS/8];
    char slaveof[CLUSTER_NAMELEN];
    char myip[NET_IP_STR_LEN];    /* Sender IP, if not all zeroed. */
    char notused1[34];  /* 34 bytes reserved for future usage. */
    uint16_t cport;      /* Sender TCP cluster bus port */
    uint16_t flags;      /* Sender node flags */
    unsigned char state; /* Cluster state from the POV of the sender */
    unsigned char mflags[3]; /* Message flags: CLUSTERMSG_FLAG[012]_... */
    union clusterMsgData data;
} clusterMsg;

其中的unsigned char myslots[CLUSTER_SLOTS/8];維護了當前節點持有槽信息的bitmap。每一位代表一個槽,對應位為1表示此槽屬于當前節點。因為#define CLUSTER_SLOTS 16384故而myslots占用空間為:16384/8/1024=2kb,但如果#define CLUSTER_SLOTS65536,則占用了8kb。

而且在消息體中也會攜帶其他節點的信息用于交換。這個“其他節點的信息”具體約為集群節點數量的1/10,至少攜帶3個節點的信息。故而集群節點越多,消息內容占用空間就越大。

  1. redis集群的主節點數據一般不可能超過1000個。

節點越多,交換信息報文也越大;另一方面因為節點槽位信息是通過bitmap維護的,傳輸過程中會對bitmap進行壓縮。如果槽位越小,節點也少的情況下,bitmap的填充率slots/N(N表示節點數)就較小,對應壓縮率就高。反之節點很少槽位很多則壓縮率就很低。

所以綜合考慮,作者覺得實際上16384個槽位就夠了。

感謝各位的閱讀,以上就是“redis cluster偏偏使用16384個槽原因是什么”的內容了,經過本文的學習后,相信大家對redis cluster偏偏使用16384個槽原因是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑川县| 宾阳县| 楚雄市| 绥宁县| 余江县| 和龙市| 吴江市| 福清市| 邯郸市| 屏山县| 邳州市| 当雄县| 鸡泽县| 阳朔县| 镇巴县| 岢岚县| 巴青县| 左权县| 聊城市| 射洪县| 南郑县| 湾仔区| 江川县| 贵南县| 子长县| 甘南县| 海兴县| 平乡县| 闵行区| 巴林右旗| 太谷县| 武威市| 海原县| 大埔区| 昭通市| 昌宁县| 广德县| 银川市| 龙岩市| 彭山县| 大宁县|