nacos 配置中心 |
您所在的位置:网站首页 › bootstrapyml配置文件 › nacos 配置中心 |
环境:
IDEA 2022 NACOS:2.2 nginx :1.22 CentOS7 springCloud 2021.0.5 Springboot 2.6.13 Spring-cloud-alibaba 2021.0.4.0 实现效果:微服务配置信息(主要是application中的内容)实现远程配置和共享配置 具体操作:把公共的配置统一拿到nacos配置中心包括如下配置: 1、mysql
spring: #application: # name: cloud-payment-service # 项目名,也是注册的名字 datasource: type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver #mysql驱动包 url: jdbc:mysql://localhost:3306/hztech?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC username: root password: xxxxxxl inetutils: ignored-interfaces: 'VMware Virtual Ethernet Adapter for VMnet1,VMware Virtual Ethernet Adapter for VMnet8' mybatis: mapper-locations: classpath:mapper/*.xml # 所有Entity 别名类所在包 type-aliases-package: com.hztech.entities
2、druid
3、nacos register
4、系统默认的配置文件 cloud-payment-service(与服务同名) 设置是否允许本地配置的信息不被远程配置信息覆盖 override-none:false 默认为覆盖,override-none:true 远程配置不覆盖线下配置 注意:如下配置在客户端配置无效,只能在Nacos 服务端配置才可以 spring: cloud: config: # Nacos远程配置是否不覆盖其他属性源(文件、系统),默认为false,即覆盖其他源(文件、系统), #当allow-override:为true时才会生效 override-none: false # 是否允许Nacos远程配置被本地文件覆盖,默认为true allow-override: true # Nacos远程配置是否可以覆盖系统属性源(系统环境变量或系统属性),默认为true,即允许 override-system-properties: falseNacos服务端配置总览:
以下为provider微服务客户端配置 启用远程配置后,集群部署的相同的服务的不同实例,可以共享一份远程的配置信息,同时本地的pom.xml和bootstrap.yml也可以保持一致 pom.xml springclound com.hztech 1.0-SNAPSHOT 4.0.0 provider-payment8002 8 8 UTF-8 org.springframework.cloud spring-cloud-starter-bootstrap com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.mybatis.spring.boot mybatis-spring-boot-starter com.alibaba druid-spring-boot-starter mysql mysql-connector-java org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-devtools runtime true cn.hutool hutool-all 5.8.11 compile com.hztech cloud-api-common 1.0-SNAPSHOTbootstrap.yml 注意: 1、与配置中心配合使用的本地配置问件,不是 application而是 bootstrap 2、namespace:必须使用id,名称测试未通过!!! 3、数据库配置的远程配置要在其他配置的前面,否则启动报错 4、如果要使用权限管理,就需要在nacos 服务端开启了 nacos.core.auth.enable=true ,这种场景下必须配置 username和password #服务名称 spring.application.name=cloud-payment-service #nacos 配置中心地址 此处因为搭建了nginx反向代理所以省略了端口号 直接填写nginx的访问地址 spring.cloud.nacos.config.server-addr=192.168.1.254 #命名控件必须用id #spring.cloud.nacos.config.namespace=6be08475-3019-4d2c-b22f-51676ea80fac # 扩展文件 共享配置 spring.cloud.nacos.config.shared-configs[0].data-id=datasource.yml spring.cloud.nacos.config.shared-configs[0].refresh=true spring.cloud.nacos.config.shared-configs[1].data-id=nacos.yml spring.cloud.nacos.config.shared-configs[1].refresh=true spring.cloud.nacos.config.extension-configs[0].data-id=druid.yml spring.cloud.nacos.config.extension-configs[0].refresh=true #与 nacos.core.auth.enable有关 #spring.cloud.nacos.config.username=nacos #spring.cloud.nacos.config.password=nacos #file-extension默认是propertites spring.cloud.nacos.config.file-extension=yaml #prefix=${spring.application.name} #默认是这个配置 与 ${spring.application.name} 同名 #spring.cloud.nacos.config.prefix=myconfigprefix #{spring.cloud.nacos.config.prefix}+"-"+{spring.profiles.active}+”."+{spring.cloud.nacos.config.file-extension} #spring.profiles.active=dev
测试dev中的远程配置情况
application.yml 在启用远程配置如果,这个文件中可以只保存一个端口号就好 不同的应用可以设置不同的port就可以了。 server: port: 8002 consumer 微服务 88 POM.xml springclound com.hztech 1.0-SNAPSHOT 4.0.0 customer-order80 8 8 UTF-8 org.springframework.cloud spring-cloud-starter-bootstrap com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.cloud spring-cloud-starter-netflix-ribbon org.springframework.cloud spring-cloud-loadbalancer org.springframework.cloud spring-cloud-starter-openfeign org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok org.springframework.boot spring-boot-starter-test test com.hztech cloud-api-common 1.0-SNAPSHOTbootstrap.yml 使用远程配置 ,只需要nacso 配置, spring.application.name=payment-order spring.cloud.nacos.config.server-addr=192.168.1.254 #命名控件必须用id #spring.cloud.nacos.config.namespace=6be08475-3019-4d2c-b22f-51676ea80fac # 扩展文件 共享配置 spring.cloud.nacos.config.shared-configs[0].data-id=nacos.yml spring.cloud.nacos.config.shared-configs[0].refresh=true #spring.cloud.nacos.config.username=nacos #spring.cloud.nacos.config.password=nacos #file-extension默认是propertites spring.cloud.nacos.config.file-extension=yaml #prefix=${spring.application.name} #默认是这个配置 与 ${spring.application.name} 同名 #spring.cloud.nacos.config.prefix=myconfigprefix #{spring.cloud.nacos.config.prefix}+"-"+{spring.profiles.active}+”."+{spring.cloud.nacos.config.file-extension} #spring.profiles.active=dev application.yml 只配置端口 server: port: 88项目结构
nacos 服务列表
测试过程中发现nacos服务端控制台有两个BUG; 1、微服务客户端运行期间,客户端IP 地址发生改变,nacos 服务端注册信息未更新---影响consumer 查询和调用服务-- 应对方法,重启客户端微服务 2、服务注册信息不显示,任何记录,刷新无效,-------不影响consumer对微服务的调用 应对方法:退出nacos 控制台,重新进入 配置文件优先级由高到低依此为: 1、profile2、默认的与服务同名的配置文件3、extension-configs(下标越大优先级越高)4、shared-configs(下标越大优先级越高) 另外:线上配置优先级高于本地配置(同属性覆盖本地)
官方资料 启动配置管理启动了 Nacos server 后,您就可以参考以下示例代码,为您的 Spring Cloud 应用启动 Nacos 配置管理服务了。完整示例代码请参考:nacos-spring-cloud-config-example 添加依赖: com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ${latest.version}注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。 更多版本对应关系参考:版本说明 Wiki 在 bootstrap.properties 中配置 Nacos server 的地址和应用名 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=example
说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。 在 Nacos Spring Cloud 中,dataId 的完整格式如下: ${prefix}-${spring.profiles.active}.${file-extension} prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。 spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension} file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新: @RestController @RequestMapping("/config") @RefreshScope public class ConfigController { @Value("${useLocalCache:false}") private boolean useLocalCache; @RequestMapping("/get") public boolean get() { return useLocalCache; } } 首先通过调用 Nacos Open API 向 Nacos Server 发布配置:dataId 为example.properties,内容为useLocalCache=true curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true"运行 NacosConfigApplication,调用 curl http://localhost:8080/config/get,返回内容是 true。 再次调用 Nacos Open API 向 Nacos server 发布配置:dataId 为example.properties,内容为useLocalCache=false curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=false" 再次访问 http://localhost:8080/config/get,此时返回内容为false,说明程序中的useLocalCache值已经被动态更新了。
官方网站 https://nacos.io
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |