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/)。

发布了29 篇原创文章 · 获赞 0 · 访问量 387

猜你喜欢

转载自blog.csdn.net/qq_43399077/article/details/103541343