Репликация через события Кафки против MySQL

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

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

ИЛИ ЖЕ

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам