1.安装Nacos
- 下载Nacos https://github.com/alibaba/nacos/releases/tag/1.3.1
- 解压
- 进入bin目录,执行 startup.cmd
- 访问 localhost:8848/nacos 进入nacos 界面
2.Nacos 作为服务注册中心
- 引入nacos jar 包
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
2.主启动类上加入注解:@EnableDiscoveryClient
3. application.yml 配置
server:
port: 9002
spring:
application:
name: nacos-provider-payment-service
cloud: #nacos 配置
nacos:
discovery:
server-addr: localhost:8848 #nacos server地址
management: #向外暴露监控接口
endpoints:
web:
exposure:
include: "*"
登录 localhost:8848/nacos 可以看到该微服务已经注册入nacos了
3.Nacos 作为配置中心
1.引入 jar 包
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.bootstrap.yml
server:
port: 8083
spring:
application:
name: consumer-order83
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos 的地址
config:
server-addr: localhost:8848 #nacos作为配置中心的地址
file-extension: yaml #指定配置文件的格式(后缀名)
group: DEFAULT_GROUP # 指定配置文件在 Nacos 中所在的组名
namespace: public # 指定配置文件在 Nacos 中所在的命名空间
#nacos默认配置文件名称组成公式
#${spring.application.name}${spring.profiles.active}-${spring.cloud.nacos.config.file-extension}
#示例 consumer-order83-dev.yaml
management:
endpoints:
web:
exposure:
include: "*"
3.在controller中加入@RefreshScope注解
package com.atguigu.springcloudalibaba.controller;
import com.atguigu.springcloudalibaba.service.OrderFeignService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RefreshScope //加入此注解启动自动刷新配置功能
public class OrderNacosController {
@Resource
private OrderFeignService orderFeignService;
@Value("${config.info}")
private String configInfo;
@GetMapping("/payment/port/{id}")
String paymentPortId(@PathVariable(value = "id") int id) {
return orderFeignService.selectPayment(id);
}
@GetMapping("/config/info")
String configInfo() {
return configInfo;
}
}
通过以上的配置可实现NOCAS配置中心与自动刷新功能,在nacos server上修改了配置 nacos 客户端可以及时的被通知
4.Nacos 集群与持久化配置。
1.持久化配置
1.首先在mysql 中新建nacos_config数据库,然后执行nacos/conf中的naccos-mysql.sql 脚本进行建表 。
2.在/nacos/conf/application.properties 文件最后添加 mysql 数据库的配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.1.5:3306/nacons_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123123
2.集群配置
3.复制cluster.conf.example 重命名为cluster.conf,在该配置文件中加入nacos集群节点的IP与端口号。例如
192.168.1.1:3001 #注意IP不能写127.0.0.1 之类,直接写真实IP
192.168.1.1:3002
192.168.1.1:3003
4.如果在同一台机器上配置集群环境 则需要修改 startup.sh文件,否则调用startup.sh启动nacos时不知道启动的时哪一个集群节点
该代码在第五十行左右 该代码在文件最后
修改过后调用 ./startup.sh -p 3001 使用 -p 3001 来启动指定端口的集群节点。
5.使用nginx 进行nacos负载均衡,配置nginx.conf文件
5.Nacos 同时支持AP(高可用/分区容错)与CP(数据一致性/分区容错)两种模式,可通过发送POST请求进行配置
配置CP:
NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP
配置AP :
NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=AP