-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何操作配置中心
HaojunRen edited this page May 31, 2024
·
2 revisions
跟配置中心有关的有三项配置,如下
- 网关和服务的蓝绿灰度发布规则策略配置
- 网关动态路由规则策略配置
- Sentinel规则策略配置
支持六大配置中心,如下
- Nacos
- Apollo
- Consul
- Etcd
- Zookeeper
- Redis
操作配置中心需要设置Key和Value,基本原则,如下
- Key为
- Nacos、Redis、Zookeeper配置中心,Group为{group},DataId为{serviceId}-{规则类型}
- Apollo、Consul、Etcd配置中心,Key的格式为{group}-{serviceId}-{规则类型}
- {group}为注册中心元数据group值
- Value为对应的配置格式
提醒:蓝绿发布等规则不需要加-{规则类型}
经过严格测试发现,上面六个配置中心删除配置项后的事件触发存在差异
配置中心 | 删除配置项后的事件触发 |
---|---|
Nacos | 会触发事件,响应后回调值为null |
Apollo | 会触发事件,响应后回调值为null |
Etcd | 会触发事件,响应后回调值为null |
Zookeeper | 会触发事件,响应后回调值为null |
Redis | 会触发事件,响应后回调值为空字符串 |
Consul | 不会触发事件 |
从配置中心的中间件角度来讲,并不是所有的配置中心都暴露出事件触发的类型。例如,您收到一个配置变动的事件推送,在某些配置中心的客户端上并不能区分这个事件是修改配置还是删除配置,但具体测试一些配置中心,我们还是依旧可以得到如下结论
① 对于Nacos、Apollo、Etcd、Zookeeper来说,不约而同的遵循一个规则,即删除配置项后,产生事件触发的响应回调值为null,这可以作为修改配置还是删除配置的依据
② 对于Redis、Consul来说,则不适用
- Spring Redis的RedisMessageListenerContainer只能对配置内容改变做出事件响应,却不能对配置删除做出事件响应。通过在删除前模拟把配置内容设置成空字符串(null不行),才可以得到事件响应
- Consul Client本身不具备事件监听机制,通过while + sleep方式,循环监听Consul Index(即每个配置都有自己的Consul Index)对应配置内容改变而模拟实现事件监听。该实现方式会导致删除某条配置会触发其它配置的事件响应
基于上述差异,为统一起见,避免踩上这些细节处理带来的坑(尤其是使用Redis、Consul),当您希望把配置清空的时候,最好不要删除该配置,推荐一个操作原则
① 如果是Xml格式,例如,网关和服务的蓝绿灰度发布规则策略,输入如下内容表示空规则策略
<?xml version="1.0" encoding="UTF-8"?>
<rule>
</rule>
② 如果是Json格式,例如,网关动态路由或者Sentinel规则策略配置,输入如下内容表示空规则策略
列表形式的规则策略
[]
实体形式的规则策略
{}
该操作原则也适用于如何自定义订阅框架事件
2017-2050 ©Nepxion Studio Apache License
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发