最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

分布式技術(shù)原理與實(shí)戰(zhàn)45講--第19講:Dubbo v Spring Cloud:兩大技術(shù)棧如何選型

2023-02-19 13:30 作者:gzqhero  | 我要投稿

提到微服務(wù)開源框架,不可不說的是 Dubbo 和 Spring Cloud,這兩大框架應(yīng)該是大家最熟悉的微服務(wù)解決方案,也是面試中的熱點(diǎn)。這一課時(shí)就梳理下 Dubbo 和 Spring Cloud 的應(yīng)用特性,以及兩個(gè)組件的功能對(duì)比。

Dubbo 應(yīng)用

Dubbo 是阿里開源的一個(gè)分布式服務(wù)框架,目的是支持高性能的遠(yuǎn)程服務(wù)調(diào)用,并且進(jìn)行相關(guān)的服務(wù)治理。在 RPC 遠(yuǎn)程服務(wù)這一課時(shí)我們也介紹過 Dubbo,從功能上,Dubbo 可以對(duì)標(biāo) gRPC、Thrift 等典型的 RPC 框架。

總體架構(gòu)

下面這張圖包含了 Dubbo 核心組件和調(diào)用流程:

包括了下面幾個(gè)角色:

  • Provider,也就是服務(wù)提供者,通過 Container 容器來承載;

  • Consumer,調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方;

  • Registry,服務(wù)注冊(cè)中心和發(fā)現(xiàn)中心;

  • Monitor,Dubbo 服務(wù)調(diào)用的控制臺(tái),用來統(tǒng)計(jì)和管理服務(wù)的調(diào)用信息;

  • Container,服務(wù)運(yùn)行的容器,比如 Tomcat 等。

應(yīng)用特性

Dubbo 是一個(gè)可擴(kuò)展性很強(qiáng)的組件,主要的特性如下。

(1)基于 SPI 的擴(kuò)展

SPI(Service Provider Interface)是 JDK 內(nèi)置的一種服務(wù)提供發(fā)現(xiàn)機(jī)制,JDK 原生的 SPI 加載方式不靈活,要獲取一個(gè)類的擴(kuò)展必須加載所有實(shí)現(xiàn)類,得到指定的實(shí)現(xiàn)類需要遍歷。

Dubbo 中增強(qiáng)了原生的 SPI 實(shí)現(xiàn),可以通過指定的擴(kuò)展類名稱來找到具體的實(shí)現(xiàn),這樣可以更好地進(jìn)行功能點(diǎn)擴(kuò)展。

(2)靈活的服務(wù)調(diào)用

Dubbo 作為一個(gè)優(yōu)秀的 RPC 解決方案,支持多種服務(wù)調(diào)用方式,針對(duì)服務(wù)端和消費(fèi)端的線程池、集群調(diào)用模式、異步和同步調(diào)用等都可以進(jìn)行靈活的配置。

(3)責(zé)任鏈和插件模式

Dubbo 的設(shè)計(jì)和實(shí)現(xiàn)采用了責(zé)任鏈模式,使用者可以在服務(wù)調(diào)用的責(zé)任鏈上,對(duì)各個(gè)環(huán)節(jié)進(jìn)行自定義實(shí)現(xiàn),也可通過這種方式,解決 Dubbo 自帶策略有限的問題。基于 SPI 和責(zé)任鏈模式,Dubbo 實(shí)現(xiàn)了一個(gè)類似微內(nèi)核加插件的設(shè)計(jì),整體的可擴(kuò)展性和靈活性都比較高。

(4)高級(jí)特性支持

Dubbo 對(duì)遠(yuǎn)程服務(wù)調(diào)用提供了非常細(xì)粒度的功能支持,比如服務(wù)發(fā)布支持 XML、注解等多種方式,調(diào)用可以選擇泛化調(diào)用、Mock 調(diào)用等。

Spring Cloud 應(yīng)用

