打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SAP PI - 同步 vs. 异步

SAP PI 同步 vs. 异步

处理可以定义为同步或者异步。

  • 同步处理通过请求/响应操作调用,处理的结果立刻通过操作返回给调用者。
  • 异步处理通过单方向的操作调用,结果和错误会通过另一个单向的操作调用。结果通过回调操作返回。

计算机的世界里没有异步通信,所有的两个系统之间的通信总是通过方法调用进行(请求/响应操作)。所以如何使其异步呢?答案是,在调用者和被调用者之间引入一个第三方的系统。

 假设存在两个系统——A和B。A与B之间所有的通信通过一个方法调用来进行,因此他们是同步的。我们在AB间引入一个第三方系统,称其为中间系统I。A和I之间的通信通过方法调用,I和B之间的通信也是通过方法调用进行。但是A和B之间的调用可以是异步的,因为A不需要等待来自B的响应。

这是异步通信的基本原理,那么什么是中间系统呢?答案是队列。A被称为调用者,B被称为接收者。来自于A的消息首先添加到队列中,接着它再次被从队列中拉出,并且发送给B。B的响应通过相同的方式返回给A。在某些情况下,业务需求要求消息按照以A触发的时顺序发送给B,这种情况下可以依据先进先出策略。如果没有这样的需求,则消息会以随机顺序从队列发送至B。

因此可以把消息通信分为三类:

  1. 同步的
  2. 异步且无序的
  3. 异步且有序的

在PI中,我们定义它们为:同步——BE(Best Effort),异步且无序的——EO(Exactly Once),异步且有序的(Exactly Once in Order)。

确认

确认是异步通信的基础,为什么?

对于同步通信,系统A调用系统B时,如果B发送响应失败,处理会失败。但是在异步通信中,系统A调用系统I并且系统I会调用系统B。所以假设A与I之间的通信成功,然而I和B之间的通信失败。A该怎样得知发送到B的过程失败了呢?它通过确认来实现,该确认通过消息从A到B相同的路由方式,反向发送给A。如果从B到A的确认没有成功抵达A,那么A会认为处理失败,并且再次发送消息。

当我们讨论PI中的异步的时候,我们会使用术语 'Exactly Once’ 来表示EO和EOIO。Exactly Onc的意思是一旦发送的消息不能再次发送。为了实现这一特性,每一个从A发往B的消息都会有一个确认。通信的终端是适配器,因此适配器必须支持确认。

所有适配器都提供系统确认(system-acknowledgment),比如发送确认。支持同步通信的适配器除了支持系统确认以外还支持应用确认。

所以在PI中存在着以下类型的确认:

  1. 系统确认——系统确认在运行期间使用,以确认异步消息已抵达接收者。
  2. 应用确认——应用确认用以确保异步消息成功地被接收者处理。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
青龙面板拉取常用脚本(JD签到)目前在维护的脚本更新(2021
天干地支在择时中的应用初探(pdf版)
电脑🖥️键盘上所有英文键的意思
二十四山立向线法大全
6个完全免费的录音转文字神器,让你事半功倍
视频制作师潘长宏制作的---【精美分隔线】
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服