1

Мне нужно сохранить копию внешней базы данных (включая некоторые дополнительные производные данные). С тем же набором аппаратных средств, который из одного из следующих решений даст мне более быструю согласованность (низкое отставание) с высокой доступностью? Предположим, что обновления для внешней базы данных происходят с 1000 записей в секунду.Репликация через события Kafka vs. mysql

a) Создайте локальную реплику mysql внешнего db, используя репликацию mysql 5.7 (механизм файла двоичного журнала).

ИЛИ

б) Получить в режиме реального времени Кафка событие от внешней системы, делая HTTP GET для извлечения обновленных деталей объекта и использовать эти данные для поддержания локального MySQL реплики.

ответ

1

Первый почти наверняка даст вам более низкое отставание (так как есть только две системы, а не три). Доступность примерно такая же - у Kafka высокая доступность, но у вас есть две базы данных с обеих сторон.

Второй вариант лучше, если вы считаете, что хотите отправить данные в режиме реального времени в дополнительную систему. То есть: MySQL1 -> Kafka -> (MySQL2 + Elastic Search + Cassandra + ...)

+0

Спасибо. Мой реальный прецедент заключается в том, что если x изменяется во внешней системе, скажем A, то моя система, скажем B, должна знать. Затем используйте x и некоторые дополнительные данные, связанные с x, скажем X, для вычисления y и отправки y в еще одну внешнюю систему, например C. C. Получается с использованием тяжелого агрегированного запроса в хранилище данных внешней системы A. Теперь вопрос заключается в том, следует ли создавать реплику A в B через собственную репликацию MySQL или не выполнять репликацию, а скорее делать GET в событии изменения для x для хранения в локальной реплике перед использованием агрегированного запроса. – ahuman

0

Ненавижу отвечать на вопросы с помощью «просто используйте эту штуку вместо этого», но я беспокоюсь, что вы готовитесь немного тяжелее, чем вам может понадобиться, или, может быть, вы это сделаете, и я неправильно прочитал.

Рассмотрите сплетничный инструмент, такой как serf.io. Он почти закончен и может дать вам именно то, что вам может понадобиться, с чем-то более легким, чем кластер kafka или пара mysql.