微服務(wù)學(xué)習(xí)(2)-微服務(wù)框架實(shí)現(xiàn)-Dubbo簡(jiǎn)介

一澎迎、微服務(wù)實(shí)現(xiàn)框架

? ?當(dāng)前隨著微服務(wù)的應(yīng)用,越來越多的商用公司和開源團(tuán)體開發(fā)微服務(wù)的實(shí)現(xiàn)框架鳍刷。主要有:

1)Dubbo

? ?Dubbo是阿里巴巴公司開源的一個(gè)高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的 RPC 實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和 Spring框架無縫集成宗侦。

? ? ? 由于該框架由于資料文檔較多,并且經(jīng)過阿里內(nèi)部系統(tǒng)忆蚀、其他公司大量驗(yàn)證矾利,對(duì)于國內(nèi)開發(fā)人員來說是學(xué)習(xí)和實(shí)現(xiàn)微服務(wù)首選框架。

2)Spring Cloud

? ? ?Spring Cloud是一系列框架的有序集合蜓谋。它利用Spring Boot的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)梦皮,如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心桃焕、消息總線剑肯、負(fù)載均衡、斷路器观堂、數(shù)據(jù)監(jiān)控等让网,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。Spring并沒有重復(fù)制造輪子师痕,它只是將目前各家公司開發(fā)的比較成熟溃睹、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理胰坟,最終給開發(fā)者留出了一套簡(jiǎn)單易懂因篇、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。

? ? 該框架中最為出名的便是Spring Cloud Netflix 微服務(wù)框架笔横。從項(xiàng)目的背景來看竞滓,Dubbo 國內(nèi)用的公司挺多,國內(nèi)影響力大吹缔,Spring Cloud 自然在國外影響力較大商佑,所以這個(gè)來看不分伯仲了,畢竟都有大公司在使用厢塘。

3)Dubbox

Dubbox是當(dāng)當(dāng)網(wǎng)擴(kuò)展了Dubbo茶没,

dubbx是當(dāng)當(dāng)網(wǎng)對(duì)原阿里dubbo2.x的升級(jí),并且兼容原有的dubbox晚碾。其中升級(jí)了zookeeper和spring版本抓半,并且支持restfull風(fēng)格的遠(yuǎn)程調(diào)用。

dubbox git地址:https://github.com/dangdangdotcom/dubbox

dubbox 關(guān)于restfull的介紹:http://dangdangdotcom.github.io/dubbox/rest.html

--------------------------------------------------------------------------------------------------------------------------------------------

dubbox的新特性介紹:

支持REST風(fēng)格遠(yuǎn)程調(diào)用(HTTP + JSON/XML):基于非常成熟的JBossRestEasy框 架格嘁,在dubbo中實(shí)現(xiàn)了REST風(fēng)格(HTTP + JSON/XML)的遠(yuǎn)程調(diào)用琅关,以顯著簡(jiǎn)化企業(yè)內(nèi)部的跨語言交互,同時(shí)顯著簡(jiǎn)化企業(yè)對(duì)外的Open API、無線API甚至AJAX服務(wù)端等等的開發(fā)涣易。事實(shí)上画机,這個(gè)REST調(diào)用也使得Dubbo可以對(duì)當(dāng)今特別流行的“微服務(wù)”架構(gòu)提供基礎(chǔ)性支持。 另外新症,REST調(diào)用也達(dá)到了比較高的性能步氏,在基準(zhǔn)測(cè)試下,HTTP + JSON與Dubbo 2.x默認(rèn)的RPC協(xié)議(即TCP + Hessian2二進(jìn)制序列化)之間只有1.5倍左右的差距徒爹,詳見文檔中的基準(zhǔn)測(cè)試報(bào)告荚醒。

支持基于Kryo和FST的Java高效序列化實(shí)現(xiàn):基于當(dāng)今比較知名的KryoFST高性能序列化庫,為Dubbo默認(rèn)的RPC協(xié)議添加新的序列化實(shí)現(xiàn)隆嗅,并優(yōu)化調(diào)整了其序列化體系界阁,比較顯著的提高了Dubbo RPC的性能,詳見文檔中的基準(zhǔn)測(cè)試報(bào)告胖喳。

