docker - 在同一台机器的两个docker conatiners中创建kafka代理和zookeeper的利弊是什么

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

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

1)在同一台物理计算机上保留1个kafka代理和1个zookeeper
我在网上搜索后发现,由于kafka经纪人和Zookeeper都使用相同的RAM,因此会出现延迟问题

2)使用docker并在计算机中分别为Zookeeper和Broker创建两个Continants,并限制Zookeeper容器的RAM,以便Kafka Broker占用更多RAM并减少延迟

我想知道我的两个用例的更多利弊

保持动物园管理员和经纪人使用容器在同一台机器上是一种好习惯吗

提前致谢

最佳答案

kafka的一个非常独特的功能是,它利用对磁盘的顺序读取/写入来实现其高水平的性能。让另一个应用程序主动使用相同的物理硬盘驱动器(如zookeeper会这样做,因为它维护更改日志),将会降低您可以从kafka中获得的最大吞吐量。

但是,这并不排除共享服务器的全部,并且正如已经说过的那样,就使用的资源而言,ZK总体上是非常轻便的服务。如果您需要高水平的性能(每个代理每秒每秒数百兆的数据),它仅排除共享驱动器。

您可能还想考虑,您将在这里使失败原因相互关联,如果可以避免,通常这不是最佳的选择。如果您没有选择为ZK使用/租用3台非常小的计算机,但是正在使用给定的服务器库存,则这是可以接受的折衷方案。

关于docker - 在同一台机器的两个docker conatiners中创建kafka代理和zookeeper的利弊是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36755477/

相关文章:

java - 文件字符集更改为 docker 容器中的二进制文件

java - 如何将队列中的数据写入MongoDB

c# - net::ERR_NAME_NOT_RESOLVED docker

apache-kafka - 在模式注册表中,消费者的模式可能与生产者的模式不同,这实际上意味着什么

bash - 如何检查Docker容器中是否设置了环境变量?

apache-zookeeper - Zookeeper 忽略 JVMFLAGS?

c - Zookeeper librdkafka 示例

java - Zookeeper 不适用于 32 位 Windows 上安装的 JRE

java - Docker Spring Boot 未运行

mysql - 如何将 my.cnf 文件的权限设置为 Docker 中的只读(而不是客户端的操作系统级别)?