繁体   English   中英

我应该如何在我的设置中设置 Kafka 分区与主题

[英]How should I setup Kafka paritions vs topics in my setup

我希望使用 Kafka 作为我的事件存储/订单流,这里有一些属性:

  • 我有两个地区要满足:伦敦和纽约
  • 在伦敦开始的订单很可能有更多的事件(更新)来自伦敦,但是我们确实需要支持跨区域的读/写(即对于在伦敦开始的事件,写可以来自纽约)
  • 业务将受益于较低的延迟,因此应尽量减少伦敦向纽约的写入,反之亦然
  • 订单的生命周期为 24 小时,此时可以从事件日志中存档,因为我们不再需要它。
  • 需要弹性,如果伦敦 Kafka 工厂出现故障,我应该能够故障转移到纽约,反之亦然。
  • 事件的顺序需要在所有地区保持一致
  • 订单号仅为每 24 小时 1000 件。

所以我试图让我的卡夫卡设置正确,这样我就可以最大限度地减少我必须在卡夫卡外部做的工作量,所以我的担忧/问题是:

  1. 起源区域似乎是一个自然的分区键,但据我所知,我从分区主题中没有任何收获......我可以只有 2 个主题,一个用于伦敦,一个用于纽约? 我对么?
  2. 据我所知,为了具备故障转移的能力,我需要设置两个单独的集群并使用镜像制造商跨区域同步两个主题。 但这意味着我需要在我的应用程序中构建逻辑,以便它们将事件发布到正确的集群 - 我理解正确吗? 有什么方法可以设置 Kafka,所以我不必这样做,我只需连接到本地集群并读/写,让集群负责将事件路由到的位置

您可能想查看代理的“机架感知”配置,这有助于机架感知分区复制。 这主要用于改善跨可用区的流量,您可以在此处了解更多信息。 它的要点是,您的消费者可以从“最近的”副本中获取记录。 在您的情况下,假设您操作一个跨区域集群,位于伦敦的消费者可能只会从伦敦的经纪人那里获取数据。

关于延迟:如果您没有任何亚秒级要求,我强烈建议您运行单个集群而不是两个集群。 东海岸和英国之间的延迟应该不会太糟糕。 保持简单,Kafka 非常健壮,可以处理单个集群中的大多数故障(例如,代理死亡)。 从一个位置的单个集群开始,您仍然可以添加第二个集群并使用镜像制造商或专用服务迁移您的数据。

这也会导致每个地区没有两次“相同”的主题。 根据内容而不是位置来区分主题。 否则,在迁移用于订单的数据格式时,您将获得很多乐趣。 您希望尽可能灵活地应对未来的变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM