【springCloudAlibaba-学习笔记】02-nacos cofig服务配置中心

文章来源B站   作者:临窗旋墨   发布时间:2023-12-08   阅读:527   标签:spring-cloud-alibaba,学习笔记 分类:spring cloud alibaba 专题:学习记录

02-nacos cofig服务配置中心

集群中每台主机的配置文件都是相同,对配置文件的更新维护,统一交给配置中心管理。

  • spring cloud config:
    • 配置文件放在远程库(github),手动维护
    • config server:和远程库通讯
    • 消息总线系统 spring cloud bus + mq(kafka/rebbitMq)
    • client 发出bus-refresh请求,从远程库请求配置更新,并发给总线,广播给其他client,更新配置。
    • 存在的问题:
      • 无法自动感知更新;
      • 羊群效应,一个更新,全部更新(性能)
      • 架构比较复杂,成本高,难维护。
  • apollo
    • 配置文件放在数据库
    • admin service(eureka client):操作控制台修改数据库
    • config service(eureka client):拉取数据库配置
    • Eureka server:注册中心管理上述service
    • meta server:作为eureka client
    • config client:连接到meta server
    • 可以自动感知噢诶之文件的更新,但存在不足:
      • 系统架构复杂
      • 配置文件支持类型较少,只支持xml/text/properties
  • zookeeper
    • 数据放在zk自身。
    • watcher实现自动更新感知。
  • disconf(百度,不再维护):
  • nacos

nacos配置中心原理

  • 只支持mysql;实时更新;

  • config server(nacos)

  • config client: 自动感知配置中心相应配置文件的更新。
  • 架构简单,支持的文件类型较多。

数据一致性问题 ★

配置中心

  • 配置中心的配置数据一般都是持久化在第三方服务器的,如db,git等。
  • 这些配置中心server中不存放数据,所以在它们的集群中就不存在数据一致性。
  • 但zookeeper作为配置中心,数据是存于自身的,所以集群中的节点存在数据一致性问题
    • zk集群对于数据一致性是采用CP模型的:即更新数据的的时候,短时间内是不可用的。

注册中心

  • 作为注册中心,这些server集群间是存在数据一致性问题的:zk(CP),eureka(AP)、consul(AP)采用的模式是不同的。nacos 默认AP,也可以CP。

nacos [get-config] get from server error 401

Client not connected, current status:STARTING

034-provider从配置中心读取配置文件

spring cloud 从2021开始已经不再扫描bootstrap.properties

新版本直接使用application配置文件

  1. spring:
  2. application:
  3. name: depart-provider
  4. cloud:
  5. nacos:
  6. config:
  7. server-addr: localhost:8848
  8. file-extension: yml
  9. username: nacos
  10. password: nacos12345678
  11. # 共享的配置文件:只有同一个组下同一个group
  12. #shared-configs:shared-config.yml,shared-config2.yml
  13. shared-configs:
  14. - dataId: shared-config.yml
  15. refresh: true
  16. # 扩展配置:
  17. extension-configs:
  18. - dataId: shared-config2.yml
  19. refresh: true
  20. config:
  21. import:
  22. # - optional:nacos:depart-provider.yml
  23. - optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}

关于配置文件的扩展

  • 当前服务配置、共享配置与扩展配置的加载顺序:
    • 加载顺序:共享配置 → 扩展配置 → 当前配置
    • 具有相同key,后加载的会覆盖先加载的。
    • 优先级:当前配置→ 扩展配置 → 共享配置
  • 当前服务配置可以存在三个地方:
    1. 快照:当前用户/nacos/config/下:远程下载到本地缓存到本地快照
    2. 本地配置主动存放:也可以主动存放上面config/…/data/config-data/{group}/{application-name.yml}
    3. 远程nacos中的配置文件
    4. 上述三个同名文件的加载顺序:本地、远程、快照;只要系统加载到了配置文件,后面的配置文件就不会再加载了

配置的动态更新

多环境选择的实现

  • 配置(克隆)多环境配置文件:depart-provider-dev.yml,depart-provider-test.yml
  1. spring:
  2. profiles:
  3. active: test
  4. config:
  5. import:
  6. - optional:nacos:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

配置文件隔离

  • 指定group
  • 指定namespace
  • 指定dataId

发表评论

目录