【问题标题】:what are the pros and cons of creating kafka broker and zookeeper in two docker conatiners in same machine在同一台机器上的两个 docker conatiners 中创建 kafka broker 和 zookeeper 的优缺点是什么
【发布时间】:2016-08-13 19:42:21
【问题描述】:

我正在创建一个包含 3 个 kafka 代理和 3 个 zookeeper 的 kafka 数据管道,因此我需要使用 6 台机器来部署 3 个代理和 3 个 zookeeper。 有两种方法可以减少使用的机器数量

1) 将 1 个 kafka broker 和 1 个 zookeeper 保持在同一台物理机中 我在网上搜索并在 quora 中发现会存在延迟问题,因为 kafka broker 和 zookeeper 都使用相同的 RAM

2) 使用 docker 并在一台机器中为 zookeeper 和 broker 创建两个 continer,并限制 zookeeper 容器的 RAM,以便 kafka broker 占用更多 RAM 并减少延迟

我想了解我的两个用例的更多优缺点

使用容器将 zookeeper 和 broker 保持在同一台机器上是否是一种好习惯

提前致谢

【问题讨论】:

    标签: docker apache-kafka apache-zookeeper kafka-consumer-api kafka-producer-api


    【解决方案1】:

    如果您仅将 Zookeeper 用于 Kafka,并且没有其他进程/应用程序正在使用该 Zookeeper 集群,那么 Zookeeper 将使用更少的内存。 Kafka 也不会在内存中保存大量数据。因此,在同一台机器上运行一个 Kafka 和一个 Zookeeper 节点对您来说是安全的。您可以通过控制其最大 JVM 堆空间来限制 Zookeeper 使用更少的内存。 如果操作系统缓存的可用内存较少,则 Kafka 性能可能会产生影响。由于 Zookeeper 不会使用太多内存,所以你可以忽略它。

    【讨论】:

      【解决方案2】:

      kafka 一个非常显着的特点是它利用磁盘上的顺序读/写来实现其高性能。让另一个应用程序主动使用相同的物理硬盘驱动器(就像 zookeeper 一样,因为它维护一个更改日志),将降低您可以从 kafka 获得的最大吞吐量。

      不过,这并不排除共享服务器,而且正如人们所说,就所使用的资源而言,ZK 是一项总体上非常轻量级的服务。它只是不包括共享驱动器如果您需要高水平的性能(每个代理每秒数百兆的数据)。

      您可能还想考虑一下,您会在此处将故障原因相互化,如果可以避免,这通常不是最佳做法。如果您无法选择为 ZK 使用/租用 3 台非常小的机器,但正在使用给定的服务器库存,那么这是一个可以接受的折衷方案。

      【讨论】:

        猜你喜欢
        • 2019-09-11
        • 2017-11-27
        • 2021-07-29
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多