教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線:400-618-4000

什么是Dubbo?Dubbo在項(xiàng)目中怎么使用?

更新時(shí)間:2021年12月02日17時(shí)21分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

Dubbo 是阿里開(kāi)源的遠(yuǎn)程服務(wù)調(diào)用(RPC)的分布式框架,提供了 SOA 服務(wù)治理方案;它的架構(gòu)主要有五個(gè)角色/核心組件,分為是 Container(容器)、Provider(服務(wù)的提供方)、Registry(注冊(cè)中心)、Consumer(服務(wù)的消費(fèi)方)、Monitor(監(jiān)控中心)。

容器主要負(fù)責(zé)啟動(dòng)、加載、運(yùn)行服務(wù)提供者;

同時(shí)服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù);

消費(fèi)者向注冊(cè)中心訂閱自己的服務(wù);

注冊(cè)中心返回服務(wù)提供者列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者;

對(duì)于服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另外一臺(tái)調(diào)用;

服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心;

Dubbo 在項(xiàng)目中主要用來(lái)實(shí)現(xiàn)不同系統(tǒng)之間的服務(wù)調(diào)用,由于項(xiàng)目是按照不同的功能分了不同的系統(tǒng),按照三層架構(gòu)又分了不同的服務(wù),其中三層架構(gòu)中的控制層作為服務(wù)的消費(fèi)方,業(yè)務(wù)層和持久層共同作為服務(wù)的發(fā)布方,這樣的架構(gòu)實(shí)現(xiàn)了系統(tǒng)的服務(wù)化,提高了開(kāi)發(fā)效率,實(shí)現(xiàn)了業(yè)務(wù)的解耦。

項(xiàng)目中通過(guò) Dubbo 和 Spring 的整合,采用全 Spring 配置方式,只需要用 Spring 來(lái)加載Dubbo 的配置,完成了服務(wù)的發(fā)布和調(diào)用。

我們主要在服務(wù)的暴露方通過(guò)dubbo:service標(biāo)簽來(lái)暴露服務(wù),在服務(wù)的消費(fèi)方通過(guò)dubbo:reference標(biāo)簽來(lái)引用服務(wù),注冊(cè)中心我們選用的是 zookeeper,對(duì)服務(wù)的URL進(jìn)行了管理和配置。

Dubbo 支持 Dubbo 協(xié)議、RMI 協(xié)議、hessian 協(xié)議、Http 協(xié)議等。

Dubbo 協(xié)議:缺省協(xié)議、采用了單一長(zhǎng)連接和 NIO 異步通訊、使用線程池并發(fā)處理請(qǐng)求,能減少握手和加大并發(fā)效率、采用的是 Hession 二進(jìn)制序列化、性能較好,推薦使用。

主要應(yīng)用于傳入傳出參數(shù)數(shù)據(jù)包較小(建議小于 100K),消費(fèi)者比提供者個(gè)數(shù)多,由于是單一連接,因?yàn)楸M量不要傳輸大文件。

RMI 協(xié)議:采用 JDK 標(biāo)準(zhǔn)的 RMI 協(xié)議(基于 TCP 協(xié)議)、堵塞式短連接、JDK 標(biāo)準(zhǔn)序列化方式、同步通訊。

適用于消費(fèi)者和提供者個(gè)數(shù)差不多的,可傳文件。測(cè)試發(fā)現(xiàn)偶爾會(huì)連接失敗,需要重建 Stub。

Hessian 協(xié)議:采用 http 通訊,采用 Servlet 暴露服務(wù),多連接短連接的同步傳輸方式,采用hession 的二進(jìn)制序列化,適合提供者比消費(fèi)者多。





猜你喜歡:

Dubbo面試題及答案

微服務(wù)和分布式的區(qū)別什么?有什么特點(diǎn)?

Redis如何實(shí)現(xiàn)分布式阻塞隊(duì)列?

傳智教育java高級(jí)軟件工程師培訓(xùn)

0 分享到:
和我們?cè)诰€交談!