当前位置:网站首页 > 大数据架构 > 正文

Apollo配置中心的架构图(apollo配置中心原理)



1、架构模块

在这里插入图片描述
上图简要描述了Apollo的总体设计,从下往上看:

  • Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
  • Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
  • 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进程中

2、客户端设计

在这里插入图片描述
上图简要描述了Apollo客户端的实现原理:

1)、客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送(通过Http Long Polling实现)

2)、客户端还会定时从Apollo配置中心服务端拉取应用的最新配置

  • 这是一个fallback机制,为了防止推送机制失效导致配置不更新
  • 客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified
  • 定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: 来覆盖,单位为分钟

3)、客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中

4)、客户端会把从服务端获取到的配置在本地文件系统缓存一份

在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置

Mac/Linux

Windows

文件名格式如下

5)、应用程序可以从Apollo客户端获取最新的配置、订阅配置更新通知

详细查看官方文档Apollo配置中心设计

1、调整ApolloPortalDB配置

配置项统一存储在ApolloPortalDB.ServerConfig表中,也可以在管理员工具中的系统参数页面进行配置,无特殊说明则修改完一分钟实时生效
在这里插入图片描述
1)、(可支持的环境列表)

默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:

 

修改完需要重启生效

注1:一套Portal可以管理多个环境,但是每个环境都需要独立部署一套Config Service、Admin Service和ApolloConfigDB

注2:只在数据库添加环境是不起作用的,还需要为apollo-portal添加新增环境对应的meta server地址

2)、organizations(部门列表)

Apollo中新建的项目都需要选择部门,所以需要在这里配置可选的部门信息

 

3)、superAdmin(Portal超级管理员)

超级管理员拥有所有权限,需要谨慎设置

如果没有接入自己的SSO系统的话,可以先暂时使用默认值apollo(默认用户)。等接入后,修改为实际使用的账号,多个账号以英文逗号分隔

4)、(consumer token salt)

如果会使用开放平台API的话,可以设置一个token salt。如果不使用,可以忽略

5)、

portal上“帮助”链接的地址,默认是Apollo github的wiki首页,可自行设置

6)、

是否允许项目管理员创建private namespace。设置为允许创建,设置为则项目管理员在页面上看不到创建private namespace的选项

7)、

只对项目成员显示配置信息的环境列表,多个env以英文逗号分隔

对设定了只对项目成员显示配置信息的环境,只有该项目的管理员或拥有该namespace的编辑或发布权限的用户才能看到该私有namespace的配置信息和发布历史。公共namespace始终对所有用户可见

2、调整ApolloConfigDB配置

配置项统一存储在ApolloConfigDB.ServerConfig表中,需要注意每个环境的ApolloConfigDB.ServerConfig都需要单独配置,修改完一分钟实时生效
在这里插入图片描述
1)、(Eureka服务Url)

2)、(一次发布只能有一个人修改开关,用于发布审核)

这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布(生产环境建议开启此选项)

3)、(是否开启配置缓存)

这是一个功能开关,如果配置为true的话,config service会缓存加载过的配置信息,从而加快后续配置获取性能

默认为false,开启前请先评估总配置大小并调整config service内存配置

4)、(配置项 key 最大长度限制)

默认配置是128

5)、(配置项 value 最大长度限制)

默认配置是20000

3、将Config Service和Admin Service注册到自己的Eureka Server上

1)、修改apollo-configservice工程下com.ctrip.framework.apollo.configservice包下的ConfigServiceApplication,把@EnableEurekaServer改为@EnableEurekaClient并重新打包

 

2)、修改ApolloConfigDB.ServerConfig表中的,指向自己的Eureka地址
在这里插入图片描述
效果如下图:
在这里插入图片描述在这里插入图片描述
需要注意的是更改Eureka地址只需要改ApolloConfigDB.ServerConfig表中的即可,不需要修改meta server地址

默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址,修改Eureka地址时不需要修改meta server地址

Apollo中存储的一些比较重要的配置信息,比如密码之类的敏感配置,我们希望将配置加密存储,保证安全性。Apollo框架本身没有提供数据加密的功能,如果想要实现数据加密的功能有两种方式,可以基于第三方的框架来对数据进行解密

jasypt-spring-boot是一个基于Spring Boot开发的框架,可以将properties中加密的内容自动解密,在Apollo中也可以借助于jasypt-spring-boot这个框架来实现数据的加解密操作

1、添加依赖

 

2、配置文件

 

创建一个加密的工具类,用于加密配置:

 

这里执行main方法,可以得到如下输出:

 

input就是8081加密之后的内容,将input的值复制存储到Apollo中,存储的格式需要按照一定的规则才行:
在这里插入图片描述
需要将加密的内容用ENC包起来,这样jasypt才会去解密这个值

jasypt整合Apollo也是有一些不足的地方,比如在配置中心修改值后,项目中的值不会刷新

到此这篇Apollo配置中心的架构图(apollo配置中心原理)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • u盘制作系统盘教程大白菜(制作大白菜u盘装系统)2025-05-01 23:09:06
  • vb名次解释(vb名词解释大全)2025-05-01 23:09:06
  • 蓝色颜色代码大全(好看的蓝色颜色代码)2025-05-01 23:09:06
  • 电脑好玩的代码bat(电脑好玩的代码大全)2025-05-01 23:09:06
  • 程序员入门知识点总结(程序员入门知识点总结大全)2025-05-01 23:09:06
  • 字体和图标怎么显示小一点(字体图标怎么设置大小)2025-05-01 23:09:06
  • ddu卖方责任最大(卖方承担的责任费用最大的是)2025-05-01 23:09:06
  • 好玩的代码大全简单(简单好玩的代码有哪些)2025-05-01 23:09:06
  • 十大至高大道法则小说(前十的大道法则)2025-05-01 23:09:06
  • 字体图案设计(字体图案大全)2025-05-01 23:09:06
  • 全屏图片