大家好,我是IT修真院鄭州分院第6期的學(xué)員,一枚正直純潔善良的JAVA程序員今天給大家分享一下,Spring DUBBO的入門
1.背景介紹
什么是Dubbo?
Dubbo是Alibaba開源的分布式服務(wù)框架,它最大的特點(diǎn)是按照分層的方式來(lái)架構(gòu),
使用這種方式可以使各個(gè)層之間解耦合(或者最大限度地松耦合)。
從服務(wù)模型的角度來(lái)看,Dubbo采用的是一種非常簡(jiǎn)單的模型,要么是提供方提供服務(wù),
要么是消費(fèi)方消費(fèi)服務(wù),所以基于這一點(diǎn)可以抽象出服務(wù)提供方(Provider)和服務(wù)消費(fèi)方(Consumer)兩個(gè)角色。關(guān)于注冊(cè)中心、協(xié)議支持、服務(wù)監(jiān)控等內(nèi)容
應(yīng)用架構(gòu)進(jìn)化史
單一應(yīng)用架構(gòu):當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。此時(shí),用于簡(jiǎn)化增刪改查工作量的數(shù)據(jù)訪問框架(ORM)是關(guān)鍵。
垂直應(yīng)用架構(gòu):當(dāng)訪問量逐漸增大,單一應(yīng)用增加機(jī)器帶來(lái)的加速度越來(lái)越小,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率。此時(shí),用于加速前端頁(yè)面開發(fā)的Web框架(MVC)是關(guān)鍵。
分布式服務(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)鍵。
流動(dòng)計(jì)算架構(gòu):當(dāng)服務(wù)越來(lái)越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問壓力實(shí)時(shí)管理集群容量,提高集群利用率。此時(shí),用于提高機(jī)器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵。
進(jìn)化圖

Dubbo最基本的幾個(gè)需求
當(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ù)的位置透明。并通過在消費(fèi)方獲取服務(wù)提供方地址列表,實(shí)現(xiàn)軟負(fù)載均衡和 Failover,降低對(duì) F5 硬件負(fù)載均衡器的依賴,也能減少部分成本
當(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)畫出應(yīng)用間的依賴關(guān)系圖,以幫助架構(gòu)師理清理關(guān)系。
服務(wù)的調(diào)用量越來(lái)越大,服務(wù)的容量問題就暴露出來(lái),這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器? 為了解決這些問題,第一步,要將服務(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)重一直加大,并在加大的過程中記錄響應(yīng)時(shí)間的變化,直到響應(yīng)時(shí)間到達(dá)閥值,記錄此時(shí)的訪問量,再以此訪問量乘以機(jī)器數(shù)反推總?cè)萘俊?/p>
為什么要學(xué)習(xí)Spring Dubbo?
Dubbo采用全Spring配置方式,透明化接入應(yīng)用,對(duì)應(yīng)用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴(kuò)展進(jìn)行加載。
最近一段時(shí)間頻繁出現(xiàn)在面試群中,為了面試儲(chǔ)備知識(shí)
懶得列舉的一些優(yōu)點(diǎn)
已經(jīng)恢復(fù)維護(hù)
缺點(diǎn)???
只支持JAVA語(yǔ)言
2.知識(shí)剖析
架構(gòu)

節(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)行容器
調(diào)用關(guān)系說(shuō)明
1.服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者
2.服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)
3.服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)
4.注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者
5.服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用
6.服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心
3.常見問題
Zookeeper和DUBBO的關(guān)系
4.解決方案
http://blog.csdn.net/daiqinge/article/details/51282874#reply
5.編碼實(shí)戰(zhàn)
6.擴(kuò)展思考
什么是長(zhǎng)連接和心跳機(jī)制?
網(wǎng)絡(luò)中的接收和發(fā)送數(shù)據(jù)都是使用操作系統(tǒng)中的SOCKET進(jìn)行實(shí)現(xiàn)。但是如果此套接字已經(jīng)斷開,那發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的時(shí)候就一定會(huì)有問題??墒侨绾闻袛噙@個(gè)套接字是否還可以使用呢?這個(gè)就需要在系統(tǒng)中創(chuàng)建心跳機(jī)制。其實(shí)TCP中已經(jīng)為我們實(shí)現(xiàn)了一個(gè)叫做心跳的機(jī)制。如果你設(shè)置了心跳,那TCP就會(huì)在一定的時(shí)間(比如你設(shè)置的是3秒鐘)內(nèi)發(fā)送你設(shè)置的次數(shù)的心跳(比如說(shuō)2次),并且此信息不會(huì)影響你自己定義的協(xié)議。所謂“心跳”就是定時(shí)發(fā)送一個(gè)自定義的結(jié)構(gòu)體(心跳包或心跳幀),讓對(duì)方知道自己“在線”。 以確保鏈接的有效性
7.參考文獻(xiàn)
http://dubbo.io/books/dubbo-user-book/
http://www.baeldung.com/dubbo
http://shiyanjun.cn/archives/325.html
8.更多討論
視頻:
PPT:https://ptteng.github.io/PPT/PPT-java/java-DUBBO-task10.html#/
Q:有沒有什么更進(jìn)階的資料
dubbo管理員指南:http://dubbo.io/books/dubbo-admin-book/
Q:有沒有什么更更進(jìn)階的資料
dubbo開發(fā)者指南:http://dubbo.io/books/dubbo-dev-book/
Q:現(xiàn)在用的公司多嗎?
有不少,在DUBBO的gitter社區(qū)有很多登記了使用了DUBBO的公司
https://github.com/alibaba/dubbo/issues/1012
沒了。