同步:阻塞式调用,调用方必须等待响应方执行完毕才会返回

例如:A接口调用B接口,B接口有内部的逻辑实现,再将B接口执行接口返回给A接口
线程-----同步异步,阻塞非阻塞

1.大多数非异步场景(不用异步,就用同步来调用)

如:百度搜索,客户端同步调用服务端搜索接口,等待服务端实时结果

2.在编排的流程中,必须等待拿到响应结果才能做下一步操作,且在实时链路中相互之间有串联或关联数据的

如:电商中商品详情页的查询接口的内部实现

异步:非阻塞式调用,立即返回,调用方无需等待响应方返回实际结果,响应方会通过状态、通知或回调来告知调用方

线程-----同步异步,阻塞非阻塞

异步调用场景:

  • 1.耗时任务:主线程中提交耗时任务到线程池,然后通过Feture来异步获取任务执行结果,这里也可以由异步任务发消息等途径来通知主线程
    线程-----同步异步,阻塞非阻塞
  • 2.电商下单链路的非核心链路调用:为了下单的性能考虑,将订单下发的发货仓库等非实时流程放在后续操作,提高下单的响应速度。如:这里交易系统通过消息自发自接等方式来驱动后续流程(其中核心链路,如:买家卖家信息(商品属性,买家时候有优惠券等)需要先行完成)

同步异步对比

线程-----同步异步,阻塞非阻塞

阻塞:调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回(ServerSocket在调用accept()时,线程会被悬挂,直到被**,才会继续执行后面的代码)

线程-----同步异步,阻塞非阻塞

非阻塞:非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程,而会立刻返回

线程-----同步异步,阻塞非阻塞

如何理解同步,非同步

线程-----同步异步,阻塞非阻塞

相关文章: