微服務框架 | 潮流當前該如何選擇 SpringCloud、Dubbo or Istio?

在 Kubernetes 容器雲平臺於衆多企業裏遍地實施開花後,迅速結出的果實:應用微服務化當仁不讓的居於首位。衆所周知,基於容器平臺構建後端服務,能夠更加迅速的實現業務微服務化,與之而來的框架選型討論也迅速火熱了起來。後端

微服務框架選型之爭

選項其實不少,這裏挑選一些討論火熱、或者主流的來對比,僅供參閱。安全

  • 主流微服務框架:SpringCloud、Dubbo
  • 新銳微服務框架:Istio

一、框架背景對比

(1)Spring Cloud,來源於 Spring Source ,具備 Spring 社區的強大背書外,還有 Netflix 強大的後盾與技術輸出。Netflix 做爲一家成功實踐微服務架構的互聯網公司,在幾年前就把幾乎整個微服務框架棧開源貢獻給了社區,這些框架開源的整套微服務架構套件是 Spring Cloud 的核心。網絡

  • Eureka: 服務註冊發現框架;
  • Zuul: 服務網關;
  • Karyon: 服務端框架;
  • Ribbon: 客戶端框架;
  • Hystrix: 服務容錯組件;
  • Archaius: 服務配置組件;
  • Servo: Metrics組件;
  • Blitz4j: 日誌組件。

(2)Dubbo 是一個分佈式服務框架,是國內互聯網公司開源作的比較不錯的阿里開放的微服務化治理框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。 其核心部分包含(官網):架構

  • 遠程通信: 提供對多種基於長鏈接的NIO框架抽象封裝,包括多種線程模型,序列化,以及「請求-響應」模式的信息交換方式;
  • 集羣容錯: 提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持;
  • 自動發現: 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方能夠平滑增長或減小機器。

Dubbo 也是採用全 Spring 配置方式,透明化接入應用,對應用沒有任何 API 侵入,只需用 Spring 加載 Dubbo的配置便可,Dubbo 基於 Spring 的 Schema 擴展進行加載。固然也支持官方不推薦的 API 調用方式。負載均衡

(3)Istio 做爲用於微服務服務聚合層管理的新銳項目,是 Google、IBM、Lyft(海外共享出行公司、Uber勁敵) 首個共同聯合開源的項目,提供了統一的鏈接,安全,管理和監控微服務的方案。 框架

目前首個測試版是針對 Kubernetes 環境的,社區宣稱在將來幾個月內會爲虛擬機和 Cloud Foundry 等其餘環境增長支持。 Istio 將流量管理添加到微服務中,併爲增值功能(如安全性,監控,路由,鏈接管理和策略)創造了基礎。分佈式

  • HTTP、gRPC 和 TCP 網絡流量的自動負載均衡;
  • 提供了豐富的路由規則,實現細粒度的網絡流量行爲控制;
  • 流量加密、服務間認證,以及強身份聲明;
  • 全範圍(Fleet-wide)的策略執行;
  • 深度遙測和報告。

二、開源社區活躍度對比

開源社區狀況:現現在企業在採用雲計算首選開源,而選擇一個開源框架,社區的活躍度將做爲重要參考選項。ide

查看下在 Github 上的更新時間,截止 2017 年 8 月 31 日:微服務

  • Spring Cloud :Spring Cloud · GitHub → 全部項目均更新於『1 小時』內。
  • Dubbo :Dubbo · GitHub → 核心項目最近更新於『一個月乃至數月』前。
  • Istio:Istio · GitHub → 全部項目均更新於『30 分鐘』內。

可見,項目在社區活躍度上,Istio > Spring Cloud > Dubbo,結合穩定性來看,對於使用 Java 系開發業務較多的企業,Spring Cloud 是相對更優的選擇,對於更多企業來講,與語言幾乎無綁定的 Istio 也是能夠好好期待一下其在社區的發展。性能

總結:結合項目背景、提供功能、社區更新活躍度,SpringCloud 是目前階段最爲穩妥的可執行微服務框架方案,Istio 做爲支持對於 Kubernetes 的優先支持來說,也是一個值得關注的方案。目前對比來看,Dubbo 則顯得稍遜下來。

時速雲 | 企業版 - 微服務治理平臺,即將發佈!

產品特點:深度定製 SpringCloud 等微服務框架,支持 gRPC,動態路由配置,流量控制,配置管理等加強服務,同時提供應用業務級的 APM 能力。敬請期待!

相關文章
相關標籤/搜索