支持基于Jackson的JSON序列化:基于業(yè)界應(yīng)用最廣泛的Jackson序列化庫泡躯,為Dubbo默認(rèn)的RPC協(xié)議添加新的JSON序列化實(shí)現(xiàn)。

支持基于嵌入式Tomcat的HTTP remoting體系:基于嵌入式tomcat實(shí)現(xiàn)dubbo 的HTTP remoting體系(即dubbo-remoting-http)丽焊,用以逐步取代Dubbo中舊版本的嵌入式Jetty较剃,可以顯著的提高REST等的遠(yuǎn) 程調(diào)用性能,并將Servlet API的支持從2.5升級(jí)到3.1技健。(注:除了REST写穴,dubbo中的WebServices、Hessian雌贱、HTTP Invoker等協(xié)議都基于這個(gè)HTTP remoting體系)啊送。

升級(jí)Spring:將dubbo中Spring由2.x升級(jí)到目前最常用的3.x版本,減少版本沖突帶來的麻煩欣孤。

升級(jí)ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級(jí)到最新的版本馋没,以修正老版本中包含的bug。

支持完全基于Java代碼的Dubbo配置:基于Spring的Java Config导街,實(shí)現(xiàn)完全無XML的純Java代碼方式來配置dubbo

調(diào)整Demo應(yīng)用:暫時(shí)將dubbo的demo應(yīng)用調(diào)整并改寫以主要演示REST功能、Dubbo協(xié)議的新序列化方式纤子、基于Java代碼的Spring配置等等搬瑰。

修正了dubbo的bug包括配置、序列化控硼、管理界面等等的bug泽论。

注:dubbox和dubbo 2.x是兼容的,沒有改變dubbo的任何已有的功能和配置方式(除了升級(jí)了spring之類的版本)

4)ServiceComb框架


? ? ?該框架是華為的HWCloud在6月發(fā)布開源的一款微服務(wù)框架卡乾,基于Go/YAML進(jìn)行配置翼悴,部署特別快,源碼量也小,可以輕松地在一臺(tái)機(jī)子上分析與斷點(diǎn)鹦赎。詳細(xì)參考http://www.reibang.com/p/ba432eae0a8f

二.Dubbo簡(jiǎn)介

1)Dubbo的框架


上面從Dubbo官網(wǎng)直接拿來谍椅,看一下基于RPC層,服務(wù)提供方和服務(wù)消費(fèi)方之間的調(diào)用關(guān)系古话。

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)控中心揽思。

調(diào)用流程

0.服務(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è)中心將基于長連接推送變更數(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)控中心

2)Dubbo的注冊(cè)中心

? ? ?注冊(cè)中心需要服務(wù)的提供者和消費(fèi)者在啟動(dòng)和停止時(shí)自動(dòng)注冊(cè),消費(fèi)者在選擇提供者也先通過在注冊(cè)中心根據(jù)集群的選擇策略來確定服務(wù)者募舟。Dubbo的注冊(cè)中心支持Zookeeper注冊(cè)中心祠斧、Multicast注冊(cè)中心、Redis注冊(cè)中心等拱礁。其中琢锋,Zookeeper使用較為普遍。

3)Dubbo項(xiàng)目

Dubbo項(xiàng)目可以在? http://dubbo.io/? 下載呢灶,目前版本是2.5.8吴超。目錄結(jié)構(gòu)如下圖:


可以通過Dubbo的代碼(使用Maven管理)組織,與上面的模塊進(jìn)行比較鸯乃。簡(jiǎn)單說明各個(gè)包的情況:

dubbo-common 公共邏輯模塊鲸阻,包括Util類和通用模型。

dubbo-remoting 遠(yuǎn)程通訊模塊,相當(dāng)于Dubbo協(xié)議的實(shí)現(xiàn)鸟悴,如果RPC用RMI協(xié)議則不需要使用此包陈辱。

dubbo-rpc 遠(yuǎn)程調(diào)用模塊,抽象各種協(xié)議遣臼,以及動(dòng)態(tài)代理性置,只包含一對(duì)一的調(diào)用,不關(guān)心集群的管理揍堰。

