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

2.1 微服務(wù)框架

目前,國(guó)內(nèi)使用較多的微服務(wù)框架主要有Dubbo(國(guó)內(nèi)開(kāi)源、使用廣泛)和Spring Cloud(微服務(wù)組件豐富、版本更新更快),筆者在進(jìn)行微服務(wù)選型時(shí)也遇到過(guò)一些困惑。

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

2.1.1 Dubbo服務(wù)框架

Dubbo(目前屬于Apache孵化項(xiàng)目)是阿里巴巴開(kāi)源的一款高性能、輕量級(jí)的開(kāi)源Java RPC框架,主要提供三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯(cuò)和負(fù)載均衡,以及服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)。簡(jiǎn)單來(lái)說(shuō),Dubbo就是一個(gè)服務(wù)框架,是一個(gè)遠(yuǎn)程服務(wù)調(diào)用的分布式框架。Dubbo服務(wù)框架如圖2-1所示。

img

圖2-1 Dubbo服務(wù)框架

1.模塊說(shuō)明

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

(2)Consumer:調(diào)用遠(yuǎn)程服務(wù)的消費(fèi)者。

(3)Registry:服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。

(4)Monitor:統(tǒng)計(jì)服務(wù)的調(diào)用次數(shù)和調(diào)用時(shí)間的監(jiān)控中心。

(5)Container:服務(wù)的運(yùn)行容器。

2.流程說(shuō)明

0:服務(wù)容器,負(fù)責(zé)啟動(dòng)、加載、運(yùn)行服務(wù)提供者(Standalone容器)。

1:服務(wù)提供者,在啟動(dòng)時(shí)向注冊(cè)中心注冊(cè)自己提供的服務(wù)(ZooKeeper)。

2:服務(wù)消費(fèi)者,在啟動(dòng)時(shí)向注冊(cè)中心訂閱自己所需的服務(wù)。

3:注冊(cè)中心將服務(wù)提供者地址列表返回消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。

4:服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)服務(wù)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。

5:服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,每分鐘定時(shí)向監(jiān)控中心發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)(根據(jù)數(shù)據(jù)可以動(dòng)態(tài)調(diào)整權(quán)重)。

3.Dubbo服務(wù)框架的六大特點(diǎn)

(1)面向接口代理的高性能RPC調(diào)用:提供高性能的基于代理的遠(yuǎn)程調(diào)用能力,服務(wù)以接口為粒度,為開(kāi)發(fā)者屏蔽遠(yuǎn)程調(diào)用底層的細(xì)節(jié)。

(2)智能負(fù)載均衡:內(nèi)置多種負(fù)載均衡策略,智能感知下游節(jié)點(diǎn)健康狀況,顯著減少調(diào)用延遲,提高系統(tǒng)的吞吐量。

(3)服務(wù)自動(dòng)注冊(cè)與發(fā)現(xiàn):支持多種注冊(cè)中心服務(wù),服務(wù)實(shí)例上下線實(shí)時(shí)感知。

(4)高度可擴(kuò)展能力:遵循微“內(nèi)核+插件”的設(shè)計(jì)原則,所有核心能力(如Protocol、Transport、Serialization)被設(shè)計(jì)為擴(kuò)展點(diǎn),平等對(duì)待內(nèi)置實(shí)現(xiàn)和第三方實(shí)現(xiàn)。

(5)運(yùn)行期流量調(diào)度:內(nèi)置條件、腳本等路由策略,配置不同的路由規(guī)則,可以輕松實(shí)現(xiàn)灰度發(fā)布,以及同一機(jī)房服務(wù)優(yōu)先調(diào)用等功能。

(6)可視化的服務(wù)治理與運(yùn)維:提供豐富的服務(wù)治理和運(yùn)維工具,如隨時(shí)查詢服務(wù)元數(shù)據(jù)、服務(wù)健康狀態(tài)及調(diào)用統(tǒng)計(jì),以及實(shí)時(shí)下發(fā)路由策略、調(diào)整配置參數(shù)。

2.1.2 Spring Cloud微服務(wù)框架

Spring Cloud是Pivotal公司提供的一系列微服務(wù)框架的有序集合,利用Spring Boot的開(kāi)發(fā)便利性可以簡(jiǎn)化分布式系統(tǒng)基礎(chǔ)組件的開(kāi)發(fā)和使用,同時(shí)為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中常見(jiàn)組件的工具(如配置管理、服務(wù)發(fā)現(xiàn)、熔斷器、智能路由、控制總線、網(wǎng)關(guān)等)。Spring Cloud微服務(wù)框架如圖2-2所示。

如圖2-2所示,Spring Cloud微服務(wù)框架主要包括EUREKA、Zuul、CONFIGSERVICE、Hystrix Dashboard、Turbine等組件,另外,負(fù)載均衡組件Ribbon內(nèi)嵌在服務(wù)調(diào)用中。

組件說(shuō)明如下。

(1)EUREKA:服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。

(2)Zuul:網(wǎng)關(guān)和路由。

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

(4)Hystrix Dashboard:服務(wù)熔斷監(jiān)控組件。

(5)Turbine:服務(wù)調(diào)用匯集展示。

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

Spring Cloud微服務(wù)框架還包含兩個(gè)常用組件:Ribbon和Zipkin。Ribbon是客戶端負(fù)載均衡組件,Zipkin是調(diào)用鏈追蹤組件。

img

圖2-2 Spring Cloud微服務(wù)框架

2.1.3 Dubbo服務(wù)框架和Spring Cloud微服務(wù)框架的對(duì)比

遠(yuǎn)程調(diào)用Dubbo服務(wù)框架和Spring Cloud微服務(wù)框架都可以作為微服務(wù)的基礎(chǔ)開(kāi)發(fā)與運(yùn)行框架。Dubbo服務(wù)框架和Spring Cloud微服務(wù)框架的對(duì)比如表2-1所示。

表2-1 Dubbo服務(wù)框架和Spring Cloud微服務(wù)框架的對(duì)比

img

需要說(shuō)明的是,表2-1中Dubbo服務(wù)框架總結(jié)為“無(wú)”的組件不代表無(wú)法實(shí)現(xiàn),而只是Dubbo服務(wù)框架自身不提供,需要另外整合第三方組件以實(shí)現(xiàn)對(duì)應(yīng)的功能。再結(jié)合考慮服務(wù)調(diào)用的侵入性以及社區(qū)成熟度和活躍度,最終將Spring Cloud微服務(wù)框架作為項(xiàng)目微服務(wù)化改造過(guò)程中開(kāi)發(fā)和運(yùn)行的基礎(chǔ)框架。

主站蜘蛛池模板: 胶南市| 信宜市| 江西省| 横山县| 五指山市| 青阳县| 米泉市| 商丘市| 沙河市| 始兴县| 金平| 岳阳县| 阿瓦提县| 长乐市| 桑植县| 昭通市| 香港| 化隆| 抚远县| 大冶市| 平顶山市| 扶沟县| 临武县| 漳浦县| 横峰县| 遂宁市| 水城县| 弥渡县| 潮安县| 罗江县| 蕲春县| 太湖县| 宕昌县| 宜宾市| 汕头市| 微山县| 安泽县| 新巴尔虎右旗| 大竹县| 寿阳县| 天津市|