一、简介
nacos全称 Dynamic Naming and Configuration Service。一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,即 注册中心+配置中心的集合。支持CP和AP。
官方快速学习:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
二、安装
地址:https://nacos.io/zh-cn/index.html
单机模式:修改startup.cmd set MODE=“standalone”
http://127.0.0.1:8848/nacos/#/login 登录名和密码nacos
三、服务注册中心
服务提供者
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.1.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
application.properties
server.port=8081
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
主启动类:@EnableDiscoveryClient
四、服务配置中心
pom
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
基础配置文件:
server.port=8081
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=properties
management.endpoints.web.exposure.include=*
spring.profiles.active=dev
#在 Nacos Spring Cloud 中,dataId 的完整格式如下:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
Data ID 必须按照配置文件的!${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}来设置
@RestController
@RefreshScope //支持Nacos动态刷新。
public class ConfigClientController(
@Value("$iconfig.info}")
private String configInfo;
GetMapping( "/config/info")
public String getconfigInfo( ) {
return configInfo;
}
}
分类配置:
由 Naming+Group+Data ID组合区分,隔离配置环境。类似Java里面的package名和类名
最外层的namespace是可以用于区分部署环境的,Group和DatalD逻辑上区分两个目标对象。
Instance为微服务实例
五、集群
单机的持久化:内嵌一个数据库
集群架构图
- 环境,linux
- 下载nacos
- 在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,新增三个实例 格式ip:port。
- 修改/nacos/conf/application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
执行SQL /nacos/conf/nacos-mysql.sql
服务注册
curl -X PUT ‘http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080’
服务发现
curl -X GET ‘http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName’
发布配置
curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld”
获取配置
curl -X GET “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test”