您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

字节跳动的多云云原生实践之路

时间:2023-08-17 10:27:18  来源:InfoQ  作者:

作者 | 火山引擎云原生平台负责人 沈健

2022 年,火山引擎联合咨询机构 IDC 对超过 4500 个云消耗大于 100 万的企业进行调研,发现使用多云架构的企业占比达到 88%,达到历史新高。另据麦肯锡的报告,到 2025 年,依然会有 42% 的企业保留有私有云。在负载分布层面,边缘云占比在逐步上升,根据 IDC 报告,25 年超过 30% 的数据需要边缘实时处理。

造成这些现象背后的原因是复杂的,既有业务形态和成本管控的原因,也有数据安全和监管要求的考虑。对于企业来说,随着云上迁移的业务变多、复杂度变高,分布式云也成为各类组织必须迎接的挑战。如何做好多云策略,如何平衡好负载,如何保障安全,只有构建好适合自身的分布式云架构,才能真正做到“用好云”。

在 7 月举办的 ArchSummit 全球架构师峰会上,火山引擎云原生平台负责人沈健围绕“字节跳动的多云实践之路”为主题进行了分享,介绍了字节跳动实行多云云原生战略的原因、过程和最终成果。

业务需求驱动多云架构建设

云服务经过十几年的演进,如今在企业的应用已经发展出了多云、混合云、分布式云、边缘云、行业云等多种形态。面对业界层出不穷的新概念,很多人会困扰:它们的区别是什么?

在云服务商眼中,按照中国信通院发布的定义,所谓分布式云,是一种将云服务按需部署到不同地理位置,提供统一管理能力的云计算模式。它摒弃了公有云、私有云、混合云、多云等分类,首次将地理位置作为考量因素,为用户提供不同位置的云资源统一管理平面,能够增强混合多云一致性管理、拓展边缘计算服务能力、实现云服务统一托管治理。

但对于真正意义上需要用云的企业,不同云形态的含义则更加场景化:业务本身需要什么样的云,开发团队有能力用好什么形态的云,企业运维团队的云管理能力成熟度发展到了什么阶段……虽然大家都在谈云,但关注点是全然不同的。

字节跳动在发展过程中,也慢慢发展成了多云的状态:无论是中心云、私有云、边缘云,它们都是多云的一种形态,分布式云则是多云之上更高层次的一个形态。这种变化是和业务发展密切相关的:

2017-2018 年,抖音经历快速发展,DAU 增长破亿。在这种场景下,由于单朵公有云、私有云的资源供给都存在时间周期,技术团队很难预估全年具体需要多少资源量,灵活从其他云厂商补充云资源成了一个必要的解决方案。

视频直播业务盛行期间,为了更好地保障直播效果,技术团队需要采购对直播网络较友好的云资源——它们往往是地域性的、边缘性的,在业务驱动下,区域云、边缘云也进入了字节跳动的云计算资源池。

早期业务出海期间,建设自主数据中心会给新业务带来巨大的成本压力,再加上各国不同的数据安全合规要求,在拓展海外业务的时候,我们也基本上都使用了海外的云资源。

随着业务持续增长,出于成本、安全、信创的考虑,避免厂商绑定的重要性也日益凸显。长期使用单一供应商会存在云产品涨价、服务质量下降、技术架构不够灵活等风险,考虑到没有一朵云是 100% 无故障的,技术团队也更愿意选用更多的云供应商提供服务。

由于上述问题的存在,字节跳动的技术团队坚定地选择了多云作为基础架构发展的主要路径。当然,这也带来了一些实践层面的挑战:

部署 / 运维复杂度:应用 / 服务多云部署方式,容器、主机、云上服务等不同类型的部署方式都额外增加了部署和运维的难度

打通 / 互操作性:网络打通、身份 / 权限打通、运维打通、数据访问打通、流量管理

数据管理 / 合规难度:数据离散分布之后数据资产的管理难度加大,数据合规挑战加大、数据泄漏风险和追踪难度加大

