诺亚(Noah)自适应流控

2019 年 12 月 05 日

诺亚(Noah)自适应流控


诺亚(Noah) 自适应流控解决方案 基于自动控制算法,解决了人工限流配置疏漏或过时的痛点,大幅提升应用抵抗流量冲击的能力。在刚过去的双11中,诺亚(Noah)保障了大量业务应用系统,有超过 15K 的容器大规模部署;稳定性上最高可提升 20 倍于业务负载流量的上限 QPS ;最高可提升 100% 的资源利用率;同时优化了体验与效率。提升淘系(及更多BU)的稳定性底盘,成为应用稳定性保障的核心能力,推动了业界在大型分布式在线业务系统的高可用/稳定性保障的进展。


✪ 背景 ✪


随着业务的不断发展,应用数量、拓扑依赖与复杂性都在持续增长,流量模型的有效预测也变得更加困难。系统与流量的不确定性都会导致系统容量评估疏漏或评估过时。这些情况在双 11、春晚等大型复杂活动中会更加的突显。


✪ 面向流量的「意义」✪


流量会受到业务的影响而发生强变化的,这种变化是不确定的且在频繁发生的。


应对这种不确定性需要基础架构有可靠的、自适应的方式,能够


  • 实时接受与感知变化

  • 作出保护响应来抵御变化,自适应的、柔性的实施系统/架构

  • 然后是弹性,针对基础资源做实时调节


这样才能具备有效的抵抗力、适应力,活着是前提,有了这个前提,才有机会将基础资源驱动起来(弹性),而业务无需耗费心力去关注这种不确定性带来的业务可用性风险。


✪ 关于高可用的重新思考 ✪


业界在讨论高可用时,主要说的是资源失效的对应方式,比如通过应用集群、主备、热切换等应对单机失效;通过单元化架构、异地多活等应对单机房/地域失效。



从上面对资源失效的问题与对策可以看出,高可用所要解决的核心问题是保证服务不挂,准确的说是要大大降低服务挂掉的概率。


到了今天我们的应用架构,我们的可用性痛点问题是什么呢?对于你自己开发的应用,或听到某某服务挂了时,你会担心或者想到什么?在可用性方面,相信更多的回答会是『服务压跨了』,典型的是问题场景是『大流量、突发流量』下,比如:直播场景中主播一声吼,后端流量飙升;社交媒体场景中明星官宣结婚,带来热点流量暴涨;电商运营场景中,秒杀活动大流量脉冲;互动玩法场景中持续不断发布互动活动,一个新的活动导致系统整体可支撑的 QPS 可能下降很多。这些场景与问题在日常应用开发和服务保障过程中,应该是深有痛点吧 :)


在应用架构上,业界对面向流量的可用性,不如像面向资源一样得到充分的关注、有着丰富成熟的思路和广泛有效的实践,我们有意于改变 面向流量的可用性 这个主题的现状,更多的直面问题、探索思路、实践推进。



✪ 传统方案有什么问题? ✪


面向流量的可用性现有的应对方式是静态限流。



传统的针对 QPS 限制的静态限流方法的问题:


  • 流量/请求

  • 依赖 请求模型的准确评估,即测试流量的请求大小与实际需保持一致。

  • 热点流量,如热点用户被频繁访问/爆冷商品等。运营导致用户动线走了较重的逻辑分支。

  • 依赖 来的流量的准确预估。

  • 但我们要承认,流量一定无法准确被评估,系统会被摸死(即拒绝操作导致的过载)。

  • 业务代码逻辑

  • 依赖 测试之后系统自身和其下游依赖的逻辑不变,性能需保持一致。

  • 但是业务总是在演进,除非全网封网,否则限流阈值一上线就已经过时了。

  • 资源

  • 依赖 各台机器性能完全一致且稳定不变。

  • 机器型号不同,处理能力是不可能做到完全一致的。

  • 虚拟化/容器化之间有影响,你无法控制你的邻居会做什么。

  • 流程

  • 依赖 事先人工准确执行了评估过程

  • 但人总是靠不住的,只要人工来执行就一定会疏漏、出错。

  • 另外对于长尾应用/非核心应用,支持力度没有保障,人力资源总是有限的。


传统方法无法解决人工评估过时导致的流量与容量不一致的问题,我们需要一种能够实时评估系统容量,并就地对流量进行控制的解决方案。


✪ 诺亚(Noah)自适应流控 ✪


面对系统稳定性问题,诺亚(Noah) 自适应流控解决方案采用不同于业界传统的针对 QPS 限制的静态限流方法,首次以自动控制算法为核心手段,提供自适应流控解决方案,解决了限流配置过时的痛点,大幅提升应用抵抗流量冲击的能力,极度简化了相关配置工作,同时在系统资源利用率、用户体验、运维效率等方面均有大幅优化提升。



诺亚(Noah)自适应流控解决方案


在绝大部分情况下,CPU 利用率作为资源供给的主要信号是最为直接的。诺亚(Noah) 自适应流控解决方案即是以自动控制 CPU 资源为核心方法的,其具备了一下 3 点优势:


在系统稳定性控制效果方面表现为精准和有效的控制,并具备很强的可解释性。


没有提前的人工评估,便没有提前评估的过时与人工评估的疏漏和错误。


应用场景更为广泛,不受异步场景约束,可同时使用于同步和异步场景。


诺亚(Noah) 自适应流控解决方案能够实时自动评估 QPS ,在技术方案上使用自适应性来解决业务流量的不确定性。


✪ 业务落地 ✪


作为淘宝应用架构升级(代号 Tango:Taobao Architecture Next GeneratiOn)在稳定性上的核心产品,诺亚(Noah)在刚刚过去的双 11 大促过程中,保障大量业务应用系统,有超过 15K 的容器大规模部署(涉及淘宝、天猫、聚划算、盒马、猫超、优酷等等众多业务)。提升系统稳定性、提升资源利用率、优化体验与效率,提升了淘系(及更多 BU)的稳定性底盘,成为应用稳定性保障的核心能力,推动了业界在大型分布式在线业务系统的高可用/稳定性保障的进展。


诺亚(Noah) 自适应流控解决方案目前已上线超过 9 个月,在线上实战和全链路压测中,诺亚保护了大促会场、直播、导购等等核心业务场景;应用系统在出现容量缺失 30%或近 20 倍超大流量脉冲场景下仍保持稳定运行。


诺亚(Noah)自适应流控的效果收益:


  • 可用性提升

  • 压垮QPS上限,最高可提升 20倍 于业务负载流量。

  • 在大流量压力下降后,1秒 快速恢复服务。

  • 大流量压力下,仅需直接扩容机器 一步即可,无需紧急调整限流。

  • 用户体验的优化

  • 应用在高负载情况下,服务成功率最高可提升 2.7倍,同时响应时间维持正常水平不劣化。

  • 成本的优化

  • 资源利用率最高可提升 100%(去除为了稳定性/不确定性而留的资源冗余)

  • 效率提升

  • 全链路压测/性能压测更顺畅。无需人工限流阈值设置,避免人工评估错误导致系统被压垮后需要大量调整时间。


自适应流控的实际控制效果:在流量飙升/大流量压力时,CPU 稳定控制在阈值,且服务 RT 正常


✪ 诺亚后续的发展 ✪


目前诺亚(Noah) 自适应流控解决方案保障了大量业务应用系统,提升稳定性、提升资源利用率、优化体验与效率,提升淘系(及更多 BU)的稳定性底盘,成为应用稳定性保障的核心能力,推动了业界在大型分布式在线业务系统的高可用/稳定性保障的进展。


对未来更体系化建设的几点展望:


  • 自适应能力由限流拓展到隔离/熔断等更多稳定性能力,如

  • 自适应线程资源隔离

  • 自适应服务比例

  • 自适应服务熔断

  • 由单机的自适应限流拓展到链路级,尤其是客户端流量入口接入层

  • 与接入层协同,让入口流量与应用的处理容量自适应匹配

  • 确定性地保障面向流量的高可用

  • 自适应控制流量拓展到自适应伸缩容

  • 流量控制与处理资源控制(伸缩容)协同

  • 无论是流量的控制还是资源的控制,都是为了让处理流量与资源容量匹配


保障系统不过载,提升稳定性与业务请求的成功率


One More Thing


淘系技术部依托淘系丰富的业务形态和海量的用户,我们持续以技术驱动产品和商业创新,不断探索和衍生颠覆型互联网新技术,以更加智能、友好、普惠的科技深度重塑产业和用户体验,打造新商业。我们不断吸引用户增长、机器学习、视觉算法、音视频通信、数字媒体、移动技术、端侧智能等领域全球顶尖专业人才加入,让科技引领面向未来的商业创新和进步。


本文转载自“淘系技术”公众平台。


原文链接:https://mp.weixin.qq.com/s/ePWqUiZcEy52mUHb4WbcSA


2019 年 12 月 05 日 09:26345

评论

发布
暂无评论
发现更多内容

架构师成长心得

熊威

架构师训练营 第一周 学习总结

RZC

作业一:食堂就餐卡系统设计

晨光

作业一:食堂就餐卡系统设计

carol

食堂就餐卡 最用心

架构建模总结

任鉴非

架构师训练营Week1总结

sunnywhy

食堂就餐卡系统设计

Young

【架构】— 一个简单系统的UML模型

不二架构

极客大学架构师训练营 UML 架构总结

week1学习总结

慢慢来的比较快

第一章作业

李白

人工智能之机械基

码农神说

人工智能 程序员 加班

UML用例图组件图部署图

熊威

架构师训练营 第一周 命题作业

RZC

第一章作业-学习总结

李白

孤狼王兴 | 互联网大佬往事

刘燕

AI 企业管理 美团

食堂就餐卡系统设计(第一周作业)

Geek_237932

一篇文章快速搞懂 Atomic(原子整数/原子引用/原子数组/LongAdder)

学习Java的小姐姐

Java 并发编程 并发 synchronized Atomic

Week1命题作业

星河寒水

部署图 时序图 组件图 用例图

食堂就餐卡系统设计

慢慢来的比较快

架构师 week 1 作业一

iLeGeND

UML作业

王志祥

极客大学架构师训练营

食堂就餐卡系统设计

Linkin

第一周学习总结

Young

学习总结--Week1

吴炳华

极客大学架构师训练营

食堂就餐卡系统设计

Thrine

【架构思维学习】week01

chun1123

软件架构 UML

架构师如何做架构-开篇

铁血杰克

【架构思维-学习总结】week01

chun1123

学习 架构 思维方式

【架构师训练营】1 - 食堂就餐卡系统设计

悬浮

架构 UML 部署图

架构作业-UML图

铁血杰克

GitHub 热榜:轻量级无 Agent 的自动化运维平台!

JackTian

GitHub spug 运维自动化 开源项目 监控管理平台

诺亚(Noah)自适应流控-InfoQ