首页 > 其他分享 >Apollo配置中心介绍

Apollo配置中心介绍

时间:2023-09-03 21:38:51浏览次数:34  
标签:ConfigService 配置 介绍 获取 change Apollo 服务端 客户端


更多内容参看官网文档:https://www.apolloconfig.com/#/zh/README

架构设计

Apollo配置中心介绍_客户端

  • Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳
  • 在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口
  • Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试

七个模块

ConfigService

提供配置推送、获取接口,服务与Apollo客户端

AdminService

提供配置管理接口,服务于管理界面portal

Client

  1. 为应用获取配置,支持实时更新
  2. 为metaServer获取ConfigService的服务列表
  3. 使用客户端软负载SLB方式调用ConfigService

Portal

  1. 配置管理界面
  2. 通过mateServer获取AdminService的服务列表
  3. 使用客户端软负载SLB方式调用AdminService

Eureka

  1. 用于服务发现和注册
  2. Config/AdminService注册实例并报心跳
  3. 和ConfigService一起部署

MetaServer

  1. Portal通过域名访问MetaServer获取AdminService的地址列表
  2. Client通过域名访问MetaServer获取ConfigService的地址列表
  3. 相当于一个Eureka Proxy
  4. 和ConfigService一起部署

NginxLB

  • 和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表
  • 和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表
  • 和域名系统配合,协助用户访问Portal进行配置管理

客户端设计

Apollo配置中心介绍_Apollo_02

  1. 客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。(通过Http Long Polling实现)
  2. 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。
  • 这是一个fallback机制,为了防止推送机制失效导致配置不更新
  • 客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified
  • 定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖,单位为分钟。
  1. 客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中
  2. 客户端会把从服务端获取到的配置在本地文件系统缓存一份
  • 在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置
  1. 应用程序可以从Apollo客户端获取最新的配置、订阅配置更新通知
和SpringBoot集成时,插入到ApplicationContext的Environment的PropertySources的第一条

Apollo配置中心介绍_服务端_03

配置更新推送

  1. 客户端发起Http请求到服务端
  2. 服务端会保持住这个链接60秒
  1. 如果60秒内有配置变化,请求会立即返回,并告知客户端有变化的namespace,客户端据此拉取配置
  2. 如果60秒内没有变化,返回HTTP状态码304
  1. 客户端收到服务端请求后会立即重新发起链接,回到第一步

核心概念

Namespace

服务可用性

Apollo配置中心介绍_客户端_04

Java API

获取配置

// 获取application namespace
Config config = ConfigService.getAppConfig();
// 获取非application namespace
Config config = ConfigService.getConfig(namespaceName);
Integer defaultRequestTimeout = 200;
Integer requestTimeout = config.getIntProperty("requestTimeout", defaultRequestTimeout);

监听配置变化

Config config = ConfigService.getAppConfig();
config.addChangeListener(new ConfigChangeListener() {
  @Override
  public void onChange(ConfigChangeEvent changeEvent) {
    for (String key : changeEvent.changedKeys()) {
      ConfigChange change = changeEvent.getChange(key);
      System.out.println(String.format(
        "Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s",
        change.getPropertyName(), change.getOldValue(),
        change.getNewValue(), change.getChangeType()));
     }
  }
});


标签:ConfigService,配置,介绍,获取,change,Apollo,服务端,客户端
From: https://blog.51cto.com/u_16225007/7343312

相关文章

  • 蒟蒻的个人介绍
    新注册的用户,平时闲的没事的话会发两篇,水平真的很拉,所以发的估计也很拉,欢迎提意见,不喜勿喷。洛谷uid:667037,用户名:Tonycyt,前面忘了,中间忘了,关注Tonycyt谢谢喵。学OI两年多了吧,感觉连个CSP-J一等的水平都未必有,真的菜死。喜欢听的歌,歌风奇葩,不好听不要喷我。......
  • MySql中 BufferPool 的基本概念介绍
    MySQL的BufferPool是MySQL数据库引擎用来缓存数据页(页是磁盘上的一块固定大小的数据单元)的内存区域。BufferPool在MySQL服务器启动时被初始化,然后在整个数据库生命周期中用于高效地管理数据库页的读取和写入。BufferPool是MySQL性能的关键组成部分之一,因为它可以显著减少与磁盘I......
  • 自我介绍+软工5问
    自我介绍+软工5问作业概述这个作业属于哪个课程软件工程这个作业要求在哪里自我介绍+软工五问这个作业的目标熟悉使用博客园与github平台自我介绍我叫张钟杰,是计算机科学与技术4班的一名大三学生,来自云浮罗定。个人目前业余爱好是听歌、运动、打游戏。软工......
  • 自我介绍
    1.关键词大家好,我叫林子雯,来自四川成都。如果要用三个词来描述自己的话,我想应该是:乐观(遇到事情比较勇敢顽强,不怕困难)好奇心(喜欢拥有不同的体验,对大多数事物保持好奇心)爱好自然(喜欢小动物、植物,热爱与大自然相处❤️)2.特长小学的时候学习过五年多钢琴,但当时对它的感触并不深,说......
  • springboot自动配置的原理和如何自定义starter
    一、springboot自动配置的原理使用springboot时的一大优点就是当需要引入一些第三方的框架时只需要引入一个对应的starter后springboot就会自动的完成配置,例如在springboot中使用mybatis只需要引入mybatis提供的starter.那么这种便捷的配置方式是如何实现的呢,要了解其中的原理......
  • Unity UGUI的Scrollbar(滚动条)组件的介绍及使用
    UnityUGUI的Scrollbar(滚动条)组件的介绍及使用一、什么是Scrollbar组件?Scrollbar组件是Unity中UGUI系统提供的一种UI组件,主要用于在UI界面中提供滚动条功能,使用户可以通过滚动条来查看超出屏幕范围的内容。二、Scrollbar组件是如何工作的?Scrollbar组件的工作原理主要是通过改......
  • 如何使用『Nginx』配置后端『HTTPS』协议访问
    前言本篇博客主要讲解如何使用Nginx部署后端应用接口SSL证书,从而实现HTTPS协议访问接口(本文使用公网IP部署,读者可以自行替换为域名)申请证书须知请在您的云服务平台申请SSL证书,一般来说证书期限为一年,到期限需要再次申请博主这里使用的是阿里云云服务器,阿里云每年可......
  • ODOO 科目配置4
    启用 斯托诺会计不启用 Anglo-SaxonAccounting常规作业能满足,另外需要下面三个二开: 1.报废科目的定义2.库存盘点科目的定义3.价值重估科目的定义.      ......
  • [SpringSecurity5.6.2源码分析一]:spring.factories下有关SpringSecurity的配置类
    1、Spring.factories• 从下图可以看出spring-boot-autoconfigure/META-INF/spring.factories中关于SpringSecurity的自动配置类有以下这些org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,\org.springframework.boot.autoconfigure.securi......
  • Apollo开发指南
    一、准备工作二、本地启动2.1ApolloConfigService和ApolloAdminService2.2Apollo-Portal2.3Java样例客户端启动2.4.Net样例客户端启动三、开发3.1Portal实现用户登录功能3.2Portal接入邮件服务本文档介绍了如何在本地使用IDE编译、运行Apollo,从而可以帮助大家了解Apollo......