nacos安装和入门
nacos简单入个门
nacos 需要准备的地方
创建父工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zhazha</groupId>
<artifactId>spring-nacos-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>spring-cloud-nacos-dubbo-producer</module>
<module>spring-cloud-nacos-dubbo-api</module>
<module>spring-cloud-nacos-dubbo-consumer</module>
</modules>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-actuator</artifactId>
<version>0.2.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
创建 api 项目
这个项目主要是给服务的提供方和消费方提供一个公共的接口协议(接口参数)
服务的提供方
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-nacos-parent</artifactId>
<groupId>com.zhazha</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-nacos-dubbo-producer</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.zhazha</groupId>
<artifactId>spring-cloud-nacos-dubbo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
bootstrap.yml
这个文件主要给后期将我们的 application.yml
配置上传到 nacos
上
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
application.yml
server:
port: 8080
spring:
main:
allow-bean-definition-overriding: true
allow-circular-references: true
application:
name: dubbo-producer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 这个只能修改 dubbo-producer 注册到 nacos的分组,不会修改 dubbo 注册到 nacos 的分组
namespace: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 这个只能修改 dubbo-producer 注册到 nacos 的分组,不会修改dubbo注册到 nacos 的分组
group: spring-cloud
username: nacos
password: nacos
dubbo:
scan:
base-packages: com.zhazha.producer.service.impl
protocol:
# dubbo 协议名称
name: dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
port: -1
registry:
address: nacos://127.0.0.1:8848
# 修改 dubbo 在 nacos 上的命名空间
parameters[namespace]: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 修改 dubbo 在 nacos 上的分组
group: spring-cloud
application:
# 关闭 dubbo 在线运维功能,该功能主要通过 telnet 方式进行服务的权重调整
qos-enable: false
注意看注释的地方
package com.zhazha.producer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDubboProducerApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(NacosDubboProducerApplication.class, args);
}
}
package com.zhazha.producer.service.impl;
import com.zhazha.api.HelloService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService
@Slf4j
public class HelloServiceImpl implements HelloService {
@Override
public String sayHi() {
log.info("nacos-dubbo-producer");
return "nacos-dubbo-producer";
}
}
服务的提供方步骤结束
服务的消费方
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-nacos-parent</artifactId>
<groupId>com.zhazha</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-nacos-dubbo-consumer</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.zhazha</groupId>
<artifactId>spring-cloud-nacos-dubbo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
</project>
bootstrap.yml
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
application.yml
server:
port: 8081
spring:
main:
allow-bean-definition-overriding: true
allow-circular-references: true
application:
name: dubbo-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 这个只能修改 dubbo-producer 注册到 nacos的分组,不会修改 dubbo 注册到 nacos 的分组
namespace: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 这个只能修改 dubbo-producer 注册到 nacos 的分组,不会修改dubbo注册到 nacos 的分组
group: spring-cloud
username: nacos
password: nacos
dubbo:
# scan:
# base-packages: com.zhazha.producer.service.impl
protocol:
# dubbo 协议名称
name: dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
port: -1
registry:
address: nacos://127.0.0.1:8848
# 修改 dubbo 在 nacos 上的命名空间
parameters[namespace]: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 修改 dubbo 在 nacos 上的分组
group: spring-cloud
application:
# 关闭 dubbo 在线运维功能,该功能主要通过 telnet 方式进行服务的权重调整
qos-enable: false
注意上面注释的地方
package com.zhazha.consumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDubboConsumerApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(NacosDubboConsumerApplication.class, args);
}
}
package com.zhazha.consumer.controller;
import com.zhazha.api.HelloService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DubboController {
@DubboReference
private HelloService helloService;
@GetMapping("sayHi")
public String sayHi() {
return helloService.sayHi();
}
}
项目需要准备的就这些了
调用成功:
同时 dubbo
也会在 配置中心记录一些数据
配置上传到 nacos
现在将application.yml
内的内容上传到 nacos
配置中心上
创建专用于配置的命名空间
提供方配置修改
忘记
dubbo
会占用配置中心了,所以另外新建一个,
bootstrap.yml
spring:
application:
name: dubbo-producer
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: de98a7a1-8814-44c5-a635-e19872132371
username: nacos
password: nacos
application.yml
server:
port: 8080
去新建配置:
dubbo-producer.yaml
填入内容:
spring:
application:
name: dubbo-producer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 这个只能修改 dubbo-producer 注册到 nacos的分组,不会修改 dubbo 注册到 nacos 的分组
namespace: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 这个只能修改 dubbo-producer 注册到 nacos 的分组,不会修改dubbo注册到 nacos 的分组
group: spring-cloud
dubbo:
scan:
base-packages: com.zhazha.producer.service.impl
protocol:
# dubbo 协议名称
name: dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
port: -1
registry:
address: nacos://127.0.0.1:8848
# 修改 dubbo 在 nacos 上的命名空间
parameters[namespace]: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 修改 dubbo 在 nacos 上的分组
group: spring-cloud
消费方配置修改
bootstrap.yml
spring:
application:
name: dubbo-consumer
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: de98a7a1-8814-44c5-a635-e19872132371
username: nacos
password: nacos
application.yml
server:
port: 8081
在nacos上创建dubbo-consumer.yaml
spring:
application:
name: dubbo-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 这个只能修改 dubbo-producer 注册到 nacos的分组,不会修改 dubbo 注册到 nacos 的分组
namespace: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 这个只能修改 dubbo-producer 注册到 nacos 的分组,不会修改dubbo注册到 nacos 的分组
group: spring-cloud
username: nacos
password: nacos
dubbo:
# scan:
# base-packages: com.zhazha.producer.service.impl
protocol:
# dubbo 协议名称
name: dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
port: -1
registry:
address: nacos://127.0.0.1:8848
# 修改 dubbo 在 nacos 上的命名空间
parameters[namespace]: edc7dbc5-31bb-4bb6-bbe7-b76e0828e918
# 修改 dubbo 在 nacos 上的分组
group: spring-cloud
application:
# 关闭 dubbo 在线运维功能,该功能主要通过 telnet 方式进行服务的权重调整
qos-enable: false
最后
前面的入门篇已经讲过了,nacos配置中心的名字必须怎样,回到入门篇去看