它是一种概念。
中间件是什么?
引用维基百科上的解释:
中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。
最早,是指介于操作系统和业务应用程序之间,利用操作系统的能力, 为一个或者多个应用程序提供基础服务的软件,比如 Mysql
随着发展,中间件涵盖了从 Web 服务器,到身份验证系统,再到消息传递工具等一切内容,即在操作系统、网络、数据库之上,业务系统之下将具体业务和底层逻辑解耦的组件,中间件的概念变得越来越模糊,已经逐渐成为了一种概念
中间件解决了什么问题?
为上层应用软件的开发提供便捷的、开箱即用的服务交互和计算的能力,缩短开发周期;屏蔽底层runtime的差异;节省应用本身的系统资源,减少运行成本。
一些常见的中间件
- 路由与web服务器:处理和转发其他服务器通信数据的服务器。 如 Nginx
- RPC框架:微服务时代的远程服务调用框架。如 grpc
- 消息中间件:支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, Apache RocketMQ
- 缓存服务: 分布式的高速数据存储层,一般是内存存储。如 Redis, Memcached, Ehcache
- 配置中心:用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf
- 分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF
- 任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP
- 数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。
参考
Q.E.D.