同步或异步通信是哪一个?又为什么呢?

时间:2018-08-07 12:12:18

标签: web-services asynchronous web microservices synchronous

对于给定场景的两种通信我感到困惑。我觉得每个列表项都可以是同步通信。

  • 订购服务,呼叫运输服务以继续进行运输。

    • 用户从用户界面(UI)服务购买商品导致 调用订单服务。
    • 用户界面(UI)服务调用目录服务以获取信息 关于它需要呈现的所有项目。

2 个答案:

答案 0 :(得分:1)

这三个示例由于原因和结果(调用和响应)而提示响应时,将被视为异步。尽管所有这三种可能同时发生,但它们本身并不同步。

同步通信同时发生,就像两个人在线编辑同一文档一样。每个编辑器都可以同时读取和写入,但不会以任何方式打断另一个。

同步通信的最佳示例是电话对话。所有连接的方可以同时听到(接收)和讲话(发送),尽管人类很难同时执行这两项操作,但电话连接本身并没有困难地同时提供这两项功能。

异步行为就像双向无线电。您必须停止发送才能接收。

答案 1 :(得分:0)

同步 =同步

  • 发送方等待接收方的响应以继续进行进一步的操作。

  • 发送方和接收方都应处于活动状态。

  • 发送方将数据发送到接收方,因为它需要立即响应才能继续处理。

  • 当您同步执行某项操作时,您需要等待其完成才能继续执行其他任务。

异步 =不同步

  • 发件人不等待接收方的响应

  • 接收器可能处于非活动状态。

  • 一旦接收器处于活动状态,它将接收并处理。

  • 发件人将数据放入消息队列中,不需要立即响应即可继续处理。

  • 异步执行某些操作时,可以在完成另一任务之前继续进行。

以您为例,

目录服务<-UI->订单服务->发货服务

1)UI必须从目录服务中获取项目详细信息(同步,因为它立即需要项目)

2)一旦选择了所有项目,UI必须调用Order服务。(同步/异步,取决于用户操作)

  • 用户可以添加购物车以备将来使用(或)添加到收藏夹(或)中以立即处理订单。

3)一旦所有商品都存在于购物车集合中,它就必须调用shipmentService。 (异步)

  • 付款应该是同步的。您需要确认。

  • 假设所有付款和其他工作都完成了,它将调用货运服务

  • 交付是异步的,因为它无法立即得到确认。可能需要2天的延迟时间。