更新時(shí)間:2021-09-07 11:21:27 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽8718次
Dubbo缺省協(xié)義采用了單一化的長(zhǎng)連接和NIO異步通信,適用小信息量大高并發(fā)的服務(wù)項(xiàng)目通話和服務(wù)項(xiàng)目顧客機(jī)械設(shè)備數(shù)遠(yuǎn)高于服務(wù)供應(yīng)商機(jī)械設(shè)備數(shù)的狀況。
做為RPC:適用dubbo、hession、json、fastjson等各種各樣傳輸協(xié)議,底端由mina、netty長(zhǎng)連接傳送!非常典型的provider和cusomer模式!
做為SOA:具備管理與服務(wù)作用,出示服務(wù)項(xiàng)目申請(qǐng)注冊(cè)和發(fā)覺(jué)!用zookeeper完成認(rèn)證中心!啟動(dòng),服務(wù)項(xiàng)目方將在認(rèn)證中心申請(qǐng)注冊(cè)全部插口,并訂購(gòu)configurators、服務(wù)項(xiàng)目消費(fèi)方訂購(gòu)provide、configurators、routers、訂購(gòu)變動(dòng)時(shí),zk消息推送providers、configuators、routers、啟動(dòng)申請(qǐng)注冊(cè)長(zhǎng)連接、通訊proveider和provider運(yùn)行后,在后臺(tái)管理運(yùn)行計(jì)時(shí)器,將數(shù)據(jù)統(tǒng)計(jì)發(fā)送至monitor(監(jiān)控管理中心)!出示各種各樣不正確體制和負(fù)載平衡發(fā)展戰(zhàn)略!

Consumer服務(wù)項(xiàng)目顧客,Provider服務(wù)供應(yīng)商。Container服務(wù)項(xiàng)目器皿。消費(fèi)自然是invoke服務(wù)提供者,invoke這條實(shí)線是圖上的表明同歩的含意,在具體啟用全過(guò)程中,Provider的部位對(duì)Consumer而言是全透明的,之前啟用服務(wù)項(xiàng)目的部位(IP地址)和下一次啟用服務(wù)項(xiàng)目的部位是不確定性的。這個(gè)地方完成了軟負(fù)載。
服務(wù)供應(yīng)商先運(yùn)行start,隨后申請(qǐng)注冊(cè)register服務(wù)項(xiàng)目。
消費(fèi)預(yù)定subscribe服務(wù)項(xiàng)目,要是沒(méi)有預(yù)定自身要想的服務(wù)項(xiàng)目,就持續(xù)試著預(yù)定。新的服務(wù)項(xiàng)目在認(rèn)證中心申請(qǐng)注冊(cè)后,認(rèn)證中心將這種服務(wù)項(xiàng)目根據(jù)notify向顧客出示。
Monitor它是一種監(jiān)控,圖上的斜線表明Consumer和Provider根據(jù)多線程向Monitor發(fā)送短信,Consumer和Provider將信息內(nèi)容儲(chǔ)存在本地硬盤中,均值1min發(fā)送短信。Monitor在全部架構(gòu)中是可選擇的(圖上的斜線并不是可選擇的含意),Monitor作用必須獨(dú)立配備,不配備或配備后,Monitor掛掉不容易危害服務(wù)項(xiàng)目的啟用。
什么叫netty?
netty是根據(jù)nio的顧客、網(wǎng)絡(luò)服務(wù)器終端設(shè)備程序編寫架構(gòu),netty出示多線程、量化策略的網(wǎng)絡(luò)技術(shù)應(yīng)用架構(gòu)和專用工具,能夠快速開(kāi)發(fā)設(shè)計(jì)能用的顧客終端設(shè)備和網(wǎng)絡(luò)服務(wù)器。
netty是根據(jù)nio包裝jdknio,使方式更為靈便。
復(fù)位全過(guò)程的關(guān)鍵點(diǎn):
圖中的第一步是將服務(wù)項(xiàng)目裝車到器皿中,提前準(zhǔn)備申請(qǐng)注冊(cè)服務(wù)項(xiàng)目。類似Spring中的運(yùn)行全過(guò)程,當(dāng)spring啟動(dòng),將bean裝車到器皿里時(shí),先要剖析bean。因而,dubbo也要先閱讀文章文檔剖析服務(wù)項(xiàng)目。
剖析服務(wù)項(xiàng)目:剖析服務(wù)項(xiàng)目:
1.根據(jù)dubbo.jar內(nèi)的Meta-inf/spring.handlers配備,spring在碰到dubbo名字室內(nèi)空間時(shí),招回dubonamespandler類。
2.全部dubo標(biāo)識(shí),統(tǒng)一用dubobeandefinitionParser剖析,根據(jù)一對(duì)一特性投射,將XML標(biāo)識(shí)剖析為bean目標(biāo)。
在ServiceConfig.export或ReferenceConfig.get復(fù)位時(shí),將Bean目標(biāo)變換為url文件格式,將Bean特性變換為url參數(shù)。
隨后將URL傳送給Protocol拓展點(diǎn),依據(jù)拓展點(diǎn)的Adaptive體制,依據(jù)URL的協(xié)義頭開(kāi)展不一樣協(xié)義的服務(wù)項(xiàng)目曝出和引入。
a.只曝露服務(wù)項(xiàng)目端口號(hào)。
在沒(méi)有應(yīng)用認(rèn)證中心的狀況下,這類狀況一般適用開(kāi)發(fā)工具,服務(wù)項(xiàng)目的啟用和出示同樣的IP,只需打開(kāi)服務(wù)的端口號(hào)就可以。
ServiceConfig剖析的URL格式以下
Dubo://service-host/com.xxx.Txxserviceversion=1.0.0。
根據(jù)拓展點(diǎn)的Adaptiver體制根據(jù)URL的dubo://協(xié)義頭鑒別,立即啟用DuboProtocolexport()方式,打開(kāi)服務(wù)端口號(hào)。
b.向認(rèn)證中心公布服務(wù)項(xiàng)目:
與以前的差別:必須將服務(wù)項(xiàng)目的IP和端口號(hào)一起曝露在認(rèn)證中心。
ServiceConfig剖析的url文件格式以下
registry://registry-host/com.alibaba.dubo.registry.registryserviceexport=URL.encode(dubo://service-host/com.xxx.txxserviceversion=1.0.0)
根據(jù)拓展點(diǎn)的Adaptive體制,根據(jù)URL的registry://協(xié)義頭頂部鑒別,啟用RegistryProtocol的export方式,將export主要參數(shù)中的服務(wù)提供者URL申請(qǐng)注冊(cè)為認(rèn)證中心,再度傳送給Protocol拓展點(diǎn)version=1.0.0。
1.服務(wù)供應(yīng)商表明服務(wù)項(xiàng)目的詳盡全過(guò)程。

服務(wù)供應(yīng)商曝露服務(wù)項(xiàng)目的關(guān)鍵全過(guò)程:
ServiceConfig類得到對(duì)外開(kāi)放服務(wù)項(xiàng)目的具體類ref(比如HelloWorldImpl),根據(jù)ProxyFactory類getInvoker方法應(yīng)用ref轉(zhuǎn)化成AbstractProxyInvoker的事例。
到這個(gè)流程,實(shí)際的服務(wù)項(xiàng)目就完成了Invoker的變換。下面是Invoker變換到Exporter的全過(guò)程。
Dubo解決服務(wù)項(xiàng)目曝露的關(guān)鍵是Invoker變換到Exporter的全過(guò)程(如圖的鮮紅色一部分),以Dubbo和RMI二種非常典型協(xié)義的完成開(kāi)展表明。
Dubbo的完成:
Dubbo協(xié)義的Invoker變化為Exporter產(chǎn)生在Dubboprotocol類的export方式,主要是開(kāi)啟socket監(jiān)聽(tīng)服務(wù)項(xiàng)目,接納顧客的各種各樣要求,通訊關(guān)鍵點(diǎn)由Dubo自身完成。
RMI的完成:
RMI協(xié)義的Invoker變成了RmiProtocol類export方式
根據(jù)Spring或Dubbo或JDK完成RMI服務(wù)項(xiàng)目,通訊關(guān)鍵點(diǎn)由JDK基本完成,節(jié)約了許多勞動(dòng)量。
2.服務(wù)項(xiàng)目顧客消費(fèi)服務(wù)項(xiàng)目的詳盡全過(guò)程。

dubbo原理和機(jī)制:應(yīng)用可通過(guò)高性能的 RPC 實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和Spring框架無(wú)縫集成。
服務(wù)項(xiàng)目消費(fèi)的關(guān)鍵全過(guò)程:
ReferenceConfig類的init方式啟用Protocol的refer方式轉(zhuǎn)化成Invoker案例(如圖中的鮮紅色一部分)是服務(wù)項(xiàng)目消費(fèi)的重要。
下面,將Invoker變換為手機(jī)客戶端需要的插口(如HelloWorld)。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Dubbo的原理和機(jī)制",希望對(duì)大家有幫助,想了解更多可查看Dubbo教程。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)