溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Dubbo基礎(chǔ)知識(shí)總結(jié)以及zookeeper安裝方法

發(fā)布時(shí)間:2021-07-07 16:29:31 來(lái)源:億速云 閱讀:136 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Dubbo基礎(chǔ)知識(shí)總結(jié)以及zookeeper安裝方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Dubbo基礎(chǔ)知識(shí)總結(jié)以及zookeeper安裝方法”吧!

一、        概念

1         SOA : Service-Oriented Architecture

面向服務(wù)的架構(gòu)(SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。

面向服務(wù)架構(gòu),它可以根據(jù)需求通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用。服務(wù)層是SOA的基礎(chǔ),可以直接被應(yīng)用調(diào)用,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性。

SOA是一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過(guò)簡(jiǎn)單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S模型、XML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集)/Web Services技術(shù)之后的自然延伸。

SOA將能夠幫助軟件工程師們站在一個(gè)新的高度理解企業(yè)級(jí)架構(gòu)中的各種組件的開(kāi)發(fā)、部署形式,它將幫助企業(yè)系統(tǒng)架構(gòu)者以更迅速、更可靠、更具重用性架構(gòu)整個(gè)業(yè)務(wù)系統(tǒng)。較之以往,以SOA架構(gòu)的系統(tǒng)能夠更加從容地面對(duì)業(yè)務(wù)的急劇變化。

2         RPC : Remote Procedure Call Protocol

遠(yuǎn)程過(guò)程調(diào)用協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開(kāi)發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應(yīng)用程序更加容易。

RPC采用客戶機(jī)/服務(wù)器模式。請(qǐng)求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一個(gè)服務(wù)器。首先,客戶機(jī)調(diào)用進(jìn)程發(fā)送一個(gè)有進(jìn)程參數(shù)的調(diào)用信息到服務(wù)進(jìn)程,然后等待應(yīng)答信息。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。當(dāng)一個(gè)調(diào)用信息到達(dá),服務(wù)器獲得進(jìn)程參數(shù),計(jì)算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個(gè)調(diào)用信息,最后,客戶端調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行。

3         OSI網(wǎng)絡(luò)通訊模型 :

OSI是Open System Interconnection的縮寫(xiě),意為開(kāi)放式系統(tǒng)互聯(lián)。國(guó)際標(biāo)準(zhǔn)化組織(ISO)制定了OSI模型,該模型定義了不同計(jì)算機(jī)互聯(lián)的標(biāo)準(zhǔn),是設(shè)計(jì)和描述計(jì)算機(jī)網(wǎng)絡(luò)通信的基本框架。OSI模型把網(wǎng)絡(luò)通信的工作分為7層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。

二、        什么是Dubbo

Dubbo是阿里巴巴開(kāi)發(fā)的一個(gè)基于SOA結(jié)構(gòu)基礎(chǔ)的,實(shí)現(xiàn)RPC遠(yuǎn)程調(diào)用的框架.

Dubbo框架,是基于容器運(yùn)行的. 容器是Spring.

在編寫(xiě)服務(wù)和客戶端的時(shí)候, 需要注冊(cè)中心實(shí)現(xiàn)服務(wù)的發(fā)布和訂閱. 注冊(cè)中心中有服務(wù)端發(fā)布的服務(wù)全部信息,包括請(qǐng)求地址,參數(shù)命名,參數(shù)數(shù)量,參數(shù)限制,參數(shù)是否加密等. 客戶端通過(guò)注冊(cè)中心訂閱服務(wù),獲取服務(wù)的所有信息,實(shí)現(xiàn)RPC遠(yuǎn)程訪問(wèn).

官方網(wǎng)站 : http://dubbo.io/

阿里巴巴已經(jīng)將dubbo框架捐獻(xiàn)給了Apache軟件基金會(huì).

三、        Dubbo結(jié)構(gòu)

1         Registry

注冊(cè)中心. 用于Dubbo服務(wù)的發(fā)布和訂閱的核心組件.

Dubbo服務(wù)編寫(xiě)成功后,發(fā)布到注冊(cè)中心. 客戶端通過(guò)注冊(cè)中心訂閱服務(wù),并應(yīng)用.

2         Provider

服務(wù)的提供者.  服務(wù)器. 運(yùn)行真實(shí)的服務(wù)代碼的電腦[代碼].

如: 騰訊發(fā)布的三方登錄.

3         Consumer

服務(wù)的消費(fèi)者.  客戶端. 就是遠(yuǎn)程調(diào)用Provider服務(wù)的代碼.

如: 三方網(wǎng)站, 網(wǎng)站中提供騰訊相關(guān)的登錄入口.

4         Container

容器. 就是讓Provider和Consumer正常執(zhí)行的容器.給Provider和Consumer一個(gè)可以正常運(yùn)行的環(huán)境. 在Dubbo中使用Spring容器.

5         Protocol

協(xié)議. Dubbo的Consumer和Provider通訊的標(biāo)準(zhǔn).

Dubbo支持多種協(xié)議. 如: dubbo協(xié)議(Dubbo自定義的應(yīng)用協(xié)議), RMI協(xié)議, TCP協(xié)議等.

6         Monitor

監(jiān)控中心, 管理中心, 調(diào)度中心. 管理Provider數(shù)量, Consumer數(shù)量, Consumer調(diào)用Provider次數(shù)的監(jiān)控中心. 相當(dāng)于統(tǒng)計(jì).

四、        Registry注冊(cè)中心

Dubbo支持多種注冊(cè)中心. 不同的注冊(cè)中心提供不同的注冊(cè)服務(wù)方式.

1         ZooKeeper

Java開(kāi)發(fā)的一個(gè)服務(wù)管理應(yīng)用. 是Hadoop項(xiàng)目的子項(xiàng)目. 動(dòng)物園管理員. 是一個(gè)其他應(yīng)用的管理應(yīng)用, 負(fù)責(zé)協(xié)調(diào),調(diào)度,管理,配置等功能.

支持?jǐn)帱c(diǎn)恢復(fù), 會(huì)話恢復(fù), 配置服務(wù)項(xiàng), 配置消費(fèi)項(xiàng), 通配信息配置等.

ZooKeeper是一個(gè)Java開(kāi)發(fā)的應(yīng)用. 運(yùn)行環(huán)境只需要JDK和JVM.

2         Multicast

廣播式注冊(cè)中心. 只要Provider和Consumer在同一個(gè)網(wǎng)段中即可實(shí)現(xiàn)服務(wù)的發(fā)布和訂閱.

局限性 : 只適合小型架構(gòu)或開(kāi)發(fā)測(cè)試使用. 因?yàn)榭赡茉斐蓮V播風(fēng)暴. 網(wǎng)段內(nèi)超過(guò)5臺(tái)物理機(jī)同時(shí)發(fā)布服務(wù), 可能造成數(shù)據(jù)通訊問(wèn)題, 無(wú)法實(shí)現(xiàn)快速的服務(wù)訂閱和應(yīng)用.

3         Redis

KV服務(wù)器注冊(cè)中心. KV服務(wù)器, 高速緩存服務(wù)器. 內(nèi)存型數(shù)據(jù)庫(kù). NOSQL數(shù)據(jù)庫(kù). 后期有課程詳細(xì)講解.

類似ZooKeeper注冊(cè)中心. Provider發(fā)布服務(wù)到Redis, Consumer從Redis中訂閱服務(wù).

優(yōu)勢(shì): 高效.

缺陷: 數(shù)據(jù)描述相對(duì)簡(jiǎn)單, 使用頻率相對(duì)較少. 沒(méi)有經(jīng)過(guò)大量測(cè)試, 穩(wěn)定性不確定.

4         Simple

就是Dubbo自定義的一個(gè)注冊(cè)中心. 減少三方依賴. 讓代碼依賴性降低, 耦合性降低.

只適合小型應(yīng)用和開(kāi)發(fā)測(cè)試.

五、        Zookeeper安裝

1         下載資料

官方網(wǎng)站 :  http://zookeeper.apache.org/

下載資料的時(shí)候,不要下載beta版本.

2         上傳資料到linux

3         解壓縮

tar -zxf zookeeper-3.4.6.tar.gz

解壓即可使用. 建議復(fù)制到/usr/local目錄下. 讓所有的系統(tǒng)用戶都可以使用.

4         復(fù)制到/usr/local目錄中

cp -r zookeeper-3.4.6 /usr/local/zookeeper/

5         Zookeeper目錄結(jié)構(gòu)

5.1      bin

可執(zhí)行文件. 如: 啟動(dòng),停止,重啟等命令.

5.2      conf

配置信息. Zookeeper應(yīng)用的配置文件

5.3      lib

Zookeeper應(yīng)用的jar包庫(kù)目錄. 是Zookeeper依賴的所有jar包保存位置

5.4      data

自定義目錄, 常用. 用于保存Zookeeper運(yùn)行數(shù)據(jù)的目錄.

5.5      docs

Zookeeper官方提供的幫助文檔

5.6      contrib

Zookeeper提供的插件和腳本相關(guān)資料.

5.7      src

源代碼

5.8      zookeeper-3.4.6.jar

Zookeeper核心代碼庫(kù). 后期開(kāi)發(fā)可能應(yīng)用的jar. 使用maven開(kāi)發(fā)應(yīng)用的時(shí)候,通過(guò)依賴下載jar包.

6         測(cè)試啟動(dòng)

服務(wù)狀態(tài)發(fā)生變更時(shí),Zookeeper自動(dòng)輸出一個(gè)日志信息. 文件名為zookeeper.out.文本保存在執(zhí)行服務(wù)狀態(tài)變更目錄下. 如: 在目錄/usr/local/zookeeper目錄中執(zhí)行命令bin/zkServer.sh start. 日志文件在/usr/local/zookeeper目錄中輸出.

zkServer.sh - Zookeeper服務(wù)腳本. 用于啟動(dòng),停止,重啟使用.

命令 : bin/zkServer.sh start

啟動(dòng)不成功. 有錯(cuò)誤. 提示zoo.cfg配置文件不存在.配置文件保存在Zookeeper應(yīng)用的conf目錄中.

6.1      配置Zookeeper

Zookeeper提供了一個(gè)模板配置文件, 文件名為zoo_sample.cfg. 模板文件中已定義默認(rèn)的所有配置信息. 可以通過(guò)復(fù)制使用.

cp zoo_sample.cfg zoo.cfg

6.2      提供數(shù)據(jù)保存目錄

在任意位置創(chuàng)建一個(gè)目錄.用于Zookeeper執(zhí)行的數(shù)據(jù)存儲(chǔ)目錄. 建議在Zookeeper安裝目錄中創(chuàng)建.

建議命令 : 在Zookeeper安裝目錄中執(zhí)行 mkdir data

6.3      編輯zoo.cfg配置文件

# 檢查時(shí)間. 訪問(wèn)的有效時(shí)長(zhǎng)

tickTime=2000

# 初始化ticket個(gè)數(shù). 默認(rèn)支持多少客戶端并發(fā)訪問(wèn).

initLimit=10

# 并發(fā)訪問(wèn)線程個(gè)數(shù)

syncLimit=5

# Zookeeper執(zhí)行過(guò)程數(shù)據(jù)的保存目錄,建議使用絕對(duì)路徑配置.

dataDir=/usr/local/zookeeper/data

# 客戶端端口

clientPort=2181

 

6.4      測(cè)試啟動(dòng)

見(jiàn)到下述信息, 代表服務(wù)啟動(dòng)成功. standalone代表單機(jī)版正在執(zhí)行.

[root@node1 ~]# /usr/local/zookeeper/bin/zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
 

7         停止

bin/zkServer.sh stop

8         重啟

bin/zkServer.sh restart

9         查看服務(wù)狀態(tài)

bin/zkServer.sh status

10    客戶端訪問(wèn)測(cè)試

命令: bin/zkCli.sh [-server 主機(jī)地址:端口]

默認(rèn)連接本地2181端口的Zookeeper服務(wù).

[應(yīng)用名: 主機(jī):端口(狀態(tài)) 執(zhí)行的命令數(shù)量]

[zk:   localhost:2181(CONNECTED) 0]

10.1 斷開(kāi)客戶端連接

執(zhí)行下述命令:

[zk: localhost:2181(CONNECTED) 0]  quit

六、        入門代碼

maven工程 - dubbo工程. pom工程.

導(dǎo)入jar包. 使用maven依賴導(dǎo)入.

                            <dependency>

                                <groupId>com.alibaba</groupId>

                                <artifactId>dubbo</artifactId>

                                <version>2.5.7</version>

                            </dependency>

1         Provider

maven工程 - Provider, 是dubbo工程的module. pom工程.

Provider工程拆分成兩個(gè)子工程, 都是Provider工程的module.

service 工程, 是jar工程. 定義接口.

service-impl工程, 是jar工程. 定義接口的實(shí)現(xiàn).

1.1      Dubbo相關(guān)操作:

1.1.1        注解

使用Spring注解,管理要發(fā)布的接口實(shí)現(xiàn)對(duì)象.

也可以使用標(biāo)簽bean管理.

1.1.2        spring配置文件

1.1.2.1  掃描服務(wù)注解

<context:component-scan />

1.1.2.2  配置Dubbo的Provider服務(wù)信息

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

          http://www.springframework.org/schema/context/spring-context.xsd

          http://code.alibabatech.com/schema/dubbo

          http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

 

         <!-- 1. 掃描service注解 -->

         <context:component-scan   base-package="com.bjsxt.service" />

        

         <!-- 2. 配置Dubbo相關(guān)信息 -->

         <!-- 2.1 配置應(yīng)用名, 是Dubbo應(yīng)用的唯一命名. 是一個(gè)Provider定義一個(gè)唯一的命名. -->

         <dubbo:application   name="test-provider" />

        

         <!-- 2.2 配置注冊(cè)中心, 服務(wù)的提供者,要向注冊(cè)中心發(fā)布服務(wù). 消費(fèi)者要從注冊(cè)中心訂閱服務(wù). -->

         <dubbo:registry   address="192.168.120.143:2181" protocol="zookeeper" />

        

         <!-- 2.3 協(xié)議信息, Provider和Consumer訪問(wèn)注冊(cè)中心和相互之間的訪問(wèn),使用什么協(xié)議 -->

         <dubbo:protocol   name="dubbo" port="20880"   />

        

         <!-- 2.4 要發(fā)布什么服務(wù). 將當(dāng)前spring容器中的什么bean對(duì)象信息,發(fā)布到注冊(cè)中心. -->

         <dubbo:service   interface="com.bjsxt.service.TestService"

                  ref="testServiceImpl"/>

 

</beans>

1.1.3        代碼發(fā)布服務(wù)

通過(guò)代碼的執(zhí)行, 將spring配置信息,實(shí)現(xiàn)發(fā)布.

將spring容器中的bean對(duì)象信息,發(fā)布到Zookeeper注冊(cè)中心中.

啟動(dòng)spring容器即可. spring的容器可以啟動(dòng). 因?yàn)镃lassPathXmlApplicationContext類型實(shí)現(xiàn)了接口Runnable. ClassPathXmlApplicationContext可以獨(dú)立啟動(dòng)線程.

2         Consumer

maven工程 - consumer, 是dubbo工程的module. jar工程

編寫(xiě)測(cè)試代碼. 調(diào)用Provider中定義的服務(wù)代碼. 得到代碼返回的結(jié)果.

