上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

04字节跳动 Serverless 容灾和多集群拓展实践--阔鑫 .pdf

编号:122319 PDF 51页 8.01MB 下载积分:VIP专享
下载报告请您先登录!

04字节跳动 Serverless 容灾和多集群拓展实践--阔鑫 .pdf

1、ByteFaaS-字节跳动 Serverless字节跳动 Serverless 容灾与多集群扩展实践/阔鑫我介绍2015年:在业务开发中最早接触 AWS Lambda 2017年:加 AWS Lambda,参与异步事件消费链路和函数执环境 Sandbox 的开发 2019年:作为早期成员加字节 Serverless 团队,参与 ByteFaaS 技术栈的开发迭代 2021年:FaaS Native-微服务 Serverless 化案落地 2022年今:引擎 Serverless 产品 veFaaS 迭代开发AgendaByteFaaS-字节跳动的 Serverless 字节内部规模落地的挑战

2、挑战:性能-冷启动优化与(去)中化流量调度 挑战:稳定性-运维段与容灾体系 挑战三:可扩展性-底层资源弹性与共池 Q&A技术架构,产品形态,业务应ByteFaaS-字节跳动的 Serverless ByteFaaS 介绍字节 Serverless 团队研的基于 K8S 的云原 Serverless 解决案 多种 Serverless 计算的产品形态 函数计算 Function As A Service 在线微服务 FaaS Native 轻量级运时 FaaS Worker 作为通计算平台泛撑上层业务 内部业务:评论流审核、视频转码、外部业务:书 aPaaS、抖云程序 公有云业务:veFaaSB

3、yteFaaS 介绍K8S 资源 ProviderByteFaaS 技术底座资源池化/流量调度/弹性伸缩/函数计算 FaaS在线微服务FaaS Native云边体FaaS Worker评论流审核视频压缩转码抖程序书 aPaaS上层业务多种 Serverless 计算形态字节 Serverless 技术底座基于 K8S 的底层资源管控ByteFaaS 介绍-函数计算函数实例(Python)Function Instance def handler(event,context):result=body:json.dumps(message:Hello Word!)return result 函数实

4、例(NodeJS)Function Instance exports.handler=async function handler(event,context)return body:JSON.stringify(message:hello),;统流量调度 API 关对象存储消息队列 Kafka/RocketMQ。触发HTTP 微服务实例 POST/ping GET/hello_world ByteFaaS 介绍-在线微服务Thrift RPC 微服务实例/Ping Trhfit API 接定义 struct PingRequest 1:optional String Msg,PingResp

5、onse Ping(1:PingRequest req)gRPC 微服务实例/The greeter service definition.service Greeter /Sends a greeting rpc SayHello(HelloRequest)returns(HelloReply)微服务 Client/Mesh触发统流量调度(多协议)ByteFaaS 介绍-轻量级运时 FaaS WorkerWASM Worker 进程 户请求触发边缘/中 流量接宿主机 Local Cache 最终致性GlobalKVGolang 函数(Tinygo)Rust 函数JavaScript 函数(Q

6、uickJS)hostcall API云边体持久化数据临时缓存性能,稳定性,容灾体系,与可扩展性字节内部规模落地的挑战字节内部规模落地的挑战-当前规模覆盖字节内部所有业务线和中台部 服务总数 20w+,活跃服务 2.2w 全球机房峰值 QPS 1.2亿 峰值集群 CPU 峰值利率 60%不同语运时 服务数量分布字节内部规模落地的挑战-当前规模覆盖字节内部所有业务线和中台部 服务总数 20w+,活跃服务 2.2w 全球机房峰值 QPS 1.2亿 峰值集群 CPU 峰值利率 60%字节内部规模落地的挑战-性能冷启动:前端应和后端在线服务对冷启动性能的要求 离线服务优化:流量消息队列消费场景 字节内