成本控制复杂度:业务、成本、资产的管理难度

字节跳动的多云实践

在业务发展驱动下,字节跳动的多云实践在不同时期有不同的侧重点,驱动着云原生架构的逐步发展:

2016 年,今日头条等业务快速发展,字节跳动基础架构团队启动 TCE(Toutiao Cloud Engine)平台建设,用一个统一的云平台管理之前业务中台各自维护的资源池,解决了应用的快速部署问题和管理问题。

2017 年,随着外部竞争态势的复杂化,快速迭代、快速推出新功能变得迫切,我们开始引入微服务架构,通过微服务的灵活性和服务网格的统一治理能力,提供多样性适配,让每个技术人员都能快速投入到业务发展中去。

2019 年,抖音、今日头条等业务达到较大规模,频繁的营销活动要求底层有海量云资源供应,在这一阶段,基础架构大力推进了“推广搜”的云原生化,把物理机服务与在线服务进行全面融合,实现统一容器化调度。

2020 年,为进一步控制资源使用成本,技术团队实现了常态化在离线混部,在面对高峰流量时能够快速进行资源出让,保障业务稳定性。同时,数据库、缓存等存储系统也开始进行云原生化改造,加速了更大范围资源池的统管和融合。

从上述演进不难看出,云原生架构这些年要解决的难题之一就是巨大的资源缺口。大量资源短缺会不可避免地导致“集群建设 — 应用搬迁 — 腾挪资源”,进而带来不小的运维成本和稳定性问题。

为了解决这一问题,早在 2019 年,我们就开始进行集群联邦建设,通过解耦应用和集群的绑定关系,将各个业务线的资源并池,以应对分布式云带来的挑战。到 2021 年,字节跳动正式实现了全场景应用编排和资源管理的标准化和统一化,目前联邦集群已管理近 50 万节点,即便面对超过 10 万的微服务数、每天 3 万多次的变更数,也能为业务提供持续、稳定的保障。

多云下的海量算力实践

如今再看字节跳动的底层算力平台,它可以被分为分布式云原生平台和计算平台体系两部分。

其中分布式云原生平台汇集所有公有云集群、IDC 集群和汇聚集群(区域性 / 边缘集群),由 开源编排引擎 KubeAdmiral 统一管理。通过分布式的集群编排,在不采取任何其他措施的情况下,字节跳动的常态运维水位可以从 85%-90% 提高到 95%,资源利用率提升非常显著。

为了缓解运维复杂度问题,技术团队也开发了一个基于分布式编排引擎的统一调度器 Godel。这是一个融合调度器,能管理在离线资源,调度在离线任务,同时它也针对大规模场景进行了很多性能上的优化。

资源管控系统 Katalyst 采用 Kube.NETes Native 的方式进行重构,能提供更强的资源管理能力、调度能力、抽象能力和数据能力。通过这些能力,技术团队可以更好地按级划分应用使用的资源,实施精细化的资源出让策略、多维度的资源隔离能力、多层级的负载驱逐策略,让整体混部变得更健壮。

在这些核心中间件之上,是持续交付、服务网格、应用引擎等服务,这些服务可以识别资源在哪个部门、哪条业务线使用,再通过流量分发引擎调度,实现全局性的资源和流量管理。

计算平台体系则是针对字节跳动内部存在的海量离线业务,这类业务存在资源离散的问题:各个云上的存储、各个机房的 HDFS、各个机器学习任务使用的 NAS……为了进行统一管理和使用,技术团队推出了大数据文件存储 CloudFS,提供对接多云对象存储能力,无论用户在哪里、用户想访问的数据在哪里,它都能提供本地缓存加速。