Consumer工程只能和provider-service工程有依賴關(guān)系. 通過(guò)dubbo的形式,遠(yuǎn)程調(diào)用.

2.1      注解

使用spring的注解管理Consumer代碼和代碼中的屬性依賴.

2.2      spring配置

2.2.1        掃描注解

管理Consumer代碼和代碼中的屬性依賴關(guān)系.

<context:component-scan />

2.2.2        dubbo配置

描述Dubbo框架信息的.

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans.xsd

          http://www.springframework.org/schema/context

          http://www.springframework.org/schema/context/spring-context.xsd

          http://code.alibabatech.com/schema/dubbo

          http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

 

         <!-- 1. 掃描本地注解. 管理對(duì)象和屬性依賴關(guān)系. -->

         <context:component-scan   base-package="com.bjsxt.service" />

        

         <!-- 2. dubbo相關(guān)信息 -->

         <!-- 2.1 應(yīng)用信息 -->

         <dubbo:application   name="test-consumer"/>

        

         <!-- 2.2 配置注冊(cè)中心 -->

         <dubbo:registry   protocol="zookeeper" address="192.168.120.143:2181"/>

        

         <!-- 2.3 協(xié)議, 可以省略. Dubbo相關(guān)服務(wù)信息是從注冊(cè)中心中訂閱的.

                   Provider在發(fā)布服務(wù)的時(shí)候, 會(huì)定義協(xié)議信息.

                   所以Consumer一段配置協(xié)議信息無(wú)效.

                   如果配置了<dubbo:protocol>代表的含義是. 當(dāng)前應(yīng)用可能要發(fā)布服務(wù). 發(fā)布服務(wù)的時(shí)候,使用的協(xié)議是什么.

          -->

        

         <!-- 2.4 引用服務(wù)對(duì)象.從注冊(cè)中心中,訂閱對(duì)應(yīng)的某一個(gè)服務(wù). 服務(wù)的單位是接口.

                   訂閱得到的服務(wù),被Dubbo技術(shù)封裝成一個(gè)代理對(duì)象. 內(nèi)部實(shí)現(xiàn)由Dubbo決定.

                   id   - 就是spring管理的對(duì)象的唯一命名. 當(dāng)前標(biāo)簽相當(dāng)于定義了一個(gè)bean標(biāo)簽, spring容器管理一個(gè)對(duì)象.

                   這個(gè)對(duì)象,是一個(gè)Dubbo通過(guò)訂閱服務(wù),創(chuàng)建的代理對(duì)象. 建議將id定義為需要使用的類型中的屬性名.

                   spring的@Autowired注解,是先byType,再byName,實(shí)現(xiàn)屬性注入的.

          -->

         <dubbo:reference   id="testService"

                   interface="com.bjsxt.service.TestService"/>

 

</beans>

3         配置詳解

3.1      dubbo:application

為Dubbo應(yīng)用命名的標(biāo)簽. 是Dubbo框架對(duì)應(yīng)用管理的唯一標(biāo)記.

要求建議每個(gè)Dubbo應(yīng)用命名不同.

<dubbo:application name=”應(yīng)用名稱”/>

應(yīng)用命名數(shù)據(jù) : 字母,數(shù)字,’_’,’-’,’$’.

3.2      dubbo:protocol

協(xié)議定義, 是為Provider方提供的標(biāo)簽描述. 是Provider在發(fā)布服務(wù)的時(shí)候,綁定的協(xié)議信息.

默認(rèn)協(xié)議是: dubbo協(xié)議

默認(rèn)Dubbo協(xié)議端口: 20880.

<dubbo:protocol name=”協(xié)議名稱” port=”端口號(hào)” />

3.3      dubbo:registry

注冊(cè)中心. Dubbo在服務(wù)發(fā)布和訂閱過(guò)程的核心. 推薦使用的注冊(cè)中是Zookeeper.

需要定義訪問(wèn)注冊(cè)中心的協(xié)議和注冊(cè)中心的地址.