7、部规模落地的挑战-性能函数实例(Python)Function Instance def handler(event,context):result=body:json.dumps(message:Hello Word!)return result 函数实例(NodeJS)Function Instance exports.handler=async function handler(event,context)return body:JSON.stringify(message:hello),;中化关 bottleneck?触发通 FaaS 产品/解决案的架构:中化流量调度关 字节内部规模落

8、地的挑战-稳定性业务维度 单实例问题以及对应的运维段 限流与并发控制:保护下游服务 平台维度 多地域、多机房的容灾体系 字节内部规模落地的挑战-资源的可扩展性服务维度 单个服务的弹性(业界的 Serverless 产品案都能较好的好解决)租户维度 单个租户的资源弹性和资源保障 平台维度 Serverless 平台本身的资源管控并不Serverless Serverless 常谈的问题,和新的解决法性能:冷启动优化与(去)中化流量调度什么是冷启动函数 A 实例(Python)Function Instance def handler(event,context):result=body:json

9、.dumps(message:Hello Word!)return result 函数 B 实例(NodeJS)Function Instance exports.handler=async function handler(event,context)return body:JSON.stringify(message:hello),;统流量调度触发函数 B 实例(NodeJS)Function Instance exports.handler=async function handler(event,context)return body:JSON.stringify(message:he

10、llo),;函数 C 实例(NodeJS)Function Instance exports.handler=async function handler(event,context)return body:JSON.stringify(message:hello),;函数 C 没有实例临时启动新的实例没有流量的函数会被缩 0 的债总是要还的 突增流量的临时应对函数 B 实例不够临时扩容思路 1:加快冷启动速度 思路 2:提前扩容,减少冷启动频次冷启动优化-加快冷启动速度K8S 资源 Provider预热资源池 by WorkerManager基于 K8S 的底层资源管控资源池化预热:节省 p

11、od 创建开销(调度,镜像下载)函数冷启动:镜像代码分离(字节 Golang 为主的微服务研发体系)函数代码多级缓存 预热资源池 Golang预热资源池 NodeJS预热资源池 Python冷启动优化-加快冷启动速度资源池化预热:节省 pod 创建开销(调度,镜像下载)函数冷启动:镜像代码分离(字节 Golang 为主的微服务研发体系)函数代码多级缓存 基于 K8S 的底层资源管控Worker ManagerWorker ManagerWorker Manageretcdtoken 租约续期资源池 Pod资源池 Pod资源池 Pod资源池 Pod资源池 Pod资源池 Pod资源池 Pod资源池

12、 Pod资源池 Pod资源池 Pod资源池 PodToken1Token2Token3冷启动优化-加快冷启动速度资源池化预热:节省 pod 创建开销 函数冷启动:镜像代码分离(字节 Golang 为主的微服务研发体系)函数代码多级缓存 宿主机 Host预热资源池 Golang预热资源池 NodeJS预热资源池 PythonFaaS HostAgent对象存储户代码下载宿主机host-path户代码解压冷启动优化-加快冷启动速度资源池化预热:节省 pod 创建开销 函数冷启动:镜像代码分离(字节 Golang 为主的微服务研发体系)函数代码多级缓存 宿主机 Host预热资源池 Golang预热资

13、源池 NodeJS预热资源池 PythonFaaS HostAgent对象存储户代码下载宿主机host-path户代码解压远端缓存宿主机 户代码 缓存冷启动优化-加快冷启动速度基于资源池预热,资源池具体需要留多?经验值:2%的预热资源就够 兜底路径+预热资源位告警 冷启动优化:减少冷启动频次函数 A 实例(Python)Function Instance def handler(event,context):result=body:json.dumps(message:Hello Word!)return result 函数 B 实例(NodeJS)Function Instance expo

