概念
中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。 -- 维基百科
中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。
中间件的特点
- 中间件是软件,而且是一大类具有不同功能的软件,而不是一种具备某具体功能的软件
- 中间件是伴随着网络而应运而生的
- 中间件是应用软件与系统软件之间的“中介件”“介中软件”,起到支撑与连接作用
- 中间件不是开发工具,但它具有开发、管理和部署的功能
- 中间件是为应用软件服务的,应用软件是为最终用户服务的,最终用户并不直接使用中间件
- 中间件不是大众消费类软件产品,除非是一个行业内的专业人士,普通消费者是不会接触中间件的
- 在基础软件(操作系统、数据库、中间件)中,中间件是最不为人所了解的
中间件的作用
- 集成运行环境:中间件能够屏蔽、弥合底层运行环境中的差异性与异构性,确保整个系统在异构平台间能够稳定运行
- 提高开发效率:中间件能够提高开发效率,大幅缩短开发周期
- 软件质量:中间件能够明晰系统内的不同层级,对接不同的可插拔方式,从而保障软件的质量
- 节约成本:中间件可大幅节省应用系统内的系统资源,并减少运行成本
中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
常用中间件
- 路由与web服务器:处理和转发其他服务器通信数据的服务器。 如J2EE、WebLogic、Glassfish、JBoss、Apache Tomcat、Apache Geronimo
- RPC框架:微服务时代的远程服务调用框架。如RMI、Hessian、grpc、Thrift、HSF、Dubbo、SOFA-RPC
- 消息中间件:支持在分布式系统之间发送和接收消息的软件。 如Apache kafka、Apache RabbitMQ、NSQ、Apache RocketMQ、Apache ActiveMQ
- 缓存服务: 分布式的高速数据存储层,一般是内存存储。如Varnish、Ngnix、Squid、Memcache、Redis、Ehcache
- 配置中心:用来统一管理各个项目中所有配置的系统。如Spring Cloud Config、QConf、Nacos、Apollo、Disconf、diamond、lion、etcd、consul
- 分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如seata、DTF、JDTX
- 任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如SchedulerX、xxl-job、elastic-job、TSP、TBS、Quartz
- 数据库中间件:负责读写分离和分库分表操作的系统。如proxy实现的cobar、drds、mycat、mysql-proxy、atlas、sharing-sphere,smart-client实现的tddl、zebra、sharding-jdbc、zal