DUBBO高級配置:多註冊中心配置

有時候咱們須要的服務不在同一個 zookeeper 註冊中心上,此時咱們須要在 DUBBO 配置文件中配置多個註冊中心。html

下面咱們在以前建立項目的基礎上在 provider 模塊中增長一個 IBookService 接口,將其註冊在 localhost 上端口號爲 2182 的 zookeeper 註冊中心,來模擬多註冊中心的配置。最後在 consumer 模塊中調用該接口,驗證多註冊中心配置是否成功。spring

增長 IBookService 接口

IBookService 服務將綁定在地址爲 localhost,端口號爲 2182 的 zookeeper 註冊中心。咱們先建立接口,放在 interface 模塊中:app

package com.chanshuyi.service;

/**
 * Created by Administrator on 2016/1/22.
 */
public interface IBookService {

    /**
     * 獲取圖書價格
     * @param bookNo 圖書編號
     * @return
     */
    public double getPrice(int bookNo);
}

在 provider 模塊中實現該接口:ide

package com.chanshuyi.service.impl;
import com.chanshuyi.service.IBookService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

/**
 * Created by Administrator on 2016/1/22.
 */
@Service("bookService")
public class BookServiceImpl implements IBookService {

    private Logger logger = LoggerFactory.getLogger(BookServiceImpl.class);

    @Override
    public double getPrice(int bookNo) {
        logger.info("執行getPrice()方法");
        return 11.11;
    }
}

以後咱們在 consumer 模塊的 UserServiceConsumer.main() 方法裏增長對 IBookService.getPrice() 接口的調用。修改後的 UserServiceConsumer 類:ui

package com.chanshuyi;

import com.chanshuyi.service.IBookService;
import com.chanshuyi.service.IUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

/**
 * Created by chanshuyi on 2016/1/19.
 */
public class UserServiceConsumer {

    private static Logger logger = LoggerFactory.getLogger(UserServiceConsumer.class);

    public static void main(String args[]) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        IUserService userService = (IUserService) ctx.getBean("userService");
        logger.info("執行結果:" + userService.login("hello", "hello"));
        IBookService bookService = (IBookService) ctx.getBean("bookService");
        logger.info("執行結果:" + bookService.getPrice(12));
    }
}

到這裏,新接口的開發結束。下面在DUBBO 配置文件中配置多註冊中心。spa

配置多註冊中心

打開 provider 模塊的 spring-provider.xml 配置文件,修改爲以下:3d

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- 添加 DUBBO SCHEMA -->
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 6        xsi:schemaLocation="http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo
 8         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 9 
10     <!-- 應用名 -->
11     <dubbo:application name="dubbodemo-provider"/>
12     <!-- 鏈接到哪一個本地註冊中心 -->
13     <dubbo:registry id="dubbodemo" address="zookeeper://localhost:2181"/>
14     <dubbo:registry id="dubbodemo_copy" address="zookeeper://localhost:2182"/>
15     <!-- 用dubbo協議在20880端口暴露服務 -->
16     <dubbo:protocol name="dubbo" port="28080"/>
17     <!-- 聲明須要暴露的服務接口 -->
18     <dubbo:service registry="dubbodemo" timeout="3000" interface="com.chanshuyi.service.IUserService" ref="userService"/>
19     <dubbo:service registry="dubbodemo_copy" timeout="3000" interface="com.chanshuyi.service.IBookService" ref="bookService"/>
20 </beans>

第 1三、14 行分別聲明瞭一個 id 爲 「dubbodemo」、「dubbodemo_copy」的註冊中心,分別對應本地機器的 2181 和 2182 端口。code

第 18 行暴漏了 IUserService 接口並顯式指定將其註冊到 dubbodemo 註冊中心。xml

第 19 行暴漏了 IBookService 接口並顯示指定將其註冊到 dubbodemo_copy 註冊中心。htm

若是在暴漏接口的時候沒有指定註冊到哪一個註冊中心,那麼它會默認註冊到全部的註冊中心。

到這裏,配置完成。下面將模擬多個註冊中心,並啓動服務。

模擬多個註冊中心

咱們經過修改 zookeeper 端口號的方式,在本機上啓動兩個 zookeeper 註冊中心,分別佔用 218一、2182 端口(修改 conf/zoo.cfg 文件的 clientPort 屬性)。

以後咱們運行 bin/zkServer.cmd 啓動 zookeeper,啓動後以下圖所示:

此時 zookeeper 正在等待 provider 或 consumer 端的鏈接。

咱們運行 provider 模塊的 Launch.main() 方法,啓動服務。以後運行 consumer 模塊的 UserServiceConsumer.main() 方法,能夠看到 provider 模塊成功接收到了 consumer 模塊的接口請求:

本文就到這裏結束了。有什麼疑問請評論留言。

 

參考資料:

1. http://dubbo.io/

2. DUBBO 官方配置參考手冊

相關文章
相關標籤/搜索