14、rts.handler=async function handler(event,context)return body:JSON.stringify(message:hello),;函数 B 实例(NodeJS)Function Instance exports.handler=async function handler(event,context)return body:JSON.stringify(message:hello),;函数 C 实例(NodeJS)Function Instance exports.handler=async function handler(event,c

15、ontext)return body:JSON.stringify(message:hello),;旁路指标提前扩容 CPU/内存 消息队列堆积 户定义 根据业务需求配置扩容时间窗AutoScale 旁路信号,提前扩容 函数 B CPU 负载过函数 C 消费的 Kafka 产了堆积CPU内存并发消息堆积。离线消费性能优化函数 A 实例 离线消费 Kafka/RocketMQ 消息 延迟不敏感,但是吞吐常(1.1亿+QPS)去中化流量调度 将流量调度 与 路由发现剥离 绕过中化关FaaS Gateway 中化关函数 A 实例 函数 A 实例 函数 B 实例 函数 C 实例 Kafka/Rocke

16、tMQ Consumer 函数 C 实例 函数 C 实例 Pull离线流量中化关变成瓶颈在线流量中化关离线消费性能优化离线消费 Kafka/RocketMQ 消息 延迟不敏感,但是吞吐常(1.1亿+QPS)去中化流量调度 将流量调度 与 路由发现剥离 绕过中化关FaaS Gateway 中化关Kafka/RocketMQ Consumer Dispatcher 路由管理Pull流量消息队列 Consumer直接访问 Pod在线流量中化关函数 A 实例 函数 A 实例 函数 A 实例 函数 B 实例 函数 C 实例 函数 C 实例 函数 C 实例 离线消费性能优化路由管理组件 Dispatche

17、r 基于 Rendezvous Hashing 的哈希分策略 路由缓存:减少调次数,缓解单点 failureDispatcher 1 Dispatcher 2 Dispatcher 3 Func Apod1;pod2Func Bpod6Func Cpod7;pod8Func Dpod9;pod10Func Epod11;pod12;Func FemptyFaaS Gateway 本地路由缓存 Func Apod1Func Bpod6Func Cpod8在线流量中化关Dispatcher 获取路由信息函数 A Pod1Wrap UPKafka/RocketMQ Consumer 函数实例中化关

18、FaaS Gateway路由管理 Dispatcher资源池管理 Worker Manager预热实例热启动调路径(常态)冷启动调路径消息队列 MQ 调路径1234业务视和平台视的稳定性建设稳定性:运维段与容灾体系稳定性-业务运维段业务运维段 单实例问题:实例的概念暴露给户(监控、运维)动化运维:单实例熔断/迁移 弹性的限制:限流、反压、并发控制稳定性-业务运维段业务运维段 单实例问题:实例的概念暴露给户(监控、运维)动化运维:单实例熔断/迁移 弹性的限制:限流、反压、并发控制稳定性-业务运维段业务运维段 单实例问题:实例的概念暴露给户(监控、运维)动化运维:单实例熔断/迁移 弹性的限制:限流

19、、反压、并发控制Coordinator触发器FuncFuncFuncFunc时间熔断单实例问题上报单实例迁移中化决策系统错误单实例熔断消息队列ConsumerFuncFuncFuncFunc稳定性-业务运维段业务运维段 单实例问题:实例的概念暴露给户(监控、运维)动化运维:单实例熔断/迁移 弹性的限制:QPS 限流与并发控制消息队列ConsumerFuncFuncFuncFuncCoordinator中化限流控制下游其他服务访问下游稳定性-平台容灾体系全球多区域(Region)部署 Region 与 Region 之间不共享数据 同区域多集群单元化部署 降低单集群爆炸半径 同单元多 AZ 容灾

20、 跨 AZ 流量调度 稳定性-平台容灾体系全球多区域(Region)部署 Region 与 Region 之间不共享数据 同区域多集群单元化部署 降低单集群爆炸半径 同单元多 AZ 容灾 跨 AZ 流量调度 稳定性-平台容灾体系us-eastsgcn-north 控制 API控制 API控制 APIByteFaaS 系统组件ByteFaaS 系统组件ByteFaaS 系统组件底层 K8S容器调度平台底层 K8S容器调度平台底层 K8S容器调度平台稳定性-平台容灾体系全球多区域(Region)部署 Region 与 Region 之间不共享数据 同区域多集群单元化部署 降低单集群爆炸半径 同单元

