Редис Схардинг

Redis Sharding



Када први пут почнете да користите Редис, лако је поверовати да никада нећете морати да га скалирате даље од подразумеваних подешавања. Проблем је у томе што ће вам, како ваша апликација расте, на крају требати више меморије, ЦПУ-а и пропусног капацитета да бисте подржали ваше пословне потребе. У овом чланку ћемо вам показати како се Редис кластер повећава са шардирањем да би вам пружио додатни капацитет који вам је потребан за несметано вођење вашег пословања и раст у будућности. Конкретно ћемо научити како Редис кластер обезбеђује високу пропусност са дељењем.

Прилагодљивост

Постоје два уобичајена приступа скалирању сервера: вертикално скалирање и хоризонтално скалирање. Вертикално скалирање или повећање је место где додајете више снаге и ресурса вашем серверу, као што је више ЦПУ-а, меморије и складишта, што је скупо. С друге стране, хоризонтално скалирање је додавање више чворова вашем постојећем скупу ресурса. Ово се зове скалирање. Дакле, на основу ваших ограничења и захтева, на вама је да имате једну већу инстанцу сервера или да примените више серверских чворова.

Претпоставимо да имате 100 ГБ РАМ-а и да морате да држите 200 ГБ података. У овом случају, имате два избора:







  • Повећајте повећање додавањем више РАМ-а систему
  • Смањите величину додавањем још једне инстанце сервера са 100 ГБ РАМ-а

Ако сте достигли максимално ограничење РАМ-а у оквиру своје инфраструктуре, онда је скалирање идеалан приступ. Поред тога, скалирање ће повећати пропусност базе података за огромну маргину.





Редис Схардинг

Позната је чињеница да Редис ради на једној нити. Дакле, Редис није у стању да користи више језгара ЦПУ-а вашег сервера за обраду команди. Стога вам додавање више ЦПУ језгара не даје велику пропусност или перформансе са Редис-ом. То није случај са поделом ваших података између више инстанци сервера. Додавање неколико сервера и дистрибуција скупа података међу њима омогућавају паралелну обраду захтева клијената, што повећава пропусност. Поред тога, укупне перформансе се могу повећати скоро линеарно.





Овај приступ раздвајања или дистрибуције података међу више сервера са скалирањем на уму се назива схадинг . Позвани су сви сервери који чувају делове података крхотине .



Како се врши дељење — алгоритамско дељење

Једна од главних брига код шардирања била је како лоцирати дати кључ међу више Редис чворова. Пошто се дати кључ може ускладиштити у свим доступним деловима, испитивање свих делова ради проналажења одређеног кључа није најбоља опција. Дакле, требало би да постоји начин да се сваки кључ мапира на одређени део, а Редис користи алгоритамску стратегију дељења.

Најчешћи приступ је израчунавање хеш вредности користећи име Редис кључа и модуло. Затим га поделите са доступним Редис деловима у систему.

ХАСХ_СЛОТ = ЦРЦ16(кључ) мод 16384

То је прилично добро решење све док је укупан број крхотина константан. Кад год додате нову инстанцу Реидс сервера, резултујућа вредност за дати кључ може да се промени пошто се укупан број шарда повећао. Завршиће испитивање погрешног Редис шарда. Према томе, требало би да пратите процес поновног шардирања тако што ћете израчунати нови део за сваки кључ и пренети податке на исправан сервер, што је гломазан и није тривијалан задатак ако се ваш укупан број шардова повећава с времена на време.

Редис користи нови логички ентитет који се зове а хеш слот да спречи овај проблем. Неколико хеш слотова је доступно за дати део, а један хеш слот може да садржи више Редис кључева. Постоји 16384 хеш слота у Редис кластеру базе података који остаје непромењен. Подела по модулу се врши са бројем хеш слотова уместо броја фрагмената. Обезбеђује тачан положај хеш слота за наведени кључ чак и када се број фрагмената повећао. Поједностављује процес поновног шардирања премештањем хеш слотова са једног шарда на нови који дели податке на различите Редис инстанце према захтеву.

Предности Редис Схардинг-а

Редис дељење омогућава неколико предности вашем систему базе података уз минималне промене.

Висока пропусност

Пошто је Редис једнонитни, обрада вишеструких захтева клијената не може да се обрађује паралелно користећи више ЦПУ језгара. Дакле, додавање нових делова или инстанци сервера гарантује да можете паралелно да обављате Редис операције. То повећава број операција у секунди у вашој Редис бази података, што вам на крају даје високу пропусност.

Висока доступност

Са приступом шардирања, Редис кластер може поставити архитектуру мастер-реплика која осигурава високу доступност и издржљивост.

Прочитајте реплике

Схардинг вам омогућава да задржите тачну копију ваших података и обезбедите операције читања кроз засебне Редис инстанце, што повећава перформансе извршења вашег упита за читање.

Поред ових предности, дељење може да изазове ситуације поделе мозга када имате паран број делова у Редис кластеру. Дакле, препоручује се да држите непаран број фрагмената у вашем Редис кластеру.

Закључак

Да резимирамо, Редис дељење дели податке између више сервера, што омогућава скалирање и високу пропусност за вашу базу података. Као што је већ поменуто, Редис користи алгоритамску стратегију дељења да усмерава захтеве клијената на исправну деоницу. Ово има неке недостатке када се укупан број крхотина повећа. Дакле, уместо укупног броја фрагмената, Редис користи број хеш слотова за израчунавање одговарајућег шарда. Са увођењем шардирања, Редис базе података пружају високу доступност, високу пропусност и високе перформансе.