0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

上云还是下云:章文嵩博士解读真正的云原生Kafka十倍降本方案!

jf_WZTOguxH 来源:AI前线 2023-12-08 15:52 次阅读

近日,AutoMQ 团队发布了基于云的开源云原生 Kafka——AutoMQ for Kafka,所有的代码采用 Apache 2.0 开源许可。AutoMQ 充分挖掘了云原生的技术红利和成本优势,再结合 Serverless 弹性技术,实现了 Apache Kafka 十倍的降本增效。本文从技术架构的角度,来揭秘 AutoMQ 为 Kafka 量身打造的云原生十倍降本方案。

今天,我们看到云计算带来了两个趋势,一个是“上云的趋势”,另一个是“下云的趋势”,相信大家都关注到了最近 X(原 Twitter) 全力“下云”,成本降低了 60%。“上云”亦或是“下云”,到底谁在节约成本,谁在增加成本,这其中的差异可能三言两语很难讲清楚,但就 AutoMQ 核心团队在阿里云多年的工作经历来看,头部云厂商一直是以“让算力普惠、释放技术红利”为使命的,那到底为什么“上云”会给企业一种更贵的感受呢?

AutoMQ 团队认为这其中最主要的差异在于云原生(Cloud Native)和云托管(Cloud Hosted)的差异。以云托管的姿势上云,最终会发现云上成本比自建机房还高,将传统的软件架构 Rehost 到云上,其本质是将 IDC 架构平移上云,是无法发挥出云基础设施的规模化优势,也享受不到成本红利。只有以云原生的姿势上云,充分利用云的弹性能力,服务化的产品和自动化的 API,才能做出云上最优的成本解决方案。

云原生的能力

在引出 AutoMQ 为 Kafka 打造的云原生架构之前,我们先来看一下云的基础设施已经进化到什么程度了,有哪些能力和优势是跟成本息息相关的,而且是传统的 IDC 架构无法充分利用起来的。

服务化的产品

云计算技术迭代的路线可以总结为:云先用软件定义硬件,再把软件变成了服务。所以,我们今天看到网络环境变成了 VPC,存储介质变成了云盘,物理主机变成了虚拟的云主机 ECS。

这些云提供的基础产品在今天已经蜕变成了服务,服务一定是具备生产可用的 SLA,比如阿里云单个 ECS 实例的可用性达 99.975%,这意味着一个单节点的微服务也可以是生产可用的,这在 IDC 环境是无法想象的事情。再例如云盘 EBS,相对于物理存储介质,EBS 天然具备 3 副本,提供 5 个 9 ~ 9 个 9 的数据可靠性,同时具备可用区内和区域内的容灾能力。

所以,我们今天做云原生架构,第一个共识就是需要意识到,基于云的架构设计已经从依赖软硬件,变为依赖云服务了,真正的云原生架构一定要充分发挥出云产品的服务化能力。

弹性

弹性可以说是云最大的优势,云积累了大规模的算力,给了单个租户无限计算资源的视图,云原生的架构完全可以假设,在云上一切资源都是无限的,都是唾手可得的。

对于 IDC 环境,因为机器资源至少月级的交付时间,传统的软件架构并不会面向弹性能力进行设计,一般都会假设保有一定的机器资源来提供软件服务。这也意味着,当传统的软件 Rehost 到云上后,也是以预留资源的形式使用云资源,一方面存在资源的极大浪费,另一方面也无法享受到云的弹性能力。

不难发现,弹性能力的来源并不是资源交付时间变快了,完全是因为云厂商通过预留大量资源实现了租户级无限的弹性的能力,所以说“世上本没有真正的弹性,都是云厂商在负重前行”。正因为这样,云厂商各个地域都有大量的闲置资源,云厂商为了尽可能将闲置的资源转换为营收,推出了 Spot 计算实例,Spot 类型的实例相较于正价的 ECS 实例,至多有 90% 的成本节约。如何充分发挥出 Spot 实例的成本优势,也是云原生架构需要重点考虑的地方。

