Преди всичко можете да промените конфигурацията по подразбиране, ако вършите малко работа в
redis-trib.rb
във функция def check_create_parameters
. Можете да зададете една главна и една подчинена реплика.
Целта на тази конфигурация е толерантност към грешки. Подчинените също могат да се използват за четене (САМО ЗА ЧЕТЕНЕ). В трите главни, хеш-слотовете са равномерно разпределени и с алгоритъм за балансиране на натоварването можете да преразпределите и действителните ключове. Стъпките на възможен алгоритъм, който нарушава ключовете между възлите са (тествани от мен и работи според очакванията):
- Намерете тълпата от майстори
- Получете общия брой ключове, които притежават
- За всеки главен възел съхранявайте името на хоста, порта и броя на ключовете
- Изчислете ключовете, които всеки главен трябва да държи, така че разпределението на ключовете да бъде балансирано (общ брой ключове на клъстер/брой глави)
- Намерете кои главни възли трябва да вземат или да дадат ключове и общото количество ключове, които трябва да дадат/вземат
- Характеризирайте главните като изходни или целеви възли в зависимост от това дали получават или раздават ключове съответно
- Започнете да мигрирате от изходен възел към целеви възли, първо хеш-слотовете и след това съответните ключове и повторете, докато всички глави имат еднакво количество ключове.
Този алгоритъм ще помогне да се сведе до минимум времето за реакция. Какво имам предвид:
С три мастера времето за реакция може да бъде сведено до минимум. Ако имате конфигурация с един главен и този главен елемент съдържа например 30 000 #ключа, времето за реакция за получаване на 1000 ключа наведнъж е> от конфигурация с 2 главни, която съдържа 15 000 всеки.
Ако създадете ключ в master1, тогава ако се опитате да достигнете (прочетете) този ключ от master2, ще получите MOVED грешка. И така, решението е да се създаде интелигентен клиент, който съпоставя хеш слотовете към съответния възел. По този начин можете да изтриете ключа от master2 само в случай, че master2 пренасочи заявката ви към правилния master.
Надявам се това да помогне.