【问题标题】:Replication via Kafka vs. mysql events通过 Kafka 与 mysql 事件进行复制
【发布时间】:2016-08-26 17:32:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql apache-kafka replication database-replication mysqlbinlog


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我真正的用例是,如果外部系统(比如 A)中的 x 发生变化,那么我的系统(比如 B)需要知道。然后使用 x 和与 x 关联的一些附加数据,比如 X,来计算 y 并将 y 发送到另一个外部系统,比如 C。X 是使用对外部系统 A 的数据存储的大量聚合查询获得的。现在的问题是是否通过本机 MySQL 复制在 B 中创建 A 的副本,或者不进行复制,而是在使用聚合查询之前对 x 的更改事件执行 GET 以存储在本地副本中。
    【解决方案2】:

    我讨厌用“只用这个奇怪的东西代替”来回答问题,但我确实担心你的装备比你可能需要的有点太重了——或者你可能做了,我看错了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多