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:
- 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?
- 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 № 1Odpowiedź 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.