19. Dubbo 和 Spring Cloud 兩大技術(shù)棧如何選項(xiàng)

Service Mesh:服務(wù)網(wǎng)格有哪些應(yīng)用
Dubbo 和 Spring Cloud 嚷闭,這兩個(gè)框架是面試中的熱點(diǎn)
本文就梳理下 Dubbo 和 Spring Cloud 的應(yīng)用特性攒岛,以及兩個(gè)組件功能對(duì)比

Dubbo 應(yīng)用

Dubbo 是阿里開(kāi)源的一個(gè)分布式服務(wù)框架
目的是 支持高性能的遠(yuǎn)程服務(wù)調(diào)用,并且進(jìn)行相關(guān)的服務(wù)治理
從功能上胞锰,Dubbo 可以對(duì)標(biāo) gRPC灾锯,Thrift 等典型的 RPC 框架

總體架構(gòu)
20230807200518.jpg
應(yīng)用特性
  • 基于 SPI 的擴(kuò)展
    SPI(Service Provider Interface) 是 JDK 內(nèi)置的一種服務(wù)提供發(fā)現(xiàn)機(jī)制
    要獲取一個(gè)類(lèi)的擴(kuò)展必須加載所有實(shí)現(xiàn)類(lèi),得到指定的實(shí)現(xiàn)類(lèi)需要遍歷
    Dubbo 中增強(qiáng)了原生的 SPI 實(shí)現(xiàn)嗅榕,可以通過(guò)指定的擴(kuò)展類(lèi)名稱(chēng)來(lái)找到具體的實(shí)現(xiàn)
  • 靈活的服務(wù)調(diào)用
    Dubbo 支持多種服務(wù)調(diào)用方式
    針對(duì)服務(wù)端和消費(fèi)端的線程池顺饮,集群調(diào)用模式,異步和同步調(diào)用等都可以進(jìn)行靈活的配置
  • 責(zé)任鏈和插件模式
    使用者可以在服務(wù)調(diào)用的責(zé)任鏈上凌那,對(duì)各個(gè)環(huán)節(jié)進(jìn)行自定義實(shí)現(xiàn)
    也可通過(guò)這種方式兼雄,解決 Dubbo 自帶策略有限的問(wèn)題
    Dubbo 實(shí)現(xiàn)了一個(gè)類(lèi)似微內(nèi)核加插件的設(shè)計(jì),整體的可擴(kuò)展性和靈活性都比較高
  • 高級(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ù)開(kāi)發(fā)提供一個(gè)比較全面的解決方案
包括服務(wù)發(fā)現(xiàn)功能金砍,配置管理功能局蚀,API 網(wǎng)關(guān),限流熔斷組件恕稠,調(diào)用跟蹤等一系列的對(duì)應(yīng)實(shí)現(xiàn)

