中间件是什么?如何解释比较通俗易懂? - 知乎

分享阿里工程师对于中间件的理解。

(点击头像关注我们,后续解锁更多阿里工程师一线技术实战干货)

中间件一词的由来

中间件这个术语第一次出现是 1968 年在德国加尔米施帕滕基兴举办的 [NATO 软件工程大会](http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF) 结束后发表的一份报告中。

这届大会正式确定了软件工程(Software Engineering)的概念,同时还探讨了软件设计、生产和分发等主题。

中间件的定义

中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。 -- 维基百科

什么不是中间件

我们按照类别来看一些经常会遇到的一些不是中间件的概念

- 业务平台不是中间件,业务平台是从服务的视角抽象的能同时支撑多个业务,业务之间的信息能形成交互和增强的平台。

- 营销工具不是中间件,营销工具是直接作用于最终消费者用户的软件或者插件服务。

- 二方/三方工具包不是中间件,二方/三方工具包是在各种场景的程序开发过程中沉淀的一些常用工具类(功能)的集合,包含于软件代码本身。

- SaaS 不是中间件,SaaS(Software as a Service) 更多的是一种软件交付模式,无需用户安装,通过网络在线访问的一种服务模式。

- PaaS 不是中间件,PaaS(Platform as a Service) 将软件研发的平台做为一种服务,提供软件部署平台(强调的是屏蔽系统和软件细节的runtime平台)。

评判关键

从定义可以总结出评判的几个地方

1. 性质:中间件是软件。

2. 作用层级:系统软件和应用软件之间、软件各部件之间;管理客户机与系统软件之间的计算资源和网络通信。

3. 服务对象:中间件为应用软件服务,应用软件为最终用户服务,最终用户并不直接使用中间件。

中间件的好处

中间件能给客户带来什么?

为上层应用软件的开发提供便捷的、开箱即用的服务交互和计算的能力,缩短开发周期;屏蔽底层runtime的差异;节省应用本身的系统资源,减少运行成本。

中间件分类

什么时候使用中间件

基于中间件的定义我们知道中间件是连接软件与系统之间的服务,那么我们什么时候使用了中间件,在哪些地方用到了中间件了。我们不妨假设一个http请求过程来窥视一番。

当你在浏览器中输入一个网址时,它会通过 DNS 解析到目标服务注册的公网IP地址

请求到达目标服务的 web 反向代理服务器 Tengine 之后,经过一定的过滤转发到目标服务A上

服务A通过 RPC框架 Dubbo 请求服务B的结果做中间计算,并且从 Tair 缓存中读取计算因子,计算结果

服务A接着使用 Druid 通过 TDDL 写入计算结果到 MySQL Master 节点然后返回结果

异步过程中 Canal 通过模拟 Binlog 主从复制的原理,迅速将这条 Binlog 消费并下发到消息队列 RocketMQ

服务C通过 RocketMQ 消费到事件之后,通过配置中心 ConfigServer 拉取到的策略进行对应策略的事件处理。

这个过程中我们使用了一系列的中间件来协同各个微服务完成整个流程,如web反向代理服务器 Tengine、RPC框架 Dubbo、缓存 Tair、连接池 Driud、数据库代理层 TDDL、Binlog 同步工具 Canal、消息队列 RocketMQ、配置中心 ConfigServer。

常用基础中间件

- 路由与web服务器:处理和转发其他服务器通信数据的服务器。 如被业界广泛使用的阿里基于 Nginx 研发的 Tengine、阿里内部的集中式路由服务 VipServer

- RPC框架:微服务时代的远程服务调用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC

- 消息中间件:支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ

- 缓存服务: 分布式的高速数据存储层,一般是内存存储。如 阿里 Tair,业界的 Redis, Memcached, Ehcache

- 配置中心:用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf

- 分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF

- 任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP

- 数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。

中间件云产品

随着云时代的到来,大量公司的业务向云上迁移;为了云上客户能够便捷的使用稳定高效的中间件能力,云厂商开始将自身沉淀的基础中间件能力云化,用于支撑各个云上客户和自身业务的快速生长。

依托于阿里云,阿里中间件也孵化了一大批高可用高性能高并发的中间件产品,它们都历经阿里各种复杂业务的锤炼。

例如:用于帮助企业级客户轻松构建并托管分布式应用服务的 [EDAS]

企业级分布式应用服务 EDAS 产品简介 | 阿里云文档中心​www.alibabacloud.com

加密安全的对象存储 [OSS]

对象存储 OSS 产品简介 | 阿里云文档中心​www.alibabacloud.com

阿里云商用的专业消息中间件 [ONS]

消息队列RocketMQ版 产品简介 | 阿里云文档中心​www.alibabacloud.com

阿里巴巴自主研发的分布式数据库产品 [DRDS]

分布式关系型数据库 DRDS 产品简介 | 阿里云文档中心​www.alibabacloud.com

端到端一体化实时监控解决方案 [ARMS]

应用实时监控服务ARMS 产品简介 | 阿里云文档中心​www.alibabacloud.com

——————————————————————————————————————

阿里巴巴集团淘系技术部官方账号。淘系技术部是阿里巴巴新零售技术的王牌军,支撑淘宝、天猫核心电商以及淘宝直播、闲鱼、躺平、阿里汽车、阿里房产等创新业务,服务9亿用户,赋能各行业1000万商家。我们打造了全球领先的线上新零售技术平台,并作为核心技术团队保障了11次双十一购物狂欢节的成功。

点击下方主页关注我们,你将收获更多来自阿里一线工程师的技术实战技巧&成长经历心得。另,不定期更新最新岗位招聘信息和简历内推通道,欢迎各位以最短路径加入我们。

阿里巴巴淘系技术​www.zhihu.com图标


原网址: 访问
创建于: 2021-05-12 16:21:44
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论