No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Apollo
README.md

README.md

一、使用方法

1.动态库生成方法

cd ApolloCppSDK/Apollo/automake //进入到automake目录

make //执行这个Makefile,会在当前目录下/build/lib/ApolloTest/libApolloSdk.so

2.ApolloCppSDK Demo使用方法

cd ApolloCppSDK/Apollo/Apollo/ApolloTest //进入到ApolloTest目录

make //执行这个Makefile,会在当前目录下/build/lib/ApolloTest可执行文件

二、Project 目录结构

Apollo │   ├── ApolloClient.cpp

│   ├── ApolloClient.h

│   ├── ApolloManager.cpp

│   ├── ApolloManager.h

│   ├── ApolloSdk.cpp

│   ├── ApolloSdk.h

│   ├── ApolloTest

│   │   ├── ApolloSdkTest.cpp ----SDK演示demo,需要在这个cpp修改自己的apollo配置参数,

如:namespace、appId 等

│   │   └── Makefile ----执行这个Makefile,会在当前目录下/build/lib/ApolloTest可执行文件

│   ├── CommDef.h

│   ├── ConfigFile

│   │   ├── inifile.cpp

│   │   ├── inifile.h

│   │   ├── stringutil.cpp

│   │   └── stringutil.h

│   └── Http

│   ├── HttpClient.cpp

│   └── HttpClient.h

├── automake

   └── Makefile ----执行这个Makefile,会在当前目录下/build/lib/ApolloTest/libApolloSdk.so

三、Apollo客户端SDK

一、客户端主要功能说明

Apollo客户端应用分成联网模式与本地开发模式,结构如下图:

1.程序启动

​ 正常联网模式:

​ 本地模式:

2.定时从配置服务器拉取配置信息

​ 客户端定时从Apollo配置中心服务端拉取应用的最新配置。这是一个fallback机制,为了防止推送机制失效导致配置不更新。

​ 客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified。

​ 定时频率默认为每5分钟拉取一次,客户端也可以通过配置文件来配置

实现流程:

3.配置更新推送

​ 1.请求远端服务,带上自己的应用信息以及notifications信息(每个namespace一个)

​ 2.服务端针对传过来的每一个namespace和对应的notificationId,检查notificationId是否是最新的,如果都是最新的,则保持住请求30秒,如果30秒内没有配置变化,则返回HttpStatus304。如果30秒内有配置变化,则返回对应namespace的最新notificationId, HttpStatus 200。如果传过来的notifications信息中发现有notificationId比服务端老,则直接返回对应namespace的最新notificationId, HttpStatus 200。

​ 3.客户端拿到服务端返回后,判断返回的HttpStatus

​ 4.如果返回的HttpStatus是304,说明配置没有变化,重新执行第1步

​ 5.如果返回的HttpStauts是200,说明配置有变化,针对变化的namespace重新去服务端拉取配置,参见1.3 通过不带缓存的Http接口从Apollo读取配置。同时更新notifications map中的notificationId。重新执行第1步。

由于服务端会hold住请求30秒,所以请确保客户端访问服务端的超时时间要大于30秒,最好是60秒以上,因为Apollo后续可能会调整服务端hold住请求的时间为60秒。

​ 6.从配置中心获取配置信息。

​ 7.更新缓存中和本地文件中的配置

​ 8.通知应用程序。

实现流程:

4.配置信息在内存和本地文件系统中做备份

​ 获取到的最新配置信息缓存一份在内存同时写入本地文件。

5.提供应用服务查询配置接口

​ 应用程序向客户端查询最新配置,客户端返回内存中缓存的配置信息。

​ 如果应用程序查询的namespace不存在与客户端当前namespace表中,则把请求的namespace放入namespace表,key值为namespace,值为notifications(初始值-1).然后马上向配置中心请求最新配置,配置信息存放内存与本地文件,返回应用服务配置信息。

应用程序请求配置正常流程:

6.本地开发模式配置信息请求流程

这个主要用于当开发环境无法连接Apollo服务器的时候,比如在邮轮、飞机上做相关功能开发。

在本地开发模式下,Apollo只会从本地文件读取配置信息,不会从Apollo服务器读取配置。

配置信息请求流程如下: