apollo配置中心

时间:2024-03-13 17:37:42

apollo配置中心管理界面:

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景

apollo配置中心

统一管理:

  • Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置
  • 同一份代码部署在不同的集群,可以有不同的配置,比如zk的地址等
  • 通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖

热发布:

  • 用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,不需要对应用进行重新部署
  • 对于数据库,zk,redis host,kafka,fastdfs地址等重要配置,在修改后不立即使用,等应用重启才可以生效

权限管理、发布审核、操作审计

  • 支持审批流程
  • 在每次发布的内容中增加当前的版本号,可以直观的看到版本修改
  • 可以查看更改历史
  • 所有的操作都有审计日志,可以方便的追踪问题
  • 所有的配置发布都有版本概念,从而可以方便的支持配置的回滚

 

灰度发布:

通过创建灰度版本,您可以对某些配置做灰度测试
灰度流程为:

  •  创建灰度版本
  •  配置灰度配置项
  •  配置灰度规则.如果是私有的namespace可以按照客户端的IP进行灰度,如果是公共的namespace则可以同时按AppId和客户端的IP进行灰度
  •  灰度发布灰度版本最终有两种结果:全量发布和放弃灰度

全量发布:灰度的配置合到主版本并发布,所有的客户端都会使用合并后的配置

放弃灰度:删除灰度版本,所有的客户端都会使用回主版本的配置
注意事项:
  1.如果灰度版本已经有灰度发布过,那么修改灰度规则后,无需再次灰度发布就立即生效

namespace命名空间:

  • 私有的namespace,私有Namespace的配置只能被所属的应用获取到,通过创建一个私有的Namespace可以实现分组管理配置
  • 公共的namespace,为更好的支持公共组件的配置管理, apollo配置中心公共组件部分会创建多个公开的(public)  namespace, 数据库,redis等需要引用这些公共组件, 再创建自己的私有namespace

apollo配置中心

多个AppId使用同一份配置:

  • 在一些情况下,尽管应用本身不是公共组件,但还是需要在多个AppId之间共用同一份配置,比如同一个产品的不同项目,具体来说,就是在其中一个AppId下创建一个namespace,写入公共的配置信息,然后在各个项目中读取该namespace的配置即可。如果某个AppId需要覆盖公共的配置信息,那么在该AppId下关联公共的namespace并写入需要覆盖的配置即可

apollo配置中心

集群创建:

创建集群需要项目管理员权限,如果发现没有添加集群按钮,可以找项目管理员授权

  • 通过添加集群,可以使同一份程序在不同的集群(如不同的数据中心)使用不同的配置
  • 如果不同集群使用一样的配置,则没有必要创建集群
  • Apollo默认会读取机器上/opt/settings/server.properties(linux)或C:\opt\settings\server.properties(windows)文件中的idc属性作为集群名字, 如SHAJQ(金桥数据中心)、SHAOY(欧阳数据中心)
  • 在这里创建的集群名字需要和机器上server.properties中的idc属性一致