美文网首页
探索配置中心

探索配置中心

作者: syncwt | 来源:发表于2018-12-05 19:35 被阅读39次

什么是配置中心

配置中心用来集中管理应用不同环境(Dev、Gray、Online...)、不同集群的配置,配置修改后能够实时推送到应用端。

配置中心产生的背景以及要解决的问题

  1. 细微的修改点带来的全局发布问题
  2. 核心加密数据对开发人员的不可见性
  3. 动态运维、参数配置
    ...

配置中心的要素

1.配置是可分离的,可从微服务中抽离出来,任何的配置修改不需要动一行代码。

2.配置应该是中央的 通过统一的中央配置平台去配置管理不同的微服务

3.配置中心必须必须可靠切稳定地提供配置服务。

4.配置是可追溯的,任何的配置历史都是可追溯,被管理且可用。

市场上常用的几类配置中心

Spring cloud config

Git + Spring cloud Bus做到数据动态变化拉取
pub-sub模式


Spring cloud Config工作原理

执行流程:

  1. 用户在Git中update和commit配置,Git hooks脚本回调;
  2. Spring Cloud Config Server通过回掉,获取更新配置;
  3. 用户在其中任一一台机器上执行配置刷新操作 (图中为 "post /bus/refresh")
  4. 目标机 (App A)在Config Server中拉取最新配置,并发送消息到消息总线中,通知其他机器配置被变更;
  5. 所有其他机器通过消息总线获知配置刷新后,在Config Server中拉取最新配置。

缺点:

  1. 依赖系统中消息中间件(RabbitMQ或kafka)、spring 消息总线调度器spring bus。
  2. 配置中心无降级处理、可用性不高。
  3. 无友好界面操作、基于git管理的第三方工具
  4. 整个链路较长、时效性无法保证。
  5. 推送记录追踪较为复杂

ZooKeeper

zookeeper工作原理

Alibaba ACM

Acm工作台配置后同步到Diamond-server集群、acm-client到diamond-server拉取最新配置信息。


Acm工作原理.jpg

执行流程:

  1. 用户在ACM工作台更新相关配置;
  2. Diamond-server持久化存储配置、集群设置缓存;
  3. 所有Diamond-client同步轮询Diamond-server最新更改信息、判断是否有变化、有变化则拉取最新变化配置。
  4. 将最新配置文件写入到本地文件缓存。

缺点:

  1. 依赖阿里云Diamond服务、无法自行维护

实现原理

怎么同步配置的、缓存策略?

Alibaba ACM

阿里云acm服务架构

Apollo类似。

  1. 启动开启轮询线程
    com.taobao.diamond.client.impl.ServerListManager#start
    com.taobao.diamond.client.impl.ClientWorker#ClientWorker
  2. 检测集群变化和配置变化
    集群变化
    com.taobao.diamond.client.impl.ServerListManager#updateIfChanged
    配置变化
    com.taobao.diamond.client.impl.ClientWorker#checkUpdateDataIds
  3. 获取本地文件缓存
    com.taobao.diamond.client.impl.LocalConfigInfoProcessor#getFailover
  4. HTTP远程请求content,缓存到本地file
    com.taobao.diamond.client.impl.ClientWorker#getServerConfig(com.taobao.diamond.client.impl.DiamondEnv, java.lang.String, java.lang.String, java.lang.String, long)

Spring cloud config

ZooKeeper

高性能和高可用

  1. 集群环境配置中心
  2. 配置获取缓存
  3. 历史版本快速回滚
  4. 配置中心宕机处理(本地文件缓存)
  5. 扩展性(多语言支持、操作安全严谨性、集群管理)

怎样用好配置中心

  1. 业务分组
  2. 使用场景分组

应用的场景

  1. 运维配置灰度场景、sentinel动态流控
  2. 分库分表策略
  3. 数据库容灾切换
  4. 线程池的动态配置

Pull和Push在各业务场景中的应用

参考资料

  1. 这款分布式配置中心,会是微服务的降维打击利器吗?
  2. 阿里云ACM:云原生配置管理利器,让云上的Spring Cloud应用配置管理舞动起来
  3. 微服务架构中配置中心的选择
  4. 如何借助配置中心ACM加速企业IT服务快速迭代
  5. 一篇好TM长的关于配置中心的文章
  6. 你还在使用zookeeper做配置中心吗?

相关文章

  • 探索配置中心

    什么是配置中心 配置中心用来集中管理应用不同环境(Dev、Gray、Online...)、不同集群的配置,配置修改...

  • 【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubb

    承接上文 通过之前的【Dubbo3终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中...

  • apollo+nacos 总结

    配置中心 配置中心简介 说到配置中心, 大家可能都不陌生。我们携程现在用的qconfig, 就是一个典型的配置中心...

  • Nacos注册中心之概要设计

    前言 在之前的文章中分析了Nacos配置中心,配置中心的核心是配置的创建、读取、推送。 注册中心的核心比配置中心多...

  • SpringCloud-Spring Cloud Config分

    分布式配置中心可以理解成 注册中心+配置中心的整合。具体实现思路:搭建一个注册中心,在注册中心的基础上添加配置中心...

  • SpringCloud Config使用

    构建配置中心 配置中心服务端配置 新建一个配置中心模块,且注册到eureka中,在其他服务的基础上增加如下配置po...

  • 05知识点

    配置中心设计与实践 配置中心定义 服务集群的统一配置存储和管理系统,配置中心的特点: 独立于程序的只读变量 伴随应...

  • 配置中心

    作用 分布式系统中,服务数量比较多,服务有大量的配置文件,文件可以统一管理,提高效率。配置中心是分布式不可取少的一...

  • 配置中心

    配置中心的原理

  • 配置中心

    git仓库中创建一个文件夹cloud-config-repo,在文件夹下面创建三个properties:cloud...

网友评论

      本文标题:探索配置中心

      本文链接:https://www.haomeiwen.com/subject/wsdsixtx.html