總體架構(gòu)
20230807201916.jpg
應(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 調(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)依賴(lài) ZooKeeper 注冊(cè)中心
如果要實(shí)現(xiàn)服務(wù)治理和周邊功能,比如配置中心蹦掐,服務(wù)跟蹤等技羔,則需要集成其他組件的支持

  • 注冊(cè)中心:需要依賴(lài) ZooKeeper ,其他注冊(cè)中心應(yīng)用較少
  • 分布式配置:可以使用 diamond卧抗,淘寶的開(kāi)源組件來(lái)實(shí)現(xiàn)
  • 分布式調(diào)用跟蹤:應(yīng)用擴(kuò)展 Filter 用 Zippin 來(lái)做服務(wù)跟蹤
  • 限流降級(jí):可以使用開(kāi)源的 Sentinel 組件堕阔,或者自定義 Filter 實(shí)現(xiàn)

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

調(diào)用方式
  • Dubbo 使用 RPC 協(xié)議進(jìn)行通信超陆,支持多種序列號(hào)方式,包括 Dubbo 協(xié)議浦马,Hessian时呀,Kryo 等,如果針對(duì)特定的業(yè)務(wù)場(chǎng)景晶默,用戶(hù)還可以擴(kuò)展自定義協(xié)議實(shí)現(xiàn)
  • Spring Cloud 一般使用 HTTP 協(xié)議的 RESTful API 調(diào)用
    RESTful 接口相對(duì) RPC 更為靈活谨娜,服務(wù)提供方和調(diào)用方可以更好的解耦能庆,不需要依賴(lài)額外的 jar 包等
    從性能角度考慮仰剿,一般來(lái)說(shuō)猜旬,會(huì)認(rèn)為 RPC 方式的性能更高
服務(wù)發(fā)現(xiàn)
  • Dubbo 的服務(wù)發(fā)現(xiàn)通過(guò)注冊(cè)中心實(shí)現(xiàn),支持多種注冊(cè)中心
    本地測(cè)試支持 Multicast粤铭,Simple 等簡(jiǎn)單的服務(wù)發(fā)現(xiàn)方式
  • Spring Cloud 有各種服務(wù)發(fā)現(xiàn)組件鳍置,包括 Eureka识补,Consul蹂安,Nacos 等
    Spring Cloud 中的 Eureka 實(shí)現(xiàn)的是 AP 一致性,AP 更適合服務(wù)發(fā)現(xiàn)的場(chǎng)景
開(kāi)發(fā)成本
  • 應(yīng)用Dubbo 需要一定的開(kāi)發(fā)成本彰阴,自定義功能需要實(shí)現(xiàn)各種 Filter 來(lái)做定制
  • Spring Cloud 各種功能都有了對(duì)應(yīng)的開(kāi)源實(shí)現(xiàn)瘾敢,應(yīng)用起來(lái)更加簡(jiǎn)單
    如果項(xiàng)目中已經(jīng)應(yīng)用了 Spring 框架,Spring Boot 等技術(shù)
    可以更方便的集成 Spring Cloud 尿这,減少已有項(xiàng)目的遷移成本
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è)場(chǎng)景

總結(jié)

本文對(duì)比了微服務(wù)的兩大技術(shù)棧
分別介紹了 Dubbo 和 Spring Cloud 的架構(gòu)碟摆,以及應(yīng)用特性

  • Spring Cloud 從發(fā)展到現(xiàn)在,社區(qū)一直保持高度活躍叨橱,各類(lèi)解決方案越來(lái)越豐富
  • Dubbo 在近幾年重啟維護(hù)焦履,發(fā)布了新版本,也官宣了新的升級(jí)計(jì)劃
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雏逾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子郑临,更是在濱河造成了極大的恐慌栖博,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厢洞,死亡現(xiàn)場(chǎng)離奇詭異仇让,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)躺翻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)丧叽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人公你,你說(shuō)我怎么就攤上這事踊淳。” “怎么了陕靠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵迂尝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我剪芥,道長(zhǎng)垄开,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任税肪,我火速辦了婚禮溉躲,結(jié)果婚禮上榜田,老公的妹妹穿的比我還像新娘。我一直安慰自己锻梳,他們只是感情好箭券,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著唱蒸,像睡著了一般邦鲫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上神汹,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天庆捺,我揣著相機(jī)與錄音,去河邊找鬼屁魏。 笑死滔以,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氓拼。 我是一名探鬼主播你画,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桃漾!你這毒婦竟也來(lái)了坏匪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤撬统,失蹤者是張志新(化名)和其女友劉穎适滓,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恋追,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凭迹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苦囱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗅绸。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撕彤,靈堂內(nèi)的尸體忽然破棺而出鱼鸠,到底是詐尸還是另有隱情,我是刑警寧澤羹铅,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布瞧柔,位于F島的核電站,受9級(jí)特大地震影響睦裳,放射性物質(zhì)發(fā)生泄漏造锅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一廉邑、第九天 我趴在偏房一處隱蔽的房頂上張望哥蔚。 院中可真熱鬧倒谷,春花似錦、人聲如沸糙箍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)深夯。三九已至抖格,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咕晋,已是汗流浹背雹拄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掌呜,地道東北人滓玖。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像质蕉,于是被迫代替她去往敵國(guó)和親势篡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容