查看原文
其他

反应式架构研究

70号实验室 中国金融电脑+ 2022-12-13

15


星期二

2020年12月


基于反应式架构的背压机制,可确保系统不会因为业务压力过大而崩溃,为系统的可持续服务提供坚实保障。本文主要针对反应式架构的基本概念、优点及典型应用场景做了阐述分析。

导语

验“金”室


随着云计算、物联网、5G等技术的快速普及,线上业务呈现爆发式增长之势,如何保障线上系统可为客户提供持续性的服务显得尤为重要。通常情况下,当客户产生的请求速率不大于系统的处理能力时,系统可以正常运行。但是,随着业务持续发展以及客户数量的不断增多,当客户产生的请求速率超过系统最大处理能力时,来不及处理的请求会不断堆积并越来越多,最终可能会导致系统崩溃。此时就需要一种机制让客户知道目前产生的请求速率已经超过了系统所能承载的范围。


反应式架构的背压机制就是一种实时感知当生产者产生请求速率超过系统的处理能力时,告知生产者根据系统的处理能力去调整生产请求速率的一种机制。基于反应式架构的背压机制,可确保系统不会因为业务压力过大而崩溃,为系统的可持续服务提供坚实保障。目前,国外如Netflix、Paypal等企业均已在反应式架构领域开展了深入实践,并已经推出了相应的技术框架。同时,国内大型互联网公司如阿里、高德等也在企业内部落地了反应式架构,而且在QPS(每秒查询速率)和响应时间方面都取得了较大提升。   


 一、反应式架构的概念


理论上讲,反应式架构主要是通过消息、注册订阅等事件驱动来实现异步响应,之后再基于背压机制对进入系统的流量进行控制,确保系统始终能正常提供服务。基于上述技术特点,该架构可解决大多数基于同步模型构建的应用响应时间慢、性能容量不高等痛点问题,并有效提升网关、Web服务、微服务等I/O密集型系统的性能容量和高可用性,加快系统响应速度,增强各业务系统之间的故障隔离能力。一般而言,反应式架构主要具备即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)和消息驱动(Message Driven)等四大特性(如图1所示)。

即时响应性

指专注于提供快速而一致的响应机制,确立可靠的反馈上限,以提供一致的服务质量。

回弹性

指通过复制、遏制、隔离以及委托等方法,确保系统在出现失败时依然能够保持即时响应性,而任何不具备回弹性的系统都将在发生失败后丢失即时响应性。在此模式下,失败的扩散将被遏制在每个组件内部,与其他组件相互隔离,从而确保系统即使部分失效也不会危及整个系统,且能够独立恢复。

弹性

指系统在不断变化的工作负载之下依然能保持即时响应性,并可对输入的速率变化作出反应,比如增加或者减少用于某一类服务的资源。

消息驱动

指反应式系统凭借异步的消息传递机制,可确保松耦合、隔离、位置透明的组件之间有着明确边界。同时,非阻塞的通信使接收者可以只在活动时才消耗资源,从而减少系统开销。

图1 反应式架构特性


二、反应式架构的优点


1.采用异步非阻塞方式,提升系统性能容量

传统的分布式系统主要通过Http、Rpc的同步等待方式进行服务调用,而服务在I/O等待时不可避免地会占用系统资源,特别是诸如网关这类I/O密集型场景,由于较多线程的I/O等待会占用更多的系统资源,导致系统的性能容量大幅减低。对此,反应式架构基于异步非阻塞的消息通讯方式,可在系统架构层面较好地解决非运行态线程占用资源的问题,大幅提高系统的CPU资源利用率,进而提升系统的整体性能容量。反应式架构异步非阻塞原理如图2所示。


图2 反应式架构异步非阻塞原理


2.基于背压机制,增强系统可用性

在实际工作中,当业务压力超过系统所能承载的最大性能容量时,轻则导致系统整体响应速度变慢,重则将致使整个系统崩溃。因此为避免这种情况,通常会采用监控系统各节点CPU、内存等硬件资源使用率的方法,当监控指标超过预设的阈值,就会触发服务降级、熔断、限流等控制措施。


然而,这种方式虽然可以在一定程度上保障系统可用性,但却无法精确判断系统运行状态。例如,如果网关系统的线程池中存在大量线程阻塞,而此时系统的CPU、内存、网络却均无异常,但实际上网关系统已经无法再获取可用线程去处理新的请求。


针对这一情况,反应式架构将可通过背压的方式精确定位当前系统是否可用,并在业务压力达到系统最大性能容量之前,通过降级、熔断、限流等技术手段,确保进入系统的流量处于可承载范围之内。反应式架构背压机制原理如图3所示。


图3 反应式架构背压机制原理


三、反应式架构典型应用场景


1.微服务

随着金融科技的快速发展,金融线上业务的形态和体量均较以往发生了很大变化,金融机构的IT系统也开始逐步从传统的烟囱式架构向更轻量的微服务架构转变。但是,微服务架构往往存在调用量大、调用链路长、调用关系复杂等应用难点,一旦链路中的某个服务不可用,或将使整个链路的性能都受到影响,且考虑微服务架构基于同步模型的服务调用关系,使得其在故障隔离方面也存在一定难度。


对此,采用反应式架构将可以把微服务的同步阻塞模型转为异步非阻塞模型,不仅能大幅提升链路整体的响应速度,还可以提供更加优良的故障隔离能力。    


2.网关

当前,网关作为大多数金融系统处理客户请求、权限认证等非业务功能的核心组件,通常承载着较大的系统压力,同时其作为I/O密集型应用,其性能容量也大多由系统的I/O能力决定,因此往往很难充分发挥CPU性能。


对此,基于反应式架构将可以增加业务线程的并发度,减少I/O等待时间,进而有效提升CPU资源的利用率,以及网关系统可以承载的最大性能容量。


3.实时流处理

数字经济背景下,基于实时流的金融服务将可以为银行客户带来更加及时、流畅的服务体验。然而,由于实时流处理对数据和处理结果有着较高的实时性要求,当输入流的数据量超过了系统承载能力时,就可能因为负载过高而导致功能瘫痪。


对此,基于反应式架构的实时流处理系统,将能够有效提升系统的性能容量,同时基于反应式架构的背压机制,还可以有效增强系统弹性,确保系统在各种极端条件下也能正常提供服务。


往期推荐


强隐私安全技术——“零知识证明”的前世今生


浅析数字孪生技术


浅析前端页面渲染技术


浅谈以多方安全计算为代表的隐私计算技术


应用人工智能技术 打造人力资源自适应的网点管理新模式



FCC30+

长按左边二维码

关注我们不迷路


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存