Nacos整合Dubbo服務

(一)nacos

1.nacos下載

官方資料:https://nacos.io/zh-cn/docs/quick-start.html
有windows、linux、以及mac操作系統的下載

2.啓動

windows系統下啓動nacos
解壓開windows的zip包之後,在bin目錄下找到startup.cmd腳本雙擊啓動。
startup.sh是linux系統下的啓動腳本。

3.訪問nacos管理界面

啓動完成之後,可以通過訪問localhost:8848(默認用戶名/密碼:nacos/nacos)進如nacos的控制檯,在裏面可以查看在nacos註冊服務的詳細信息。

(二)dubbo服務註冊到nacos

1.新建nacos-dubbo的springboot父子項目

(1)父項目爲nacos-dubbo爲子項目提供公共的依賴的,子項目dubbo-api、dubbo-provider、dubbo-consumer
(2)nacos-dubbo的依賴

<properties>
        <revision>2.7.3</revision>
        <nacos.version>1.0.1</nacos.version>
</properties>

<!-- Spring Boot dependencies -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${revision}</version>
        </dependency>

        <!-- Dubbo Registry Nacos -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>${revision}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>${nacos.version}</version>
        </dependency>

2.公共接口simple-api

這裏只提供一個公共的服務依賴接口

public interface DemoService {
    String sayHello(String name);

    String service1();
}

3.生產者

(1)依賴公共接口

<dependencies>
<!—公共接口 -->
        <dependency>
            <groupId>com.neo</groupId>
            <artifactId>sample-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
</dependencies>

(2)application.properties配置

# Spring boot application
spring.application.name=provider
server.port=8081
# nacos address
nacos.server-address=127.0.0.1
nacos.port=8848
# Dubbo Application
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.neo.service
# Dubbo Protocol
dubbo.protocol.name=dubbo
## Random port
dubbo.protocol.port=-1
## Dubbo Registry
dubbo.registry.address=nacos://${nacos.server-address}:${nacos.port}
## The default value of dubbo.application.name is ${spring.application.name}
dubbo.application.name=${spring.application.name}
## DemoService version
demo.service.version=2.0.1

(3)springboot啓動類添加dubbo註解

@EnableDubbo

(4)實現公共接口demoservice爲消費者提供服務

@Service(group = "provider", version = "${demo.service.version}")
public class DefaultDemoService implements DemoService {

    @Value("${dubbo.application.name}")
    private String serviceName;

    @Override
    public String sayHello(String name) {
        return String.format("[%s] : Hello, %s", serviceName, name);
    }

    @Override
    public String service1() {
        return "調用了provider的service1";
    }
}

@Service註解爲dubbo的註解與spring的區分開來。group和version使用一個就可以了,group爲duboo註冊服務到nacos的服務名,可以在nacos管理界面查看。名字根據properties的dubbo.application.name決定。version則可以自己在properties自定義,注意生產者和消費者的version一定要一致纔可以調用服務。group也是同樣。

4.消費者

(1)依賴公共接口

<dependencies>
<!—公共接口 -->
        <dependency>
            <groupId>com.neo</groupId>
            <artifactId>sample-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
</dependencies>

(2)application.properties配置

spring.application.name=consumer
demo.service.version=2.0.1
nacos.host=127.0.0.1
nacos.port=8848
dubbo.registry.address=nacos://${nacos.host}:${nacos.port}

(3)springboot啓動類添加dubbo註解

@EnableDubbo

(4)controller調用生產者提供的服務

@RestController
public class DemoController {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Reference(check = false, group = "provider", version = "${demo.service.version}")
    private DemoService demoService;
  
    @GetMapping(value = "/service1")
    private String service1() {
        return demoService.service1();
    }

    @Bean
    public ApplicationRunner runner() {
        return args -> logger.info(demoService.sayHello("mercyblitz"));
    }

}

(三)啓動服務

(1)啓動生產者和消費者之後,可以在nacos控制檯看到服務名。
(2)訪問服務,瀏覽器打開localhost:8080/service1

(四)總結

以上nacos和dubbo的使用只是一個簡單的demo,想了解更多的dubbo配置可以去官網(http://dubbo.apache.org/zh-cn/)。
nacos不止是當作一個註冊中心組件,同時也可以作爲項目的配置中心所使用。而且還能夠使用mysql數據庫來對nacos的配置進行持久化。更多的nacos使用可以參考這篇博客(https://www.larscheng.com/nacosinfo/)。

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