“TT语音年度盛典”背后的技术保障——趣丸科技研发中心技术保障部负责人刘亚丹

举报
SRE确定性运维 发表于 2023/03/28 10:38:36 2023/03/28
【摘要】 本文从可观测能力、诊断分析工具以及快恢场景建设等方面,对移动云故障快速恢复能力的建设实践进行经验分享。

来源:《华为云SRE确定性运维专刊》第三期


6.png


      作者简介:刘亚丹,现任趣丸科技研发中心技术保障部负责人;15年互联网行业从业经验,对于云原生基础架构与演进、大规模复杂系统运维有非常深入的技术理解和管理实践经验。

      Q1、与往届相比,今年的TT语音年度盛典,面临哪些新挑战呢?
      每年的这个时间,是TT语音年度盛典筹备项目组最忙碌、最紧张的时刻。对于技术团队而言,这就是一场年度技术大考。如何保障年度盛典的开发需求高效交付,系统高峰扛得住、长期平稳,是项目组中的每位技术人必须面对的问题。年度盛典期间,每一个Bug都会被无限放大。今年对于我们技术团队来说,主要面临的挑战体现在强稳定性保障、风控服务实时性保障以及高资源利用率保障等方面。

      Q2、众所周知,再完美的设计,故障始终难以全部避免,而且从历史数据中得知,绝大多数故障都是由于变更引起的。在您看来,该如何解决这一大难题?
      强稳定性背后有三大挑战,其一是应对发布变更引起故障问题的挑战,从历史数据中得知,70% 以上的故障都是由于变更引起的。做好变更管控,就能减少大部分的故障。其二是保障跨云网络链路持续可用的挑战。TT语音业务采取跨云部署策略,实现跨云容灾价值的同时,也对跨云流量治理提出更高的要求。当跨云之间发生网络波动或者中断时,将造成业务波动或不可用的后果。其三是面对故障的快速响应的挑战,当故障真正发生时,做到故障问题的快速感知、快速定位和快速恢复,是保障业务稳定性的关键一环。
      1.   加强变更管控管理
      通过系统化的手段来管理是最理想的方式,包括发布时间(如规避业务高峰期),发布方式(如灰度),验收及回滚等。当企业底层基础服务和中间件服务的系统化建设处于尚未完善的阶段,通过设定变更管控的规则,严格控制变更的需求,强化变更人员的意识,是较为有效的举措。
      对于成本优化、统一网格服务化治理所需的架构改造,以及容灾演练活动等进行严格的评估,避免突然变更。同时,技术团队制定重大变更执行方案评审机制、对所有变更执行变更通知规范性检查,以及执行高危命令审计及预警切实保障变更的规范性。
      通过以上举措,TT 语音年度盛典项目组的技术团队实现在盛典期间,无变更操作引起的故障,显著增强变更质量。
      2 保障跨云链路高可用
      基础架构团队设计了多云互联互通的多条专线和多条 VPN 线路互相备份方案。具体而言,当专线链路不可用时,自动实现通过 VPN 线路承载全部业务流量。该方案有几大特点:
      •   基于 BGP 协议实现秒级自动切换
      •   多条 VPN 线路实现负载均衡
      •   专线线路恢复后 VPN 流量自动切换回专线
      通过以上举措,TT 语音年度盛典项目组的技术团队实现了不同云厂商的互联互通高可用,该技术方案在行业内处于较为领先水平。
      3 提高运维保障能力
      AIOps监控感知问题
      当出现故障时,快速感知是故障处理的关键能力。以往,技术团队采用比较传统的手段,针对不同级别的应用和基础组件,通过阀值调优,增加监控项等手段精细化管理。
      为了更快更全面的感知用户侧问题,今年盛典期间,技术团队引入 AI 算法能力,通过文本识别和 NLP 语义理解,在用户反馈侧提前感知故障问题,大大提高了故障处理的效率。
      强化故障处理意识
      在盛典保障周会上,持续宣贯。采取“多沟通多同步勿慌乱”以及“先恢复快止损后根因”两大策略,从人员意识上,提升故障定位和恢复的执行力。
      云商风险识别治理
      在今年的年度盛典之前,技术团队完成了云商迁移,所有流量第一次全部承载在一个全新的基础设施上,其风险不言而喻。为此,技术团队在盛典开启之前,与云厂商技术团队深入合作,系统性地对云服务进行风险识别和治理,共发现风险41个,并完成了36个风险治理,将故障隐患提前消除。

      Q3: 您之前有提到,合规安全是当前业务的底线和生命线,那么风控合规实时性的意义是什么?项目团队又该如何保障风控合规能力的实时性?
      合规安全是当前业务的底线和生命线,实时风控与业务流程强绑定,一旦风控服务实时性差或不可用,直接导致用户体验差或者业务不可用。业务侧对于风控的实时性,也提出了明确的技术指标:99.5% 的请求在 200 毫秒内响应。
      为保障风控合规能力的实时性,大数据团队需通过存算分离、数据分级、服务降级三个方面来保证每天上百亿行为实时计算和服务。因此,在海量数据场景中,保障风控服务实时性及可用性是个巨大的挑战。
      1  存算分离
      故障随时随地迁移,不影响数据实时性
      采用on K8S的架构方案,计算应用docker化运行在k8s环境,实现了计算逻辑和计算资源的解耦。同时引入对象存储来存储计算状态,解决资源迁移时可随时随地读取计算状态的问题。最终实现计算和存储能力的可迁移可扩展性,应对突发的大计算资源水平扩展及节点异常自动迁移。
      2 数据分级
      根据数据和业务场景分级优化,提升存储查询引擎响应性能