离线业务存在的第二个问题是大数据作业无法享受云原生的好处:传统大数据引擎不是针对云原生设计,难以直接云原生部署,各计算引擎和任务需要进行深度改造才能支持原先在 YARN 上的各种特性,改造成本巨大。基于此背景,字节跳动推出了基于云原生的 YARN 解决方案 —— Serverless YARN,它 100% 兼容 Hadoop YARN 协议, Hadoop 生态下的大数据作业无需修改即可透明迁移到云原生系统上,在线资源和离线资源间可以高效灵活转换、分时复用,集群整体资源利用率得到显著提升。

在这些系统之上,我们又建设了一个关键模块——多数据中心离线统一资源湖 ResLake。它作为一个融合了计算 + 存储 + 网络的巨大离线算力湖,方便批计算、流计算、AI 训练等任务接入,让技术团队可以进一步加强跨机房资源管控、加强热点数据治理、提升多集群多队列用户体验、提升多机房资源利用率。按照最新数据,在 ResLake 的作用下,技术团队实现了超过 1.4 的作业加速比,队列跨机房流量优化也超过 30%。

降低运维部署复杂度

对于在线业务,分布式云原生平台就变得至关重要了。举个例子,直播业务之前在各种云上都开了 Kubernetes 资源,在分布式云原生平台上线后,新平台如果需要对这些一开始就游离在外的资源进行纳管,就必须具备对存量应用的无缝接管特性:不仅需要无改造、无运行影响地转移应用,也要能连接多基础设施 Kubernetes 集群,方便集群接入。

除了资源统一,在应用管理方面,分布式云原生平台也提供灵活的跨云分发策略,包含集群名称、标签、污点容忍调度,以及依赖资源的跟随分发。技术团队也着重锤炼和打磨了平台的开源兼容性,使其能完全兼容 Kubernetes 生态,支持原生  Kubernetes 及 CRD 资源、Helm 等应用定义。

在日常运维管理方面,字节跳动内部有一套统一的可观测体系,提供在离线应用的监控能力。如前文所述,我们的在离线业务是通过各种各样的中间件被混合在一起的,在这种情况下,我们可以轻松做到统一可观测,帮助业务团队快速定位问题、解决问题。

除此之外,字节跳动的分布式云原生平台也提供统一的应用治理。业务应用的实例可以多云多活的部署在不同云上的 Kubernetes 容器服务中,通过多集群的应用、流量、存储等的统一治理,实现高可用容灾,提升整个业务系统的故障弹性和可靠性标准。

降低成本之资源利用率

在统一资源底座后,技术团队接下来要面对的就是如何长期地提高资源利用率。我们把业务负载按时延容忍度和可重入性进行划分,在下图的两个象限中进行合理分布:

依据这样的分级分类,我们就能判断各个应用对哪些资源相对更敏感,在遇到一些特殊情况时,能够根据不同业务的优先级进行有梯度的分级去除,确保高优先级、高时延敏感任务的稳定运行。

此外,隔离能力也是非常重要的一个因素。因为计算机系统本身是一个分布式系统,它包含 CPU、硬盘、存储和网络,字节跳动内部也针对这些不同的算力资源采用了一些隔离机制,比如 CPU 会有一些 cache 隔离、系统级的唤醒能力,硬盘方面则实现了 cgroup 级别的内存回收,以及通过用户态的 advisor 机制实现兜底强杀。

技术团队也有尝试借助一些机器学习的能力,使得不同算力能按照不同要求,更精准有效地去匹配这些隔离机制,从而减轻各业务间的干扰影响。

目前,通过这些机制,字节跳动的混部方案已覆盖数十万机器,天极平均利用率高达 63%,部分核心业务集群也实现了整机天级利用率从 23% 到 60% 的提升。

分布式云的下一阶段

回到落地多云给企业带来的实践层面挑战,除了部署 / 运维复杂度、打通 / 互操作性和成本控制复杂度,最后一点就是数据管理 / 合规难度。随着国际格局愈发复杂,多云 / 分布式云也出现了一些亟待解决的下一阶段发展问题。