<dubbo:registry protocol=”訪問(wèn)注冊(cè)中心協(xié)議, Zookeeper注冊(cè)中心使用zookeeper協(xié)議” address=”注冊(cè)中心的地址, 數(shù)據(jù)結(jié)構(gòu)是: ip:port; 多個(gè)注冊(cè)中心使用逗號(hào)分隔.” />

3.4      dubbo:service

發(fā)布服務(wù)的標(biāo)簽配置. Provider代碼要發(fā)布的服務(wù)信息. 要發(fā)布的服務(wù)是由哪一個(gè)bean對(duì)象提供服務(wù)的.要發(fā)布的服務(wù)接口是什么. 要求bean對(duì)象必須實(shí)現(xiàn)了接口.

同時(shí)可以配置,服務(wù)發(fā)布的配置. 如: 重試次數(shù), 超時(shí)時(shí)間等.

<dubbo:service interface=”要發(fā)布的服務(wù)接口全命名” ref=”接口的實(shí)現(xiàn)類bean對(duì)象” />

3.4.1        其他屬性

3.4.1.1  timeout

超時(shí)時(shí)長(zhǎng). Consumer訪問(wèn)Provider,要求必須在多長(zhǎng)時(shí)間內(nèi)得到響應(yīng)結(jié)果.

在時(shí)間限定范圍外,會(huì)拋出異常.

默認(rèn)值是:1000毫秒. Provider執(zhí)行得到結(jié)果必須在1000毫秒內(nèi).

3.4.1.2  retries

Consumer訪問(wèn)Provider如果發(fā)生了異常. 自動(dòng)重試的次數(shù).

默認(rèn)值是: 2. 第一訪問(wèn)是主動(dòng)發(fā)起的. 如果有異常,自動(dòng)重試2次.

3.5      dubbo:reference

Consumer方定義的服務(wù)引用配置. 從注冊(cè)中心訂閱服務(wù)后, 如何使用.

標(biāo)簽會(huì)通知Dubbo框架, 根據(jù)訂閱的服務(wù), 創(chuàng)建代理對(duì)象.

代理對(duì)象,同時(shí)也是spring容器管理的一個(gè)bean對(duì)象. 可以通過(guò)自動(dòng)裝配注解@Autowired獲取.

<dubbo:reference interface=”要訂閱的服務(wù)接口全命名”

id=”唯一命名, 相當(dāng)于bean標(biāo)簽的id屬性” />

3.5.1        其他屬性

3.5.1.1  timeout

默認(rèn)值是1000毫秒. 由dubbo:consumer標(biāo)簽定義.

如果dubbo:service標(biāo)簽定義了timeout,且dubbo:reference標(biāo)簽未定義timeout屬性. 則使用service標(biāo)簽定義的timeout.

3.5.1.2  retries

重試次數(shù), 默認(rèn)值為2. 由dubbo:consumer標(biāo)簽定義.

如果dubbo:service標(biāo)簽定義了retries,且dubbo:reference標(biāo)簽未定義retries屬性. 則使用service標(biāo)簽定義的retries.

3.6      dubbo:provider

是dubbo:service標(biāo)簽的父配置標(biāo)簽. 如果定義了dubbo:provider標(biāo)簽, 則dubbo:sevice標(biāo)簽?zāi)J(rèn)使用其定義的屬性信息. 如: retries, timeout等.

如果定義:<dubbo:provider timeout=”3000” retries=”0” />

則所有未定義timeout和retries屬性的dubbo:service標(biāo)簽,統(tǒng)一使用3000毫秒作為超時(shí)時(shí)長(zhǎng),0作為重試次數(shù).

3.6.1        特殊屬性

3.6.1.1  payload

定義服務(wù)中方法的參數(shù)和返回值最大數(shù)據(jù)范圍的. 默認(rèn)是8M數(shù)據(jù).

Consumer訪問(wèn)Provider的時(shí)候,傳遞的參數(shù)最大8M. Provider返回給Consumer返回結(jié)果的時(shí)候,最大8M.

