【一】常用中间件及用处

Java 生态中常用的中间件覆盖数据存储、消息通信、服务治理、缓存、分布式协调等核心场景,是构建高可用、高性能分布式系统的基础。以下按功能分类梳理主流中间件、核心用途及典型应用场景,附技术选型建议:

一、数据存储中间件

1、关系型数据库

中间件 核心用途 典型场景 特点
MySQL 结构化数据存储、事务一致性 订单系统、用户中心、财务系统 开源免费、社区成熟,支持主从复制 / 分库分表,是 Java 后端标配
PostgreSQL 复杂 SQL、JSON 支持、地理信息 数据分析、物联网、企业级应用 功能全面(媲美商用数据库),兼容性强,对 Java 生态友好
Oracle 高可用、高并发企业级存储 金融核心系统、大型 ERP 商用收费,稳定性极强,支持分布式事务

2、非关系型数据集

中间件 核心用途 典型场景 特点
Redis 缓存、分布式锁、计数器、限流 热点数据缓存、秒杀库存、分布式锁 内存数据库,高性能(单节点 QPS 10 万 +),支持 String/Hash/List 等结构,Java 常用客户端:Jedis、Lettuce、Redisson
MongoDB 文档型存储、非结构化 / 半结构化数据 日志存储、内容管理、用户画像 支持 JSON 格式,灵活扩展,Java 客户端:MongoDB Driver、Spring Data MongoDB
Elasticsearch 全文检索、日志分析、数据可视化 商品搜索、日志平台(ELK)、监控告警 基于 Lucene,分布式检索,Java 客户端:RestHighLevelClient、Elasticsearch Java Client
HBase 海量结构化存储、列存数据库 物联网时序数据、大数据离线计算 基于 Hadoop,支持 PB 级数据,Java 客户端:HBase Client

二、消息队列中间件

核心价值:异步解耦、削峰填谷、分布式事务,是分布式系统的 "通信枢纽"。

中间件 核心用途 典型场景 特点
RocketMQ 高吞吐、高可用、事务消息 电商订单异步处理、秒杀消息、分布式事务 阿里开源,适配金融级场景,Java 原生支持好,支持延迟消息、死信队列
Kafka 高吞吐、日志采集、流处理 日志收集(ELK)、实时计算(Flink)、大数据传输 基于磁盘存储,吞吐极高(百万级 / 秒),Java 客户端:kafka-clients
RabbitMQ 轻量级、灵活路由、多协议支持 普通业务异步通知、消息分发 基于 AMQP 协议,路由策略丰富(直连 / 主题 / 扇出),Java 客户端:amqp-client、Spring AMQP
ActiveMQ 传统消息队列、兼容 JMS 规范 老旧系统改造、简单异步场景 老牌开源队列,支持 JMS 1.1,兼容性强但性能略逊于 RocketMQ/Kafka

三、服务治理中间件

适配 Spring Cloud/Spring Cloud Alibaba 生态,解决微服务的注册发现、配置管理、限流熔断、网关路由等问题。

中间件 核心用途 典型场景 特点
Nacos 服务注册发现、配置中心 微服务注册、动态配置下发 阿里开源,一站式解决方案支持 AP/CP 模式切换,Java 客户端:nacos-client
Eureka 服务注册发现(已停更) 早期 Spring Cloud 项目 去中心化,AP 设计,简单易用,替代方案:Nacos/Etcd
Apollo 配置中心 多环境配置管理、灰度发布 携程开源,支持配置版本管理、权限控制,Java 集成便捷
Sentinel 限流、熔断、降级 秒杀限流、接口熔断、热点规则 阿里开源,轻量级,支持控制台可视化配置,与 Spring Cloud 无缝集成
Gateway/Spring Cloud Gateway API 网关、路由转发、鉴权 统一入口、跨域处理、接口鉴权 基于 Netty 的异步网关,替代 Zuul,支持动态路由、过滤器链
Dubbo 高性能 RPC 框架 微服务远程调用、服务治理 阿里开源,基于长连接,支持多协议(Dubbo/Triple/HTTP),适配 Java 生态
OpenFeign 声明式 HTTP 客户端 微服务间 RESTful 调用 简化 HTTP 调用,集成 Ribbon 负载均衡,与 Spring Boot 无缝整合

