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