前段时间,在做深度学习训练平台时有用到RocketMQ这个分布式消息中间件, 自己对中间件(Middleware)基础概念还不是很清晰, 这里记录学习下。
百度百科上的描述:
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能), 衔接网络上应用系统的各个部分或不同的应用, 能够达到资源共享,功能共享的目的。
定义: 中间件是一种独立的系统软件服务程序, 分布式应用软件借助这种软件在不同的技术之间共享资源, 中间件位于客户机服务器的操作系统之上管理计算资源和网络通信。
中间件 = 平台 + 通信
中间件(基本功能)提供 1. 通信支持, 2. 应用支持, 3.公共服务
中间件(基本分类)有 1. 事务式中间件 2,过程式中间件 3,面向消息的中间件 4,面向对象的中间件 5, Web应用服务器 6,其他
个人理解:
将具体业务和底层逻辑解耦的组件。大致的效果是:
需要利用服务的人(前端写业务的),不需要知道底层逻辑(提供服务的)的具体实现,只要拿着中间件结果来用就好了。举个例子:
我开了一家炸鸡店(业务端),然而周边有太多屠鸡场(底层),为了成本我肯定想一个个比价,再综合质量挑选一家屠鸡场合作(适配不同底层逻辑)。由于市场变化,合作一段时间后,或许性价比最高的屠鸡场就不是我最开始选的了,我又要重新和另一家屠鸡场合作,进货方式、交易方式等等全都要重来一套(重新适配)。然而我只想好好做炸鸡,有性价比高的肉送来就行。于是我找到了一个专门整合屠鸡场资源的第三方代理(中间件),跟他谈好价格和质量后(统一接口),从今天开始,我就只需要给代理钱,然后拿肉就行。代理负责保证肉的质量,至于如何根据实际性价比,选择不同的屠鸡场,那就是代理做的事了。
中间件用于解决共性凝练和复用
Reference