文章目录一、什么是中间件二、为什么要求中间件?1. 直接开发的痛点2. 中间件的价值三、中间件克服了哪些问题?四、中间件的常见分类1、通信类中间件2、消息中间件3、数据访问中间件4、缓存中间件5、服务治理中间件6、网关中间件五、中间件与框架的区别六、中间件与服务器的区别七、中间件在架构中的位置传统三层架构引入中间件后的现代架构八、中间件的典型应用场景1、高并发系统2、微服务架构3、分布式系统九、中间件的挑战与代价十、如何看待中间件?
一、什么是中间件在现代软件系统中,尤其是互联网和分布式系统领域,“中间件”是一个被频繁提及但又容易被误解的概念。 那么,中间件到底是什么?它和框架、服务器有什么区别?为什么系统离不开中间件?
中间件(Middleware),是位于操作系统 / 基础设施与业务应用程序之间的一类软件,用于为应用提供通用能力和基础服务。
因此
中间件是“为应用服务的公共基础设施软件”。
从逻辑层次上看关系如下:
二、为什么需要中间件?1. 直接开发的痛点倘若没有中间件,应用程序应该自己处理:
网络通信并发与线程管理数据持久化事务控制消息传递服务发现安全认证容错与重试这些能力:
技术复杂与业务无关重复造轮子2. 中间件的价值中间件的核心价值在于:
抽象复杂性复用通用能力提升系统稳定性支撑大规模分布式系统三、中间件解除了哪些疑问?中间件通常提供以下能力:
能力说明通信RPC、HTTP、消息解耦异步、削峰、模块隔离扩展性横向扩容高可用主从、集群容错重试、降级性能缓存、连接池安全鉴权、限流四、中间件的常见分类1、通信类中间件用于架构之间的通信。
常见类型:
RPC 框架HTTP 网关示例:
DubbogRPCSpring Cloud OpenFeign2、消息中间件用于异步通信和框架解耦。
作用:
削峰填谷解耦生产者和消费者异步处理示例:
KafkaRabbitMQRocketMQActiveMQ3、数据访问中间件屏蔽底层数据源复杂性。
示例:
MyBatisHibernate数据库连接池(HikariCP、Druid)4、缓存中间件提升系统性能,减轻数据库压力。
示例:
RedisMemcached5、服务治理中间件用于微服务架构中的治理能力。
能力包括:
服务注册与发现负载均衡熔断限流配置管理示例:
NacosEurekaConsulSentinel6、网关中间件统一系统入口。
能力:
路由鉴权限流灰度发布示例:
Spring Cloud GatewayNginxKong五、中间件与框架的区别对比中间件框架位置系统基础设施层应用内部是否独立部署通常是否服务对象多个应用单个应用例子Redis、KafkaSpring 轻松区分:
中间件是“系统级能力”,框架是“应用级能力”。
六、中间件与服务器的区别对比中间件服务器关注点通用能力资源管理示例MQ、缓存Web 服务器关系运行在服务器之上提供运行环境七、中间件在架构中的位置传统三层架构
表示层
业务层
数据层
引入中间件后的现代架构
八、中间件的典型应用场景1、高并发系统使用缓存中间件提升性能使用消息中间件削峰2、微服务架构服务注册发现统一配置熔断限流3、分布式系统分布式事务分布式锁分布式协调九、中间件的挑战与代价⚠️ 并非“用了就好”引入中间件意味着:
成本说明运维复杂应该部署、监控学习成本技术栈变多网络开销增加一次调用依赖风险中间件本身也可能故障 中间件是“用复杂性换稳定性和扩展性”。
十、如何看待中间件?对开发者而言:
提升编写效率减少重复工作更关注业务本身对架构而言:
是架构扩展的基石是高可用、高并发的前提中间件是连接应用与基础设施的“桥梁”,是现代软件架构不可或缺的组成部分。
参考资料
什么是中间件 (Middleware)? | IBM
中间件-百度百科