apollo 配置中心_Apollo配置中心管理后台的详解

阅读文本大概需要3分钟。

       上篇【Apollo配置中心源码编译及搭建】搭建了Apollo。这篇来看看怎么使用Apollo管理后台。

          Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。Apollo架构模块图:

fd9d11c6df40a7fc630d300a8bb0b915.png

 来源:网络

 各模块职责

  • Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端

  • Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

  • Eureka提供服务注册和发现,目前Eureka在部署时和Config Service是在一个JVM进程中的

  • Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳

  • 在Eureka之上架了一层Meta Server用于封装Eureka的服务发现接口

  • Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试

  • Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试

为了简化部署实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中

分步执行流程

  • Apollo启动后,Config Service和Admin Service会自动注册到Eureka服务注册中心,并定期发送保活心跳。

  • Apollo Client和Portal管理端通过配置的Meta Server的域名地址经由Software Load Balancer(软件负载均衡器)进行负载均衡后分配到某一个Meta Server

  • Meta Server从Eureka获取Config Service和Admin Service的服务信息,相当于是一个Eureka Client

  • Meta Server获取Config Service和Admin Service(IP+Port)失败后会进行重试

  • 获取到正确的Config Service和Admin Service的服务信息后,Apollo Client通过Config Service为应用提供配置获取、实时更新等功能;Apollo Portal管理端通过Admin Service提供配置新增、修改、发布等功能

核心概念

  • application (应用):就是实际使用配置的应用,Apollo客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置
    关键字:appId

  • environment (环境):配置对应的环境,Apollo客户端在运行时需要知道当前应用处于哪个环境,从而可以去获取应用的配置
    关键字:env

  • cluster (集群):一个应用下不同实例的分组,比如典型的可以按照数据中心分,把上海机房的应用实例分为一个集群,把北京机房的应用实例分为另一个集群。
    关键字:cluster

  • namespace (命名空间): 一个应用下不同配置的分组,可以简单地把namespace类比为文件,不同类型的配置存放在不同的文件中,如数据库配置文件,RPC配置文件,应用自身的配置文件等
    关键字:namespaces

c174c6b1243a4c09a93d0ecda3928400.png

 0x01:部门管理

Apollo 默认部门提供两个,如需要增加部门,可在系统参数中修改

f8c60d3b7bdab6a255769d18aec56989.png

添加部门

fa207e0e5d12d670bfb740fb96dc7e29.png

0x02:用户管理

d6f8b628e942e6b43cd8f82c481b5c9e.png

添加用户

a95f660cfe164d3d218d5f23d0218264.png

0x03:创建项目(应用)

83b59c5781255f8b128f83d6f8140baf.png

创建项目

09bf88f2a70a6829307d1b76cfc4f4fd.png

创建完成后

90628996932b4ed700aec7d640087c7d.png

0x04:授权管理

c443ac44be19f27d9b5d0b563b097355.png

 赋予用户huangjj管理payservice服务的权限

9efa1f0109d4608a2b8422eb73e85b0f.png

这样huangjj用户登录就可以看到payservice应用了。

0x05:删除项目

78d551dad042e37877f568ecc25f4eb7.png

删除应用

813866dacdb7f87f523e2b42fd266094.png

集群和Namespace删除同理

0x06:创建token

38c08cd2a5ff9537fa80704ac963443a.png

输入相关参数,点击创建就

b8f9bb00ec32dba908d4a562183ae18c.png

Namespace授权

89471b801b7456d68555d0a73bd3b6cc.png

0x07:添加配置和发布配置

ff577072ff0d9c5a15e2e3310b7748d4.png

添加

f10449e92e57678efd05f60001a80ebf.png

发布

19ad74c541bf87429035d58da0aaa42e.png

0x08:创建Namespace

f485b3def5de7136e740cd909f6a6592.png

创建Namespace

d99c7790d300ce89d2e4a0bd07aabdc7.png

Namespace授权

0e57de3c3a6c5eb3819b074c4ad236ff.png

0x08:获取集群下所有Namespace信息接口

curl -H 'Authorization:748aba21fa6717c5ac6210e82d32f05d9a7c61d6'  \
        -H 'Content-Type:application/json;charset=UTF-8'  \
        http://127.0.0.1:8070/openapi/v1/envs/dev/apps/payservice/clusters/default/namespaces/application

6be086d7c0f7b64a452bf3c2d92e8e72.png

返回数据:

{"appId": "payservice","clusterName": "default","namespaceName": "application","comment": "default app namespace","format": "properties","isPublic": false,"items": [
        {"key": "rule.count","value": "100","comment": "","dataChangeCreatedBy": "apollo","dataChangeLastModifiedBy": "apollo","dataChangeCreatedTime": "2020-08-08T09:37:13.000+0800","dataChangeLastModifiedTime": "2020-08-08T09:37:13.000+0800"
        },
        {"key": "port","value": "9009","comment": "","dataChangeCreatedBy": "apollo","dataChangeLastModifiedBy": "apollo","dataChangeCreatedTime": "2020-08-08T09:37:13.000+0800","dataChangeLastModifiedTime": "2020-08-08T09:37:13.000+0800"
        }
    ],"dataChangeCreatedBy": "apollo","dataChangeLastModifiedBy": "apollo","dataChangeCreatedTime": "2020-08-08T09:18:59.000+0800","dataChangeLastModifiedTime": "2020-08-08T09:18:59.000+0800"
}

结构url的参数规则说明:

env所管理的配置环境
appId所管理的配置AppId
clusterName所管理的配置集群名, 一般情况下传入 default 即可。如果是特殊集群,传入相应集群的名称即可
namespaceName所管理的Namespace的名称,如果是非properties格式,需要加上后缀名,如sample.yml
详细参考:https://github.com/ctripcorp/apollo/wiki/Apollo开放平台

另外也可以通过JavaAPI的方式获取配置

详细参考:https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南

参考:https://www.cnblogs.com/dalianpai/p/12206079.html

往期精彩

01 Sentinel如何进行流量监控

02 Nacos源码编译

03 基于Apache Curator框架的ZooKeeper使用详解

04 spring boot项目整合xxl-job

05 互联网支付系统整体架构详解

关注我

每天进步一点点

2c52f5b89a333ad00703eebef0771903.png

喜欢!在看☟
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值