nacos本地配置与集群

Nacos

1.nacos和eureka的共同点

  1. 都支持服务注册和服务拉取pull
  2. 都支持服务中心提供者心跳方式做健康检查

2.Nacos与Eureka的区别

  1. Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  2. 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
  3. Nacos支持服务列表变更的消息推送模式push,服务列表更新更及时
  4. Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka才艺AP方式

环境隔离

Nacos环境隔离

  1. namespace用来做环境隔离
  2. 每个namespace都有唯一ID
  3. 不同namespace下的服务不可见

请添加图片描述

Nacos负载均衡策略

NacosRule负载均衡策略

  1. 优先选择同集群服务实例列表
  2. 本地鸡群找不到提供者,采取其他集群寻找,并且会报警告
  3. 确定了可用实例列表后,再采用随机负载均衡挑选实例
    请添加图片描述

Nacos配置管理

统一配置管理

请添加图片描述请添加图片描述

配置内容填写:

  1. 核心配置
  2. 开关配置,如true/false
  3. 将来会有变化的配置

请添加图片描述

与nacos地址和配置文件的所有信息都放在bootstrap文件中

  1. 引入Nacos的配置管理客户依赖
<!--nacos配置管理依赖-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  1. 在service中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml:
spring:
	application:
		name: userservice #服务名称
	profiles:
		active: dev #开发环境,这里是dev
	cloud:
		nacos:
			server-addr: localhost:2010 #Nacos地址
			config:
				file-extension: yaml #文件后缀名
  1. 在service中将pattern.dateformat属性注入到Controller中做测试
@RestController
@RequestMapping("/*")
public class Controller {
    //注入nacos中的配置属性
    @Value("${pattern.dateformat}")
    privatet String dateformat;
    
    //编写Controller,通过日期格式化器来格式化现在的时间并返回
    @GetMapping("now")
    public String now(){
        return LocalDate.now().format(
        	DateTimeFoematter.ofPattern(dateformat, Local.CHINA)
        );
    }
    //  ...略
}
总结:将配置交给nacos管理的步骤
  1. 在Nacos中添加配置文件
  2. 在微服务中引入nacos的config依赖
  3. 在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件

Nacos配置热更新

Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过线面两种配置实现:

  • 方式一:在@Value注入的变量所在类上添加注解@RefreshScope
@Slf4j
@RequestMapping("/user")
@RestController
@RefreshScope
public class UserController {
    @Value("${pattern.dateformat}")
    private String dateformat;
    ......
}
  • 方式二:使用@ConfigurationProperties注解
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
    ......
}
注意事项

不是所以的配置都适合放到配置中心,维护起来比较麻烦。

建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置。

多环境配置共享

微服务在启动时会从nacos读取多个配置文件:

  • [spring.application.name]-[spring.profiles.active].yaml,例如userservice-dev.yaml
  • [spring.application,name].yaml,例如:userserrvice.yaml

无论profile如何变化,[spring.appliaction.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件

请添加图片描述

多种配置的优先级:

请添加图片描述

Nacos集群搭建

Nacos生产环境下一定要是集群部署

集群结构图:

请添加图片描述

集群搭建步骤:

  1. 搭建MySQL集群并初始化数据库表

  2. 下载解压nacos

  3. 修改集群配置(节点分支),数据库配置

    进入nacos的conf目录,修改配置文件cluster.conf.example,重命名未cluster.conf;

    修改内容为

    127.0.0.1:8845
    127.0.0.1.8846
    127.0.0.1.8847
    

    修改application.properties

    spring.datasource.platform=mysql
    db.num=1
    db.url=jdbc:mysql//127.0.0.1:3306/nacos_config?charactorEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=123456
    
  4. 分别启动多个nacos节点

    将nacos文件夹复制三份,分别命名为:nacos1,nacos2 ,nacos3

    然后分别修改三个文件夹中的application.properties ,

    nacos1:

    server.port=8845
    

    nacos2:

    server.port=8846
    

    nacos3:

    server.port=8847
    
  5. nginx反向代理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值