Spring Cloud 基于 Spring Boot,是一系列組件的集成,為微服務(wù)開發(fā)提供一個(gè)比較全面的解決方案,包括了服務(wù)發(fā)現(xiàn)功能、配置管理功能、API 網(wǎng)關(guān)、限流熔斷組件、調(diào)用跟蹤等一系列的對(duì)應(yīng)實(shí)現(xiàn)。

總體架構(gòu)

Spring Cloud 的微服務(wù)組件都有多種選擇,典型的架構(gòu)圖如下圖所示:

整體服務(wù)調(diào)用流程如下:

  • 外部請(qǐng)求通過 API 網(wǎng)關(guān),在網(wǎng)關(guān)層進(jìn)行相關(guān)處理;

  • Eureka 進(jìn)行服務(wù)發(fā)現(xiàn),包含健康檢查等;

  • Ribbon 進(jìn)行均衡負(fù)載,分發(fā)到后端的具體實(shí)例;

  • Hystrix 負(fù)責(zé)處理服務(wù)超時(shí)熔斷;

  • Zipkin 進(jìn)行鏈路跟蹤。

應(yīng)用特性

Spring Cloud 目前主要的解決方案包括 Spring Cloud Netflix 系列,以及 Spring Cloud Config、Spring Cloud Consul 等。

Spring Cloud 典型的應(yīng)用如下:

  • 配置中心,一般使用 Spring Cloud Config 實(shí)現(xiàn),服務(wù)發(fā)現(xiàn)也可以管理部分配置;

  • 服務(wù)發(fā)現(xiàn),使用 Eureka 實(shí)現(xiàn),也可以擴(kuò)展 Consul 等;

  • API 網(wǎng)關(guān),使用 Zuul 實(shí)現(xiàn),另外還有 Kong 等應(yīng)用;

  • 負(fù)載均衡,使用 Ribbon 實(shí)現(xiàn),也可以選擇 Feign;

  • 限流降級(jí),使用 Hystrix 實(shí)現(xiàn)熔斷機(jī)制,也可以選擇 Sentinel。

Dubbo 和 Spring Cloud 對(duì)比

可以看到,在介紹 Dubbo 時(shí),主要是從 RPC 服務(wù)調(diào)用的特性入手,而在介紹 Spring Cloud 時(shí),更多的是強(qiáng)調(diào)其在微服務(wù)方面提供的整體解決方案。

Dubbo 更多關(guān)注遠(yuǎn)程服務(wù)調(diào)用功能特性,Spring Cloud 則包含了整體的解決方案,可以認(rèn)為 Dubbo 支持的功能是 Spring Cloud 的子集。

功能對(duì)比

生產(chǎn)環(huán)境使用 Dubbo 組件實(shí)現(xiàn)服務(wù)調(diào)用,需要強(qiáng)依賴 ZooKeeper 注冊(cè)中心;如果要實(shí)現(xiàn)服務(wù)治理的周邊功能,比如配置中心、服務(wù)跟蹤等,則需要集成其他組件的支持。

  • 注冊(cè)中心:需要依賴 ZooKeeper,其他注冊(cè)中心應(yīng)用較少。

  • 分布式配置:可以使用 diamond,淘寶的開源組件來實(shí)現(xiàn)。

  • 分布式調(diào)用跟蹤:應(yīng)用擴(kuò)展 Filter 用 Zippin 來做服務(wù)跟蹤。

  • 限流降級(jí):可以使用開源的 Sentinel 組件,或者自定義 Filter 實(shí)現(xiàn)。

對(duì)于 Spring Cloud,提供的功能更加多樣,服務(wù)治理只是其中的一個(gè)方面,面向的是微服務(wù)整體的解決方案。

調(diào)用方式

