扫一扫下方二维码,关注本站官方公众号
获取永久解锁本站全部文章的验证码
还能不定期领现金红包

apollo修改配置刷新bean_饮冰三年-人工智能-Python-57-Apollo之04应用 - 逍遥小天狼-Go语言中文社区

apollo修改配置刷新bean_饮冰三年-人工智能-Python-57-Apollo之04应用 - 逍遥小天狼


4.1 Apollo工作原理

下图是Apollo架构模块的概览

overall-architecture.png

各模块职责

上图简要描述了Apollo的总体设计,我们可以从下往上看:

  • 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进程中

分步执行流程

  1. Apollo启动后,Config/Admin Service会自动注册到Eureka服务注册中心,并定期发送保活心跳。
  2. Apollo Client和Portal管理端通过配置的Meta Server的域名地址经由Software Load Balancer(软件负载均衡器)进行负载均衡后分配到某一个Meta Server
  3. Meta Server从Eureka获取Config Service和Admin Service的服务信息,相当于是一个Eureka Client
  4. Meta Server获取Config Service和Admin Service(IP+Port)失败后会进行重试
  5. 获取到正确的Config Service和Admin Service的服务信息后,Apollo Client通过Config Service为应用提供配置获取、实时更新等功能;Apollo Portal管理端通过Admin Service提供配置新增、修改、发布等功能

核心概念

  1. application (应用)

这个很好理解,就是实际使用配置的应用,Apollo客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置

关键字:appId

  1. environment (环境)

配置对应的环境,Apollo客户端在运行时需要知道当前应用处于哪个环境,从而可以去获取应用的配置

关键字:env

  1. cluster (集群)

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

关键字:cluster

  1. namespace (命名空间)

一个应用下不同配置的分组,可以简单地把namespace类比为文件,不同类型的配置存放在不同的文件中,如数据库配置文件,RPC配置文件,应用自身的配置文件等

关键字:namespaces

它们的关系如下图所示:

03f624fb5edfd9974b6898c1ebc08d52.png

项目管理

