Robię trochę pracy dla organizacji, która ma biura w 48 krajach na całym świecie. Zasadniczo sposób, w jaki teraz pracują, polega na tym, że wszystkie przechowują dane w lokalnej kopii bazy danych i są one replikowane do wszystkich regionów/biur na świecie. Zdarza się, że muszą pracować bezpośrednio nad czymś, co "kopia deweloperska" znajduje się na serwerach w Londynie, i muszą łączyć się bezpośrednio z serwerami w Londynie, bez względu na to, gdzie się znajdują.Architektura dla rozproszonego globalnie Neo4j?
Więc powiedzmy, że chcę mieć pojedynczy wykres obejmujący całą organizację, która jest zaśmiecana, aby każdy region miał stosunkowo szybkie odczyty wykresu. Martwię się, że napisy zabiją wydajność. Rozumiem, że zapisy przechodzą przez jednego mistrza, czy oznacza to, że istnieje jeden mistrz na całym świecie? np. jeśli ten mistrz znajduje się w Londynie, to każdy zapis do bazy danych z Sydney musi przejść tę odległość niezależnie od lokalnego odłamka? A co by się stało, gdyby Sydney i Londyn zostały odcięte (z jakiegokolwiek powodu)?
Zasadniczo, w jaki sposób Neo4j rozwiązuje problem globalnej dystrybucji?
Świetna odpowiedź: co się stanie, gdy połączenie między dwoma lokalizacjami zostanie przerwane, zmiany zostaną wprowadzone do obu klastrów, a następnie zostanie przywrócone łącze? Wydaje mi się, że przeczytałem coś o tym, że muszę zapewnić obsługę zdarzeń rywalizacji ... Czy to prawda? – gremwell
do wyborów głównych potrzebujesz więcej niż połowy członków klastra (dlatego powinieneś mieć nieparzystą liczbę), aby mieć kworum. Bez kworum nie zostanie wybrany żaden mistrz. Wydzielona mniejszość twojego klastra nadal może obsłużyć odczyty, ale nie przyjmuje zapisów. –
Ale mamy grupę 3 w Londynie, skupisko 3 w Sydney. Mistrz jest w Londynie, a ktoś odcina londyńskie biuro (uwaga: serwery nadal działają, a wszyscy w londyńskim biurze nadal ich używają). Sydney wybiera teraz nowego mistrza i działa przez jakiś czas. Jakiś czas później połączenie z biurem w Londynie wraca do sieci. Co się dzieje? – gremwell