dubbo少盲帖

作為測試經(jīng)常會聽到后端開發(fā)說起dubbo服務(wù)弃秆,dubbo服務(wù)到底使用干啥棱诱,查閱了網(wǎng)上資料再次簡單介紹下(不涉及代碼)

按用戶人數(shù),通過用一個圖來具體說明架構(gòu)和開發(fā)框架的演進過程


image.png
  • 單一應(yīng)用架構(gòu)
    當(dāng)網(wǎng)站流量較小豌鹤,只需一個應(yīng)用徽职,將所有功能都部署在一起,以減少部署節(jié)點和成本偷卧。此時豺瘤,用戶簡化增刪改查的數(shù)據(jù)訪問框架(ORM,object-relational mapping 對象關(guān)系映射)是關(guān)鍵听诸。
    如Django的model舉例:
from django.db import models
class User1(models.Model):
    name = models.CharField(max_length=225)

對應(yīng)的數(shù)據(jù)庫中可能就是一個表:user坐求,里面有一個字段。
如有個User的實例晌梨,如:

user = User1()
user.name = 'jc'
user.save() //保存數(shù)據(jù)庫

那么對應(yīng)著數(shù)據(jù)可中就有一條記錄桥嗤,name為jc。此時的user實例仔蝌,對應(yīng)的正是這個表的一條記錄
使用ORM的好處就是不用操作表砸逊,可以在程序中用面向?qū)ο蟮乃悸罚苯硬僮鲗ο蠹纯烧乒洹H缟鲜龃a,插入一條記錄司倚,直接 user.save()豆混。對應(yīng)ORM會幫助我們生成一條SQL語句篓像。

Insert into user1(name) values('jc')
  • 垂直應(yīng)用架構(gòu)
    當(dāng)訪問量逐漸增大,單一應(yīng)用增加機器帶來的加速度越來越小皿伺,將應(yīng)用拆成互不相干的幾個應(yīng)用员辩,以提升效率。此時鸵鸥,用于加速前端頁面開發(fā)的Web框架(MVC,模型奠滑,視圖,控制器)是關(guān)鍵妒穴。

  • 分布式服務(wù)架構(gòu)
    當(dāng)垂直應(yīng)用越來越多宋税,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來讼油,作為獨立的服務(wù)杰赛,逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求矮台。此時乏屯,用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC,Remote Procedure Call)是關(guān)鍵瘦赫。
    RPC-遠程過程調(diào)用辰晕,它是一種通過網(wǎng)絡(luò)從遠程計算機上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議确虱。RPC采用客戶機和服務(wù)器模式含友。請求程序是一個客戶機,而服務(wù)提供程序就是一個服務(wù)器蝉娜。
    1.客戶機調(diào)用進程發(fā)送一個進程參數(shù)的調(diào)用信息到服務(wù)進程然后等待應(yīng)答消息
    2.服務(wù)端唱较,經(jīng)常保持睡眠直到調(diào)用信息到達為止
    3.當(dāng)一個調(diào)用信息到達,服務(wù)器獲得進程參數(shù)召川,計算結(jié)果南缓,發(fā)送答復(fù)信息,然后等待下一個調(diào)用信息
    4.客戶端調(diào)用進程接受答復(fù)信息荧呐,獲取進程結(jié)果汉形,然后調(diào)用執(zhí)行進行

  • 流動計算架構(gòu)
    當(dāng)服務(wù)越來越多,容量的評估倍阐,小服務(wù)資源的浪費等問題逐漸顯現(xiàn)岭埠,此時需增加一個調(diào)度中心基于訪問壓力實時管理集群容量,提高集群利用率东羹。此時个榕,用于提高機器利用率的資源調(diào)度和治理中心(SOA,Service Orirnted Architecture面向服務(wù)框架)是關(guān)鍵概耻。

Dubbo服務(wù)原理

下圖是從Dubbo官網(wǎng)直接拿來的使套,看一下基于RPC層罐呼,服務(wù)提供方和服務(wù)消費方之間的調(diào)用關(guān)系,如圖所示


image.png

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

調(diào)用關(guān)系說明:

  • 0:服務(wù)容器負責(zé)啟動侦高,加載嫉柴,運行服務(wù)提供者
  • 1:服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)
  • 2:服務(wù)消費者在啟動時奉呛,向注冊中心注冊自己所需的服務(wù)
  • 3:注冊中心返回服務(wù)提供者地址列表給消費者计螺,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者
  • 4:服務(wù)消費者瞧壮,從提供者地址列表中登馒,基于軟負載均衡算法,選擇一臺提供者進行調(diào)用馁痴,如果調(diào)用失敗谊娇,再選另一臺調(diào)用
  • 5:服務(wù)消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間罗晕,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心济欢。

Dubbo架構(gòu)采用的是一種非常簡單的模型,要么是提供方提供服務(wù)小渊,要么是消費方消費服務(wù)法褥,所以基于這一點可以抽象出服務(wù)提供方(Provider)和服務(wù)消費方(Consumer)兩個角色。另外Dubbo架構(gòu)還具有以下幾個特點酬屉,連通性半等、健壯性、伸縮性呐萨、升級性杀饵,有關(guān)注冊中心、協(xié)議支持谬擦、服務(wù)監(jiān)控等內(nèi)容切距,也在特點里有詳細的描述。

連通性(服務(wù)消費者和服務(wù)提供者的關(guān)聯(lián))

