Java如何实现异步处理_架构设计 | 异步处理流程,多种实现模式详解

一、异步处理

1、异步概念

异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。

必须强调一个基础逻辑,异步是一种设计理念,异步操作不等于多线程,MQ中间件,或者消息广播,这些是可以实现异步处理的方式。

同步处理和异步处理相对,需要实时处理并响应,一旦超过时间会结束会话,在该过程中调用方一直在等待响应方处理完成并返回。同步类似电话沟通,需要实时对话,异步则类似短信交流,发送消息之后无需保持等待状态。

2、异步处理优点

虽然异步处理不能实时响应,但是处理复杂业务场景,多数情况都会使用异步处理。

异步可以解耦业务间的流程关联,降低耦合度;

降低接口响应时间,例如用户注册,异步生成相关信息表;

异步可以提高系统性能,提升吞吐量;

流量削峰即把请求先承接下来,然后在异步处理;

异步用在不同服务间,可以隔离服务,避免雪崩;

异步处理的实现方式有很多种,常见多线程,消息中间件,发布订阅的广播模式,其根据逻辑在于先把请求承接下来,放入容器中,在从容器中把请求取出,统一调度处理。

注意:一定要监控任务是否产生积压过度情况,任务如果积压到雪崩之势的地步,你会感觉每一片雪花都想勇闯天涯。

3、异步处理模式

异步流程处理的实现有好多方式,但是实际开发中常用的就那么几种,例如:

基于接口异步响应,常用在第三方对接流程;

基于消息生产和消费模式,解耦复杂流程;

基于发布和订阅的广播模式,常见系统通知

异步适用的业务场景,对数据强一致性的要求不高,异步处理的数据更多时候追求的是最终一致性。

二、接口响应异步

1、流程描述

基于接口异步响应的方式,有一个本地业务服务,第三方接口服务,流程如下:

a0f1cf6136a0fde07aef8c3bd47e8280.png

本地服务发起请求,调用第三方服务接口;

请求包含业务参数,和成功或失败的回调地址;

第三方服务实时响应流水号,作为该调用的标识;

之后第三方服务处理请求,得到最终处理结果;

如果处理成功,回调本地服务的成功通知接口;

如果处理失败,回调本地服务的失败通知接口;

整个流程基于部分异步和部分实时的模式,完整处理;

注意:如果本地服务多次请求第三方服务,需要根据流水号判断该请求的状态,业务的状

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值