【问题标题】:Multiple instances of Kafka on same host同一主机上的多个 Kafka 实例
【发布时间】:2021-01-13 21:44:30
【问题描述】:

我正在尝试在同一主机上运行 2 个 Kafka 实例。为了实现这一点,我下载并提取了 Kafka,并创建了提取的 Kafka 文件夹和内容的副本,创建了两个 Kafka 实例:Kafka-instance-1 和 Kafka-instance-2。

我不想在同一个集群中创建多个代理设置,每个 Kafka 实例中只创建一个代理。

我将 Kafka-instance-1 和 Kafka-instance-2 上的 server.properties 更新到不同端口的每个点。因此,我使用 8182 而不是默认端口 9092。当我开始处理这个问题时,我想知道这在 Kafka 中是否可行——在同一台机器上运行两个实例,再次重申我并没有尝试运行两个代理,但有两个独立的 Kafka 实例。尝试这样做有什么陷阱吗?我担心的一件事是,也许 Kafka 正在使用未通过配置公开的端口,这将阻止多个实例在同一台机器上执行。

尝试在同一主机上设置两个 Kafka 实例是否会遇到此问题或任何其他问题?

我这样做的原因是我正在测试一个应用程序。该应用程序需要自己的一组主题。要同时测试应用程序的多个实例,每个应用程序实例都要求它的主题不被应用程序的其他运行实例写入。出于这个原因,每个应用程序都有自己的 Kafka 实例。我可以在多台机器上安装 Kafka 并将每个应用程序指向它自己的机器,但这是额外的工作,而且在同一台机器上创建多个 Kafka 实例要容易得多,如果可行的话。

【问题讨论】:

  • "app 需要它自己的一组主题" ...并且这些主题不能在同一个集群上是单独的名称?
  • 用于描述如何启动两个实例的文档:kafka.apache.org/10/documentation/#quickstart_multibroker
  • @OneCricketeer 我认为多代理设置在这种情况下不会起作用,因为每个应用程序都使用相同的主题集,并且需要单独访问主题。这个要求的原因是一个很长的故事,但主要是由于系统的架构。如果我可以为特定代理创建一组主题,并且每个应用程序实例都指向其自己的专用代理,那么这就足够了,但我认为这在 Kafka 中是不可能的?更简单地说,两个进程如何并行写入两个主题,每个主题都具有相同的名称?
  • 主题名称是硬编码的吗?在我处理过的几乎所有 Kafka 应用程序中,主题都是可配置的,并且应用程序负责确保主题在启动时被创建和配置。

标签: apache-kafka


【解决方案1】:

如果您使用 Docker 之类的东西来托管您的代理,您可能会更轻松地进行一般开发和测试,因为它可以更轻松地启动和隔离实例。

但是,如果您愿意,您可以在一台机器上运行多个独立的 Kafka 代理实例。正如您所说,您需要分配一个单独的侦听器端口,就像您所做的那样。确保他们也写入不同的log.dirs 路径。如果您要共享 Zookeeper,那么我认为您还需要为每个实例指定 unique chroot

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 2019-08-20
    • 2019-11-30
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    相关资源
    最近更新 更多