SpringCloud H系列 alibaba 2.1.1 (一) dubbo 服務端與客戶端實現 (集成nacos註冊中心與配置中心)

1.nacos安裝

請參考 : docker 安裝 nacos 1.X

2.項目父工程

請參考 : SpringCloud H系列 alibaba 2.1.1 (一) nacos1.X 註冊中心 服務端

3.項目結構

4.創建Dubbo api 子工程(存放公共類)

pom.xml

    <parent>
        <groupId>com.alibaba</groupId>
        <artifactId>spring-cloud-hoxton</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>alibaba-dubbo-api</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

TestService.java  創建測試接口

/**
 * 測試API接口
 */
public interface TestService {

    String test(String name);

}

5.創建Dubbo 服務端子工程(雙端負載均衡)

首先在nacos創建兩個配置文件 application-dubbo-server-1.yml 與 application-dubbo-server-2.yml

application-dubbo-server-1.yml

dubbo:
  protocol:
    # 使用dubbo協議通信
    name: dubbo
    # dubbo 協議端口(-1表示自增端口,從20880開始)
    port: -1
  # 掛載到 Spring Cloud 註冊中心
  registry:
    address: spring-cloud://localhost
  scan:
    # 指定 Dubbo 服務實現類的掃描基準包
    base-packages: com.alibaba.dubbo.server.service
server:
  port: 8000

 application-dubbo-server-2.yml  將 端口改爲 8001

創建服務端子工程

pom.xml

    <parent>
        <groupId>com.alibaba</groupId>
        <artifactId>spring-cloud-hoxton</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>alibaba-dubbo-server</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>alibaba-dubbo-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

DubboServerApplication.java  啓動類

@EnableDiscoveryClient // 開啓註冊中心客戶端
@SpringBootApplication
public class DubboServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboServerApplication.class, args);
    }


}

TestServiceImpl.java  實現測試接口

/**
 * 測試接口實現
 */
@Service // 這裏使用的是dubbo的 @Service 註解 將註冊到註冊中心
@RefreshScope // nacos 配置自動刷新
public class TestServiceImpl implements TestService {
    // 獲取遠程配置文件中的端口號
    @Value("${server.port:}")
    private String port;

    @Override
    public String test(String name) {
        return "服務器::端口:"+port+"::返回值 => " + name;
    }

}

bootstrap.yml 配置文件  (一號服務器)

spring:
  application:
    name: alibaba-dubbo-server
  cloud:
    # Nacos 服務發現與註冊配置
    nacos:
      discovery:
        server-addr: 192.168.1.141:8848
      config:
        # 配置中心地址
        server-addr: 192.168.1.141:8848
        # 文件後綴
        file-extension: yml
        # 文件前綴
        prefix: application-dubbo-server-1
        # 命名空間ID
        namespace: 21c7d9a6-4b92-4313-b28b-7ba5a9328902

二號服務器 將 prefix  改爲  application-dubbo-server-2

啓動 一號 與 二號 服務器 

點擊1所在 查看nacos服務列表

2所在 是服務名

3所在 是服務實例數量  與  健康數量

點擊4所在  查看服務詳情

一號二號服務器 啓動註冊成功

6.創建Dubbo 客戶端子工程

首先在nacos創建配置文件 application-dubbo-client.yml

dubbo:
  cloud:
    # 訂閱服務名
    subscribed-services: alibaba-dubbo-server
  protocol:
    # 使用dubbo協議通信
    name: dubbo
    # dubbo 協議端口(-1表示自增端口,從20880開始)
    port: -1
  # 掛載到 Spring Cloud 註冊中心
  registry:
    address: spring-cloud://localhost
server:
  port: 8002

創建服務端子工程

pom.xml

    <parent>
        <groupId>com.alibaba</groupId>
        <artifactId>spring-cloud-hoxton</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>alibaba-dubbo-client</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <dependencies>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>alibaba-dubbo-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

 DubboClientApplication.java  啓動類

@EnableDiscoveryClient  // 開啓註冊中心客戶端
@SpringBootApplication
public class DubboClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboClientApplication.class, args);
    }

}

TestController.java  外部暴露接口

@Slf4j
@RestController
public class TestController {

    @Reference // dubbo注入接口 從nacos註冊中心獲取服務器地址
    private TestService testService;

    @GetMapping("/test")
    public String test(String name) {
        // 遠程調用服務端接口
        return testService.test(name);
    }
}

bootstrap.yml

spring:
  application:
    name: alibaba-dubbo-client
  cloud:
    # Nacos 服務發現與註冊配置
    nacos:
      discovery:
        server-addr: 192.168.1.141:8848
      config:
        # 配置中心地址
        server-addr: 192.168.1.141:8848
        # 文件後綴
        file-extension: yml
        # 文件前綴
        prefix: application-dubbo-client
        # 命名空間ID
        namespace: 21c7d9a6-4b92-4313-b28b-7ba5a9328902

啓動 客戶端 查看nacos服務列表

服務註冊成功

7.測試 功能 與 服務端負載均衡

請求客戶端接口  localhost:8002/test?name=Lion Li

一號服務器響應

dubbo默認負載均衡策略爲隨機  所以需要嘗試多請求幾次

二號服務器響應

 

項目已上傳到gitee

地址: spring-cloud-alibaba-H-demo

如果幫到您了,請幫忙點個star

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章