21、多 AZ 容灾 跨 AZ 流量调度 稳定性-平台容灾体系cn-north控制 APIByteFaaS 系统组件底层 K8S容器调度平台ByteFaaS 系统组件底层 K8S容器调度平台ByteFaaS 系统组件底层 K8S容器调度平台爆炸半径 重保业务稳定性-平台容灾体系全球多区域(Region)部署 Region 与 Region 之间不共享数据 同区域多集群单元化部署 降低单集群爆炸半径 同单元多 AZ 容灾 跨 AZ 流量调度 稳定性-平台容灾体系Gateway AZ-AGateway AZ-BK8S 容器调度平台常态泳道化流量调度 容灾跨 az 场景切流Func AZ-AFunc AZ

22、-AFunc AZ-AFunc AZ-AFunc AZ-AFunc AZ-B常态流量 同 AZ 调度容灾场景跨 AZ 切换常态流量 同 AZ 调度七层负载均衡资源弹性的三级箭可扩展性:底层资源的弹性与共池可扩展性-三个层的资源弹性服务级别:突发流量冷启动 +异步扩容防突增 租户级别:单体租户对资源弹性的需求 平台级别:平台本身的资源弹性与计算资源的共池 可扩展性-服务级别服务级别:突发流量冷启动 +异步扩容防突增函数 A 实例 函数 A 实例 函数 A 实例(预热资源池)函数 B 实例 函数 C 实例 函数 C 实例 函数 C 实例 AutoScale 监听旁路信号,提前扩容 函数 B CPU

23、 负载过函数 C 消费的 Kafka 产了堆积中化流量调度 临时冷启动扩容突发流量可扩展性-租户级别常态预留 10%的位不够(帕累托法则/效应)单体租户对资源/SLA的的强需求 对租户的保护(防资源断供)可扩展性-租户级别单体租户独占资源池 减少运维-节点池弹性伸缩K8S 集群(容器服务 VKE)ECS 节点ECS 节点FuncECS 节点FuncFuncFunc租户独占节点池ECS 节点ECS 节点ECS 节点FuncFuncFuncFuncECS 节点。公共租户节点池FuncCluster Autoscale节点池负载弹性伸缩可扩展性-平台级别问题:户服务实现了 Serverless,平台

24、的资源管控不够 Serverless 宿主机节点管理的负担 资源断供险 资源成本的权衡 资源弹性的 Gap ECS 虚拟机:分钟级别 FaaS Function:百毫秒级别?可扩展性-平台级别容器服务-弹性容器 https:/ 基于 Virtual Kubelet 的资源调度抽象-Virtual Node 运时隔离+络隔离 秒级别容器启动速度 规格碎化资源的价格优势 K8S 集群(容器服务 VKE)ECS 节点FuncECS 节点Virtual Node虚拟节点FuncPodPodPodFuncPodFuncPodPodPod共享物理机资源池可扩展性-Combined Together在三个级别上实现弹性K8S 集群(容器服务 VKE)ECS 节点ECS 节点FuncECS 节点FuncFuncFunc租户独占节点池ECS 节点ECS 节点ECS 节点FuncFuncFuncFuncECS 节点。公共租户节点池FuncCluster Autoscale节点池负载弹性伸缩Virtual Node虚拟节点FuncFunc Func共享物理机资源池FuncFunc更多内容,欢迎购买字节跳动 Serverless 团队刚刚出版的想了解更多Serverless 核技术和规模实践也欢迎关注 字节跳动云原 了解更多云原技术动向

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(04字节跳动 Serverless 容灾和多集群拓展实践--阔鑫 .pdf)为本站 (2200) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部