哪一个是同步通信或异步通信?为啥?
Posted
技术标签:
【中文标题】哪一个是同步通信或异步通信?为啥?【英文标题】:Which one is synchronous or asynchronous communication ? And Why?哪一个是同步通信或异步通信?为什么? 【发布时间】:2019-01-14 12:40:34 【问题描述】:我对给定场景的两种通信都感到困惑。我觉得每个列表项都可以是同步通信。
订单服务调用运输服务进行运输。
用户从用户界面 (UI) 服务购买项目导致 调用订单服务。 用户界面 (UI) 服务调用目录服务以获取信息 关于它需要渲染的所有项目。【问题讨论】:
【参考方案1】:同步 = 同步
发送方等待接收方的响应以继续进行。
发送方和接收方都应处于活动状态。
发送方向接收方发送数据,因为它需要立即响应才能继续处理。
当您同步执行某项任务时,您会等待它完成,然后再继续执行其他任务。
异步 = 不同步
发送方不等待接收方的响应
接收器可能处于非活动状态。
一旦 Receiver 处于活动状态,它将接收并处理。
发送方将数据放入消息队列中,不需要立即响应即可继续处理。
当您异步执行某项任务时,您可以在它完成之前继续执行另一个任务。
就你而言,
目录服务 订单服务 --> 发货服务
1) UI 必须从目录服务中获取项目详细信息(同步,因为它立即需要项目)
2) 一旦选择了所有项目,UI 必须调用 Order 服务。(同步/异步,取决于用户操作)
用户可以添加购物车以备将来使用(或)收藏夹(或)以立即处理订单。3) 一旦购物车集合中存在所有商品,它必须调用 shippingService。 (异步)
付款应该是同步的。您需要确认。
假设所有付款和其他事情都完成,它会调用发货服务
交付是异步的,因为它不能立即得到确认。可能需要 2 天的延迟等。
【讨论】:
【参考方案2】:所有三个示例都将被视为异步,因为它们会根据因果关系提示响应 - 调用和响应。虽然所有这三个都可能同时发生,但它们本身并不是同步的。
同步通信同时发生,就像两个人在线编辑同一个文档一样。每个编辑器同时读写,但不会以任何方式打断对方。
同步通信的最佳示例是电话交谈。所有连接方可以同时听到(接收)和说话(发送),虽然人类很难同时执行这两种操作,但电话连接本身可以同时提供这两种操作。
异步就像一个双向收音机。您必须停止传输才能接收。
【讨论】:
以上是关于哪一个是同步通信或异步通信?为啥?的主要内容,如果未能解决你的问题,请参考以下文章