.1 基础设置

  1. 部门管理(select * from ApolloPortalDB.ServerConfig where ApolloPortalDB.ServerConfig.Key = "organizations")

    apollo 默认部门有两个。要增加自己的部门,可在系统参数中修改:

    49845a64d0c1038ee2a9394cd093f528.png

    • 输入key查询已存在的部门设置:organizations

      228f37a009a1e0f5c42b8c8a182645ea.png

    • 修改value值来添加新部门,下面添加一个微服务部门:

       [{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"},{"orgId":"micro_service","orgName":"微服务部门"}]
  2. 添加用户(SELECT * FROM `Users` where Username='杨小可')

    apollo默认提供一个超级管理员: apollo,可以自行添加用户

    87cdcdf6ef5e50bec30b80478e942539.png7d34d7b171bc00f10c48f31aebe7be8d.png

.2 创建项目(SELECT * FROM `App` where AppId='account-service')

  1. 打开apollo-portal主页:http://localhost:8070/

  2. 点击“创建项目”:account-service

    • 部门:选择应用所在的部门
    • 应用AppId:用来标识应用身份的唯一id,格式为string,需要和项目配置文件中配置的对应
    • 应用名称:应用名,仅用于界面展示
    • 应用负责人:选择的人默认会成为该项目的管理员,具备项目权限管理、集群创建、Namespace创建等权限
  3. 输入项目信息点击提交

    2abce648e44c866e729973fd21681781.png

    8e73ba72fc1e0afb1b9139eebebea81a.png

.3 为项目分配权限(涉及到User、UserRole、RolePermission、Permission)

  1. 赋予之前添加的用户张三管理account-service服务的权限40f6b89e3890e90e8d77cc861a7bee91.png
  2. 将修改和发布权限都授权给杨小可de7df30a17753c178b5b03b0ce5cd3ed.png 
  3. 使用杨小可登录,查看项目配置ef97d289b5027ebe0a89ac6eadbf082f.png

.4 删除项目(delete FROM `App` where AppId='account-service') 逻辑删除

如果要删除整个项目,点击右上角的“管理员工具–》删除应用、集群…”

3d02997590dabf64d2568c8e524a80b3.png

首先查询出要删除的项目,点击“删除应用”(先不要删,后面还有用)

b88ca9a04b7d29ca3e6901cfaf5a2b5b.png

配置管理

下边在account-service项目中进行配置。

.1 添加发布配置项

  1. 通过表格模式添加配置

    c3a3a6e72aa9a4966381a3f766d1c8e9.png

    7b3560a3908e7ce2cf3744463fac6782.png

  2. 通过文本模式编辑

      Apollo除了支持表格模式,逐个添加、修改配置外,还提供文本模式批量添加、修改。 这个对于从已有的properties文件迁移尤其有用

  • 切换到文本编辑模式

    f626abf7f39b638a5c7aa782e1bf7178.png

  • 输入配置项,并点击提交修改

    9de70517e647b223e1792a85fbd16b15.png

  • 发布配置

30cc6da53af8e7ec93401ea6acc44fff.png

4. 修改配置

  1. 找到对应的配置项,点击修改
  2. 修改为需要的值,点击提交

  3. 发布配置

645aaa897fa28fb923a1758da45361c2.png

4. 删除配置

  1. 找到需要删除的配置项,点击删除

c96293b8cdea45a1d39228c8d595333f.png

   确认删除后,点击发布

09f6c5836e961c4787c5477bdc22e468.png

.4 添加Namespace

Namespace作为配置的分类,可当成一个配置文件。

以添加rocketmq配置为例,添加“spring-rocketmq” Namespace配置rocketmq相关信息。

  1. 添加项目私有Namespace:spring-rocketmq

进入项目首页,点击左下脚的“添加Namespace”,共包括两项:关联公共Namespace和创建Namespace,这里选择“创建Namespace”

149f68cd1851243b844c1a7050f88d74.png

    添加配置项

   rocketmq.name-server = 127.0.0.1:9876
   rocketmq.producer.group = PID_ACCOUNT

12e152bbb82fba16f0abdd4887996334.png

       发布配置

c5b8f790f9bed989c2fced0032f8a150.png

.5 公共配置

.5.1 添加公共Namespace

在项目开发中,有一些配置可能是通用的,我们可以通过把这些通用的配置放到公共的Namespace中,这样其他项目要使用时可以直接添加需要的Namespace

1:新建cy-common项目

8797ec5d44cdf3bde313b8f09fced912.png

 2:添加公共Namespace:cy-ftp

dd7b92d7829b2a0cc29cf49e99af6495.png

 3:添加配置项并发布

d1a7f29be6076ac1299a8af079a077dd.png

.5.2 关联公共Namespace

  1. 打开之前创建的OA项目

  2. 点击左侧的添加Namespaced897fa6e98217905f3f8afe12e841110.png

  3. 可以对内容进行修改981c6035a1464d8ea6e250dc7ff564a0.png

 多项目配置

通常一个分布式系统包括多个项目,所以需要多个项目,下边以创源的项目为例,添加MES系统

e7cfbffe32d249a49c023dd4b09deb93.png

 关联公共Namespace,任务应用都可以关联公共Namespace。

095ebf9b3f24eb2cd5e4a91def4cff82.png

 选择需要的配置5209a9e9203459d3ea85eaf3938c0cb9.png

 发布配置c5ed6f177df22f35e61600acca139e42.png

集群管理

在有些情况下,应用有需求对不同的集群做不同的配置,比如部署在A机房的应用连接的RocketMQ服务器地址和部署在B机房的应用连接的RocketMQ服务器地址不一样。另外在项目开发过程中,也可为不同的开发人员创建不同的集群来满足开发人员的自定义配置。

.1 创建集群

  • 点击页面左侧的“添加集群”按钮(suzhou、beijing): 属于 'beijing' 集群的实例只会使用 'beijing' 集群(当前页面)的配置,只有当对应namespace在当前集群没有发布过配置时,才会使用default集群的配置。

bbf450ac76be32ca4bb012d2d4e28cf3.png

 切换到对应的集群,修改配置并发布即可

60460301c692bf1989cad45e4ebc2e0e.png

.2 同步集群配置

同步集群的配置是指在同一个应用中拷贝某个环境下的集群的配置到目标环境下的目标集群。

  1. 从其他集群同步已有配置到新集群

    • 切换到原有集群

    • 展开要同步的Namespace,点击同步配置

a94abe20b4381ecddce121c8f0184af0.png

9c1fa4e86dfbf0946ef49ee18dfae159.png

7c5e32fb401475507bbd5969312acc17.png

灰度发布使用指南

通过灰度发布功能,可以实现:

  1. 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置。
  2. 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置。

下面将结合一个实际例子来描述如何使用灰度发布功能

创源项目有两个客户端:

  1. (pro)
  2. (uat)

00272f32d3c2ae533bf2c3ca912c60f3.png

灰度目标:

  • 当前有一个配置timeout=2000,我们希望对灰度发布timeout=3000,对仍然是timeout=2000。

 创建灰度

首先点击application namespace右上角的创建灰度按钮。

45bd338384cee8b7786c481c43245ba7.png

 点击确定后,灰度版本就创建成功了,页面会自动切换到灰度版本Tab。

灰度配置

点击主版本的配置中,timeout配置最右侧的对此配置灰度按钮

d2d5ba68fdc35556c2b33f3898ea2dd7.png

 c7003305ad68a2bf8fe847a3ea161de9.png

配置灰度规则

切换到灰度规则Tab,点击新增规则按钮

b2f1ba4ca6080bb4fc4f6d93e4a4ead7.png

3b2e9698998f200273523b5dc7ace68e.png

灰度发布

配置规则已经生效,不过灰度配置还没有发布。切换到配置Tab。

再次检查灰度的配置部分,如果没有问题,点击灰度发布

b8c6239ab147587882db03a51c61943d.png

后面可以继续配置的修改或规则的更改。配置的修改需要点击灰度发布后才会生效,规则的修改在规则点击完成后就会实时生效。

下一节: 饮冰三年-人工智能-Python-58-Apollo之05 Python实例

版权声明1:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39956110/article/details/110107748
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-12 00:51
  • 阅读 ( 948 )
  • 分类:Go应用

0 条评论

请先 登录 后评论

官方社群