我们正在使用Dockerized Kafka环境。我想知道在这种场景中部署Kafka-Connectors和Kafka-streams应用程序的最佳实践。当前,我们将每个连接器和流作为Springboot应用程序部署,并以SystemCtl微服务开始。我在停靠每个Kafka连接器和流中没有发现重要的优势。请给我有关相同的见解
对我来说,码头码与非骗子的事情归结为"您的运营团队或组织支持什么?"
dockerized应用程序具有优势,因为它们都看起来/行动相同:您 docker run
java应用程序与 docker run
相同的方式与 CC_2相同。就像使用SystemD运行程序的方法一样,通常没有一个常见的抽象层"我该如何运行此东西?"
dockerized应用程序还可以抽象一些小型操作详细信息,例如端口管理 - IE确保所有应用程序的management.port
S不会相互冲突。Docker容器中的应用程序将作为容器内的一个端口运行,您可以将该端口作为外部其他数字作为其他端口。(随机,或者选择一个(。
根据基础架构支持,普通的Docker调度程序可以在该服务达到某种容量时自动尺度服务。但是,在Kafka流应用程序中,并发受到KAFKA主题中的分区数量的限制,因此扩展将意味着您的消费者组中的某些消费者会闲置(如果分区的数量不超过少量(。
(。,但它也增加了并发症:如果您将RocksDB用作本地商店,则可能希望将其持续到外面(可置换,也许只读!(容器。因此,您需要弄清楚如何在操作/组织上进行音量持久性。使用SystemD的普通罐子...好吧,您始终有硬盘驱动器,如果服务器崩溃会重新启动(物理机器(,或者希望它会通过某些实例块存储物进行恢复。
我的意思是说:KStream应用程序不是无状态的,自动缩放的Web应用程序将始终为您提供更多功能,并为HTTP流量提供服务。在组织或运营级别上做出这些决定的人可能并不完全知道这一点。再说一次,嘿,如果每个人都写码头工具,那么组织/运营团队" Just"只"有一些Docker调度程序集群(例如Kubernetes群集或Amazon ECS群集(来管理,并且不必直接管理VMS。<<<<<<<<<<
dockerizing kubernetes聚类提供许多好处,例如自动愈合,自动水平缩放。
自动愈合:如果春季应用程序崩溃,kubernetes将自动运行其他实例,并确保所需的容器数量始终启动。
自动水平缩放:如果您收到消息爆发,则可以使用 hpa 调整弹簧应用程序以自动缩放或向下自动缩放, hpa 也可以使用自定义指标。