API 定义一切

云计算所有的能力都是通过 API 来进行描述的,比如用 API 创建一台 ECS,用 API 重新挂载一块云盘,用 API 去调整云服务的 Quota 和 Limitation。

正因为此,云原生的软件有机会利用 API 去编排资源,去实现 Auto Scaling,实现容灾的切换。通过利用云的 API 完成软件核心的能力建设,甚至容灾能力的建设,这也是传统的软件架构无法办到的事情。

云服务依赖选型

云厂商提供了数百种的全托管云服务,但这些云服务成熟度完全不一样,不少小的云服务研发团队仅仅有个位数的人力投入。所以,我们在进行云原生架构设计时,需要谨慎进行云服务依赖选型,我们总结了两个原则:

选择云厂商投入最大、规模最大的云服务,这类服务成熟度往往是最高的,不能单纯看云厂商承诺的 SLA。

选择标准化的云服务以避免厂商锁定,我们设计的云原生架构必须是所有云的原生架构,而不能单纯是某朵云的原生架构。

在这两个原则的约束下的云服务,也是云厂商真正释放云原生能力的出口,它们往往有以下几个特征:

真正的按量计费,以最小的资源粒度按使用量进行计费,比如 Lambda 按调用次数计费,没有任何保有成本。将实例规格包装成按时间进行计费不是真正的按量计费。

无限的容量,给单个租户的视图一定是无限的容量,无限的存储和计算资源,业务再也不需要进行容量评估了。

低成本,真正地通过技术而不是通过亏损,通过规模去优化成本,比如对象存储 S3 是业界最便宜的存储产品之一。

选择性地依赖云服务,可以让我们的云原生架构更加灵活,充分享受到云的红利,多云原生的灵活度,更高的稳定性保障。

AutoMQ 云原生架构

AutoMQ 将消息和流存储最流行的两款开源软件 Kafka 和 RocketMQ 基于云重新设计,将这两款面向 IDC 进行架构的软件带向云原生领域。Kafka 和 RocketMQ 的核心分别是流存储和消息存储,对于存储类型的软件,要完全把云的能力用起来并不是一件容易的事情。

AutoMQ 在进行 Kafka 和 RocketMQ 重新设计之初,就定义了几个设计目标:

尽可能发挥出云的弹性能力,将弹性作为核心能力去设计,根据负载变化系统能进行弹性伸缩。

尽可能使用 Spot 实例,Spot 实例有随时被中断的风险,能否实现存储软件的“无状态”是能否利用 Spot 实例的关键。

尽可能将数据全放在对象存储上,S3 极具成本优势,存储系统降本的关键一定在于能否将 S3 的能力发挥到极致。

尽可能利用 EBS 的低延时和高性价比,解决业务对数据写入的低延时需求,通过 EBS 和 S3 组合出高可用能力即可提供低成本、高可用和高可靠的存储服务。

结合云已经有的能力,以及我们对流存储和消息存储软件的理解,我们设计了一套真正的云原生架构,同时满足了以上几个设计目标。

7a877728-9592-11ee-8b88-92fbcf53809c.png

该架构主要包含三个核心设计思想。

一、存算分离至服务

存算分离拥有状态卸载、弹性等好处,这已经是行业共识,但如何实现存算分离没有统一的方案,我们今天认为存算分离的核心是将存储分离至服务而不是软件。如果,我们为了存算分离将存算一体架构的存储部分,分离出一套分布式存储软件,这会带来额外的部署、运维以及治理的复杂度。

RocketMQ 早期的架构是完全零依赖,正因为架构极简,让它在生产系统的实际可用性非常高,今天存算分离的优势已经被众多开发者所喜爱,但是任何一个软件的可用性是由软件本身和后台运维的工程师组成,如果这个软件还依赖其他软件,那么它就类似一个串联电路,任何一个环节出问题,就会影响最终用户,尤其是依赖一个无人运维的存储系统,更是会让整个系统的复杂度和可用性失控。而云厂商的对象存储、块存储等大规模使用的系统背后有全世界最优秀的工程师在运维,理论上这样的系统一定是可用性最高的。

