關(guān)于16384 作者的回答
處于心跳檢測發(fā)包容量考慮
16384(2^14)
在redis節(jié)點(diǎn)發(fā)送心跳包時需要把所有的槽放到這個心跳包里,以便讓節(jié)點(diǎn)知道當(dāng)前集群信息,16384=16k,在發(fā)送心跳包時使用char進(jìn)行bitmap壓縮后是2k(2 * 8 (8 bit) * 1024(1k) = 2K),也就是說使用2k的空間創(chuàng)建了16k的槽數(shù)。
雖然使用CRC16算法最多可以分配65535(2^16-1)個槽位,65535=65k,壓縮后就是8k(8 * 8 (8 bit) * 1024(1k) = 8K),也就是說需要需要8k的心跳包,作者認(rèn)為這樣做不太值得;并且一般情況下一個redis集群不會有超過1000個master節(jié)點(diǎn),所以16k的槽位是個比較合適的選擇。
作者也明確表示,master節(jié)點(diǎn)不要超過1000時,使用redis-cluster。超過1000的超大redis集群,元數(shù)據(jù)的傳輸數(shù)據(jù)量太大,加劇主從同步的延遲。