Odłamek Redis

Odłamek Redis
Kiedy zaczniesz używać Redis, łatwo uwierzyć, że nigdy nie będziesz musiał skalować go poza ustawienia domyślne. Problem polega na tym, że wraz ze wzrostem aplikacji w końcu będziesz potrzebować więcej pamięci, procesora i wydajności, aby zaspokoić potrzeby firmy. W tym artykule pokażemy Ci, w jaki sposób klaster Redis skaluje się z Sharding, aby zapewnić dodatkową pojemność potrzebną do płynnego prowadzenia firmy i rozwijania się w przyszłość. W szczególności dowiemy się, w jaki sposób klaster Redis zapewnia wysoką przepustowość z odłamkiem.

Skalowalność

Istnieją dwa powszechne podejścia do skalowania serwera: skalowanie pionowe i skalowanie poziome. Skalowanie lub skalowanie pionowe to miejsce, w którym dodajesz więcej mocy i zasobów do serwera, na przykład więcej procesorów, pamięci i pamięci, co jest kosztowne. Z drugiej strony skalowanie poziome dodaje wiele węzłów do istniejącej puli zasobów. Nazywa się to skalowaniem. Tak więc, w oparciu o twoje ograniczenia i wymagania, to zależy od jednego większego instancji serwera lub wdrożenie wielu węzłów serwera.

Załóżmy, że masz 100 GB pamięci RAM i musisz pomieścić 200 GB danych. W takim przypadku masz dwie możliwości:

  • Skalować, dodając więcej pamięci RAM do systemu
  • Wyprowadzić skalę, dodając kolejną instancję serwera ze 100 GB pamięci RAM

Jeśli osiągnąłeś maksymalny limit pamięci RAM w infrastrukturze, wówczas skalowanie jest idealnym podejściem. Ponadto skalowanie zwiększy przepustowość bazy danych o ogromny margines.

Odłamek Redis

Wiadomo, że Redis działa na jednym wątku. Tak więc Redis nie jest w stanie wykorzystać wielu rdzeni procesora twojego serwera do przetwarzania poleceń. Dlatego dodanie większej liczby rdzeni procesora nie zapewnia dużej przepustowości lub wydajności za pomocą redis. Nie jest tak w przypadku podziału danych na wiele instancji serwera. Dodanie kilku serwerów i dystrybucja zestawu danych wśród tych umożliwia przetwarzanie żądań klienta równolegle, co zwiększa przepustowość. Ponadto ogólna wydajność może wzrosnąć w pobliżu liniowo.

To podejście do podziału lub rozpowszechniania danych między wieloma serwerami z myślą o skalowaniu jest nazywane Sharding. Nazywane są wszystkie serwery przechowujące części danych odłamki.

Jak dokonuje się odłamka - odłamki algorytmiczne

Jednym z głównych obaw związanych z odłamkiem było zlokalizowanie danego klucza wśród wielu węzłów Redis. Ponieważ dany klucz można przechowywać w dowolnych dostępnych odłamkach, zapytanie wszystkich odłamków w celu znalezienia określonego klucza nie jest najlepszą opcją. Tak więc powinien istnieć sposób na mapowanie każdego klucza na określony odłam.

Najczęstszym podejściem jest obliczenie wartości skrótu za pomocą nazwy klucza Redis i modulo. Następnie podziel go przez dostępne odłamki Redis w systemie.

HASH_SLOT = CRC16 (klucz) Mod 16384

Jest to całkiem dobre rozwiązanie, o ile całkowita liczba odłamków jest stała. Za każdym razem, gdy dodasz nową instancję serwera Reids, wynikowa wartość dla danego klucza może się zmienić, ponieważ całkowita liczba odłamków wzrosła. W końcu będzie zapytać o niewłaściwy odłamek Redis. Dlatego należy postępować zgodnie z procesem przekształcenia, obliczając nowy odłamek dla każdego klucza i przesyłając dane do odpowiedniego serwera, który jest kłopotliwy, a nie trywialny zadanie, jeśli całkowita liczba odłamków rośnie od czasu do czasu.

Redis używa nowej logicznej jednostki o nazwie Gniazdo hash Aby zapobiec temu problemowi. Dla danego odłamka dostępnych jest kilka gniazd z hasztu, a pojedynczy gniazdo skrótu może pomieścić wiele klawiszy Redis. Istnieje 16384 gniazda skrótu w klastrze bazy danych Redis, który pozostaje niezmieniony. Podział modulo odbywa się z liczbą gniazd skrótu zamiast liczby odłamków. Zapewnia prawidłową pozycję gniazda skrótu dla określonego klucza, nawet gdy liczba odłamków wzrosła. Upraszcza proces przekształcenia, przenosząc szczeliny skrótu z jednego odłamka do nowego, który dzieli dane na różne instancje Redis zgodnie z wymaganiami.

Korzyści z odłamku Redis

Redis Sharding umożliwia kilka korzyści dla systemu bazy danych przy minimalnych zmianach.

Wysoka przepustowość

Ponieważ Redis jest jednowarstwowy, przetwarzanie wielu żądań klientów nie może przetwarzać równoległego za pomocą wielu rdzeni procesora. Tak więc dodanie nowych odłamków lub instancji serwera gwarantuje, że możesz wykonywać operacje Redis równolegle. Zwiększa operacje na sekundę w bazie danych Redis, co ostatecznie zapewnia wysoką przepustowość.

Duża dostępność

Dzięki podejściu do odchylenia klaster Redis może skonfigurować architekturę mistrzowską, która zapewnia wysoką dostępność i trwałość.

Przeczytaj repliki

SHARDING umożliwia prowadzenie dokładnej kopii danych i dostarczanie operacji odczytu za pomocą oddzielnych instancji Redis, co zwiększa wydajność wykonania zapytania odczytu.

Oprócz tych korzyści, Sharding może powodować sytuacje podzielonego mózgu, gdy masz parzystą liczbę odłamków w klastrze Redis. Zaleca się zachowanie nieparzystej liczby odłamków w klastrze Redis.

Wniosek

Podsumowując, Redis Sharding dzieli dane między wiele serwerów, co umożliwia skalowanie i wysoką przepustowość dla Twojej bazy danych. Jak omówiono, Redis stosuje strategię algorytmiczną, aby wskazać żądania klientów do prawidłowego odłamku. Ma to pewne wady, gdy wzrasta całkowita liczba odłamków. Zamiast całkowitej liczby odłamków, Redis używa liczby szczelin skrótu do obliczenia odpowiedniego odłamka. Wraz z wprowadzeniem Sharding bazy danych Redis zapewniają wysoką dostępność, wysoką przepustowość i wysoką wydajność.