我需要维护一个外部数据库的副本(包括一些额外的派生数据)。使用相同的硬件集,以下哪一种解决方案可以为我提供更快的一致性(低延迟)和高可用性?假设对外部数据库的更新以每秒 1000 条记录发生。
a) 使用 mysql 5.7 复制(二进制日志文件机制)创建外部数据库的本地 mysql 副本。
或者
b) 从外部系统获取实时 Kafka 事件,执行 HTTP GET 以获取更新的对象详细信息并使用这些详细信息来维护本地 mysql 副本。
我需要维护一个外部数据库的副本(包括一些额外的派生数据)。使用相同的硬件集,以下哪一种解决方案可以为我提供更快的一致性(低延迟)和高可用性?假设对外部数据库的更新以每秒 1000 条记录发生。
a) 使用 mysql 5.7 复制(二进制日志文件机制)创建外部数据库的本地 mysql 副本。
或者
b) 从外部系统获取实时 Kafka 事件,执行 HTTP GET 以获取更新的对象详细信息并使用这些详细信息来维护本地 mysql 副本。
第一个几乎肯定会给你带来更低的延迟(因为只有两个系统而不是三个)。可用性大致相同 - Kafka 具有高可用性,但无论如何你都有两个数据库。
如果您认为您希望将数据实时发送到其他系统,则第二种方法会更好。即:MySQL1 -> Kafka -> (MySQL2 + Elastic Search + Cassandra + ...)
我讨厌用“只用这个奇怪的东西代替”来回答问题,但我确实担心你的装备比你可能需要的有点太重了——或者也许你这样做了,我读错了。
考虑一个像 serf.io 这样的八卦工具。它几乎完成了,并且可以通过比 kafka 集群或 mysql 对更轻的东西为您提供您可能需要的东西。