定義:不直接面向終端使用者、不屬於作業系統核心、為其他應用程式提供通用服務/介接能力的軟體層**。
判斷條件 (三不原則)
| 條件 | 說明 | 範例 |
| ❌ 不直接滿足使用者需求 | 使用者不直接啟動它、不直接操作它的 UI | 使用者不開啟「訊息佇列管理主控台」發訊息 |
| ❌ 非作業系統核心組件 | 不在 Kernel 模式、非驅動程式、非系統服務 | 不屬於 Windows Kernel / Linux kernel 模組 |
| ✅ 為其他軟體運行提供支撐 | 提供通訊、交易、安全、整合、資料存取等通用能力 | MQ、ESB、應用伺服器、快取、API Gateway、ORM |
典型分類與代表產品
- 訊息導向中介軟體 (MOM):RabbitMQ、Kafka、RocketMQ、ActiveMQ — 非同步解耦、削峰填谷。
- 企業服務匯流排 (ESB):MuleSoft、WSO2、IBM IIB — 異構系統整合、協議轉換、路由編排。
- 應用伺服器 / 容器:Tomcat、Jetty、WildFly、WebLogic — Servlet/JSP/EJB 運行環境、連線池、執行緒管理。
- 分散式快取:Redis、Memcached、Hazelcast — 高速讀取、Session 共享、限流計數器。
- API 閘道:Kong、Spring Cloud Gateway、Apisix — 驗證、限流、熔斷、路由、日誌。
- 資料存取/ORM:Hibernate、MyBatis、Entity Framework — 物件關聯映射、SQL 生成、快取。
- 分散式事務/協調:Seata、ZooKeeper、Etcd — TCC/Saga、服務發現、配置中心。
架構定位圖
[前端/Client] → [API Gateway] → [微服務 A] ←→ [微服務 B]
↑ ↑
[中介軟體層] [中介軟體層]
(快取/訊息/事務/配置/服務發現/監控...)
為何需要中介軟體?
- 解耦:服務間不直接調用,透過 MQ/Event Bus 異步通訊。
- 複用:通用功能 (登入、限流、日誌) 下沉中介層,業務服務專注核心邏輯。
- 彈性:快取抗讀爆發、MQ 抗寫爆發、熔斷防雪崩。
- 異構整合:ESB/Gateway 統一協議 (HTTP/gRPC/Thrift)、資料格式 (JSON/Protobuf/Avro)。
只要符合「不直接給用戶用、非 OS 核心、支撐其他軟體」三條件,無論開源商業、框架還是獨立服務,皆可稱為中介軟體。