文章目录
简介
Nacos,英文全称Dynamic Naming and Configuration Service,Na为naming命名,co为configuration配置,s为服务,动态命名与配置服务。
Nacos主旨是一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它包含了注册中心、配置中心、健康检查、动态DNS、服务元数据和流量管理等功能。

环境
下载地址
https://github.com/alibaba/Nacos
运行
startup.cmd
访问localhost:8848出现以下界面说明启动成功。默认用户名密码都为nacos
Nacos作为注册中心
服务提供者
下面是服务提供者9001的配置,还有一个提供者9002与9001的配置类似。
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
application.yml
server:
port: 9001
spring:
application:
name: nacos-payment
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoints:
web:
exposure:
include: '*'
控制器
@RestController
public class PaymentController {
@Value("${server.port}")
private String PORT;
@GetMapping("/payment")
public String payment(){
System.out.println(PORT);
return PORT+"----payment";
}
}
启动类添加@EnableDiscoveryClient注解
服务消费者
pom和yml配置与服务提供者9001的类似。
RestTemplate
@Configuration
public class ApplicationContextConfig {
@LoadBalanced
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
控制器
@RestController
public class ConsumerController {
private String SERVICE_URI="http://nacos-payment";
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer")
public String payment(){
return restTemplate.getForObject(SERVICE_URI+"/payment",String.class);
}
}
测试

说明服务注册成功
- 访问消费者接口localhost:88/consumer可以正常轮询使用到9001和9002的服务
- 原因:nacos集成了ribbon

Nacos作为配置中心
概念
从大到小分别是
- Namespace命名空间
- Group
- Data Id
不同的namespace和group中可以存在同名的配置文件
配置文件命名规则
${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
使用
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
bootstrap.yml
server:
port: 9001
spring:
application:
name: nacos-payment
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
file-extension: yaml #配置文件格式
#group: TEST_GROUP
#namespace: 7c95afef-c8b1-4375-900f-9e2707257428
profiles:
active: dev
配置文件
由命名规则和yml可以得出配置文件名为nacos-payment-dev.yaml,新建配置文件如下。
测试
Controller如下
@RestController
@RefreshScope
public class ConfigController {
@Value("${config.info}")
String info;
@GetMapping("/config/info")
public String getConfigInfo(){
return info;
}
}
- 访问localhost:9001/config/info可以成功获取到配置文件的信息
- namespace和group的配置类似,只需要在yml中多配置
#group: TEST_GROUP
#namespace: 7c95afef-c8b1-4375-900f-9e2707257428
即可获取到对应namespace和group的配置文件。
Nacos持久化
Nacos默认自带的是嵌入式数据库derby,在集群模式下存在一致性问题。
derby切换到Mysql
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:
- 安装数据库,版本要求:5.6.5+
- 初始化mysql数据库,数据库初始化文件:conf/nacos-mysql.sql。
- 修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow
再以单机模式启动nacos
sh startup.sh -m standalone
发布一个配置文件进行测试
nacos所有写嵌入式数据库的数据都写到了mysql
Nacos集群

配置集群配置文件
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)
192.168.182.20:3333
192.168.182.20:4444
192.168.182.20:5555
192.168.182.20:8848
启动nacos
集群模式
- 使用内置数据源
sh startup.sh -p embedded
- 使用外置数据源
sh startup.sh
nginx配置

微服务配置
spring:
cloud:
nacos:
discovery:
#nginx的监听端口
server-addr: 192.168.182.20:1111
版权声明:本文为weixin_44677487原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。