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