1、字节容量保障实践之路卢凯旋 技术专家个人简介来自字节跳动Quality and Experience团队,15年哈尔滨工业大学硕士毕业,先后加入去哪儿网酒店业务,百度知识图谱团队从事质量保障效能研发相关工作。19年加入字节跳动后,作为字节接口测试平台,AIOps智能根因分析以及容量中台等多个平台技术项目核心研发与负责人;目前主要负责字节容量中台相关能力的建设,致力于为业务提供全链路服务高准确率的容量预估以及构建高效低成本的容量验证体系去哪儿网酒店百度知识图谱字节跳动15-1717-1919-至今工作经历目录02.全链路容量预估模型03.全链路容量验证04.业务实践效果01.字节容量评估解决方案
2、字节微服务架构体系在字节内,整体公司微服务架构体系下,业务核心服务链路调用关系复杂,涉及微服务成百上千,整个链路涉及的服务类型又是多种多样繁多(计算服务,存储服务,消息队列等)容量评估服务/系统负载最大稳态下对请求的最大处理能力容量评估SRERDQA 单服务日常容量风险 日常资源的balance 链路资源瓶颈探测 服务最优利用率 容灾资源储备 服务性能调优 新服务容量规划 迭代服务劣化分析 极限容量评估 容量基线维护 活动容量风险线下拦截 容量评估方案思路历史经验压测模型.日高峰cpu/qps历史活动cpu/qps只能拿到历史数据做参考如35%cpu可以承载qps全链路打通阶梯压测梯度压测结果
3、:cpu40%,60%承载qps日常监控qps/delay/cpu等容量模型训练任意资源利用率下:服务承载qps容量评估历史经验模型压测历史数据无法直接参考使用服务变更后历史数据无意义fake流量线上真实流量差异环境差异低流量服务样本数据差方法维度细化不同方案阶段问题字节容量评估解决方案字节容量评估实践之路字节容量评估解决方案字节容量评估解决方案全链路容量验证全链路容量预估模型 常态化的容量评估风险巡检 业务日常迭代升级验证 活动场景的全链路容量评估字节容量中台-Rhino容量预估-容量模型构建容量预估-容量模型构建根据排队理论,=1/()其中E(s)表示请求的平均处理时间结合利用率=/推导队
4、列的最大容量等价于在满足响应时延SLO设定约束的条件下寻找请求的最大到达率max,定义队列响应时延SLO为Rt,队列的平均响应时延为R,则R=111 =1 设R=求解上式即可得到。单psm分层网络模型容量预估-容量模型构建业务链路队列网络模型容量预估-容量模型训练服务接入http/rpcconsumeMysql/redis服务元数据服务类型实例数集群/机房每日触发指标数据Cpu/memqpslatency任务创建数据处理数据裁剪平滑处理缺点/异常点处理模型训练基于排队论的容量模型基于深度学习的流量预估服务接入基础处理 服务qps的流量预测 磁盘disk的变化趋势 CPU/QPS模型 IO/QP
5、S模型 RT/QPS模型如何应用?容量预估-应用流程容量大盘巡检链路配置极限目标(Rt/CPU)最佳目标(Rt/CPU)风险水位阈值容灾配置服务元信息服务类型实例数集群/机房每日触发指标数据峰值cpu/mem峰值/qps峰值/Latency限流数据核心指标获取多模型预估单服务极限容量计算链路瓶颈计算全链路限流风险劣化分析容量预估风险推送消费Rd/qa/sre群消息风险平台扩缩容工单风险推送活动流量预估容量预估目标CPU/RT入口服务/接口模型筛选服务元数据服务类型实例数集群/机房链路信息获取上下游服务流量膨胀机房流量比例计算任务创建资源预估模型目标cpu下增长qps计算依赖资源数据链路瓶颈计算
6、限流风险计算资源计算数据消费扩缩容工单资源balance风险调整报告产出基础依赖获取容量预估-如何验证?服务的极限容量预估的资源是否正确?最佳资源推荐是否合理?链路容量瓶颈是否准确?容量验证(压测)构造流量线上调度容量验证-构造流量容量验证-安全保障容量验证-执行流程容量验证-如何更低成本?构造流量压测线上调度 全链路梳理 压测开关检查 数据构造/改写 影子表构建 压测资源准备 全链路盯盘成本高降低 高度自动化 低风险容量验证-线上流量调度如何高度自动化?如何保证低风险?目标流量调度全链路指标监控全链路报警监控自动