likes
comments
collection
share

云原生架构之配置中心-总述传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,

作者站长头像
站长
· 阅读数 18

一 配置中心简介

1.1 配置中心必要性

传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中。配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。

1.2 业界配置中心方案

  • Spring Cloud Config:2014年9月开源,Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。
  • Apollo:2016年5月,携程开源的配置管理中心,具备规范的权限、流程治理等特性。
  • Nacos:2018年6月,阿里开源的配置中心,也可以做DNS和RPC的服务发现。
  • Consul:Spring Cloud 官方声明 Consul 可以作为 Spring Cloud Config 配置中心的替代方案。Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框架、分布式一致性协议实现、健康检查、Key/Value 存储(配置中心)、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等),使用起来也较为简单。

1.3 不同配置方案对比

功能点优先级spring-cloud-configctrip apollodisconf备注
静态配置管理基于file支持支持
动态配置管理支持支持支持
统一管理无,需要github支持支持
多环境无,需要github支持支持
本地配置缓存支持支持
配置锁支持不支持不支持不允许动态及远程更新
配置校验如:ip地址校验,配置
配置生效时间重启生效,或手动refresh生效实时实时需要结合热加载管理, springcloudconfig需要 git webhook+rabbitmq 实时生效
配置更新推送需要手工触发支持支持
配置定时拉取支持配置更新目前依赖事件驱动, client重启或者server端推送操作
用户权限管理无,需要github支持支持现阶段可以人工处理
授权、审核、审计无,需要github支持现阶段可以人工处理
配置版本管理Git做版本管理界面上直接提供发布历史和回滚按钮操作记录有落数据库,但无查询接口
配置合规检测不支持支持(但还需完善)
实例配置监控需要结合springadmin支持支持,可以查看每个配置在哪些机器上加载
灰度发布不支持支持不支持部分更新现阶段可以人工处理
告警通知不支持支持,邮件方式告警支持,邮件方式告警
依赖关系不支持不支持不支持配置与系统版本的依赖系统运行时的依赖关系

二 业务痛点

业务痛点使用的Spring Cloud Config方案,需要考虑一下问题:

  • 需要独立在K8s中部Config服务;
  • 需要考虑Config服务的高可用性;
  • 由于Config服务需要链接私网git repo,安全问题和网络互通问题。

三 改进方向

业务在K8s上,所以应尽可能利用K8s原生的能力,将配置中心不可控性托付给K8s,使用K8s原生configmap和secret资源,无需考虑单独部署配置中心,不用引入新服务,configmap/secret发生变更,服务能及时监控到这一变化从而按照配置的配置更新策略进行动态更新或者服务重启。

转载自:https://juejin.cn/post/7138979347817299975
评论
请登录