03 Nacos


前言

一、Nacos是什么?

注册中心,配置中心。

二、使用步骤

1.依赖

代码如下(示例):

<!--nacos配置管理依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.配置

代码如下(示例):

spring.:
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: localhost:80
      discovery:
        cluster-name: GuangDong

三、Nacos服务分级存储模型

  • 一级是服务,比如用户服务,userservice
  • 二级是集群,比如杭州或上海
  • 三级是实例,比如杭州机房某台部署了userservice的服务器

四、如何设置实例的集群属性

1、修改application.yml文件,添加属性

spring.cloud.nacos.discovery.cluster-name

五、NacosRule负载均衡

1、调用方的配置文件添加负载均衡规则:

# userservice是服务提供方
# 该规则是会去找当前集群的,然后轮询。
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

2、权重设置

在这里插入图片描述
允许权重为0,适用比如服务迭代升级。

六、Nacos环境隔离

在这里插入图片描述

namespace可以用于比如说开发环境、生产环境等区分
group可以用于业务区分

1、如何适用命名空间

  • 第一步新建命名空间

在这里插入图片描述

  • 配置文件里新加命名空间属性
# namespace属性绑定命名空间id
spring.:
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: ShangHai
        namespace: 02c92c53-f8d1-4a2a-9cb1-0d06cb6ecf39
# bootstrap.xml,读取优先级高于application.xml
spring:
  application:
    name: userservice
  profiles:
    active: dev
  cloud:
    nacos:
      server-addr: localhost:8848
      config:
        file-extension: yaml

在这里插入图片描述

七、Nacos与Eureka的区别

https://perkins4j2.github.io/posts/35353/
作者:Perkins

八、Nacos实现配置管理

1、统一配置管理

  • 会有一个配置管理服务(实际上也是Nacos),当配置更新后,会通知对应的服务,让它重新读取配置
  • 使用规范,热更新的配置才放进去,而不是把application里面的都丢进去
  • 如果要新建配置,去Nacos点点
    在这里插入图片描述
  • 微服务如何使用该配置方式
    (1)本地配置文件获取方式:
    项目启动->读取bootstrap.xml->读取本地配置文件application.yml->创建spring容器->加载Bean
    (2)当有配置中心的时候,会先读取bootstrap找Nacos的地址,然后读取Nacos中的配置文件,再读取本地配置文件,然后合并
    (3)在需要配置中心的服务中添加依赖
<!--nacos配置管理依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

(4)在resource目录添加一个bootstrap.yml,这个文件是引导文件,优先级高于application.yml

spring:
  application:
    name: userservice
  profiles:
    active: dev
  cloud:
    nacos:
      server-addr: localhost:8848
      config:
        file-extension: yaml

在这里插入图片描述

(5)使用方式和用配置文件一样,比如value等,比如properties之类的方法。

2、配置热更新

  • 方式一:在使用了配置的类上,加入@RefreshScope注解
@RefreshScope
public class UserController {
    @Value("${pattern.dateformat}")
    private String dateformat;
}
  • 方式二:使用ConfigurationProperties注解
// 没有Component注解会报错,因为使用该类的注解必须在spring容器中
@Component
// 匹配机制,通过前缀名和成员变量名能匹配上属性的话,值就能带入
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dataformat;
}

3、配置共享

微服务启动的时候会从Nacos里面读取多个配置文件:

  • [spring.application.name]-[spring.profiles.active].yaml,eg:userservice-dev.yaml
  • [spring.application.name].yml,eg:uservice.yaml

无论第一个文件的环境如何变化,第二个文件一定会加载,因此多环境共享配置可以写入这个文件

注意
1、配置开发、测试环境等信息的时候,可以使用编辑配置,就无需改代码,将该微服务的其他实例以不同的环境启动
在这里插入图片描述
2、多种配置的优先级

  • 服务名-profile.yaml -> 服务名称.yaml -> 本地配置

4、本地练习搭建Nacos集群(了解)

在这里插入图片描述
(1)初始化数据库

  • 去nacos的conf文件夹,找到建表sql
    在这里插入图片描述
  • 去数据库建一个nacos的库,并执行建表语句
    在这里插入图片描述

(2)下载nacos,配置nacos集群

  • 找到cluster.conf.example文件,名字修改为cluster.conf
  • 配置集群的ip和端口
    在这里插入图片描述
  • 找到application.properties,配置数据源
    在这里插入图片描述
  • 复制三份,并且完成端口配置
    在这里插入图片描述在这里插入图片描述
  • 集群启动,bin目录下cmd,startup.cmd,无需加其他参数

(3)配置nginx

#新加配置
upstream nacos-cluster{
	server 127.0.0.1:8845;
	server 127.0.0.1:8846;
	server 127.0.0.1:8847;
}

server {
	listen       80;
       server_name  localhost;	
	
	location /nacos {
           root   html;
           proxy_pass http://nacos-cluster;
       }
}

在这里插入图片描述
(4)代码跟着修改与nacos的绑定
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值