Какое хорошее решение для кросс-центра данных репликации мастер-мастер?
Допустим, у нас есть распределенная система, в которой данные обрабатываются идентификаторами пользователей. В большинстве случаев каждый шард изменяется пользователем, которому принадлежит этот шард. Существует более одного центра обработки данных, и пользователи сбалансированы между этими центрами данных, используя DNS, файлы cookie или что-то еще. Т.е. в большинстве случаев каждый пользователь обслуживается одним центром обработки данных. Это означает, что мы можем реплицировать данные между центрами обработки данных в режиме мастер-мастер. Конечно, конфликтующие записи возможны, но они редки и могут быть разрешены с помощью, скажем, CRDT или векторных часов. И если какой-либо центр обработки данных выходит из строя, пользователи могут быть просто перенаправлены на другие центры обработки данных!
Существуют ли базы данных, способные решить описанную проблему? Может быть, некоторые услуги, предоставляемые AWS или Google Cloud, предлагают решение?
1 ответ
Я не могу ответить на конкретный вариант использования здесь, из-за способа, которым вы можете захотеть осколки, но у Aerospike есть XDR, где все кластеры являются равноправными.
Все кластеры будут "в конечном итоге согласованы" с использованием XDR из-за задержек со скоростью света, плюс мы пакетируем обновления между центрами обработки данных. Тем не менее, в каждом кластере Aerospike DB будет немедленно согласован.
Не стесняйтесь проверить наши документы для получения дополнительных ответов: