1.dubbo初體驗(yàn)

一绑改、背景

  • 隨著互聯(lián)網(wǎng)的發(fā)展谢床,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無(wú)法應(yīng)對(duì)厘线,分布式服務(wù)架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行识腿,亟需一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn)。
    從單一的架構(gòu)到分布式架構(gòu)演變

    (1)單一應(yīng)用架構(gòu)
    當(dāng)網(wǎng)站流量很小時(shí)造壮,只需一個(gè)應(yīng)用渡讼,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本耳璧。此時(shí)成箫,用于簡(jiǎn)化增刪改查工作量的數(shù)據(jù)訪問(wèn)框架(ORM)是關(guān)鍵
    (2)垂直應(yīng)用架構(gòu)
    當(dāng)訪問(wèn)量逐漸增大,單一應(yīng)用增加機(jī)器性能帶來(lái)的加速度越來(lái)越小旨枯,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用蹬昌,以提升效率。此時(shí)攀隔,用于加速前端頁(yè)面開(kāi)發(fā)的Web框架(MVC)是關(guān)鍵皂贩。
    (3)分布式服務(wù)架構(gòu)
    當(dāng)垂直應(yīng)用越來(lái)越多,應(yīng)用之間交互不可避免竞慢,將核心業(yè)務(wù)抽取出來(lái)先紫,作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心筹煮,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求遮精。此時(shí),用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵败潦。
    (4)流動(dòng)計(jì)算架構(gòu)
    當(dāng)服務(wù)越來(lái)越多本冲,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問(wèn)題逐漸顯現(xiàn)劫扒,此時(shí)需增加一個(gè)調(diào)度中心基于訪問(wèn)壓力實(shí)時(shí)管理集群容量檬洞,提高集群利用率。此時(shí)沟饥,用于提高機(jī)器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵添怔。

二湾戳、需求

dubbo服務(wù)治理
  • 大規(guī)模服務(wù)化后的問(wèn)題及解決思路:
    (1)在大規(guī)模服務(wù)化之前,應(yīng)用可能只是通過(guò) RMI 或 Hessian 等工具广料,簡(jiǎn)單的暴露和引用遠(yuǎn)程服務(wù)砾脑,通過(guò)配置服務(wù)的URL地址進(jìn)行調(diào)用,通過(guò) F5 等硬件進(jìn)行負(fù)載均衡艾杏。--------------需要一種高效的運(yùn)程通信手段
    (2)當(dāng)服務(wù)越來(lái)越多時(shí)韧衣,服務(wù) URL 配置管理變得非常困難,F(xiàn)5 硬件負(fù)載均衡器的單點(diǎn)壓力也越來(lái)越大购桑。 此時(shí)需要一個(gè)服務(wù)注冊(cè)中心畅铭,動(dòng)態(tài)的注冊(cè)和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明勃蜘。并通過(guò)在消費(fèi)方獲取服務(wù)提供方地址列表硕噩,實(shí)現(xiàn)軟負(fù)載均衡和 Failover,降低對(duì) F5 硬件負(fù)載均衡器的依賴缭贡,也能減少部分成本榴徐。
    (3)當(dāng)進(jìn)一步發(fā)展,服務(wù)間依賴關(guān)系變得錯(cuò)蹤復(fù)雜匀归,甚至分不清哪個(gè)應(yīng)用要在哪個(gè)應(yīng)用之前啟動(dòng)坑资,架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系。 這時(shí)穆端,需要自動(dòng)畫(huà)出應(yīng)用間的依賴關(guān)系圖袱贮,以幫助架構(gòu)師理清理關(guān)系。----需要服務(wù)治理
    (4)服務(wù)的調(diào)用量越來(lái)越大体啰,服務(wù)的容量問(wèn)題就暴露出來(lái)攒巍,這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器荒勇? 為了解決這些問(wèn)題柒莉,第一步,要將服務(wù)現(xiàn)在每天的調(diào)用量沽翔,響應(yīng)時(shí)間兢孝,都統(tǒng)計(jì)出來(lái),作為容量規(guī)劃的參考指標(biāo)仅偎。其次跨蟹,要可以動(dòng)態(tài)調(diào)整權(quán)重,在線上橘沥,將某臺(tái)機(jī)器的權(quán)重一直加大窗轩,并在加大的過(guò)程中記錄響應(yīng)時(shí)間的變化,直到響應(yīng)時(shí)間到達(dá)閾值座咆,記錄此時(shí)的訪問(wèn)量痢艺,再以此訪問(wèn)量乘以機(jī)器數(shù)反推總?cè)萘?--需要服務(wù)監(jiān)控

三仓洼、dubbo架構(gòu)

  • dubbo是一個(gè)阿里巴巴開(kāi)發(fā)的開(kāi)源分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案堤舒,以及SOA服務(wù)治理方案是阿里巴巴集團(tuán)的各成員站點(diǎn)的核心框架衬潦,每天為2,000+個(gè)服務(wù)提供3,000,000,000+次訪問(wèn)量支持。


    dubbo架構(gòu)

1.相關(guān)的節(jié)點(diǎn)說(shuō)明

Provider 暴露服務(wù)的服務(wù)提供方
Consumer 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方
Registry 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心
Monitor 統(tǒng)計(jì)服務(wù)的調(diào)用次數(shù)和調(diào)用時(shí)間的監(jiān)控中心
Container 服務(wù)運(yùn)行容器

2.調(diào)用關(guān)系說(shuō)明服務(wù)容器負(fù)責(zé)啟動(dòng)植酥,加載,運(yùn)行服務(wù)提供者弦牡。

(1)服務(wù)提供者在啟動(dòng)時(shí)友驮,向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
(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)提供者進(jìn)行調(diào)用,如果調(diào)用失敗裸扶,再選另一臺(tái)調(diào)用框都。
(5)服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間呵晨,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心魏保。

3.dubbo的特點(diǎn)

(1)連通性

  • 注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于目錄服務(wù)摸屠,服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互谓罗,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求,壓力較小
  • 監(jiān)控中心負(fù)責(zé)統(tǒng)計(jì)各服務(wù)調(diào)用次數(shù)季二,調(diào)用時(shí)間等檩咱,統(tǒng)計(jì)先在內(nèi)存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務(wù)器,并以報(bào)表展示
  • 服務(wù)提供者向注冊(cè)中心注冊(cè)其提供的服務(wù)胯舷,并匯報(bào)調(diào)用時(shí)間到監(jiān)控中心税手,此時(shí)間不包含網(wǎng)絡(luò)開(kāi)銷
  • 服務(wù)消費(fèi)者向注冊(cè)中心獲取服務(wù)提供者地址列表,并根據(jù)負(fù)載算法直接調(diào)用提供者需纳,同時(shí)匯報(bào)調(diào)用時(shí)間到監(jiān)控中心芦倒,此時(shí)間包含網(wǎng)絡(luò)開(kāi)銷
  • 注冊(cè)中心,服務(wù)提供者不翩,服務(wù)消費(fèi)者三者之間均為長(zhǎng)連接兵扬,監(jiān)控中心除外
  • 注冊(cè)中心通過(guò)長(zhǎng)連接感知服務(wù)提供者的存在麻裳,服務(wù)提供者宕機(jī),注冊(cè)中心將立即推送事件通知消費(fèi)者
  • 注冊(cè)中心和監(jiān)控中心全部宕機(jī)器钟,不影響已運(yùn)行的提供者和消費(fèi)者津坑,消費(fèi)者在本地緩存了提供者列表
  • 注冊(cè)中心和監(jiān)控中心都是可選的,服務(wù)消費(fèi)者可以直連服務(wù)提供者

(2)健壯性

  • 監(jiān)控中心宕掉不影響使用傲霸,只是丟失部分采樣數(shù)據(jù)
  • 數(shù)據(jù)庫(kù)宕掉后疆瑰,注冊(cè)中心仍能通過(guò)緩存提供服務(wù)列表查詢,但不能注冊(cè)新服務(wù)
  • 注冊(cè)中心對(duì)等集群昙啄,任意一臺(tái)宕掉后穆役,將自動(dòng)切換到另一臺(tái)
  • 注冊(cè)中心全部宕掉后,服務(wù)提供者和服務(wù)消費(fèi)者仍能通過(guò)本地緩存通訊
  • 服務(wù)提供者無(wú)狀態(tài)梳凛,任意一臺(tái)宕掉后耿币,不影響使用
  • 服務(wù)提供者全部宕掉后,服務(wù)消費(fèi)者應(yīng)用將無(wú)法使用韧拒,并無(wú)限次重連等待服務(wù)提供者恢復(fù)

