溫馨提示×

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

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

分布式商城項(xiàng)目--dubbo 服務(wù)的發(fā)布和引用。

發(fā)布時(shí)間:2020-07-07 08:37:09 來(lái)源:網(wǎng)絡(luò) 閱讀:286 作者:yc王志威 欄目:編程語(yǔ)言

dubbo服務(wù)需要zookeeper服務(wù)的支持,之前我們已經(jīng)介紹過(guò)zookeeper的安裝配置,這里就不在贅述

1.啟動(dòng)zookeeper

分布式商城項(xiàng)目--dubbo 服務(wù)的發(fā)布和引用。

2. Provider 服務(wù)提供者 service 配置發(fā)布到 dubbo

在本系統(tǒng)中的服務(wù)提供者(Provider) 由 tyh-manager-service 提供。 現(xiàn)在需要將此服務(wù)
發(fā)布到 dubbo 中, 并在 zookeeper 中進(jìn)行注冊(cè)。
在 service 工程中需要增加對(duì) dubbo 和 zookeeper 的依賴包。 增加依賴包在目前的項(xiàng)目
結(jié)構(gòu)中需要先在 ycshop-parent 父工程中統(tǒng)一進(jìn)行引用版本的管理。
父工程中的引用:

<properties>
    <dubbo.version>2.6.2</dubbo.version>
    <zookeeper.version>3.4.13</zookeeper.version>
    <zkclient.version>0.1</zkclient.version>
    <curator-versioin>2.8.0</curator-versioin>
</properties>
<!-- dubbo 相關(guān) -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>${dubbo.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>${zookeeper.version}</version>
</dependency>
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>${zkclient.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>${curator-versioin}</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>${curator-versioin}</version>
</dependency>

在 ycshop-manager-service 工程中增加對(duì) dubbo 和 zookeeper 的依賴包引用。具體依賴如下:

<!-- dubbo 相關(guān)依賴 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <!-- 排除依賴。 處理對(duì) spring 引用版本沖突問題 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- zookeeper 的客戶端, 要連接 zookeeper, 需要把以下兩個(gè) jar 包加進(jìn)來(lái) -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
        </dependency>
spring-service.xml 配置

在 spring-service.xml 配置文件中增加一下配置:

<!-- 使用 dubbo 發(fā)布服務(wù) -->
    <!-- 服務(wù)提供者應(yīng)用信息, 用于計(jì)算依賴關(guān)系 -->
    <dubbo:application name="ycshop-manager" />
    <!-- 注冊(cè)中心地址。 使用 zookeeper 作為注冊(cè)中心, 地址為 2.1 中所啟動(dòng)的 zookeeper 地址。 還可以是配置多個(gè)注冊(cè)中心, 
        在 address 中使用逗號(hào)分割 -->
    <dubbo:registry protocol="zookeeper" address="47.100.224.4:2181" />
    <!-- 用 dubbo 協(xié)議在 20880 端口暴露服務(wù) -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 聲明需要暴露的服務(wù)接口,ref 鏈接實(shí)現(xiàn)對(duì)象。 adminServiceImpl 這里是使用 自動(dòng)掃描后默認(rèn)的服務(wù) bean 名稱 -->
    <dubbo:service interface="cn.yuechenc.manager.interfaces.UserService"
        ref="userServiceImpl" />

在 XML 文件中增加命名空間的引用:
分布式商城項(xiàng)目--dubbo 服務(wù)的發(fā)布和引用。
配置文件說(shuō)明:
&lt;dubbo:application name="tyh-manager" /&gt;:是用來(lái)配置在注冊(cè)中心的名字, 標(biāo)識(shí)我
們當(dāng)前應(yīng)用的一個(gè)名稱, 可以隨便起, 但是最好不要跟其他的應(yīng)用重復(fù), 最好跟你的工程名
相對(duì)應(yīng)。
dubbo:registry protocol="zookeeper" address="47.100.224.4:2181": 用于配置注冊(cè)中心的地址。 這里使用 zookeeper 協(xié)議, 并且地址為 47.100.224.4(zookeeper的安裝服務(wù)器地址。 ) 2181: zookeeper 默認(rèn)的端口號(hào)(可以在 zookeeper 中進(jìn)行配置)
&lt;dubbo:protocol name="dubbo" port="20880" /&gt;: 協(xié)議配置, 用于配置提供服務(wù)的協(xié)議信息, 協(xié)議由提供方指定, 消費(fèi)方被動(dòng)接受。 這里使用 dubbo 協(xié)議, 從 20880 端口向注冊(cè)中心暴露服務(wù)提供方地址。

此時(shí)我們還無(wú)法啟動(dòng),因?yàn)轫?xiàng)目里缺少cn.yuechenc.manager.interfaces.UserService這個(gè)接口,所以啟動(dòng)測(cè)試留到下一篇介紹

3. Consumer 服務(wù)消費(fèi)者 web 工程引用 dubbo 服務(wù)

在本系統(tǒng)中 ycshop-manager-web 工程作為服務(wù)的消費(fèi)者。 現(xiàn)在 web 工程需要通過(guò) dubbo服務(wù)來(lái)引用 service 工程所提供的服務(wù)。

引用 dubbo 和 zookeeper 相關(guān)依賴包

在 ycshop-manager-web 工程中添加對(duì) dubbo 和 zookeeper 相關(guān)的依賴包。 Pom.xml 文件增加以下內(nèi)容:

<!-- dubbo 相關(guān)依賴 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <!-- 排除依賴 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- zookeeper 的客戶端, 你要連接 zookeeper, 需要把以下兩個(gè) jar 包加進(jìn) 來(lái) -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
        </dependency>
        <!-- JSON 相關(guān) -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies>
spring-mvc.xml 配置

在 spring-mvc.xml 文件中增加以下配置:

<!-- 引用 dubbo 服務(wù) -->
    <dubbo:application name="tyh.manager-web" />
    <dubbo:registry protocol="zookeeper" address="47.100.224.4:2181" />
    <dubbo:reference interface="cn.yuechenc.manager.interfaces.UserService"
        id="userService" />

配置說(shuō)明:
&lt;dubbo:application name="tyh.manager-web" /&gt;:是用來(lái)配置在注冊(cè)中心的名字, 標(biāo)識(shí)我們當(dāng)前應(yīng)用的一個(gè)名稱, 可以隨便起, 但是最好不要跟其他的應(yīng)用重復(fù), 最好跟你的工程名相對(duì)應(yīng)。
dubbo:registry:注冊(cè)中心的地址
dubbo:reference: 服務(wù)所暴露的服務(wù)。 需要和服務(wù)引用同樣的接口。 (所以在 MVC 工程中需要引用 ycshop-manager-interfaces 接口)

同樣,這時(shí)候還不能啟動(dòng),啟動(dòng)測(cè)試我們下節(jié)再介紹。

向AI問一下細(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