4

我在主要区域(美国东部)有一名工作人员,负责计算我们边缘位置的流量数据。我想将数据从边缘区域推送到我们的主要 kafka 区域。

一个例子是波兰、澳大利亚、美国西部。我想将所有这些统计数据推送到美国东部。我不想在从边缘区域写入主区域的过程中产生额外的延迟。

另一种选择是创建另一个 kafka 集群和作为中继的工作人员。这将要求我们在每个区域维护单独的集群,并且会增加我们部署的复杂性。

我看过 Mirror Maker,但我真的不想镜像任何东西,我想我正在寻找更多的中继系统。如果这不是设计的方法,我如何将我们所有的应用程序指标聚合到要计算和排序的主要区域?

感谢您的时间。

4

2 回答 2

1

据我所知,以下是您的选择:

  1. 在每个区域设置一个本地 Kafka 集群,并让您的边缘节点写入其本地 Kafka 集群以实现低延迟写入。从那里,您将设置一个镜像制造商,将数据从本地 Kafka 拉到远程 Kafka 以进行聚合。
  2. 如果您担心使用高潜在阻塞请求中断您的应用程序请求路径,那么您可能希望将您的生产者配置为异步(非阻塞)写入远程 Kafka 集群。根据您选择的编程语言,这可能是简单或复杂的练习。
  3. 运行每个主机中继(或数据缓冲区)服务,该服务可以像推送到远程 Kafka 集群的日志文件和守护进程一样简单(如上所述)。或者,运行单个实例 Kafka/Zookeeper 容器(有将两者捆绑在一起的 docker 映像)来缓冲数据以供下游拉取。

选项 1. 绝对是这个问题的最标准解决方案,尽管有点笨拙。我怀疑将来会有更多工具出现在 Confluent / Kafka 中以支持选项 3。

于 2016-11-14T04:40:21.623 回答
0

将消息写入磁盘上的本地日志文件。编写一个小守护进程,它读取日志文件并将事件推送到主 kafka 守护进程。

要增加吞吐量并限制延迟的影响,您还可以每分钟轮换一次日志文件。然后每分钟将带有 cronjob 的日志文件同步到您的主要 kafka 区域。让导入守护程序在那里运行。

于 2016-11-11T08:55:52.920 回答