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. 应用确认——应用确认用以确保异步消息成功地被接收者处理。
(0)

相关推荐

  • SAP Event Mesh 简介

    Get Started with Messaging for Decoupled Communication Step 1: What is the SAP Event Mesh service? S ...

  • 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端

    关于IO会涉及到阻塞.非阻塞.多路复用.同步.异步.BIO.NIO.AIO等几个知识点.知识点虽然不难但平常经常容易搞混,特此Mark下,与君共勉. 1 阻塞跟非阻塞 1.1 阻塞 阻塞IO 阻塞IO ...

  • 学用系列|同步与异步:线上学习中哪个更有效?

    随着我们深入到远程学习领域,课程设计者和讲师必须考虑完全采用虚拟学习的学生的独特需求.在规划未来数周和数月的工作时,教育工作者们正在努力解决一个中心问题:同步或异步学习对远程学习者是否更有效? 现在, ...

  • 直流与交流,同步与异步,有刷与无刷,32页内容了解电机的种类

    电动机的分类 按照电动机工作电源种类的划分: 电机可以分为直流电动机和交流电动机,直流电动机又可以分为无刷直流电动机和有刷直流电动机,其中有刷直流电动机可以分为永磁电动机和电磁直流电动机,交流电动机可 ...

  • 同步、异步、阻塞、非阻塞

    同步.异步.阻塞.非阻塞 目录 同步.异步.阻塞.非阻塞 1.同步 2.异步 3.同步与异步的区别 4.阻塞与非阻塞 5.阻塞非阻塞与同步异步的区别?(故事篇) 1.同步 所谓同步,就是发出一个功能调 ...

  • 程序猿 | wx.request()同步与异步问题(二)

    上文书说到,我们可以通过将依赖request返回结果的代码都放在其回调函数中,以克服JavaScript异步执行导致的代码执行顺序错乱问题.但是,其会导致代码的可读性差. Promise可以将异步的执 ...

  • 程序猿 | wx.request()同步与异步问题(一)

    但是,在开发过程中,我们可能会遇见一个异步导致的问题,即在wx.request()函数返回之前,程序就继续执行该函数之后的代码去了,等wx.request()函数返回时,代码都执行完了,返回的内容也就 ...

  • SAP PI架构

    SAP PI有着轮辐式结构,由中心和辐条组成:辐条连接外部系统,中心会在它们之间交换消息.源系统成为发送者系统,目标系统成为接收者系统.PI不是一个单独的组件,而是很多个可以根据集成场景灵活地一起工作 ...

  • SAP PI 适配器引擎

    SAP PI 适配器引擎 你一定已经发现,集成引擎只使用XML-SOAP协议处理消息.但是如果我们有一对发送和接收系统,它们的数据格式是不同的呢?这时我们使用适配器引擎中的不同的适配器来将XML和基于 ...

  • SAP PI 集成引擎

    SAP PI 集成引擎 集成引擎负责中央集成服务器服务,例如管线步骤:路由和映射.如果源消息结构和目标的消息结构不同,集成引擎调用Mapping Runtime,源结构会被转换成目标结构.Mappin ...