Proanimer-My personal website.

’中间件'


’中间件'

中间件

最近接触到了一些关于中间件尤其是通信中间件的东西,所以这里整理一些学习的东西.

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。

中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。

具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。

知道大致概念后,由于我想学习的是关于通信中间件的一些东西,这里学一些关于通信的东西.

这里首先理清楚RPC,HTTP和socket以及发布订阅等这些常用的通信机制的概念与区别.事实上我之前并没有仔细深入学习过这些东西,但在学其他东西的时候经常看见RPC、发布订阅这些词,感觉这些知识更新换代的速度没那么快,不像前端一样…

RPC

Basic mechanism of RPC (Remote Procedure Call) is as follows.

  1. Map functions with unique function names.
  2. Serialize function name and arguments that are used to execute function in remote side
  3. Transfer serialized data to the remote node
  4. In the remote side, deserialize data.
  5. Execute requested function with deserialized function arguments.

1、RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销。

2、RPC框架一般都有注册中心,有丰富的监控管理。发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作协议私密,安全性较高

3、RPC 协议更简单内容更小,效率更高,服务化架构、服务化治理,RPC框架是一个强力的支撑。

DDS

DDS 是 OMG 组织发布的一种中间件协议和 API 标准,它将系统的组件集成在一起,提供业务和任务关键型物联网 (IoT) 应用程序所需的低延迟数据连接、极高的可靠性和可扩展架构。

DDS(Data Distribution Service,数据分发服务) 是一种以数据为中心的通信协议,用于分布式软件应用程序通信。

它描述了支持 数据提供者(Data Providers)数据消费者(Data Consumers) 之间通信的通信应用程序编程接口 (API) 和通信语义。

要学习 DDS 就不能忽略它的模型:DCPS(以数据为中心的发布订阅模型)。

DCPS 有 3 个关键实体:

  1. publication entities: 定义消息生成对象及相关属性
  2. subscription entities:定义消息消费对象及相关属性
  3. configuration entities:定义传输相关的属性如 Topic 类型,通信的 QoS(服务质量)。

QoS 是一个非常重要的概念,DDS 使用 QoS 来定义 DDS 实体的行为特征。 QoS 由单独的 QoS 策略(源自 QoSPolicy 的类型的对象)组成.

参考资料

  1. 什么是中间件?常见中间件有哪些? (biancheng.net)
  2. 什么是中间件? | IBM
  3. [通信中间件 Fast DDS 基础概念简述与通信示例 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/496135043#:~:text=Topic (话题)%3A它是绑定发布和订阅的实体。 它在 DDS 域中是唯一的。,通过TopicDescription,它允许发布和订阅数据类型的统一。 Domain (领域)%3A这是用于链接所有发布者和订阅者的概念,属于一个或多个应用程序,它们在不同主题下交换数据。 这些参与域的单个应用程序称为 DomainParticipant。)