同步:阻塞式调用,调用方必须等待响应方执行完毕才会返回
例如:A接口调用B接口,B接口有内部的逻辑实现,再将B接口执行接口返回给A接口
1.大多数非异步场景(不用异步,就用同步来调用)
如:百度搜索,客户端同步调用服务端搜索接口,等待服务端实时结果
2.在编排的流程中,必须等待拿到响应结果才能做下一步操作,且在实时链路中相互之间有串联或关联数据的
如:电商中商品详情页的查询接口的内部实现
异步:非阻塞式调用,立即返回,调用方无需等待响应方返回实际结果,响应方会通过状态、通知或回调来告知调用方
异步调用场景:
- 1.耗时任务:主线程中提交耗时任务到线程池,然后通过Feture来异步获取任务执行结果,这里也可以由异步任务发消息等途径来通知主线程
- 2.电商下单链路的非核心链路调用:为了下单的性能考虑,将订单下发的发货仓库等非实时流程放在后续操作,提高下单的响应速度。如:这里交易系统通过消息自发自接等方式来驱动后续流程(其中核心链路,如:买家卖家信息(商品属性,买家时候有优惠券等)需要先行完成)