Rumah  >  Artikel  >  pangkalan data  >  Cache Redis mempelajari slot cincang dan cincang yang konsisten

Cache Redis mempelajari slot cincang dan cincang yang konsisten

WBOY
WBOYke hadapan
2022-03-28 13:35:483966semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan isu yang berkaitan dengan pencincangan yang konsisten dan slot cincangan Jika pengembangan berlaku atau nod hilang, anda akan menghadapi banyak masalah pemindahan data , slot hashing dan hash yang konsisten dapat mengelakkan masalah ini, saya harap ia akan membantu semua orang.

Cache Redis mempelajari slot cincang dan cincang yang konsisten

Pembelajaran yang disyorkan: Tutorial pembelajaran Redis

Jika kini kami mempunyai peranti x cache, kami memutuskan di mana untuk meletakkan data Apabila caching pada peranti, anda boleh key%x, tetapi jika pengembangan berlaku atau nod hilang, anda memerlukan key%(x±y) Ini akan menghadapi banyak masalah pemindahan data Pencincangan dan slot cincang yang konsisten boleh mengelakkan masalah ini .

Prinsip pencincangan konsisten

Pencincangan biasa ialah mengambil baki bilangan pelayan pencincangan konsisten ialah mengambil baki nombor tertentu (2^32) dan ia tidak akan berubah disebabkan oleh bilangan pelayan. Pertama, kita mengambil baki IP pelayan atau pengecam unik lain untuk mendapatkan nilai ini adalah kedudukan pelayan pada gelang cincang nilai. Kami menggantikan cincang dengan pelayan yang sepadan dan mencari nilai Jika tiada pelayan di lokasi, semak sama ada pelayan di lokasi seterusnya tahu untuk mencari pelayan yang boleh disimpan.

1. Ruang dering

Cincang kekunci yang sepadan mengikut algoritma cincang yang biasa digunakan ke dalam ruang dengan 2 kuasa 32 nod, iaitu 0 ~ (2 daripada 32)-1 dalam ruang digital. Kita boleh bayangkan benda ini menggigit ekornya, membentuk gelung tertutup.
Cache Redis mempelajari slot cincang dan cincang yang konsisten

2. Hash pelayan ke gelanggang

Sekarang cincin sudah tersedia, kita kini perlu meletakkan pelayan pada gelanggang. , yang boleh berdasarkan alamat IP pelayan Dapatkan nombor dan pengecam unik lain, cincang dan letakkannya di atas gelanggang.
Cache Redis mempelajari slot cincang dan cincang yang konsisten服务器

3. Penyimpanan dan pemerolehan data

Apabila kita perlu meletakkan data pada pelayan, kita perlu mengira nilai cincang bagi data Kemudian ambil bakinya Jika nilai selebihnya mempunyai pelayan yang sepadan pada cincin, letakkannya secara langsung. Jika tidak, cari ke belakang.
Cache Redis mempelajari slot cincang dan cincang yang konsisten
Jadi akhirnya data1 dalam redis1 dan data2 dalam redis2. Apabila kami memperoleh data, kami juga melakukan proses yang sama, mengira nilai cincang kunci, dan kemudian mendapatkan pelayan yang disimpan mengikut peraturan yang sama.

4. Pemadaman dan penambahan pelayan

Jika nod redis ditutup sekarang, maka data dalam nod lain masih ada, dan data dalam nod asal masih ada. Data akan diedarkan semula ke nod seterusnya.
Jika pelayan baharu RedisNeo ditambahkan pada persekitaran, RedisNeo dipetakan ke gelang melalui algoritma cincang, dan mengikut peraturan migrasi mengikut arah jam, maka data dengan nilai cincang sebelumnya antara Redis2 dan RedisNeo akan dipindahkan ke RedisNeo (di bawah) Dalam rajah, RedisNeo berada di sebelah Redis2), dan objek lain masih mengekalkan lokasi storan asalnya. Melalui analisis penambahan dan pemadaman nod, algoritma cincang yang konsisten mengekalkan monotonisitas sambil meminimumkan penghijrahan data.
Cache Redis mempelajari slot cincang dan cincang yang konsisten
Jadi selepas redisNeo ditambahkan, data3 masuk ke redisNeo.

5. Baki

Setakat ini, pencincangan yang konsisten boleh dianggap selesai, tetapi ada satu masalah yang masih perlu diselesaikan, iaitu keseimbangan. Daripada rajah di bawah, kita dapat melihat bahawa apabila terdapat sedikit nod pelayan, masalah akan timbul, iaitu, sejumlah besar data pasti akan tertumpu pada satu nod Contohnya, jika anda hanya mempunyai dua nod, satu di 1 dan yang lain pada 10, maka ia akan menjadi sangat sukar, jelas tekanan pada nod 1 adalah tidak terhingga, kerana hanya mereka yang mempunyai nilai hash antara [2,10] akan pergi ke nod 10, dan yang lain akan pergi ke. nod 1. Untuk menyelesaikan masalah pencongan data ini, pencincangan yang konsisten Algoritma memperkenalkan mekanisme nod maya, iaitu, berbilang cincang dikira untuk setiap nod perkhidmatan, dan satu nod perkhidmatan diletakkan pada setiap kedudukan hasil pengiraan, yang dipanggil a nod maya. Kaedah khusus boleh terlebih dahulu menentukan bilangan nod maya yang dikaitkan dengan setiap nod fizikal, dan kemudian menambah nombor selepas IP atau nama hos Pada masa yang sama, algoritma kedudukan data kekal tidak berubah, kecuali untuk pemetaan nod maya kepada nod sebenar.

slot cincang

Slot cincang digunakan dalam skema gugusan redis Kelompok gugusan redis tidak menggunakan skema pencincangan yang konsisten, tetapi menggunakan pencincangan dalam pencincangan data digunakan untuk penyimpanan data dan bacaan. Kelompok Redis menggunakan slot cincang serpihan data untuk penyimpanan data dan pembacaan data. Kelompok redis mempunyai sejumlah 2^14 (16384) slot Semua nod induk akan mempunyai kawasan slot seperti 0~1000 Bilangan slot boleh dipindahkan. Nod hamba nod induk tidak menetapkan slot dan hanya mempunyai kebenaran membaca. Tetapi ambil perhatian bahawa dalam kod, kelompok redis melakukan operasi baca dan tulis pada nod induk Ia bukan nod hamba untuk membaca dan nod induk untuk menulis seperti yang anda fikirkan. Apabila gugusan redis dicipta buat kali pertama, 16384 slot diagihkan sama rata oleh nod induk.
Cache Redis mempelajari slot cincang dan cincang yang konsisten
Berbanding dengan pencincangan yang konsisten, anda perlu memperuntukkan slot cincang secara manual apabila mengembangkan dan mengecil, dan apabila memadamkan nod induk, anda perlu menyerahkan nod hamba dan slot cincangnya kepada nod yang lain; slot cincang adalah berdasarkan nilai CRC-16 (kunci) 384 untuk menentukan kepunyaan slot itu.

Pembelajaran yang disyorkan: Tutorial Redis

Atas ialah kandungan terperinci Cache Redis mempelajari slot cincang dan cincang yang konsisten. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam