通过 Kafka 与 mysql 事件进行复制

Replication via Kafka vs. mysql events

我需要维护一个外部数据库的副本(包括一些额外的派生数据)。使用相同的硬件集,以下哪一个解决方案可以给我更快的一致性(低滞后)和高可用性?假设对外部数据库的更新速度为每秒 1000 条记录。

a) 使用 mysql 5.7 复制(二进制日志文件机制)创建外部数据库的本地 mysql 副本。

b) 从外部系统获取实时 Kafka 事件,执行 HTTP GET 以获取更新的对象详细信息并使用这些详细信息维护本地 mysql 副本。

第一个几乎肯定会给你较低的延迟(因为只有两个系统而不是三个)。可用性大致相同——Kafka 是高可用性的,但无论如何你在两边都有两个数据库。

如果您认为要将数据实时发送到其他系统,则第二种更好。那是: MySQL1 -> Kafka -> (MySQL2 + Elastic Search + Cassandra + ...)

我不想用 'just use this oddball thing instead' 来回答问题,但我确实担心你准备的太重了,超出了你可能需要的程度——或者你可能做了,但我看错了。

考虑像 serf.io 这样的八卦工具。它几乎完成了,并且可以通过比 kafka 集群或 mysql 对更轻的东西为您提供您可能需要的东西。