四、分布式协调中间件

中间件 核心用途 典型场景 特点
ZooKeeper 分布式协调、配置同步、分布式锁 分布式锁、Master 选举、服务注册 强一致性(CP),基于 ZAB 协议,Java 客户端:Curator、ZkClient
Etcd 分布式键值存储、服务发现 K8s 集群配置、分布式锁 基于 Raft 协议,轻量级,Java 客户端:jetcd

五、容器化/编排中间件

中间件 核心用途 典型场景 特点
Docker 应用容器化、环境隔离 服务打包部署、环境一致性 轻量级容器,Java 应用打包为镜像,简化部署
Kubernetes(K8s) 容器编排、自动扩缩容、服务发现 微服务集群管理、灰度发布 自动化部署 / 运维,Java 应用适配 K8s 需制作镜像、配置 Deployment
Docker Compose 多容器编排 本地开发环境、单机部署 简化多容器(如 Java 应用 + MySQL+Redis)的启动配置

六、日志监控中间件

中间件 核心用途 典型场景 特点
Logback/Log4j2 应用日志输出 业务日志、异常日志记录 Java 主流日志框架,适配 SLF4J,支持异步日志、滚动策略
ELK(Elasticsearch+Logstash+Kibana) 日志收集、分析、可视化 分布式系统日志排查、监控 一站式日志平台,Java 应用通过 Logstash/Filebeat 采集日志
Prometheus + Grafana 指标监控、可视化告警 系统性能监控、接口 QPS 监控 时序数据库,Java 应用通过 Micrometer 暴露指标,适配 Spring Boot Actuator
SkyWalking/Pinpoint 分布式链路追踪 微服务调用链排查、性能分析 无侵入式追踪,Java 应用通过 Agent 接入,定位慢接口 / 异常节点

七、选型核心原则

1、场景适配:

  • 高并发缓存选 Redis
  • 全文检索选 Elasticsearch;
  • 金融级消息可靠性选 RocketMQ,日志采集选 Kafka;
  • 微服务治理优先选 Spring Cloud Alibaba(Nacos/Sentinel/Dubbo)。

2、生态兼容:

优先选择与 Spring Boot/Spring Cloud 无缝集成的中间件(如 Nacos、Sentinel、Redisson),减少开发成本。

3、运维成本:

中小团队优先选开箱即用的中间件(如 Redis 单节点、RocketMQ 单机版),避免过度设计;大型团队需考虑集群化、高可用。

4、性能与可靠性:

追求性能选 Redis/Kafka/Dubbo;

追求一致性选 ZooKeeper/MySQL(事务);

追求高可用选集群化部署(如 Redis 主从、Kafka 集群、Nacos 集群)。

八、java中间件整合范例

xml 复制代码
<!-- 整合Redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- 整合RocketMQ -->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.3</version>
</dependency>

<!-- 整合Nacos配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<!-- 整合Sentinel -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
相关推荐
feathered-feathered4 小时前
Redis基础知识+RDB+AOF(面试)
java·数据库·redis·分布式·后端·中间件·面试
Geoking.9 小时前
什么是中间件?有哪些中间件?
中间件
闲人编程10 小时前
CORS跨域配置与安全策略
中间件·origin·跨域·cors·codecapsule·分离配置·最小权限
你真的可爱呀1 天前
2.Express 核心语法与路由
中间件·node.js·express
feathered-feathered1 天前
Redis【事务】(面试相关)与MySQL相比较,重点在Redis事务
android·java·redis·后端·mysql·中间件·面试
音符犹如代码2 天前
深入解析 Apollo:微服务时代的配置管理利器
java·分布式·后端·微服务·中间件·架构
IMPYLH2 天前
Lua 的 Coroutine(协程)模块
开发语言·笔记·后端·中间件·游戏引擎·lua
脸大是真的好~3 天前
黑马消息队列-rabbitMQ2-生产者重连机制-生产者确认机制-数据持久化-LazyQueue-消费者确认机制-失败重试机制-重试耗尽告警手动处理-
java·缓存·中间件
闲人编程3 天前
中间件开发与生命周期管理
缓存·中间件·生命周期·日志·扩展·codecapsule