美文网首页
探索配置中心

探索配置中心

作者: 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做配置中心吗?

    相关文章

      网友评论

          本文标题:探索配置中心

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