(3)伸縮性

  • 注冊(cè)中心為對(duì)等集群淹接,可動(dòng)態(tài)增加機(jī)器部署實(shí)例,所有客戶端將自動(dòng)發(fā)現(xiàn)新的注冊(cè)中心
  • 服務(wù)提供者無(wú)狀態(tài)叛溢,可動(dòng)態(tài)增加機(jī)器部署實(shí)例塑悼,注冊(cè)中心將推送新的服務(wù)提供者信息給消費(fèi)者

(4)升級(jí)性
當(dāng)服務(wù)集群規(guī)模進(jìn)一步擴(kuò)大,帶動(dòng)IT治理結(jié)構(gòu)進(jìn)一步升級(jí)楷掉,需要實(shí)現(xiàn)動(dòng)態(tài)部署拢肆,進(jìn)行流動(dòng)計(jì)算,現(xiàn)有分布式服務(wù)架構(gòu)不會(huì)帶來(lái)阻力靖诗。下圖是未來(lái)可能的一種架構(gòu):


服務(wù)升級(jí)架構(gòu)圖
節(jié)點(diǎn) 角色說(shuō)明
Deployer 自動(dòng)部署服務(wù)的本地代理
Repository 倉(cāng)庫(kù)用于存儲(chǔ)服務(wù)應(yīng)用發(fā)布包
Scheduler 調(diào)度中心基于訪問(wèn)壓力自動(dòng)增減服務(wù)提供者
Admin 統(tǒng)一管理控制臺(tái)
Registry 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心
Monitor 統(tǒng)計(jì)服務(wù)的調(diào)用次數(shù)和調(diào)用時(shí)間的監(jiān)控中心

4.總結(jié)dubbo核心功能

(1)遠(yuǎn)程通訊: 提供對(duì)多種基于長(zhǎng)連接的NIO框架抽象封裝郭怪,包括多種線程模型,序列化刊橘,以及“請(qǐng)求-響應(yīng)”模式的信息交換方式鄙才。
(2)集群容錯(cuò): 提供基于接口方法的透明遠(yuǎn)程過(guò)程調(diào)用,包括多協(xié)議支持促绵,以及軟負(fù)載均衡攒庵,失敗容錯(cuò),地址路由败晴,動(dòng)態(tài)配置等集群支持浓冒。
(3) 自動(dòng)發(fā)現(xiàn): 基于注冊(cè)中心目錄服務(wù),使服務(wù)消費(fèi)方能動(dòng)態(tài)的查找服務(wù)提供方尖坤,使地址透明稳懒,使服務(wù)提供方可以平滑增加或減少機(jī)器。

5.dubbo優(yōu)勢(shì)

(1)透明化的遠(yuǎn)程方法調(diào)用慢味,調(diào)用本地方法一樣场梆,只是需要簡(jiǎn)單的配置沒(méi)有任何的api侵入墅冷,性能相對(duì)http傳送方式要好。
(2)軟負(fù)載均衡及容錯(cuò)機(jī)制或油,可在內(nèi)網(wǎng)內(nèi)替代F5等硬件負(fù)載均衡寞忿,降低成本,減少單點(diǎn)顶岸,實(shí)現(xiàn)了高可用機(jī)制
(3)服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)及服務(wù)監(jiān)控
(4)可以與spring結(jié)合使用

6腔彰、dubbo劣勢(shì)

