美文网首页
为什么选择 Apollo 配置中心?

为什么选择 Apollo 配置中心?

作者: 读书学习看报 | 来源:发表于2021-05-09 15:59 被阅读0次

假如你有 4 套独立的 Kubernetes 集群环境,DEV 开发环境用于研发开发调试、前端终端对接,并通过 VPN 使办公网络可以访问到 Kubernetes 的 Service、Pod 集群网络,TEST 环境用于测试,UAT 环境作为二轮测试和验收环境,PRO 作为生产环境。

不同环境的权限要做严格的控制,TEST、UAT、PRO 环境的配置只能由运维操作,研发只有查看权限,禁止研发编辑、发布;DEV 环境的配置,研发具有编辑、发布权限。

可想而知,如果没有一套可以集中式的管理多个环境、可以对不同环境操作进行权限控制的配置中心,来管理这么多的环境,将是非常混乱的。因为这意味着你可能要收藏 4 个环境的配置中心地址,每次新增修改配置可能要重复 4 次,也不能清晰的对各个环境的参数进行差异化比较。

下面是携程 Apollo 官方文档的特性说明,也正是我们选择使用 Apollo 作为云服务配置中心的原因。

统一管理不同环境、不同集群的配置

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

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

  • 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
  • 所有的操作都有审计日志,可以方便的追踪问题。

接下来,看下 Apollo 是如何统一管理多套环境的配置信息?如何在不同环境中共享配置?

首先部署一个 Portal 服务,一套 Portal 可以管理多个环境的配置,但是每个环境都需要独立部署一套 Config Service、Admin Service 和相互独立的数据库 ApolloConfigDB。

  • Config Service 提供配置获取接口,接口服务对象为 Apollo 客户端

  • Admin Service 提供配置管理接口,接口服务对象为 Portal

  • Portal

    • 提供 Web 界面供用户管理配置
    • 通过 Meta Server 获取 Admin Service 服务列表(IP+Port)

Eureka Server、Config Service、Meta Server 三个角色都集成在 Config Service 服务中,也就是说这三个服务地址是相同的,其中 Meta Server 只是一个逻辑角色,简单封装了 Eureka 的服务发现接口,如下图。

Meta Server 的服务地址有两个用处,分布式部署情况如下图:

  • 一个是配置在 Portal 中,通过访问 Meta Server 来获取 Admin Service 服务地址列表,操作配置的修改、发布等功能。
  • 另一个在 Client 中,也就是我们 Spring Cloud 服务的配置文件中通过配置 Meta Server 地址来获取 Config Service 服务列表,读取相关配置。

登录 Protal【管理员工具-系统参数】

  1. 配置可支持的环境列表: apollo.portal.envs:DEV,TEST,UAT,PRO
  1. 配置各环境 Meta Service 列表:apollo.portal.meta.servers。

创建一个应用 appId = AIoT,进入后即可看到左侧有四个环境的菜单,与上面配置的 envs、meta servers 相对应,通过切换列表即可查看四个环境的配置信息;每个环境下会默认生成一个私有的配置空间 namespace 名称为 application,来配置各个环境私有的 db 连接信息、mqtt 连接信息等。

在 Spring Cloud 微服务中如何引入?一般服务中会创建一个公共的配置 application.yml 文件,通过 profiles 来选择激活不同环境的配置文件。

spring:
  application:
    name: gateway
  profiles:
    active: ${env}

TEST 测试环境:application-test.yml

app:
  id: AIoT
apollo:
  meta: http://192.168.0.101:6061
  bootstrap:
    enabled: true
    namespaces: application

UAT 预发布环境:application-uat.yml

app:
  id: AIoT
apollo:
  meta: http://192.168.0.102:5051
  bootstrap:
    enabled: true
    namespaces: application

这样服务在发布时,就可以通过指定环境变量来使用不同环境的配置,例如:

ENV JAVA_OPTS="-Denv=dev -server -Xmx1024m -Xms1024m"
java $JAVA_OPTS -jar gateway.jar

如果业务需要在 application 中增加一项配置,我们需要在每个环境中分别进行新增吗?当然不是。在新增配置时,可以指定要新增的环境。如下会在三个环境中都新增出相同的配置。

如果是后加入的环境,则可以使用同步功能。

~ END ~。

相关文章

  • 为什么选择 Apollo 配置中心?

    假如你有 4 套独立的 Kubernetes 集群环境,DEV 开发环境用于研发开发调试、前端终端对接,并通过 V...

  • Apollo入门学习

    Apollo入门学习 简介 Apollo是一个配置中心,类比的配置中心有Spring Cloud Config 以...

  • Spring Cloud Config Server 节点迁移

    前言: 虽然强烈推荐选择使用国内开源的配置中心,如携程开源的 Apollo 配置中心、阿里开源的 Nacos 注册...

  • SpringBoot扩展点EnvironmentPostProc

    一、背景 之前项目中用到了Apollo配置中心,对接Apollo配置中心后,配置中心的属性就可以在程序中使用了,那...

  • Apollo管理多环境下的配置和踩坑实践

    目录 1、源码构建Apollo配置中心 2、Apollo管理多环境的配置 3、Apollo从零到一过程中的踩坑记录...

  • 关于测试接入Apollo配置中心的记录和心得

    关于测试项目从disconfig配置文件,接入Apollo配置中心的记录和心得 一.Apollo介绍和特点 1.A...

  • Apollo配置中心

    配置中心 最近闲暇调研了配置中心,其实目前对于这边的规模是不需要使用的,大部分系统都有自己的配置表 配置中心的优势...

  • Apollo配置中心

    Apollo介绍 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群...

  • 配置中心apollo

    github地址: https://github.com/apolloconfig/apollohttps://w...

  • Apollo配置中心

    一、它是什么? 首先,Apollo是有一个客户端和服务端, 借用git上的两张图来说明下程序的运行流程: 1.使用...

网友评论

      本文标题:为什么选择 Apollo 配置中心?

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