默認(rèn)值: 88388608, 單位是字節(jié).

3.7      dubbo:consumer

定義消費(fèi)者默認(rèn)配置的標(biāo)簽. 就是給dubbo:reference標(biāo)簽提供默認(rèn)設(shè)置的.

如: <dubbo:consumer timeout=”3000” retries=”0” /> 而dubbo:reference標(biāo)簽未配置屬性. 使用3000作為默認(rèn)超時(shí)時(shí)間, 0作為重試次數(shù).

4         協(xié)議簡(jiǎn)介

Dubbo框架的通訊協(xié)議. Dubbo框架支持多種通訊協(xié)議. 默認(rèn)使用Dubbo協(xié)議.

dubbo協(xié)議是Dubbo框架自定義的一種協(xié)議.

4.1      dubbo協(xié)議

Dubbo缺省協(xié)議采用單一長(zhǎng)連接和NIO異步通訊方式. 適合大數(shù)據(jù)量,高并發(fā)的服務(wù)調(diào)用. 以及服務(wù)消費(fèi)機(jī)遠(yuǎn)超過(guò)服務(wù)提供機(jī)的情況.

dubbo協(xié)議是一個(gè)NIO協(xié)議, 長(zhǎng)連接小數(shù)據(jù)量傳輸協(xié)議, 不適合傳輸大數(shù)據(jù). 如: 文件,媒體,圖片等. 除非訪問(wèn)請(qǐng)求非常低的情況, 可以使用Dubbo協(xié)議傳輸大數(shù)據(jù).

單一長(zhǎng)連接 : Consumer和Provider通訊的時(shí)候,只有一個(gè)連接, 無(wú)論時(shí)間多久.

NIO : net io. 網(wǎng)絡(luò)IO流. 異步通訊. 可以Consumer一直發(fā)送請(qǐng)求數(shù)據(jù), Provider處理一部分返回一部分結(jié)果.

Dubbo協(xié)議要求,Consumer和Provider在通訊的時(shí)候,所有傳遞的數(shù)據(jù)都必須可序列化.

Provider提供的服務(wù)方法參數(shù)表和返回值類型,必須可序列化.

參數(shù)和返回值類型不能自定義實(shí)現(xiàn)接口List,Set,Map,Number,Calendar等.

傳輸數(shù)據(jù)的時(shí)候,只傳輸類型屬性的值和屬性的類型. 不傳遞方法信息和靜態(tài)數(shù)據(jù).

4.2      RMI協(xié)議

JDK提供的標(biāo)準(zhǔn)協(xié)議,是遠(yuǎn)程方法調(diào)用協(xié)議. remote method invoke.

多連接, 短連接, tcp協(xié)議, 同步傳輸數(shù)據(jù). 服務(wù)參數(shù)和返回值必須實(shí)現(xiàn)可序列化.

適合客戶端和服務(wù)器數(shù)量差不多的情況. 可以傳輸文件. 超時(shí)時(shí)長(zhǎng)無(wú)效.

4.3      hessian協(xié)議

hessian協(xié)議, 基于http應(yīng)用層協(xié)議. 通過(guò)servlet暴露服務(wù).

多連接,短連接, http協(xié)議. 同步傳輸. 參數(shù)返回值數(shù)據(jù)量大. Provider數(shù)量大于Consumer數(shù)量. 服務(wù)的參數(shù)和返回值必須可序列化.

4.4      memcached協(xié)議

基于RPC的應(yīng)用層協(xié)議.

是基于Memcached高效KV服務(wù)器實(shí)現(xiàn)的注冊(cè)中心. 類似Redis.

不需要Consumer感知注冊(cè)中心位置. 可以使用property屬性實(shí)現(xiàn)服務(wù)的應(yīng)用.

到此,相信大家對(duì)“Dubbo基礎(chǔ)知識(shí)總結(jié)以及zookeeper安裝方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI