Dubbo使用Nacos註冊中心

不想加班的p發表於2020-05-12

概述

在最新Dubbo中我們可以將Dubbo的註冊到Nacos中進行服務的治理

依賴的準備

注意:以下所有依賴的組都是`org.apache.dubbo`

dubbo-spring-boot-starter提供了dubbo基本的全部所需依賴以及springboot的自動配置的依賴

dubbo-registry-nacos提供了dubbo所使用的的nacos註冊中心所需的依賴

如果不使用springboot則需要新增以下依賴

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.7.6</version>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.2.1</version>
</dependency>

準備好介面

在提供者和消費者兩端提供一個同一的介面的依賴,提供者負責提供介面的實現,消費者負責通過介面消費服務

例如:

public interface TestService {
  String testStringLength(String string);
}

提供者實現介面

服務提供者將介面實現並通過註解或XML等方式暴露在註冊中心上

例如:

@Component // 這個@Component可以不要,在此存在是方便服務內部引用
@Service(version = "1.0.0") // 暴露介面的註解
public class TestServiceImpl implements TestService {
  @Override
  public String testStringLength(String string) {
    return "字串" + string + "長度:" + string.length();
  }
}

暴露的服務在nacos上的服務名稱為:providers:暴露介面包名:版本:組名

外部配置

spring:
  application:
    name: example
server:
  port: 8080
dubbo:
  registry:
    address: nacos://localhost:8848
  application:
    name: dubbo-provider-demo
  protocol:
    name: dubbo
    port: 20880
  scan:
    # 這個屬性必須有,代表被掃描暴露服務的包
    base-packages: com.example.nacos.demo1.service

消費者消費服務

消費者在註冊中心上獲得服務提供者暴露服務的地址並進行呼叫

例如:

// 從註冊中心引用介面為TestService的服務
@Reference(version = "1.0.0", check = false)
private TestService testService;

外部配置

server:
  port: 9966
spring:
  application:
    name: customer
dubbo:
  registry:
    address: nacos://192.168.1.105:8848
  consumer:
    timeout: 10000

相關文章