一方面,近年来 AI 兴起,以 GPU、FPGA、ASIC 为代表的 AI 芯片被广泛应用,并与 CPU 组合来满足高吞吐量、高并发和并发互联的需求。各式各样专有芯片的产生,对算力造成了巨大挑战:如何更好地匹配算力、如何更好地感知不同的算力、如何结合效率 / 成本 / 用户体验做出更加智能精准的判断、如何实现对应的调度……这是分布式云下一阶段在算力调度侧要解决的重要问题之一。

另一方面,近年来各个企业也开始越来越重视数据合规,如何对联通的数据进行隐私保护也成了一个重要课题。当前比较流行的方案是隐私增强计算(Privacy-enhancing Computation),包含三个主要流派:

联邦学习:一种分布式机器学习算法,在不交换原始数据的前提下,完成共享模型训练。联邦学习可以帮助多个参与方共享数据价值,实现数据可用但不可见;

可信执行环境:基于硬件的安全机制,将参与计算的代码和数据加载至一个受 CPU 保护的可信环境中,在机密性和完整性上提供保护;

多方安全计算:在运行时,多个参与方各自拥有私有数据,他们通过非明文的数据交互,来实现约定的对整体数据全集的某种计算(如联合查询、联合建模等)。

上述变化都对企业级云平台的管理能力提出了更高的要求:一是要 有能力解决应用的研发和管理问题,为用户提供一致的云原生体验,包括开发框架的跨云能力、整体效率问题和底层成本问题;二是 需要具备一定的开放接入能力,这是一个面向应用、面向开发者、面向企业的真正意义上友好的多元化增强平台所需要解决的问题。

这些问题都会伴随底层问题的破解被一一解决,并走向持续发展。



Tags:多云   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
字节跳动的多云云原生实践之路
作者 | 火山引擎云原生平台负责人 沈健2022 年,火山引擎联合咨询机构 IDC 对超过 4500 个云消耗大于 100 万的企业进行调研,发现使用多云架构的企业占比达到 88%,达到历史新高...【详细内容】
2023-08-17  Search: 多云  点击:(290)  评论:(0)  加入收藏
Kubernetes 多云的架构设计
大家好,我是哪吒。今天分享一下Kubernetes 多云的实现,丰富个人简历,提高面试level,给自己增加一点谈资,秒变面试小达人,BAT不是梦。随着云计算的快速发展,越来越多的企业开始关注...【详细内容】
2023-05-12  Search: 多云  点击:(427)  评论:(0)  加入收藏
单云与多云:七个主要区别
随着越来越多的公司倾向于数字化转型,比较单云与多云用例对于确定满足您需求的最佳策略至关重要。互联网的出现给IT世界带来了革命性的变化。其中一个显着的变化是虚拟化随着...【详细内容】
2023-04-09  Search: 多云  点击:(133)  评论:(0)  加入收藏
研究发现,成本仍然是多云的最大驱动力
意大利保险公司 Reale Group 发现自己有四个云供应商在运行其 15%左右的工作负载,而且没有明确的战略来管理它们。Reale ITES(公司的内部IT工程服务部门)的首席执行官 Marco B...【详细内容】
2023-03-16  Search: 多云  点击:(141)  评论:(0)  加入收藏
云原生多云管理利器 -- cluster-api 之 ControlPlane
在云原生的背景下,对 Kubernetes 的集群的生命周期的管理的期望和需求越来越多,很多企业的集群数量也与日俱增,少则几个,多则几十个。有的分布在企业的私有云,有的分布在公有云,...【详细内容】
2022-06-17  Search: 多云  点击:(289)  评论:(0)  加入收藏
多云架构的3个常见性能挑战和解决方案
企业需要认真进行前期规划,以帮助确保其多云体系结构不会造成性能瓶颈。 多云架构可带来许多好处,但它们也会带来一些特殊的性能挑战,特别是如何设计和管理,很多部署多云的团队...【详细内容】
2020-05-09  Search: 多云  点击:(266)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(10)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条