我正在创建一个包含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/