/ Ładowanie i utrzymywanie rozproszonej mapy Hazelcast - Java, Hazelcast

Ładowanie i utrzymywanie rozproszonej mapy Hazelcast - java, hazelcast

ja używam Hazelcast (3.8.1) jako usługa pamięci podręcznej w mojej aplikacji. Po przejściu przez dokumentacja hazelcast, Mam z tym kilka wątpliwości:

  1. Jeśli używamy Trwałość zapisu, ponieważ jest to wywołanie asynchroniczne do jego lokalnej kolejki, z której ostatecznie utrzymujemy ją do bazy danych. Moje pytanie brzmi: jeśli wszystkie węzły ulegną awarii, to czy w tym scenariuszu nastąpi utrata danych?

Uwaga: Rozumiem, że jedna kopia kolejki jest również przechowywana w węźle zapasowym. Ale moim scenariuszem jest, gdy cały węzeł się psuje, czy możemy stracić dane?

  1. Czy hazelcast utrzymuje trwałość offline, gdy spada, i ładuje go, gdy jest uruchamiany [dla wszystkich węzłów]?

Doceń odpowiedzi.

Odpowiedzi:

1 dla odpowiedzi № 1

Odpowiedź na 1 jest oczywiste i ma zastosowanie do każdego systemu w pamięci z zapisami asynchronicznymi. Gdyby wszystko węzły w klastrze ulegają awarii, a następnie tak, istnieje możliwość utraty danych, ponieważ system jest ostatecznie spójny.

Na pytanie 2: Hazelcast to pamięć podręczna przechowywana w pamięci i na niej leżyjego główne zalety. Zapisywanie lub ładowanie z pamięci trwałej powinno być drugorzędne, ponieważ powoduje konflikt z niektórymi głównymi atrybutami systemu buforowania (szybkość, jak sądzę ...).

Powiedziawszy to, pozwala ci ładować i zapisywać w pamięci trwałej, synchronicznie (zapis) lub asynchronicznie (zapis)

Jeśli głównym powodem korzystania z Hazelcast jestreplikacja i partycjonowanie (trwałych, spójnych danych), wtedy lepiej byłoby skorzystać z bazy danych NoSql, takiej jak Mongodb. To zależy w dużej mierze od twoich wzorców użycia, ponieważ nadal może mieć sens, jeśli oczekujesz znacznie więcej odczytów niż zapisów.

Z drugiej strony główny powód korzystaniajest to szybkość, dlatego potrzebujesz lepiej zarządzać odpornością na uszkodzenia, która ma więcej wspólnego z topologią klastra (być może powinieneś mieć replikację między centrami danych) niż z trwałością. Nietypowe jest martwienie się o „śmierć wszystkich węzłów” w twoim DC, chyba że masz silne wymagania dotyczące spójności lub transakcji.


1 dla odpowiedzi nr 2

Tak, utracisz dane w pamięci, jeśli nie zostaną jeszcze utrwalone w bazie danych.

OTOH, Hazelcast ma Gorący restart dla trwałości na dysku w wersji Enterprise. Pomaga to w przypadku planowego wyłączenia całego klastra lub nagłej awarii w całym klastrze, np. Awarii zasilania.