面对风控识别高并发(30KQPS)的请求,服务过程中同时涉及多用户多特征(全平台亿级用户300+特征)更新,大数据团队根据数据热度和实时程度对数据进行分级处理。
      •    活跃用户特征存储在内存 KV 库,全量用户特征存储在分布式 NoSQL KV 库;
      •    实时性高的使用 Pipline 方式微批更新到内存 KV 库,实时性低的数据以文件形式批量更新到分布式 NoSQL KV 库,以此来降低更新数据带来的压力;
      通过优化数据分区算法,数据分布更均衡大幅提升并发查询性能。
      3 服务降级
      数据服务链路解耦,极端情况可实现降级保障稳定性
      风控服务链路分为用户特征计算、用户特征更新及风控识别服务。
      •    特征计算利用流平台和大数据 IDP 平台灵活定制特征;
      •    特征更新集中作业统一优化更新数据到 KV 库;
      •    风控识别服务采用分布式+异步查询+默认特征兜底,保障服务高可用。
      大数据生产和服务技术组合多且复杂,为了避免极端情况,风控服务不可用的情况,首先整体服务采用异步式架构解耦相互关联性,其次在无关性的基础上,可根据下游压力情况灵活调整上游策略。若 KV 库负载压力大,可降低数据更新频率降低负载;若极端情况 KV 库全部宕机,服务仍在线,保障业务过程不受影响,对用户无感知。
      通过以上优化,盛典期间零故障,99.9% 服务响应在 50 毫秒内,大幅提升用户使用产品的体验。

      Q4:如何在保证业务稳定的情况下尽可能降低成本?您有没有遇到一些案例可以给大家分享一下?
      在保证业务稳定的情况下尽可能降低成本,需要提升资源的利用率。具体来说,技术团队需要提升应用服务Pod利用率和容器Node节点的分配率,达成节点利用率的提升。而资源利用率越高,服务受负载影响导致业务受损的可能性就越大。因此,在不降低稳定性的前提下,最大限度的节省资源成本,是资源调度平台面临的较大挑战。
      1 提高应用的资源利用率
      1.1 应用弹性伸缩
      应用资源的弹性伸缩是当前云原生架构下常见的提升利用率的手段,得益于技术团队较早在云原生领域探索,应用的云原生化覆盖率比较高,95%的应用具备弹性伸缩的能力。然而,弹性伸缩若太频繁,也将对服务稳定性造成威胁。为了提升应用利用率资源,同时兼顾业务稳定性,需要设置合理的Pod 资源申请与HPA的阈值。
      我可以给大家分享个案例,比如有一个关键的业务Pod,由于红框标记部分为HPA和request值设置不合理导致的频繁伸缩,不仅影响资源利用率,同时也为业务稳定带来影响。