1.注冊中心負責(zé)服務(wù)地址的注冊與查找惨远,相當(dāng)于目錄服務(wù)谜悟,服務(wù)提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉(zhuǎn)發(fā)請求北秽,壓力較小葡幸。
2.監(jiān)控中心負責(zé)統(tǒng)計各服務(wù)調(diào)用次數(shù),調(diào)用時間等贺氓,統(tǒng)計先在內(nèi)存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務(wù)器蔚叨,并以報表展示。
3.服務(wù)提供者向注冊中心注冊其提供的服務(wù),并匯報調(diào)用時間到監(jiān)控中心蔑水,此時間不包含網(wǎng)絡(luò)開銷悄泥。
4.服務(wù)消費者向注冊中心獲取服務(wù)提供者地址列表,并根據(jù)負載算法直接調(diào)用提供者肤粱,同時匯報調(diào)用時間到監(jiān)控中心,此時間包含網(wǎng)絡(luò)開銷厨相。
5.注冊中心领曼,服務(wù)提供者,服務(wù)消費者三者之間均為長連接蛮穿,監(jiān)控中心除外庶骄。
6.注冊中心通過長連接感知服務(wù)提供者的存在,服務(wù)提供者宕機践磅,注冊中心將立即推送事件通知消費者单刁。
7.注冊中心和監(jiān)控中心全部宕機,不影響已運行的提供者和消費者府适,消費者在本地緩存了提供者列表羔飞。
8.注冊中心和監(jiān)控中心都是可選的,服務(wù)消費者可以直連服務(wù)提供者檐春。

健壯性(任意節(jié)點宕掉后逻淌,服務(wù)仍然可用)

1.監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù)疟暖。
2.數(shù)據(jù)庫宕掉后卡儒,注冊中心仍能通過緩存提供服務(wù)列表查詢,但不能注冊新服務(wù)俐巴。
3.注冊中心對等集群骨望,任意一臺宕掉后,將自動切換到另一臺欣舵。
4.注冊中心全部宕掉后擎鸠,服務(wù)提供者和服務(wù)消費者仍能通過本地緩存通訊。
5.服務(wù)提供者無狀態(tài)邻遏,任意一臺宕掉后糠亩,不影響使用。
6.服務(wù)提供者全部宕掉后准验,服務(wù)消費者應(yīng)用將無法使用赎线,并無限次重連等待服務(wù)提供者恢復(fù)。

伸縮性(節(jié)點可以自動增加)

1.注冊中心為對等集群糊饱,可動態(tài)增加機器部署實例垂寥,所有客戶端將自動發(fā)現(xiàn)新的注冊中心。
2.服務(wù)提供者無狀態(tài),可動態(tài)增加機器部署實例滞项,注冊中心將推送新的服務(wù)提供者信息給消費者狭归。

升級性(可平滑升級)

當(dāng)服務(wù)集群規(guī)模進一步擴大,帶動IT治理結(jié)構(gòu)進一步升級文判,需要實現(xiàn)動態(tài)部署过椎,進行流動計算,不會給現(xiàn)有分布式服務(wù)架構(gòu)帶來阻力戏仓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疚宇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赏殃,更是在濱河造成了極大的恐慌敷待,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仁热,死亡現(xiàn)場離奇詭異榜揖,居然都是意外死亡,警方通過查閱死者的電腦和手機抗蠢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門举哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人物蝙,你說我怎么就攤上這事炎滞。” “怎么了诬乞?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵册赛,是天一觀的道長。 經(jīng)常有香客問我震嫉,道長森瘪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任票堵,我火速辦了婚禮扼睬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悴势。我一直安慰自己窗宇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布特纤。 她就那樣靜靜地躺著军俊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捧存。 梳的紋絲不亂的頭發(fā)上粪躬,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天担败,我揣著相機與錄音,去河邊找鬼镰官。 笑死提前,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泳唠。 我是一名探鬼主播狈网,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笨腥!你這毒婦竟也來了孙援?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扇雕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窥摄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镶奉,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年崭放,在試婚紗的時候發(fā)現(xiàn)自己被綠了哨苛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡币砂,死狀恐怖建峭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情决摧,我是刑警寧澤亿蒸,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站掌桩,受9級特大地震影響边锁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜波岛,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一茅坛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧则拷,春花似錦贡蓖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宣旱,卻和暖如春仅父,著一層夾襖步出監(jiān)牢的瞬間叛薯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工笙纤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耗溜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓省容,卻偏偏與公主長得像抖拴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子腥椒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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

  • 1阿宅、微服務(wù)簡介 微服務(wù)是一種用于構(gòu)建應(yīng)用的架構(gòu)方案。微服務(wù)架構(gòu)有別于更為傳統(tǒng)的單體式方案笼蛛,可將應(yīng)用拆分成多個核心功...
    橋頭放牛娃閱讀 942評論 4 16
  • 本文來自于我的個人主頁:Apache Dubbo洒放,轉(zhuǎn)載請保留鏈接 ;) 在2011年10月27日,阿里巴巴開源了自...
    程序猿天璇閱讀 3,106評論 1 8
  • Dubbo是什么 Dubbo是Alibaba開源的分布式服務(wù)框架滨砍,它最大的特點是按照分層的方式來架構(gòu)往湿,使用這種方式...
    Coselding閱讀 17,217評論 3 196
  • 一、產(chǎn)生的背景 隨著互聯(lián)網(wǎng)的發(fā)展惋戏,網(wǎng)站應(yīng)用的規(guī)模不斷擴大领追,常規(guī)的垂直應(yīng)用架構(gòu)已無法應(yīng)對,分布式服務(wù)架構(gòu)以及流動計算...
    Java大生閱讀 619評論 0 0
  • 今天寫麥桶餅响逢?是這么叫嗎绒窑,可能各地有不同的叫法。初中門口有一家小攤舔亭,賣現(xiàn)做的麥桶餅些膨。一勺面糊攤開,均勻的鋪滿整個平...
    火星民政局閱讀 96評論 0 0