官术网_书友最值得收藏!

2.1 微服務框架

目前,國內使用較多的微服務框架主要有Dubbo(國內開源、使用廣泛)和Spring Cloud(微服務組件豐富、版本更新更快),筆者在進行微服務選型時也遇到過一些困惑。

如何選擇適用于項目的微服務化改造的框架?下面主要闡述Dubbo服務框架和Spring Cloud微服務框架之間的差異。

2.1.1 Dubbo服務框架

Dubbo(目前屬于Apache孵化項目)是阿里巴巴開源的一款高性能、輕量級的開源Java RPC框架,主要提供三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。簡單來說,Dubbo就是一個服務框架,是一個遠程服務調用的分布式框架。Dubbo服務框架如圖2-1所示。

img

圖2-1 Dubbo服務框架

1.模塊說明

(1)Provider:暴露服務的提供者。

(2)Consumer:調用遠程服務的消費者。

(3)Registry:服務注冊與發現的注冊中心。

(4)Monitor:統計服務的調用次數和調用時間的監控中心。

(5)Container:服務的運行容器。

2.流程說明

0:服務容器,負責啟動、加載、運行服務提供者(Standalone容器)。

1:服務提供者,在啟動時向注冊中心注冊自己提供的服務(ZooKeeper)。

2:服務消費者,在啟動時向注冊中心訂閱自己所需的服務。

3:注冊中心將服務提供者地址列表返回消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。

4:服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺服務提供者進行調用,如果調用失敗,再選另一臺調用。

5:服務消費者和提供者,在內存中累計調用次數和調用時間,每分鐘定時向監控中心發送一次統計數據(根據數據可以動態調整權重)。

3.Dubbo服務框架的六大特點

(1)面向接口代理的高性能RPC調用:提供高性能的基于代理的遠程調用能力,服務以接口為粒度,為開發者屏蔽遠程調用底層的細節。

(2)智能負載均衡:內置多種負載均衡策略,智能感知下游節點健康狀況,顯著減少調用延遲,提高系統的吞吐量。

(3)服務自動注冊與發現:支持多種注冊中心服務,服務實例上下線實時感知。

(4)高度可擴展能力:遵循微“內核+插件”的設計原則,所有核心能力(如Protocol、Transport、Serialization)被設計為擴展點,平等對待內置實現和第三方實現。

(5)運行期流量調度:內置條件、腳本等路由策略,配置不同的路由規則,可以輕松實現灰度發布,以及同一機房服務優先調用等功能。

(6)可視化的服務治理與運維:提供豐富的服務治理和運維工具,如隨時查詢服務元數據、服務健康狀態及調用統計,以及實時下發路由策略、調整配置參數。

2.1.2 Spring Cloud微服務框架

Spring Cloud是Pivotal公司提供的一系列微服務框架的有序集合,利用Spring Boot的開發便利性可以簡化分布式系統基礎組件的開發和使用,同時為開發人員提供了快速構建分布式系統中常見組件的工具(如配置管理、服務發現、熔斷器、智能路由、控制總線、網關等)。Spring Cloud微服務框架如圖2-2所示。

如圖2-2所示,Spring Cloud微服務框架主要包括EUREKA、Zuul、CONFIGSERVICE、Hystrix Dashboard、Turbine等組件,另外,負載均衡組件Ribbon內嵌在服務調用中。

組件說明如下。

(1)EUREKA:服務注冊與發現的注冊中心。

(2)Zuul:網關和路由。

(3)CONFIG SERVICE:分布式配置服務。

(4)Hystrix Dashboard:服務熔斷監控組件。

(5)Turbine:服務調用匯集展示。

EUREKA組件實現了服務的注冊與發現,服務相互之間調用時,通過服務名稱即可完成接口服務調用,而隱藏了服務的部署地址及部署數量等信息。EUREKA組件使用時分為客戶端和服務端:客戶端完成服務向服務端的注冊;服務端接收服務注冊,同時提供服務發現功能。EUREKA客戶端使用eureka.client.serviceUrl.defaultZone完成配置,服務端使用@EnableEurekaServer注解完成配置。

Spring Cloud微服務框架還包含兩個常用組件:Ribbon和Zipkin。Ribbon是客戶端負載均衡組件,Zipkin是調用鏈追蹤組件。

img

圖2-2 Spring Cloud微服務框架

2.1.3 Dubbo服務框架和Spring Cloud微服務框架的對比

遠程調用Dubbo服務框架和Spring Cloud微服務框架都可以作為微服務的基礎開發與運行框架。Dubbo服務框架和Spring Cloud微服務框架的對比如表2-1所示。

表2-1 Dubbo服務框架和Spring Cloud微服務框架的對比

img

需要說明的是,表2-1中Dubbo服務框架總結為“無”的組件不代表無法實現,而只是Dubbo服務框架自身不提供,需要另外整合第三方組件以實現對應的功能。再結合考慮服務調用的侵入性以及社區成熟度和活躍度,最終將Spring Cloud微服務框架作為項目微服務化改造過程中開發和運行的基礎框架。

主站蜘蛛池模板: 沛县| 昔阳县| 深圳市| 康马县| 漯河市| 德清县| 文安县| 杂多县| 双鸭山市| 南和县| 团风县| 康保县| 周宁县| 澄迈县| 安康市| 原平市| 资兴市| 深水埗区| 桐乡市| 德州市| 筠连县| 贵南县| 体育| 车险| 疏勒县| 镇宁| 本溪市| 珲春市| 洪泽县| 达孜县| 日土县| 湛江市| 武平县| 丹东市| 华宁县| 漯河市| 广西| 西安市| 古丈县| 栖霞市| 广河县|