一、微服務架構相關組件
- Spring Cloud
-
服務注冊與發現 :
- Eureka :由 Netflix 開源,包含 Eureka Server 和 Eureka Client 兩部分。Eureka Server 作為服務注冊表,接收服務實例的注冊請求并管理其信息;Eureka Client 負責將自身服務注冊到 Eureka Server 上,并定期發送心跳,同時從 Server 獲取目標服務的實例列表以調用其他服務。
- Consul :HashiCorp 開源的服務注冊與發現解決方案,提供服務注冊、健康檢查、KV 存儲、多數據中心支持等功能。
- Zookeeper :Apache 開源的分布式協調服務,可用于服務注冊與發現以及分布式鎖、隊列等場景。
-
API 網關 :
- Spring Cloud Gateway :基于 Spring WebFlux 的反應式 API 網關,具備強大的路由和過濾功能。支持動態路由,可按配置規則將請求映射到不同微服務實例,還能通過多種內置過濾器(如身份驗證、限流、日志過濾器等)對請求進行處理,也可自定義過濾器。
- Zuul :通過一系列過濾器實現請求的路由、過濾和監控等功能。過濾器分為前置、后置和錯誤過濾器,分別在請求路由前、后及出錯時執行,支持與 Ribbon 等負載均衡組件集成。
-
服務調用 :
- Feign :聲明式的 HTTP 客戶端,簡化 Web 服務客戶端的編寫。開發者只需定義接口并用注解描述 HTTP 請求細節,Feign 就會自動生成客戶端代碼與遠程服務通信,默認集成 Ribbon 實現負載均衡,也可與 Hystrix 集成實現容錯處理。
- Dubbo :在 Spring Cloud Alibaba 生態中與 Spring Cloud 集成,通過定義服務接口和實現類,用 Dubbo 的注解或配置文件暴露服務,其他微服務可通過 Dubbo 客戶端引用遠程服務,支持多種序列化協議和負載均衡策略,具備豐富的服務治理功能。
-
服務治理 :
- Ribbon :客戶端負載均衡組件,可在客戶端選擇多種負載均衡策略,實現對多個服務提供者的調用均衡分發。
- Hystrix :斷路器組件,用于處理分布式系統中的故障。在服務間添加延遲容錯和斷路器模式,當服務調用失敗時,可根據配置執行降級邏輯,提高系統穩定性和可靠性。
- Sentinel :阿里巴巴開源的流量控制、熔斷降級組件,提供實時監控、動態規則調整等功能。
-
消息隊列 :
- Spring Cloud Stream :提供了與多種消息中間件(如 RabbitMQ、Kafka、RocketMQ 等)的集成支持,通過定義消息通道和綁定器實現消息交互,降低與消息中間件集成的復雜度。
- RocketMQ :阿里巴巴開源的分布式消息中間件,具有高吞吐量、高可用性、消息可靠傳輸等特點,支持多種消息模式,可用于實現異步消息傳遞、解耦微服務之間的通信。
-
配置管理 :
- Spring Cloud Config :分布式配置中心,支持將配置信息外部化并集中管理,提供客戶端和服務器端支持,客戶端可從服務器端獲取配置信息并在配置變化時自動刷新。
- Apollo :攜程開源的分布式配置中心,提供豐富的配置管理功能,如配置項管理、灰度發布、版本管理、權限管理等。
-
分布式事務 :Seata :阿里巴巴開源的高性能分布式事務解決方案,支持 AT、TCC、SAGA 等多種事務模式,確保分布式系統中數據的一致性,且通過 AT 模式實現對業務代碼的無侵入。
-
鏈路追蹤 :Spring Cloud Sleuth :分布式鏈路追蹤組件,用于追蹤服務之間的調用關系并生成調用鏈路圖,幫助開發者快速定位問題,提高系統可維護性。
-
二、其他常用組件
- Spring Batch :開源批處理框架,提供大量可重用組件,支持大數據量和高性能批處理任務,可與 Spring 的其他組件無縫集成。其核心概念包括 Job、Step、ItemReader、ItemWriter、ItemProcessor、JobRepository 和 JobLauncher 等。
- Spring AMQP :提供了對 AMQP(Advanced Message Queuing Protocol)協議的支持,簡化了與 AMQP 消息中間件(如 RabbitMQ)的集成,使得消息的發送和接收更加方便。
- Spring Session :用于管理用戶會話,提供了對 HttpSession 的替代方案,支持將會話數據存儲在多種存儲系統中(如 Redis、JDBC 等),實現了會話的分布式存儲和管理,適用于需要在集群環境下共享會話信息的場景。