gpt4 book ai didi

apache-kafka - 微服务数据复制模式

转载 作者:行者123 更新时间:2023-12-04 04:17:57 26 4
gpt4 key购买 nike

在微服务架构中,我们通常有两种微服务通信的方式。假设服务 A 需要从服务 B 获取信息。第一个选项是远程调用,通常通过 HTTPS 同步,因此服务 A 查询服务 B 托管的 API。
第二种选择是采用事件驱动的架构,其中服务 B 的状态可以以异步方式由服务 A 发布和消费。使用此模型,服务 A 可以使用来自服务 B 的事件的信息更新自己的数据库,并且所有查询都在此数据库中本地进行。这种方法的优点是可以更好地分离微服务,从开发到运营。但它有一些与数据复制相关的缺点。
第一个是磁盘空间的高消耗,因为相同的数据可以驻留在需要它的微服务的数据库中。但在我看来,第二个最糟糕:如果服务 B 不能按需要快速处理其订阅,或者在服务 B 上创建它的同时它不能用于服务 A,则数据可能会变得陈旧,鉴于模型的最终一致性。
假设我们使用 Kafka 作为事件中心,其主题配置为使用 7 天的数据保留期。当服务 B 发布其状态时,服务 A 保持同步。两周后,新服务 C 部署完毕,其数据库需要使用服务 B 拥有的所有信息进行充实。由于最旧的事件已经消失,我们只能从 Kafka 主题中获取部分信息。我的问题是 我们可以使用哪些模式来实现此微服务的数据库丰富 (除了要求服务 B 将其所有当前状态重新发布到事件中心)。

最佳答案

有2个选项:

  • 您可以为单个主题启用 Kafka 的日志压缩。这将保留给定 key 的最新值,丢弃旧更新。在给定的保留期限内,这可以节省空间并比正常模式保存更多数据
  • 假设您每天备份服务 B DB,在引入新服务 C 时,您需要首先从 B 的最新备份创建 C 的初始状态,然后从特定偏移 id 重放 Kafka 主题事件表示备份后的数据。
  • 关于apache-kafka - 微服务数据复制模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55112973/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com