一文读懂中间件

发布日期: 2023-01-12     阅读: 1151    点赞: 0

什么是中间件?

中间件是为应用提供通用服务和能力的软件。帮助开发者和运维人员更高效地构建和部署应用程序。 中间件就像连接应用程序、数据和用户之间的桥梁/纽带。

中间件没有标准统一的定义,但确有以下共同的特点:

  • 中间件充当于不同技术、工具、数据库之间的桥梁/纽带
  • 中间件可以帮助开发人员更有效地构建应用
  • 对于具有多云和容器化环境的企业而言,中间件可以帮助其大规模、经济高效地开发和运行应用

中间件简史

中间件这个术语第一次出现在1968年在德国加尔米施帕腾基兴举办的“NATO软件工程大会”结束后发表的一份报告中。这届大会正式确定了“软件工程”的概念,同时还讨论了软件设计、生产和分发等主题。

在中间件于1980年代流行起来之前,它最初是作为新应用程序与旧式系统之间的桥梁。开发人员最初使用中间件将新程序与早期系统集成,而无需重写早期代码。而当前的中间件已经成为分布式系统中重要的通信和数据管理工具

中间件的作用

"中间件"是软件工程学中的重要概念,它的主要作用为:

开发人员使用中间件为应用程序开发提供支持,并简化设计流程,使其将重点工作放在业务逻辑和功能上,而不是不同软件组件之间的连接性(组装)上子系统/组件之间的连接由中间件完成

如果没有中间件会怎样?

如果没有中间件,开发人员必须为连接到应用程序的每个软件组件构建一个数据交换模块。这项工作很有挑战性,因为现代化应用程序包含多个相互通信的微服务或小型软件组件。(编写数据交换模块工作量大,可修改性、维护性较差)

中间件在各领域的应用案例

graph LR 中间件应用案例--> 游戏("游戏") 游戏--> xi["中间件为游戏引擎,要使游戏正常运行,软件必须与各种图像、
音频和视频服务器以及通信系统进行通信。
游戏引擎可以促进这种通信,并使游戏开发更加高效。"] 中间件应用案例--> 电子(电子) 电子--> 电子描述2("使用中间件将各种类型的传感器与其控制器集成起来。
中间件层允许传感器通过通用消息收发框架与控制器通信。") 中间件应用案例--> 软件开发(软件开发) 软件开发--> 描述3["软件开发人员使用中间件将不同软件组件集成到其他应用程序中,
中间件可以提供标准应用程序编程接口(API),
用于管理来自组件所需数据的输入和输出与组件的内部链接
对用户是隐藏的。开发人员使用API从软件组件请求他们需要的服务"] 中间件应用案例--> 数据传输(数据传输) 数据传输--> 数据传输描述("软件应用程序使用中间件可靠地发送和接收数据流。
数据流是连续数据的高速传输。
它们对于可靠的视频和音频流传输非常重要。") 中间件应用案例--> 分布式应用程序(分布式应用程序) 分布式应用程序--> 描述4["分布式应用程序是在网络上的不同计算机上运行的软件程序。
它们通常由前端和后端应用程序组成。
前端应用程序是您在计算机或移动设备上使用的软件,
如社交媒体应用程序。相比之下,
后端应用程序是执行数据处理、业务逻辑和资源管理任务的软件程序。
中间件在前端和后端应用程序之间进行通信,以使分布式应用程序得以顺利运行。"]

中间件分类

广义上讲,中间件涵盖了从Web服务器,到身份验证系统,再到消息传递工具等一切内容。以下为现代化开发中常见的中间件用例。

graph LR 中间件用例分类--> 新应用开发(新应用开发) 新应用开发--> 描述1["中间件可支持各种用例的现代常用运行时环境。
开发人员和架构师可以安装基本运行时、框架和编程语言,
跨平台敏捷地工作,中间件还可以提供常用功能,
例如Web服务器、单点登录(SSO)、消息传递和内存缓存。"] 中间件用例分类--> 优化现有应用(优化现有应用) 优化现有应用--> 描述2["中间件可帮助开发人员将传统单体式应用转换为云原生应用,
从而以更高的性能和更强的可移植性让有价值的工具焕发新生。"] 中间件用例分类--> 全面集成(全面集成) 全面集成--> 描述3["中间件集成工具连接了关键的内部和外部系统。
转换、连接、组合和企业消息传递等集成功能与SSO
身份验证相结合,使开发人员可以更轻松地在不同应用之间
扩展功能。"] 中间件用例分类--> API("应用编程接口(API)") API--> 描述4("许多中间件服务都是通过API访问的,
API是一组允许应用之间相互通信的工具、定义和
协议的集合。正是借助API,才有可能通过公共层连接完全不同的
产品和服务。") 中间件用例分类--> DataFlow(数据流) DataFlow--> 描述5("API是在应用之间共享数据的方法之一,另一种方法是异步
数据流。这种方法是在中间存储中复制数据集,
其中的数据可在多个应用之间共享。Apache Kafka
是一款常见的用于实时数据流的开源中间件工具") 中间件用例分类--> AIBAuto(智能业务自动化) AIBAuto--> AIBAutoDesc["中间件可以帮助开发人员、架构师、IT和业务主管
将手动决策自动化。自动化可以改善资源管理和整体效率。"]

中间件在应用中扮演的角色

现代业务应用可以在本地或跨云端大规模运行。为了构建这些应用,开发人员需要一种具备统一基础功能的应用环境中间件正是打造这种环境的关键

这些基础功能可分为如下四层、外加相应的工具(中间件配套工具)

graph LR 中间件扮演角色--> 容器层(容器层) 容器层--> 描述1["中间件的这一层将以统一的方式管理
应用生命周期的交付。 它提供带有CI/CD的DevOps能力、
容器管理功能以及服务网格功能。"] 中间件扮演角色--> 运行时层(运行时层) 运行时层--> 描述2["该层包含了自定义代码的执行环境。
中间件可以为高度分布式云环境(例如微服务)、
内存中缓存(用于快速访问数据)和消息传递
(用于快速数据传输)提供轻量级运行时和框架。"] 中间件扮演角色--> 集成层(集成层) 集成层--> 描述3["集成中间件可提供相关服务,以通过消息传递、
集成和API来连接自定义与购买的应用及SaaS资产,
从而形成功能正常的系统。此外,它还可以
提供内存数据库和数据缓存服务、数据/事件流以及
API管理功能"] 中间件扮演角色--> 流程自动化和决策管理层(流程自动化和决策管理层) 流程自动化和决策管理层--> 描述4["这是开发中间件的最后一层,旨在强化关键智能,
实现优化和自动化,以及加强决策管理。"] 中间件扮演角色--> 工具(配套工具) 工具--> 描述5["除了上述四层中间件之外,还有相应的应用开发工具。
它允许团队使用预设的模板和容器来构建应用,
并促进了有效的代码共享和联合开发。
这些工具可在本地和云端提供连贯一致的应用开发和
交付体验。"]

PS:以上信息参考自Redhat及AWS关于中间件的介绍文档。