- 微服務容器化開發實戰
- 尹為強
- 1633字
- 2020-10-30 15:17:07
2.1 微服務框架
目前,國內使用較多的微服務框架主要有Dubbo(國內開源、使用廣泛)和Spring Cloud(微服務組件豐富、版本更新更快),筆者在進行微服務選型時也遇到過一些困惑。
如何選擇適用于項目的微服務化改造的框架?下面主要闡述Dubbo服務框架和Spring Cloud微服務框架之間的差異。
2.1.1 Dubbo服務框架
Dubbo(目前屬于Apache孵化項目)是阿里巴巴開源的一款高性能、輕量級的開源Java RPC框架,主要提供三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。簡單來說,Dubbo就是一個服務框架,是一個遠程服務調用的分布式框架。Dubbo服務框架如圖2-1所示。

圖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是調用鏈追蹤組件。

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

需要說明的是,表2-1中Dubbo服務框架總結為“無”的組件不代表無法實現,而只是Dubbo服務框架自身不提供,需要另外整合第三方組件以實現對應的功能。再結合考慮服務調用的侵入性以及社區成熟度和活躍度,最終將Spring Cloud微服務框架作為項目微服務化改造過程中開發和運行的基礎框架。
- Windows phone 7.5 application development with F#
- 基于ARM的嵌入式系統和物聯網開發
- Unity 5.x Game Development Blueprints
- 電腦高級維修及故障排除實戰
- 筆記本電腦維修300問
- 筆記本電腦使用、維護與故障排除從入門到精通(第5版)
- Internet of Things Projects with ESP32
- 新編電腦組裝與硬件維修從入門到精通
- 單片機原理與技能訓練
- Blender for Video Production Quick Start Guide
- USB應用開發寶典
- 計算機組裝與維護立體化教程(微課版)
- Nagios系統監控實踐(原書第2版)
- Raspberry Pi Media Center
- Mastering TensorFlow 1.x