1、什么是nacos
Nacos在微服务架构中为我们解决了统一配置、服务注册与发现等问题。
1.1nacos有以下主要特性
-
服务发现与服务健康检查
- 服务提供者注册服务,服务提供者使用DNS、HTTP、API查找和发现服务
- nacos提供对服务的健康检查,阻止向不健康的主机或者服务发送请求。
-
动态配置服务
nacos通过内嵌数据库或者mysql统一存储服务相关配置文件,提供实时更新,回滚等功能
-
动态DNS服务
动态dns支持路由权重,容易实现中间层负载均衡等功能
2、nacos基本使用
2.1、单机
1、nacos主要有2种部署方式,分别为单机、集群。nacos依赖jdk1.8及以上版本
2、jar包安装,从git上下载直接运行
3、window下启动在nacos/bin下目录下直接启动,
打开bin文件夹,双击运行startup.cmd即可启动Nacos服务端。
4、Linux下启动
在nacos/bin 目录下执行sh startup.sh -m standalone
3. Spring Boot项目接入Nacos配置中心h和服务中心
创建消费者和提供者工程,引入相关依赖
<dependencies>
<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>
</dependencies>
<!--管理版本-->
<dependencyManagement>
<dependencies>
<!--spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
添加基础配置文件bootstrap.yml
spring:
application:
name: service-order
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST:pigx-register}:${NACOS_PORT:8848}
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yml
在启动类,添加注解
@SpringBootApplication
@EnableDiscoveryClient
public class SmsApplication {
public static void main(String[] args) {
SpringApplication.run(SmsApplication.class, args);
}
}
控制台,可在控制台上创建相应的配置文件
服务名+&{spring。profiles.active}.&{spring.cloud.config.file-extension}
配置文件内容,修改配置文件内容,重新请求,可看到配置文件动态刷新@RefreshScope
@RequestMapping
@RestController
@RefreshScope
public class IndexController {
@Value("${hello}")
private String hello;
@GetMapping("index")
public String index() {
return hello;
}
}
查看控制台,在服务管理中,服务已经注册
4、集群部署
4.1、配置文件
- application.properties:Spring boot 项目默认的配置文件
- cluster.conf.example 集群配置样例文件 实际中文件名为cluster.conf
- nacos-mysql.sql mysql数据库脚本;nacos支持Derby和mysql,两种持久化机制
- nacos-logback.xml nacos日志配置文件
4.2、集群配置文件修改
- 创建cluster.conf配置文件
10.10.109.21:8848
11.16.128.34:8848
11.16.128.36:8848
``
在所有集群服务器中配置文件保持一致,服务器间要保持通信
- 配置mysql数据库 执行nacos-mysql.sql脚本 修改application.properties配置文件
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/pigxx_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# db.user=root
# db.password=XU1210wd@
-
在三台服务器中执行sh startup.sh或者startup.cmd -m cluster(window)
-
集群配置文件相应修改
spring.cloud.nacos.config.server-addr=192.168.0.1:8848,192.168.0.2:8848,192.168.0.3:8848
- 生产环境实际部署建议采用vip+域名方式 nacos.io/zh-cn/docs/…