架构设计 | 异步处理流程,多种实现模式详解
本文源码: GitHub·点这里 || GitEE·点这里 一、异步处理 1、异步概念 异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。 必须强调一个基础逻辑,异步是一种设计理念,异步操作不等于多线程,MQ中间件,或者消息广播,这些是可以实现异步处理的方式。 同步处理和异步处理相对,需要实时处理并响应,一旦超过时间会结束会话,在该过程中调用方一直在等待响应方处理完成并返回。同步类似电话沟通,需要实时对话,异步则类似短信交流,发送消息之后无需保持等待状态。 2、异步处理优点 虽然异步处理不能实时响应,但是处理复杂业务场景,多数情况都会使用异步处理。 异步可以解耦业务间的流程关联,降低耦合度; 降低接口响应时间,例如用户注册,异步生成相关信息表; 异步可以提高系统性能,提升吞吐量; 流量削峰即把请求先承接下来,然后在异步处理; 异步用在不同服务间,可以隔离服务,避免雪崩; 异步处理的实现方式有很多种,常见多线程,消息中间件,发布订阅的广播模式,其根据逻辑在于先把请求承接下来,放入容器中,在从容器中把请求取出,统一调度处理。 注意 :一定要监控任务是否产生积压过度情况,任务如果积压到雪崩之势的地步,你会感觉每一片雪花都想勇闯天涯。 3、异步处理模式 异步流程处理的实现有好多方式,但是实际开发中常用的就那么几种,例如: 基于接口异步响应