Redis
 sql >> база данни >  >> NoSQL >> Redis

Redis клъстер/балансиране на натоварването

Преди всичко можете да промените конфигурацията по подразбиране, ако вършите малко работа в

redis-trib.rb

във функция def check_create_parameters . Можете да зададете една главна и една подчинена реплика.

Целта на тази конфигурация е толерантност към грешки. Подчинените също могат да се използват за четене (САМО ЗА ЧЕТЕНЕ). В трите главни, хеш-слотовете са равномерно разпределени и с алгоритъм за балансиране на натоварването можете да преразпределите и действителните ключове. Стъпките на възможен алгоритъм, който нарушава ключовете между възлите са (тествани от мен и работи според очакванията):

  1. Намерете тълпата от майстори
  2. Получете общия брой ключове, които притежават
  3. За всеки главен възел съхранявайте името на хоста, порта и броя на ключовете
  4. Изчислете ключовете, които всеки главен трябва да държи, така че разпределението на ключовете да бъде балансирано (общ брой ключове на клъстер/брой глави)
  5. Намерете кои главни възли трябва да вземат или да дадат ключове и общото количество ключове, които трябва да дадат/вземат
  6. Характеризирайте главните като изходни или целеви възли в зависимост от това дали получават или раздават ключове съответно
  7. Започнете да мигрирате от изходен възел към целеви възли, първо хеш-слотовете и след това съответните ключове и повторете, докато всички глави имат еднакво количество ключове.

Този алгоритъм ще помогне да се сведе до минимум времето за реакция. Какво имам предвид:

С три мастера времето за реакция може да бъде сведено до минимум. Ако имате конфигурация с един главен и този главен елемент съдържа например 30 000 #ключа, времето за реакция за получаване на 1000 ключа наведнъж е> от конфигурация с 2 главни, която съдържа 15 000 всеки.

Ако създадете ключ в master1, тогава ако се опитате да достигнете (прочетете) този ключ от master2, ще получите MOVED грешка. И така, решението е да се създаде интелигентен клиент, който съпоставя хеш слотовете към съответния възел. По този начин можете да изтриете ключа от master2 само в случай, че master2 пренасочи заявката ви към правилния master.

Надявам се това да помогне.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да получите всички ключове в Redis

  2. Не можа да се свърже с Redis на 127.0.0.1:6379:Връзката е отказана с homebrew

  3. LogicException:Моля, уверете се, че разширението PHP Redis е инсталирано и активирано

  4. Региони в стил Azure Cache/DataCache в Redis

  5. Поведение на Redis с множество едновременни програми, извършващи четене/делене на един и същ хеш ключ