越来越多的公司选择在Kubernetes上运行Apache Kafka,这是有充分理由的。Kubernetes提供了一个高度可扩展、有弹性的编排平台,简化了Kafka集群的部署和管理,使DevOps能够花更少的时间担心基础设施,花更多的时间构建应用程序和服务。专家预计,随着越来越多的组织使用Kubernetes来管理其数据基础设施,这一趋势将加速。

如果你的公司刚刚开始在Kubernetes环境中使用Kafka,你将有几个决定要做,首先是自己部署Kafka还是购买托管解决方案。

正确的答案将取决于具体环境和管理所在行业的法规。在本文中,我们将介绍各种因素,以便帮助组织做出明智的决定。

自管理Kafks的成本和收益

自管理或“自己动手”(DIY)Kafka有一些优势。你将可以更好地控制部署,包括是否将其扩展到多个云。它更容易与内部安全和运维策略保持一致,满足特定数据驻留问题,并更好地控制成本。

在这种情况下,内部员工必须执行以下任务:

——设置基础设施和存储。

——安装和配置Kafka软件。

——设置Apache Zookeeper, 如有必要(Zookeeper现在已被弃用,从Kafka v.4.0开始将不再受支持。在那之后,Kafka将使用KRaft,即Kafka-Raft共识协议)。

——监控集群并对其进行故障排除。

——安全。

——水平和垂直缩放。

——复制(用于灾难恢复和可用性)。

托管Kafka更适合吗?

“托管”Kafka是一种服务,你可以从一些超规模公司(如AWS)和其他第三方供应商那里购买。虽然服务的初始成本可能会让你大吃一惊,但可以在主机和工资上省钱。

也就是说,一些托管解决方案可能仍然需要你的团队具备一定程度的Kafka专业知识,尤其是在设置阶段。

使用托管Kafka,你将失去控制数据驻留的能力。更重要的是,如果你不确定需要多少计算或存储空间,你可能会面临一些令人惊讶的托管成本。

托管解决方案中包含哪些内容?

虽然每个Kafka供应商的确切产品有所不同,但托管解决方案包括运行Kafka集群所需的云基础设施的设置,包括虚拟机、网络、存储、备份和安全。

大多数托管解决方案(无论是否包括托管)都提供以下功能:

——安装和管理Kafka软件,包括升级、补丁和安全修复。

——监控Kafka集群的内存或存储空间不足等问题,并在出现问题时提供警报和通知。这些解决方案通常还包括用于排除故障和解决上述问题的工具。

——通过跨多个节点和数据中心复制数据,确保存储在Kafka集群中的数据持久可用。

——根据解决方案执行各种附加功能。例如,它们可能包括易于安装附加功能的功能,如模式管理、连接器和ksqlDB,这些功能使你能够轻松地与其他数据系统集成、转换数据和构建实时应用程序。

决策过程:从哪里开始

安装、配置和维护Kafka不仅仅是打开手册并投入使用的问题。每个组织都是不同的。Kafka实现会有所不同,这取决于云提供商、部署的规模、运行的应用程序和公司的规模等因素。因此,需要一个具备在你独特的环境中执行任务所需的特定技能的团队。

在一些公司中,可能有多个部门参与,一个负责安装集群和设置基础设施,另一个负责“管理”Kafka,即设置主题、配置生产者和使用者,并将其全部连接到应用程序的其他部分。即使你有一些Kafka经验的人,他们也可能不具备在云或Kubernetes环境中设置它所需的知识。因此,你可能不得不雇佣这种技能,或者培训现有员工。他们可能需要一段时间才能跟上速度。这种间接成本可能不是微不足道的,尤其是如果你为一家较小的公司工作。

值得注意的是,用Kafca的技术人员有很多“类型”。在LinkedIn上快速搜索,有这样的职位:Kafka现场可靠性工程师(SRE)、员工软件工程师(Kafka)、Kafka管理员、Kafka开发者、Kafka工程师、Kafka支持工程师、使用Kafka的Java开发人员。

根据位置、资历和具体的工作职责,雇佣员工在Kafka上工作的成本可能会有很大差异。

在某些情况下,你可能希望将工作分为两部分(基础设施职责和开发职责)。在其他情况下,你可能想雇佣那些除了Kafka部署之外还有责任的人。无论哪种方式,这都是与DIY相关的主要成本之一。

如果选择托管的Kafka解决方案,团队就不需要那么多Kafka专业知识,因为提供商将负责所涉及的大部分运维任务。

但是,如前所述,某些解决方案可能仍然需要执行大量的设置任务。仍然需要员工来构建基于Kafka的应用程序和/或将它们集成到应用程序生态系统中。

考虑云提供商

根据正在考虑的Kafka解决方案,你需要考虑管理。虽然这在DIY场景中是显而易见的,但使用托管的Kafka仍然需要做出决定。一些提供商,如Confluent和Amazon Managed Streaming for Apache Kafka(MSK),将云托管作为其解决方案的一部分。其他公司,如Aiven和Cisco Calisti,不是托管解决方案。还有一些,比如Instacluster,让你可以选择在他们的云环境中运行Kafka部署,也可以使用自己的部署。因此,在做出选择时,需要考虑云计算的成本和便利性。

开源:一个混合选项

如果想使用托管Kafka解决方案中的一些可用功能,但仍然希望保留对数据、云计算和存储的控制,请考虑使用开源解决方案。

一个例子是Koperator,一个Kubernetes operator,它为部署到Kubernete的Kafka集群自动化配置、管理、自动缩放和运维。

Koperator提供安全的、可用于生产的Kafka集群,并通过自定义资源提供细粒度配置以及高级主题和用户管理。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s