Dubbo 使用 RPC 協(xié)議進(jìn)行通訊,支持多種序列化方式,包括 Dubbo 協(xié)議、Hessian、Kryo 等,如果針對(duì)特定的業(yè)務(wù)場景,用戶還可以擴(kuò)展自定義協(xié)議實(shí)現(xiàn)。

Spring Cloud 一般使用 HTTP 協(xié)議的 RESTful API 調(diào)用,RESTful 接口相比 RPC 更為靈活,服務(wù)提供方和調(diào)用方可以更好地解耦,不需要依賴額外的 jar 包等,更適合微服務(wù)的場景。從性能角度考慮,一般來說,會(huì)認(rèn)為 PRC 方式的性能更高,但是如果對(duì)請(qǐng)求時(shí)延不是特別敏感的業(yè)務(wù),是可以忽略這一點(diǎn)的。

服務(wù)發(fā)現(xiàn)

Dubbo 的服務(wù)發(fā)現(xiàn)通過注冊(cè)中心實(shí)現(xiàn),支持多種注冊(cè)中心,另外本地測試支持 Multicast、Simple 等簡單的服務(wù)發(fā)現(xiàn)方式。Spring Cloud 有各種服務(wù)發(fā)現(xiàn)組件,包括 Eureka、Consul、Nacos 等。前面提到過,ZooKeeper 實(shí)現(xiàn)的是 CAP 中的 CP 一致性,Spring Cloud 中的 Eureka 實(shí)現(xiàn)的是 AP 一致性,AP 更適合服務(wù)發(fā)現(xiàn)的場景。

開發(fā)成本

應(yīng)用 Dubbo 需要一定的開發(fā)成本,自定義功能需要實(shí)現(xiàn)各種 Filter 來做定制,使用 Spring Cloud 就很少有這個(gè)問題,因?yàn)楦鞣N功能都有了對(duì)應(yīng)的開源實(shí)現(xiàn),應(yīng)用起來更加簡單。特別是,如果項(xiàng)目中已經(jīng)應(yīng)用了 Spring 框架、Spring Boot 等技術(shù),可以更方便地集成 Spring Cloud,減少已有項(xiàng)目的遷移成本。

經(jīng)過上面的對(duì)比可以看出,Dubbo 和 Spring Cloud 的目標(biāo)不同,關(guān)注的是微服務(wù)實(shí)現(xiàn)的不同維度,Dubbo 看重遠(yuǎn)程服務(wù)調(diào)用,Spring Cloud 則是作為一個(gè)微服務(wù)生態(tài),覆蓋了從服務(wù)調(diào)用,到服務(wù)治理的各個(gè)場景。

總結(jié)

這一課時(shí)的內(nèi)容對(duì)比了微服務(wù)的兩大技術(shù)棧,分別介紹了 Dubbo 和 Spring Cloud 的架構(gòu),以及應(yīng)用特性。

Spring Cloud 從發(fā)展到現(xiàn)在,社區(qū)一直保持高度活躍,各類解決方案越來越豐富,另外,Dubbo 在近幾年又重啟維護(hù),發(fā)布了新的版本,并且也官宣了新的升級(jí)計(jì)劃,相信在兩大開源框架的加持下,會(huì)更好地提高大家的開發(fā)效率。


分布式技術(shù)原理與實(shí)戰(zhàn)45講--第19講:Dubbo v Spring Cloud:兩大技術(shù)棧如何選型的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
武威市| 来安县| 商洛市| 台山市| 大理市| 黑水县| 仙桃市| 余姚市| 潼关县| 灵石县| 犍为县| 勃利县| 义乌市| 黄冈市| 凤阳县| 巴南区| 万安县| 惠东县| 梁平县| 瑞丽市| 伽师县| 镇雄县| 边坝县| 曲麻莱县| 鲜城| 陇西县| 清镇市| 常州市| 禄丰县| 渭南市| 谢通门县| 林口县| 新津县| 鲜城| 大港区| 舒城县| 郁南县| 洛浦县| 朔州市| 五常市| 太和县|