4-2.PNG

      如图,红框标记部分为 HPA 和 request 值的不合理设置。技术团队根据自己的业务情况特征建立了一套 Pod 资源申请模型,解决应用资源的不合理使用问题,最大化应用资源利用率,盛典期间集群应用 CPU 均值利用率达到 57%。

      1.2 应用定时伸缩
      对于赛事活动,会遇到突发流量,往常的做法是人工提前扩容,以应对高峰期的访问压力,使服务保持稳定。人工扩容比较繁琐、低效且有一定的浪费。本次年度盛典,技术团队针对突发流量,上线了定时伸缩策略,较好地解决业务稳定性。同时,精准的定时伸缩策略,也进一步提升了资源利用率。
如下图,通过采用定时伸缩方案,在业务突发流量到来前,提前扩容。

4-3.PNG

      如下图,从业务指标看,较好地解决了突发流量带来的异常。
 

4-4.PNG

      除了支持定时伸缩等策略外,多维度的弹性伸缩还支持多达几十种的调度策略,满足不同业务类型,不同场景的弹性伸缩需求。

      2 提升 Node节点的分配率
      2.1 集群节点弹性伸缩(定时伸缩)
      借助于云商的CA(集群自动扩缩)能力,技术团队在所有集群上开启了这个功能。然而,当存在突发流量时,集群节点资源无法满足业务需求,此时CA扩容需要5分钟。
      如下图所示,节点扩容时间晚于业务峰值时间。

4-5.PNG

      由于节点扩容不及时存在瞬间失败的情况,一般应对手段是准备更大的集群空闲资源,但造成资源一定程度的浪费。如下图,由于节点扩容不及时,出现访问异常数升高的情况。
 

4-6.PNG


      为此,技术团队开启了集群节点的定时伸缩机制,在 20:00 和 00:00 两个高峰期提前扩容节点,解决了服务瞬时失败问题,同时提升节点的资源利用率。
 

4-7.PNG

      2.2 优化机型配置
      Kubernetes是基于Pod的request 资源进行调度的,任意一种资源不满足request就不会把Pod调度到该节点。为了提升节点的分配率,减少资源碎片化,节点的机型选择就需要一定的技巧。
      •    Pod申请的CPU和MEM的比例尽可能跟Node的CPU与MEM的比例接近
      •    Pod 的 CPU 和 MEM 的使用尽可能和申请资源的比例接近
      *注意:这里统计的是整个集群的Pod情况,不针对单一Pod。
      技术团队根据历史业务对CPU资源与MEM资源的需求情况,选择最配匹的 Node机型,将全部集群的分配率提升到 85% 以上,尽可能减少了无法分配的资源碎片。
      3 离在线混部
      行业内都知道,分时复用是提升资源的利用率有效手段,将离线和在线业务负载时间段正好错开,是分时复用的最佳场景。
      本次年度盛典,技术团队试点了离在线混部,并验证稳定性达到预期。趣丸科技的离在线混部系统是基于业务特征设计的一套调度系统,主要实现包含基于实时资源感知的动态调度算法、离线Pod调度算法、基于优先级的Pod 资源隔离方案、Node资源过载干预方案等。此系统在保证在线业务SLA的情况下,充分利用Node空余资源。 
      通过以上技术手段,node节点的CPU均值使用率,达到 40% 以上,在没有大规模混部的情况下,这个水平基本接近极限。

      Q5: 您对于本次盛典有何感想,可以与业界技术伙伴分享一下?
      在强稳定性、风控服务实时性、高资源利用三大技术保障的加持下,盛典期间,技术团队高质高效交付业务需求,实现了0定级故障的目标,并沉淀了一些技术能力。不过,复盘整体工作,技术团队在端到端交付的顺畅性、过程质量及线上故障的数量控制、关键度量指标数据的分析应用,以及数据驱动改善能力等方面仍有改进空间。
      引用《EDGE:价值驱动的数字化转型》这本书所表达的核心思想与所有技术伙伴共勉,“当今世界高度不确定,变化是非常快速的,我们无法预测一定会发生什么。那最好的应对方式是:我们先假设未来最有可能是什么,然后通过设定最小化版本进行尝试,去验证我们的假设。”面对不断变化和不确定性的当下,企业和组织可以通过价值驱动的方法,以实际的业务价值为导向更好地推动数字化转型,为未来的发展注入源源不断的动力。
      未来,趣丸科技的技术团队将持续提升自身的技术能力,并坚持以用户价值为目标小步快跑,快速迭代,提高产研、跨团队的协作效率,在每一场“技术考验”中以极低的成本试错,持续寻找成功的可能。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。