Consistent hashing — node soni o‘zgarganda keylarning faqat kichik qismini qayta joylashtirishga mo‘ljallangan taqsimlash usuli. Oddiy hash(key) mod N formulasi N o‘zgarsa deyarli barcha key mappingini almashtiradi; consistent hashing esa hash space’da key va nodelarni joylashtirib, odatda faqat qo‘shilgan yoki chiqarilgan node yaqinidagi intervalni ko‘chiradi.
Hash ring modeli
Hash qiymatlari aylana sifatida tasavvur qilinadi. Har node ringdagi bir yoki ko‘p nuqtaga joylanadi. Key hashidan soat yo‘nalishida uchragan birinchi node uning egasi bo‘ladi. Node qo‘shilganda u keyingi nodening intervalidan bir qismini oladi; node ketganda interval keyingi nodega o‘tadi.
Ring vizual model, implementatsiya esa sorted array yoki tree bilan successor qidirishi mumkin. Hash collision va wrap-around aniq qoidalar bilan hal qilinadi.
Virtual nodelar
Bitta fizik node ringda ko‘p virtual node, ya’ni token bilan ifodalanadi. Bu tasodifiy skewni kamaytiradi va kuchli serverga ko‘proq token berib capacity weighting imkonini yaratadi. Virtual node soni juda katta bo‘lsa metadata, membership update va migration mayda operatsiyalari ko‘payadi.
Zamonaviy tizimlar ring o‘rniga rendezvous hashing yoki oldindan bo‘lingan virtual shard directorysidan foydalanishi ham mumkin. Maqsad bir xil: membership o‘zgarishida minimal remapping va muvozanatli taqsimot.
Replication
Keyning primary owneridan keyingi bir nechta turli failure domaindagi node replica sifatida tanlanishi mumkin. Ringdagi qo‘shni tokenlar bir fizik nodega tegishli bo‘lsa ularni alohida replica deb sanash mumkin emas. Zone-aware placement successor tanloviga topology cheklovi qo‘shadi.
Membership view barcha routerlarda bir xil bo‘lmasa request eski ownerga boradi. Versionlangan ring, gossip convergence, forwarding yoki redirect transitionni boshqaradi. Node qo‘shilishi bilan trafficni birdan yuborishdan oldin data streaming tugashi kerak.
Chegaralar
Consistent hashing random yoki yetarlicha uniform key hashini talab qiladi. Mashhur bitta key baribir bitta ownerni qizdiradi; algoritm request frequency haqida bilmaydi. Range query data tartibini saqlamaydi va ko‘p nodega tarqalishi mumkin.
U cryptographic securityni avtomatik bermaydi. Adversarial keylar taqsimotni buzmasligi kerak bo‘lsa keyed hash yoki input nazorati zarur. Monitoring token ownershipdan tashqari real bytes, QPS va latency skewini ham o‘lchaydi.
Cache clusterdagi xatti-harakat
Cache node qo‘shilganda yangi mappingdagi keylarning bir qismi hali unda mavjud bo‘lmaydi. Birinchi requestlar origin databasega tushib, cache miss storm yaratishi mumkin. Node’ni trafficga bosqichma-bosqich qo‘shish, data prewarm yoki request coalescing originni himoya qiladi. Node yo‘qolganda ham uning intervali boshqa nodelarga o‘tib, bir paytda ko‘p miss hosil qiladi.
Client-side ring tez routing beradi, lekin barcha clientlar membershipni bir vaqtda yangilamasligi mumkin. Server-side proxy yagona mapping beradi, evaziga qo‘shimcha hop va o‘z availability talabiga ega. Ring configurationi versionlanadi; response eski ownerdan kelsa redirect loop bo‘lmasligi uchun maksimal forwarding soni belgilanadi. Membership churnni kamaytirish uchun qisqa health dip node removalga darhol aylantirilmaydi.
Weighted tokenlar capacityni taxminiy ifodalaydi, lekin workload costi keyga qarab farq qilishi mumkin. Periodic rebalance real CPU va byte skewini hisobga oladi, migration esa bir vaqtda cheklangan intervalda bajariladi.
Bog‘liq tushunchalar
Hash ring, Virtual node, Rendezvous hashing, Sharding, Shard key, Replication factor, Membership, Resharding