0%

中间件

前段时间,在做深度学习训练平台时有用到RocketMQ这个分布式消息中间件, 自己对中间件(Middleware)基础概念还不是很清晰, 这里记录学习下。

百度百科上的描述:

中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能), 衔接网络上应用系统的各个部分或不同的应用, 能够达到资源共享,功能共享的目的。

定义: 中间件是一种独立的系统软件服务程序, 分布式应用软件借助这种软件在不同的技术之间共享资源, 中间件位于客户机服务器的操作系统之上管理计算资源和网络通信。

中间件 = 平台 + 通信

中间件(基本功能)提供 1. 通信支持, 2. 应用支持, 3.公共服务

中间件(基本分类)有 1. 事务式中间件 2,过程式中间件 3,面向消息的中间件 4,面向对象的中间件 5, Web应用服务器 6,其他

知乎Gocy大佬的通俗性解释

个人理解:
将具体业务和底层逻辑解耦的组件。

大致的效果是:
需要利用服务的人(前端写业务的),不需要知道底层逻辑(提供服务的)的具体实现,只要拿着中间件结果来用就好了。

举个例子:
我开了一家炸鸡店(业务端),然而周边有太多屠鸡场(底层),为了成本我肯定想一个个比价,再综合质量挑选一家屠鸡场合作(适配不同底层逻辑)。由于市场变化,合作一段时间后,或许性价比最高的屠鸡场就不是我最开始选的了,我又要重新和另一家屠鸡场合作,进货方式、交易方式等等全都要重来一套(重新适配)。

然而我只想好好做炸鸡,有性价比高的肉送来就行。于是我找到了一个专门整合屠鸡场资源的第三方代理(中间件),跟他谈好价格和质量后(统一接口),从今天开始,我就只需要给代理钱,然后拿肉就行。代理负责保证肉的质量,至于如何根据实际性价比,选择不同的屠鸡场,那就是代理做的事了。

链接:https://www.zhihu.com/question/19730582/answer/140527549

知乎小傅哥的解答

中间件用于解决共性凝练和复用

Reference

  1. https://www.redhat.com/zh/topics/middleware/what-is-middleware
  2. https://baike.baidu.com/item/%E4%B8%AD%E9%97%B4%E4%BB%B6/452240
  3. https://www.zhihu.com/question/19730582