dubbo-cluster 集群模塊鹏浅,將多個(gè)服務(wù)提供方偽裝為一個(gè)提供方,包括:負(fù)載均衡屏歹、容錯(cuò)隐砸、路由等,集群的地址列表可以是靜態(tài)配置的蝙眶,也可以是由注冊(cè)中心下發(fā)季希。

dubbo-registry 注冊(cè)中心模塊,基于注冊(cè)中心下發(fā)地址的集群方式幽纷,以及對(duì)各種注冊(cè)中心的抽象式塌。

dubbo-monitor 監(jiān)控模塊,統(tǒng)計(jì)服務(wù)調(diào)用次數(shù)友浸,調(diào)用時(shí)間的峰尝,調(diào)用鏈跟蹤的服務(wù)。

dubbo-config 配置模塊收恢,是Dubbo對(duì)外的API武学,用戶通過Config使用Dubbo,隱藏Dubbo所有細(xì)節(jié)伦意。

dubbo-container 容器模塊火窒,是一個(gè)Standalone的容器,以簡(jiǎn)單的Main加載Spring啟動(dòng)驮肉,因?yàn)榉?wù)通常不需要Tomcat/JBoss等Web容器的特性熏矿,沒必要用Web容器去加載服務(wù)。

參考地址:http://blog.csdn.net/noaman_wgs/article/details/70214612

http://dubbo.io/

http://www.reibang.com/p/ba432eae0a8f

http://shiyanjun.cn/archives/325.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末离钝,一起剝皮案震驚了整個(gè)濱河市票编,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奈辰,老刑警劉巖栏妖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乱豆,死亡現(xiàn)場(chǎng)離奇詭異奖恰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門瑟啃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來论泛,“玉大人,你說我怎么就攤上這事蛹屿∑ㄗ啵” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵错负,是天一觀的道長坟瓢。 經(jīng)常有香客問我,道長犹撒,這世上最難降的妖魔是什么折联? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮识颊,結(jié)果婚禮上诚镰,老公的妹妹穿的比我還像新娘。我一直安慰自己祥款,他們只是感情好清笨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刃跛,像睡著了一般抠艾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奠伪,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天跌帐,我揣著相機(jī)與錄音,去河邊找鬼绊率。 笑死谨敛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滤否。 我是一名探鬼主播脸狸,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼藐俺!你這毒婦竟也來了炊甲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤欲芹,失蹤者是張志新(化名)和其女友劉穎卿啡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱父,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颈娜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年剑逃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片官辽。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛹磺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出同仆,到底是詐尸還是另有隱情萤捆,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布俗批,位于F島的核電站俗或,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏岁忘。R本人自食惡果不足惜蕴侣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臭觉。 院中可真熱鬧昆雀,春花似錦、人聲如沸蝠筑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽什乙。三九已至挽封,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間臣镣,已是汗流浹背辅愿。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忆某,地道東北人点待。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像弃舒,于是被迫代替她去往敵國和親癞埠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理聋呢,服務(wù)發(fā)現(xiàn)苗踪,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • Dubbo是什么 Dubbo是Alibaba開源的分布式服務(wù)框架削锰,它最大的特點(diǎn)是按照分層的方式來架構(gòu)通铲,使用這種方式...
    Coselding閱讀 17,186評(píng)論 3 196
  • 聽到這個(gè)消息,我以為是傳說器贩,或者是電視劇看多了颅夺,把生活等同于電視劇里的狗血情節(jié)央串。 可是生活遠(yuǎn)比電視劇更精彩。 同學(xué)...
    花妖呀閱讀 1,830評(píng)論 2 3
  • 今天去打疫苗碗啄,孩子一開始說的好好的去打針。到了目的地稳摄,很多小孩子已經(jīng)在那里了稚字,排隊(duì)叫號(hào)的隊(duì)伍已經(jīng)排了很長,等待中孩...
    2019影閱讀 158評(píng)論 0 1
  • 1313.感恩這個(gè)天使數(shù)字作為我今天記錄的開篇厦酬。 1314.感恩這個(gè)一生一世胆描,讓我的生活越來越精彩。 1315.感...
    李馨蘭閱讀 1,433評(píng)論 0 1