.jpeg)
一切都從 Netflix OSS (Netflix Open Source Software)開始說起
Netflix OSS是一個Netflix 開源項目,開發和運維這些微服務的最佳實踐,後來被整合進 Spring Cloud,提供微服務架構的常見解決方案,例如服務發現(Eureka)、客戶端負載均衡(Ribbon)、配置管理(Config Server)、熔斷機制(Hystrix)、API 閘道器(Zuul)等,簡化分散式系統的複雜性,讓開發者能專注於業務邏輯。
服務發現與註冊(Service Discovery & Registration)
1 2 3 4 5
| 核心工具: Spring Cloud Netflix Consul、Zookeeper( 舊版)、Eureka( 更舊)。 需掌握: 如何註冊服務到註冊中心(@EnableEurekaClient)。 服務消費者如何動態發現服務(透過 DiscoveryClient 或負載均衡)。 高可用註冊中心的配置(集群部署)。
|
分散式配置管理(Distributed Configuration)
1 2 3 4 5
| 核心工具: Spring Cloud Config Server。 需掌握: 集中管理多環境配置(如 dev, prod)。 動態刷新配置(@RefreshScope)。 整合 Git、Vault 或資料庫作為配置儲存源。
|
服務間同步通訊(Inter-Service Communication)
1 2 3
| RestTemplate / WebClient: 搭配負載均衡(@LoadBalanced)。 OpenFeign: 宣告式 HTTP 客戶端(@FeignClient與 Fallback 機制)。 需注意: 通訊超時設定、序列化(JSON/Protobuf)、效能優化。
|
熔斷與容錯(Circuit Breaker & Fault Tolerance)
1 2 3 4 5
| 核心工具: Resilience4j、Spring Cloud Circuit Breaker(替代舊版 Hystrix)。 需掌握: 熔斷策略配置(失敗率、超時時間)。 降級邏輯(Fallback 方法)。 監控熔斷狀態(整合 Actuator 或 Prometheus)。
|
API 閘道(API Gateway)
1 2 3 4 5
| 核心工具: Spring Cloud Gateway(非阻塞式)、Zuul(舊版)。 需掌握: 路由規則定義(Path, Header 匹配)。 過濾器鏈(Logging、限流、權限驗證)。 整合 OAuth2/JWT 實現統一認證。
|
分散式追蹤數據(Distributed Tracing)
1 2 3 4 5 6
| 核心工具: Spring Cloud Sleuth + Zipkin。 * Sleuth: 自動生成追踪 ID(Trace ID)並注入日誌,常搭配Zipkin實現數據上報,支持 OpenTelemetry 標準 * Zipkin: 分佈式追踪數據可視化與分析,展示跨服務調用鏈路與耗時。(可選存儲後端:Elasticsearch、Cassandra) 需掌握: 追蹤請求鏈路(Trace ID、Span ID)。 整合 Logback/ELK 實現日誌聚合。
|
異步訊息驅動與事件匯流排(Event-Driven Architecture)
1 2 3 4
| 核心工具: Spring Cloud Stream(整合 RabbitMQ、Kafka)。 需掌握: 定義訊息通道(@Input、@Output)。 事務性訊息與重試機制。
|
安全機制(Security)
1 2 3 4
| 核心工具: Spring Security OAuth2、JWT。 需掌握: 微服務間的權限傳遞(如 Authorization Header 中繼)。 整合 Keycloak 或 Auth0 實現單一登入(SSO)。
|
容器化與雲原生整合
1 2 3 4
| 需掌握: 打包 Spring Cloud 服務為 Docker 映像。 在 Kubernetes 部署(Service 發現替代 Eureka)。 整合 ConfigMap 與 Secret 管理配置。
|
效能監控與優化
1 2 3 4
| 核心工具: Spring Boot Actuator、Micrometer + Prometheus + Grafana。 需掌握: 暴露健康檢查端點(/actuator/health)。 監控 JVM、HTTP 請求延遲、資料庫連線池。
|
其他重要組件
- Netflix: 集成多個 Netflix 開源項目,舊版組件,逐步被替代
- Eureka: 服務發現( 去中心化,降低對集中式負載均衡器的依賴) > K8s/ Consul
- Ribbon: 負載均衡 > LoadBalancer
- Hystrix: 熔斷與容錯 > Resilience4j
- Zuul: API 網關 > Gateway
- Task: 短生命週期任務的開發和管理,可結合 Kubernetes CronJob
- Contract: 實現消費者驅動契約測試(Consumer-Driven Contracts),確保服務間接口兼容性