Nacos: 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
一、下载启动Nacos服务端
参考Nacos服务端下载启动
Nacos启动后页面 默认用户名 密码 nacos nacos
Nacos可作为服务注册中心和配置中心
二、服务注册和配置
在项目中把服务注册到nacos,nacos作为注册中心管理各个微服务。
各个服务模块采用 bootstrap.yml 配置文件配置,各个服务公共配置在nacos新建application-dev.yml中项目配置如下
配置文件小结:
bootstrap.yml 配置服务系统级别配置,如服务端口,注册中心地址变动比较小的配置项
application-dev.ym:作为各服务公共配置,各服务共享的配置文件,我在里面配置有 openfeign的相关配置以及暴漏监控端点
bootstrap.yml 先于 application.yml
在配置中心新增的各服务配置文件如 dataId:com-xzx-user-dev.yml是各服务独有的配置如数据源redis数据源,个性化配置
服务启动会在注册中心查询到
运行日志显示服务注册到注册中心
在Bean中添加@RefreshScope注解使Bean具备动态刷新能力,配置中心修改配置可以不用重启服务就可以获取
namespace配置:用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。在没有明确指定 ${spring.cloud.nacos.config.namespace}配置的情况下,默认使用的是 Nacos 上 Public 这个 namespae。也可以使用"spring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7"来配置。
注:该配置必须放在 bootstrap.yml文件中。此外 spring.cloud.nacos. config.namespace 的值是 namespace 对应的 id,id 值可以在 Nacos 的控制
台获取。并且在添加配置时注意不要选择其他的 namespae,否则将会导致读取不到
正确的配置
在没有明确指定 ${spring.cloud.nacos.config.group}配置的情况下,默认使用的是DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现:“spring.cloud.nacos.config.group=DEVELOP_GROUP”
注:该配置必须放在 bootstrap.properties 文件中。并且在添加配置时 Group 的
值一定要和 spring.cloud.nacos.config.group 的配置值一致
Nacos Config 更多配置项信息
Nacos Discovery 更多配置项信息
Nacos Config Actuator Endpoin
Nacos C onf ig 内部提供了一个 End point, 对应的 Endpoint ID 为nacos-config,其 Actuator Web Endpoint URI 为 /actuator/nacos-config。
注:使用 Nacos Config Spring Cloud 1.x 版本的话,其 URI 地址则为
/nacos-config。
其中,Endpoint 暴露的 json 中包含了三种属性:
NacosConfigProperties: 当前应用 Nacos 的基础配置信息。
RefreshHistory: 配置刷新的历史记录。
Sources: 当前应用配置的数据信息。
Nacos Discovery Actuator Endpoint
Nacos Discovery 内部提供了一个 Endpoint, 对应的 endpoint id 为 nacos discovery,其 Actuator Web Endpoint URI 为/actuator/nacos-discovery
注:使用 Nacos Config Spring Cloud 1.x 版本的话,其 URI 地址则为
/nacos-discovery
Endpoint 暴露的 json 中包含了两种属性:
subscribe: 显示了当前服务有哪些服务订阅者。
NacosDiscoveryProperties: 当前应用 Nacos 的基础配置信息。
监控端口配置如下:
Nacos持久化
nacos config目录下application.properties配置 nacos持久化地址,运行.sql脚本这样nacos的配置信息就会存储在mysql中