Spring Cloud 微服務框架工具集-核心組件比較分析和選型

Spring Cloud 是在 Spring Boot 基礎上構建的,用於快速構建分佈式系統的通用模式的工具集。

Spring Cloud 微服務框架工具集-核心組件比較分析和選型

使用 Spring Cloud 開發的應用程序非常適合在 Docker 或者 PaaS 上部署,也叫雲原生(Cloud Native)應用。雲原生可以簡單理解為面向雲環境的軟件架構。

既然是工具集,那麼Spring Cloud一定包含很多工具,我們來看下面這張圖:

Spring Cloud 微服務框架工具集-核心組件比較分析和選型

註冊與發現組件簡要說明

Spring Cloud 微服務框架工具集-核心組件比較分析和選型

ZooKeeper是一款經典的服務註冊中心產品(雖然它最初的定位並不在於此),在很長一段時間裡,它是國人在提起RPC服務註冊中心時想到的唯一選擇,這很大程度上與Dubbo在中國的普及程度有關。

Consul和Eureka都出現於2014年,Consul在設計上把很多分佈式服務治理上要用到的功能都包含在內,可以支持服務註冊、健康檢查、配置管理、Service Mesh等。

而Eureka則藉著微服務概念的流行,與SpringCloud生態的深度結合,也獲取了大量的用戶。因此,Eureka 在生產環境有大量的應用,更加成熟穩定。遺憾的是,Eureka之後的更新選擇了閉源。

2018年阿里開源的Nacos,則攜帶著阿里巴巴大規模服務生產經驗,試圖在服務註冊和配置管理這個市場上,提供給用戶一個新的選擇。

相對於 Spring Cloud Eureka 來說,Nacos 更強大。

Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以與 Spring, Spring Boot, Spring Cloud 集成,並能代替 Spring Cloud Eureka, Spring Cloud Config。

API 網關選擇

API 網關是介於客戶端和服務器端之間的中間層,所有的外部請求都會先經過 API 網關這一層。也就是說,API Services的實現方面更多的考慮業務邏輯,而安全、性能、監控可以交由 API 網關來做,這樣既提高業務靈活性又不缺安全性,典型的架構圖如圖所示:

Spring Cloud 微服務框架工具集-核心組件比較分析和選型

使用 API 網關後的優點如下:

  • 易於監控。可以在網關收集監控數據並將其推送到外部系統進行分析。
  • 易於認證。可以在網關上進行認證,然後再將請求轉發到後端的微服務,而無須在每個微服務中進行認證。
  • 減少了客戶端與各個微服務之間的交互次數。

Zuul 網關:處理每個請求的方式使分別對每個請求分配一個線程來處理,最多能達到1000-2000 QPS。在高併發場景下,不推薦使用Zuul 作為網關。

Spring Cloud Gateway網關:底層基於 Netty 實現,Netty 的線程模型是多線程reactor 模型,使用boss線程和worker 線程接收並異步處理請求,具有很強大的高併發處理能力。

容錯處理組件選擇

Netflix開源的容錯處理組件 Hystrix在其Github主頁宣佈,不再開放新功能,推薦開發者使用其他仍然活躍的開源項目。不過,開發者可以繼續使用Hystrix的最新版本1.5.18。

在Spring Cloud生態下,開發者還有其他限流的開源產品可以選擇,例如Resilience4j和Sentinel。

Resilience4j,是一個受 Netflix Hystrix 啟發的輕量級容錯庫,是為Java 8和函數式編程設計的。

相比 Hystrix , Resilience4j的優勢在於:

  • 針對 Java 8 和函數式編程設計,提供函數式和響應式風格的 API;
  • 增加了 rate limiting 和 automatic retrying 兩個模塊。其中 rate limiting 引入了簡單的速率控制實現,補充了流量控制這一塊的功能;而 automatic retrying 則是封裝了自動重試的邏輯,簡化了異常恢復的流程。

Sentinel 是阿里中間件團隊開源的,面向分佈式服務架構的輕量級高可用流量控制組件,主要以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度來幫助用戶保護服務的穩定性。

Spring Cloud 微服務框架工具集-核心組件比較分析和選型

統一配置管理組件

Spring Cloud Config - 2014年9月開源,Spring Cloud 生態組件,可以和Spring Cloud體系無縫整合。

Apollo - 2016年5月,攜程開源的配置管理中心,具備規範的權限、流程治理等特性。

Nacos - 2018年6月,阿里開源的配置中心,也可以做DNS和RPC的服務發現。

Apollo和Nacos相對於Spring Cloud Config的生態支持更廣,在配置管理流程上做的更好。Apollo相對於Nacos在配置管理做的更加全面,不過使用起來也要麻煩一些。Nacos使用起來相對比較簡潔,在對性能要求比較高的大規模場景更適合。

此外,Nacos除了提供配置中心的功能,還提供了動態服務發現、服務共享與管理的功能,降低了服務化改造過程中的難度。

全鏈路監控組件

Zipkin是Twitter開源的調用鏈分析工具,目前基於Spring Cloud Sleuth得到了廣泛的使用,特點是輕量,使用部署簡單。

Pinpoint是韓國人開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點是支持多種插件,UI功能強大,接入端無代碼侵入。

SkyWalking是本土開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點是支持多種插件,UI功能較強,接入端無代碼侵入。2019年4月,SkyWalking 畢業成為 Apache 頂級項目。

Spring Cloud 微服務框架工具集-核心組件比較分析和選型

歡迎關注、留言和轉發,小編和大家分享IT技術經驗,包括開發、架構、運維、求職等等。

Spring Cloud 微服務框架工具集-核心組件比較分析和選型


分享到:


相關文章: