2013-09-05 4 views
5

Я работаю над организацией, имеющей офисы в 48 странах мира. По существу, они теперь работают, так как все они хранят данные в локальной копии базы данных и копируются во все регионы/офисы в мире. В странный случай, когда им нужно работать непосредственно над чем-то, где «копия разработки» находится на лондонских серверах, они должны напрямую подключаться к лондонским серверам независимо от того, где они находятся в мире.Архитектура для распределенного по всему миру Neo4j?

Так что скажем, что я хочу иметь один граф, охватывающий всю организацию, которая оштукатурена, чтобы каждая область имела относительно быстрое считывание графика. Я обеспокоен тем, что записи будут убивать производительность. Я понимаю, что записи проходят через одного хозяина, значит ли это, что есть один мастер во всем мире? т. е. если этот мастер находится в Лондоне, то каждый из них пишет в базу данных из Сиднея, чтобы пройти это расстояние независимо от локального осколка? И что произойдет, если Сидней и Лондон будут отрезаны (по какой-либо причине)?

По существу, как Neo4j решает проблему глобального распространения?

ответ

7

Механизм распределения в издании Neo4j Enterprise - действительно мастер-рабский стиль. Любой запрос на запись хозяину фиксируется локально и синхронно передается на номер в ведомых устройствах, определенных push_factor (по умолчанию: 1). Запрос на запись в подчиненный будет синхронно применять его мастер, к себе и к достаточным машинам для выполнения push_factor. Синхронная связь между подчиненными и ведущими может повлиять на производительность, поэтому рекомендуется делать переадресацию записи в мастер и распространять чтение по ведомым устройствам. Коммуникация кластера отлично работает в сетях с высокой задержкой.

В настройке с несколькими регионами я бы рекомендовал иметь полный (как минимум 3 экземпляра) кластер в «основной области». Другой кластер из 3 экземпляров находится во вторичной области, работающей только в режиме ведомого. В случае, если основная область полностью опускается (бывает очень редко, но она работает), инструмент мониторинга запускает изменение конфигурации во вторичной области, чтобы позволить экземплярам стать мастером. Все остальные офисы, требующие быстрого доступа для чтения, имеют x (x> = 1, в зависимости от производительности чтения) только ведомые экземпляры. В каждом месте у вас есть прокси-сервер HA (или другой LB), который направляет записи мастеру (обычно в основной области) и читает локальную область.

Если вы хотите выйти за пределы ~ 20 экземпляров для одного кластера, сначала сделайте серьезное доказательство концепции. Благодаря архитектуре подчиненного подчиненного устройства этот подход не масштабируется неопределенно.

+0

Отличный ответ: что происходит, когда связь между двумя местоположениями отключена, изменения внесены в оба кластера, а затем восстанавливается ссылка? Я думаю, что я кое-что прочитал о том, чтобы предоставить обработчик для соревнований ... Правильно? – gremwell

+0

для мастер-выборов вам нужно больше половины членов кластера (поэтому у вас должно быть нечетное число), чтобы иметь кворум. Без кворума не будет избран мастер. Изолированное меньшинство вашего кластера все еще может обрабатывать чтения, но оно не будет принимать записи. –

+0

Но у нас есть группа из 3 в Лондоне, группа из 3 в Сиднее. Мастер находится в Лондоне, и кто-то отключает лондонский офис (примечание: серверы все еще работают, и все в лондонском офисе продолжают их использовать). Сидней теперь выбирает нового мастера и работает некоторое время. Спустя некоторое время связь с лондонским офисом возвращается в Интернете. Что происходит? – gremwell