在同一台机器上的两个docker客人中创build卡夫卡经纪人和动物园pipe理员有什么优点和缺点?

我正在创build一个包含3个卡夫卡经纪人和3个动物园pipe理员的卡夫卡数据pipe道,所以我需要使用6台机器部署3个经纪人和3个动物园pipe理员。 有两种方法可以减less所用机器的数量

1)为了保持1卡夫卡经纪人和1动物园pipe理员在同一台物理机器,我在网上search,find了会有延迟问题,因为卡夫卡经纪人和动物园pipe理员都使用相同的内存

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

我想知道我的两个用例的更多优点和缺点

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

提前致谢

kafka的一个非常明显的特点是它利用磁盘上的顺序读/写来实现其高性能。 有另一个应用程序积极使用相同的物理硬盘驱动器(如zookeeper会做,因为它保持更新日志),将降低您可以从卡夫卡得到的最大吞吐量。

尽pipe如此,这并不排除共享一台服务器,而且正如前面所说,ZK在使用的资源方面是一个非常轻便的服务。 如果您需要高水平的性能 (每个经纪商每秒钟有数百兆数据),则不包括共享驱动器。

你也可能想要考虑一下,你将在这里互相失败的原因,如果你能避免,通常不是最好的事情。 如果您没有select使用/租用ZK的3台非常小的机器,而是正在处理给定的服务器库存,那么这可能是一个可接受的折衷。

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