為什么 Dubbo 總說(shuō)自己性能高?
初識(shí) Dubbo
為什么 Dubbo 說(shuō)自己性能高?
高性能要從底層的原理說(shuō)起,既然是一個(gè) RPC 框架,主要干的就是遠(yuǎn)程過(guò)程(方法)調(diào)用, 那么提升性能就要從最關(guān)鍵、最耗時(shí)的兩個(gè)方面入手:序列化和網(wǎng)絡(luò)通信。
序列化:我們學(xué)習(xí) Java 網(wǎng)絡(luò)開(kāi)發(fā)的時(shí)候知道,本地的對(duì)象要在網(wǎng)絡(luò)上傳輸,必須要實(shí)現(xiàn)Serializable 接口,也就是必須序列化。我們序列化的方案很多:xml、json、二進(jìn)制流…其中效率最高的就是二進(jìn)制流(因?yàn)橛?jì)算機(jī)就是二進(jìn)制的)。然而 Dubbo 采用的就是效率最高的二進(jìn)制。
網(wǎng)絡(luò)通信:不同于 HTTP 需要進(jìn)行 7 步走(三次握手和四次揮手),Dubbo 采用 Socket 通信機(jī)制,一步到位,提升了通信效率,并且可以建立長(zhǎng)連接,不用反復(fù)連接,直接傳輸數(shù)據(jù)
別的 RPC 框架
gRPC
Thrift
HSF
……
dubbo 的前世今生
dubbo 之前一直都作為 Alibaba 公司內(nèi)部使用的框架。
2011 年,dubbo 被托管到了GitHub 上(開(kāi)源)
2014 年11 月發(fā)布2.4.11版本后宣布停止更新。此后一段時(shí)間很多公司開(kāi)源了自己基于Dubbo的變種版本(例如當(dāng)當(dāng)網(wǎng)的 Dubbo X,網(wǎng)易考拉的 Dubbo K)
2017 年 SpringCloud 橫空出世,Dubbo 感覺(jué)到壓力后連續(xù)更新了幾個(gè)版本2018 年 1 月,阿里公司聯(lián)合當(dāng)當(dāng)網(wǎng)將 Dubbo 和 Dubbo X 合并,發(fā)布了 2.6 版本2018 年除夕夜阿里將 Dubbo 貢獻(xiàn)給了 Apache 基金會(huì)
2018 除夕夜至今,Apache 維護(hù)和更新 Dubbo
dubbo 概述
Apache Dubbo (incubating) |?d?b??| 是一款高性能、輕量級(jí)的開(kāi)源 Java RPC 框架,它提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯(cuò)和負(fù)載均衡,以及服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)。
Dubbo 是一個(gè)分布式服務(wù)框架,致力于提供高性能和透明化的 RPC 遠(yuǎn)程服務(wù)調(diào)用方案、服務(wù)治理方案。
特性:
面向接口代理:調(diào)用接口的方法,在 A 服務(wù)器調(diào)用 B 服務(wù)器的方法,由 dubbo 實(shí)現(xiàn)對(duì) B 的調(diào)用,無(wú)需關(guān)心實(shí)現(xiàn)的細(xì)節(jié),就像MyBatis 訪(fǎng)問(wèn) Dao 的接口,可以操作數(shù)據(jù)庫(kù)一樣。不用關(guān)心 Dao 接口方法的實(shí)現(xiàn)。這樣開(kāi)發(fā)是方便,舒服的。
基本架構(gòu)
服務(wù)提供者(Provider):暴露服務(wù)的服務(wù)提供方,服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
服務(wù)消費(fèi)者(Consumer): 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方,服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù),服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。
注冊(cè)中心(Registry):注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者
監(jiān)控中心(Monitor):服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心
調(diào)用關(guān)系說(shuō)明:
服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。
服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)。
注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。
服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。
服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。
dubbo 支持的協(xié)議
支持多種協(xié)議:dubbo , hessian , rmi , http, webservice , thrift , memcached , redis。dubbo 官方推薦使用dubbo 協(xié)議。dubbo 協(xié)議默認(rèn)端口 20880
使用 dubbo 協(xié)議,spring 配置文件加入:
<dubbo:protocol name="dubbo" port="20880" />
電商平臺(tái)需求
某電商平臺(tái)系統(tǒng)需求,用戶(hù)瀏覽商品;選擇商品下訂單,訂單系統(tǒng)需要獲取用戶(hù)信息中的送貨地址;向支付系統(tǒng)請(qǐng)求完成付款。

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)
最新活動(dòng)更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車(chē)電子技術(shù)在線(xiàn)大會(huì)
-
4月30日立即下載>> 【村田汽車(chē)】汽車(chē)E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線(xiàn)下巡回】2025年STM32峰會(huì)
-
即日-5.15立即報(bào)名>>> 【在線(xiàn)會(huì)議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書(shū)】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評(píng) >> 【評(píng)選啟動(dòng)】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評(píng)選
推薦專(zhuān)題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開(kāi)始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀(jì)”爆發(fā)至今,五類(lèi)新物種登上歷史舞臺(tái)
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國(guó)產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來(lái)商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽(yáng)光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開(kāi)成長(zhǎng)空間
- 8 地平線(xiàn)自動(dòng)駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營(yíng)收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?