(1)Dubbo實(shí)現(xiàn)了服務(wù)治理的基礎(chǔ),其他組件需要另外整合以實(shí)現(xiàn)對(duì)應(yīng)的功能辖佣,比如:
分布式配置:可以使用淘寶的diamond霹抛、百度的disconf來(lái)實(shí)現(xiàn)分布式配置管理,攜程apollo等凌简。
服務(wù)跟蹤:可以使用京東開(kāi)源的Hydra
批量任務(wù):可以使用當(dāng)當(dāng)開(kāi)源的Elastic-Job
(2)版本Dubbo升級(jí)比較困難,需要考慮因素多恃逻。服務(wù)提供方與調(diào)用方接口依賴方式太強(qiáng):調(diào)用方對(duì)提供方的抽象接口存在強(qiáng)依賴關(guān)系雏搂,需要嚴(yán)格的管理版本依賴,才不會(huì)出現(xiàn)服務(wù)方與調(diào)用方的不一致導(dǎo)致應(yīng)用無(wú)法編譯成功等一系列問(wèn)題寇损;
(3)服務(wù)對(duì)平臺(tái)敏感凸郑,難以簡(jiǎn)單復(fù)用:通常我們?cè)谔峁?duì)外服務(wù)時(shí),都會(huì)以REST的方式提供出去矛市,這樣可以實(shí)現(xiàn)跨平臺(tái)的特點(diǎn)芙沥。在Dubbo中我們要提供REST接口時(shí),不得不實(shí)現(xiàn)一層代理浊吏,用來(lái)將RPC接口轉(zhuǎn)換成REST接口進(jìn)行對(duì)外發(fā)布而昨。所以當(dāng)當(dāng)網(wǎng)在dubbox(基于Dubbo的開(kāi)源擴(kuò)展)中增加了對(duì)REST支持。


參考:
官方文檔
微服務(wù)架構(gòu)的基礎(chǔ)框架選擇:Spring Cloud還是Dubbo找田?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歌憨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子墩衙,更是在濱河造成了極大的恐慌务嫡,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漆改,死亡現(xiàn)場(chǎng)離奇詭異心铃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)挫剑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)去扣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人樊破,你說(shuō)我怎么就攤上這事厅篓⌒愦妫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵羽氮,是天一觀的道長(zhǎng)或链。 經(jīng)常有香客問(wèn)我,道長(zhǎng)档押,這世上最難降的妖魔是什么澳盐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮令宿,結(jié)果婚禮上叼耙,老公的妹妹穿的比我還像新娘。我一直安慰自己粒没,他們只是感情好筛婉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著癞松,像睡著了一般爽撒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上响蓉,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天硕勿,我揣著相機(jī)與錄音,去河邊找鬼枫甲。 笑死源武,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的想幻。 我是一名探鬼主播粱栖,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼脏毯!你這毒婦竟也來(lái)了查排?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抄沮,失蹤者是張志新(化名)和其女友劉穎跋核,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叛买,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砂代,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了率挣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刻伊。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捶箱,到底是詐尸還是另有隱情智什,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布丁屎,位于F島的核電站荠锭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晨川。R本人自食惡果不足惜证九,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望共虑。 院中可真熱鬧愧怜,春花似錦、人聲如沸妈拌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尘分。三九已至猜惋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間音诫,已是汗流浹背惨奕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工雪位, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竭钝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓雹洗,卻偏偏與公主長(zhǎng)得像香罐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子时肿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理庇茫,服務(wù)發(fā)現(xiàn),斷路器螃成,智...
    卡卡羅2017閱讀 134,667評(píng)論 18 139
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評(píng)論 2 89
  • 又買了一套專業(yè)課資料旦签,264, 算是決定了這個(gè)學(xué)校寸宏,這個(gè)專業(yè)吧宁炫。 這么晚了還沒(méi)有下定決心考什么專業(yè),哪個(gè)學(xué)校氮凝,我可...
    千里晨昏閱讀 118評(píng)論 0 0
  • 梵蒂藝術(shù)成長(zhǎng)中心雙十一活動(dòng)巨惠來(lái)襲8岢病!!凡于11月11日當(dāng)日進(jìn)校報(bào)名續(xù)費(fèi)即可享受豐厚優(yōu)惠大禮包 活動(dòng)一:報(bào)名續(xù)費(fèi)活...
    Gtulkg閱讀 255評(píng)論 0 0
  • 輕松養(yǎng)成好習(xí)慣的神器上線了竿秆! 你是否在為了自己的生活沒(méi)有規(guī)律启摄、而不能養(yǎng)成良好的生活習(xí)慣發(fā)愁呢?你是否在為了自己的健...
    毅_能閱讀 735評(píng)論 0 17