另外一点就是存储能否做到完全卸载,有些观点认为多级存储也是存算分离,实际上业界大部分多级存储方案都有很重的一级存储,一级存储包含了大量的存储状态。如果无法做到存储的完全分离,也就无法将存算分离的弹性优势发挥到极致。

我们对存算分离理念的实践都体现在 S3 Stream 这一基于 S3 的流存储库之上,S3 Stream 组合 EBS 和 S3 的能力,实现了低成本、高可用、高可靠以及无限容量的流存储能力,更多的技术细节详见我们的文档(https://docs.automq.com/)。

二、共享存储优于 Shared Nothing 架构

Shared Storage 和 Shared Nothing 架构各有优劣,但今天在云上,存储已经变得弹性,容量近乎于“无限”,我们认为共享存储是一个更优的架构。

通过将存储单元进行共享,状态可以快速转移,分区迁移、节点扩缩容将变得非常简单。共享存储也是云原生架构能否充分利用 Spot 实例的关键。

三、可靠性与可用性实现

回到 Kafka 和 RocketMQ 的核心能力上,这两款软件都自带多副本机制,目前分布式架构不管是 Raft 共识算法还是其他变种的副本机制,都是通过副本的冗余,一方面实现数据的高可靠,另一方面多余的副本可以快速提供故障转移的能力,从而实现高可用。

但在云上,云存储 EBS 已经自带 3 副本了,如果上层应用继续采用复制的方案,将带来 9 副本的数据冗余,以及多倍的存储和网络成本。所以,在 Kafka 和 RocketMQ 层面没有必要自己实现 3 副本。另外,EBS 是第二大存储系统,仅次于第一大存储系统 S3,云厂商对 EBS 进行深入的软硬一体优化,把 EBS 客户端卸载到神龙 CIPU(智能网卡)通过硬件来做,EBS 客户端跟 EBS 服务器的通讯针对数据中心内低延时低丢包率的特点实现自定义的传输协议而不是用 TCP,这些软硬一体优化带来的效果远远好于自己搭建的 3 副本高可靠系统。还有,在云上使用 EBS 来存储不消耗网络带宽,自建的 3 副本复制会大量消耗网络带宽。

鉴于此,AutoMQ 提出了服务的可靠性与可用性实现方案,依赖 EBS 的可靠性,可以采用单个写入计算节点,把数据先写入到存储在 EBS 裸设备的 WAL 中,若当前写入计算节点故障了,其他计算节点接管这个 EBS,从 WAL 中恢复数据。通过基于 EBS 的 Detach/Attach API 以及 NVMe 相关的 API 实现一次只有一个计算节点可以写入 EBS,确保 EBS 数据写入的一致性。

架构优势

AutoMQ 云原生架构为 Apache Kafka 带来了单副本高可用,秒级分区迁移,持续数据重平衡,分钟级平滑扩缩容等技术架构优势(更多细节参看官方文档)。

7aaa2836-9592-11ee-8b88-92fbcf53809c.png

十倍降本增效解读

AutoMQ 团队将云原生架构的技术优势,兑现为成本优势和运维效率,为 Apache Kafka 带来的十倍的降本增效。

7ab79386-9592-11ee-8b88-92fbcf53809c.png

运维效率提升

Kafka 运维有两个痛点,给运维人员带来了极大的运维成本:

分区迁移,Kafka 迁移分区需要进行数据复制,一方面额外的复制流量对生产环境会产生稳定性影响,另一方面复制耗时一般比较长,导致迁移分区的操作需要长时间进行观察,以确保系统达到终态。

扩容,当 Kafka 集群流量不足时,运维人员需要对集群进行扩容,但扩容后的节点无法承担任何流量,需要从其他节点移动分区过来,也就是说扩容需要移动大量的分区,才能达到流量的重平衡。扩容操作需要提前扩容,如果在业务高峰时进行扩容是无法缓解生产压力,反而会进一步将生产集群推向高风险状态。

AutoMQ 的云原生架构得益于将存储状态卸载到共享存储上,移动一个 TB 级的分区能将时间从 3 小时缩减为 1.5 秒,扩容后流量重平衡时间从 43 小时缩减为 1 分钟,成功地将 Kafka 高风险的常规运维动作,变成了可自动化,基本无感的低风险运维操作,大幅度降低了运维人员的工作负担。

计算和存储降本

成本方面,我们提供了一个 80 MB/s ~ 1 GB/s 的弹性工作负载用于压测真实的云账单,在该负载下,AutoMQ 提供的云原生 Kafka 版本每月仅需 5632 元,相比于自建 Apache Kafka 承担该负载需要 62,431 元,AutoMQ 的云原生架构成功降本 11.09 倍。AutoMQ 获取成本优势的核心主要有几点:

充分利用对象存储和 EBS 的低成本特性,将存储成本降低了 90%。

通过无状态的架构设计,内置 Auto Balancing 组件,实现自动扩缩容能力,再充分利用 Spot 实例,能做到计算成本降低 11.09 倍。

近期,我们发布了完整的成本分析报告,详情见 AutoMQ 的官方文档。

总结

AutoMQ 团队通过对 Apache Kafka 进行全新的云原生架构设计,成功做到了 10 倍的降本增效,充分验证了真正的云原生架构是能充分发挥云的规模化优势的,能做到超出预期的、十倍的降本效果,能大幅度降低运维复杂度,真正做到共享云的一切优势。

云计算,开辟了一个新的时代,以云原生的姿势上云,是不会有下云的忧虑,我们坚信,所有的基础软件,都值得基于云重新设计,以发挥出云全部的优势。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 架构
    +关注

    关注

    1

    文章

    507

    浏览量

    25434
  • 云盘
    +关注

    关注

    0

    文章

    36

    浏览量

    9752
  • kafka
    +关注

    关注

    0

    文章

    50

    浏览量

    5202

原文标题:上云还是下云:章文嵩博士解读真正的云原生 Kafka 十倍降本方案!

文章出处:【微信号:AI前线,微信公众号:AI前线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    容器服务引擎是什么意思?

    容器服务引擎是什么意思?容器服务引擎是一种基于云原生架构的容器编排工具,能够帮助用户快速构建、部署和管理容器化应用。它支持容器化应用的全生命周期管理,包括部署、管理和扩展,旨在简化云原生
    的头像 发表于 10-19 17:08 131次阅读

    容器服务引擎是什么?如何使用

    容器服务引擎(CloudContainerEngine,简称CCE),是一个企业级的Kubernetes集群托管服务,提供高度可扩展、高性能的云原生应用部署和管理方案。容器服务引擎
    的头像 发表于 09-30 10:17 148次阅读

    云原生和非云原生哪个好?六大区别详细对比

    云原生和非云原生各有优劣,具体选择取决于应用场景。云原生利用计算的优势,通过微服务、容器化和自动化运维等技术,提高了应用的可扩展性、更新速度和成本效益。非
    的头像 发表于 09-13 09:53 309次阅读

    KubeCon China 2024全球大会在香港举行,京东受邀参加探讨云原生、开源及 AI

    和数字化大潮一样,在AI化的革命,云端也在全面拥抱AI,并在方方面面变得更安全、更高效,让全球各行各业受益。2024年8月21日,由云原生计算基金会(CNCF)和 Linux 基金会联合主办
    的头像 发表于 08-23 13:42 287次阅读

    京东云原生安全产品重磅发布

    “安全产品那么多,我怎么知道防住了?”“大家都说自己是云原生的,我看都是换汤不换药”在与客户沟通云原生安全方案的时候,经常会遇到这样的吐槽。越来越的客户已经开始了云原生化的技术架构改造
    的头像 发表于 07-26 10:36 406次阅读
    京东<b class='flag-5'>云原生</b>安全产品重磅发布

    从积木式到装配式云原生安全

    云原生安全风险 随着云原生架构的快速发展,核心能力逐渐稳定,安全问题日趋紧急。在云原生安全领域不但有新技术带来的新风险,传统IT基础设施的安全威胁也依然存在。要想做好
    的头像 发表于 07-26 10:35 256次阅读
    从积木式到装配式<b class='flag-5'>云原生</b>安全

    基于DPU与SmartNic的云原生SDN解决方案

    随着计算,大数据和人工智能等技术的蓬勃发展,数据中心面临着前所未有的数据洪流和计算压力,这对SDN提出了更高的性能和效率要求。自云原生概念被提出以来,Kubernetes为云原生应用的落地提供了一
    的头像 发表于 07-22 11:44 615次阅读
    基于DPU与SmartNic的<b class='flag-5'>云原生</b>SDN解决<b class='flag-5'>方案</b>

    基于DPU的云原生裸金属服务快速部署及存储解决方案

    云原生技术迅速发展的当下,容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择,但裸金属服务器依然有其独特的价值和应用场景,是云原生架构中不可或缺的一部分。 裸金属服务器是一种高级
    的头像 发表于 06-27 10:41 2344次阅读
    基于DPU的<b class='flag-5'>云原生</b>裸金属服务快速部署及存储解决<b class='flag-5'>方案</b>

    加速企业降本增效,提升性能首选耀 X 实例

    ,在成本和性能方面全面升级,以其卓越的性价比,成为企业计算的明智之选,助力企业在降本增效的同时,实现快速成长。 柔性算力灵活配置算力资源 计算的核心在于性能与成本的平衡。耀 X
    的头像 发表于 05-22 19:59 871次阅读
    加速企业<b class='flag-5'>云</b><b class='flag-5'>上</b><b class='flag-5'>降本</b>增效,提升性能首选<b class='flag-5'>云</b>耀 X 实例

    华为开发者桌面全新发布 CodeArts IDE for Python,极致优雅云原生开发体验

    的喜爱。 继 CodeArts IDE for Java 和 C/C++,华为发布 CodeArts IDE for Python,这是一款面向云原生开发,提供智
    的头像 发表于 05-10 00:27 1185次阅读
    华为<b class='flag-5'>云</b>开发者桌面全新发布 CodeArts IDE for Python,极致优雅<b class='flag-5'>云原生</b>开发体验

    云原生转型中从理念到实践的探索与挑战

    以“全面智能化,跃升数智生产力”为主题的华为第21届全球分析师大会近日在深圳举行。在本次大会的“5.5G Core,智能化点亮世界”核心网分论坛,广东移动网络运维总监王喆发表了“云原生
    的头像 发表于 04-23 11:45 416次阅读

    ?!?!这难倒了孙悟空!

    还是”,这的确是个问题!
    的头像 发表于 03-14 02:42 1167次阅读
    <b class='flag-5'>上</b><b class='flag-5'>云</b>?!<b class='flag-5'>下</b><b class='flag-5'>云</b>?!这难倒了孙悟空!

    云原生是大模型“降本增效”的解药吗?

    云原生AI正当时
    的头像 发表于 02-20 09:31 345次阅读

    米哈游大数据云原生实践

    近年来,容器、微服务、Kubernetes 等各项云原生技术的日渐成熟,越来越多的公司开始选择拥抱云原生,并开始将 AI、大数据等类型的企业应用部署运行在云原生之上。以 Spark 为例,在
    的头像 发表于 01-09 10:41 553次阅读
    米哈游大数据<b class='flag-5'>云原生</b>实践

    电信云原生距离3.0时代还有多远——访华为电信产品总监高昱

    Foundation,OpenInfra基金会)、未来技术发展方向有关。本次峰会,华为与业内分享了对电信云原生的思考。 众所周知, 电信运营商是OpenStack应用最多、最深入的领域之一 。在全球,有诸多
    的头像 发表于 12-16 16:15 899次阅读
    电信<b class='flag-5'>云原生</b>距离3.0时代还有多远——访华为电信<b class='flag-5'>云</b>产品总监高昱