项目作者: fengliangwang

项目描述 :
apollo client
高级语言: C++
项目地址: git://github.com/fengliangwang/apollo_client_cpp.git
创建时间: 2019-04-24T08:44:18Z
项目社区:https://github.com/fengliangwang/apollo_client_cpp

开源协议:

下载


apollo C++ client

根据 Apollo官方git上面的其它语言客户端接入指南官方文档实现了:

1.4 应用感知配置更新

1.3 通过不带缓存的Http接口从Apollo读取配置

1.2 通过带缓存的Http接口从Apollo读取配置

具体如何接入应用,需要参考config_change_notify函数,当配置发生更新时,通知到应用(这里没有实现,不同应用实现的方式可能不太一样,个人倾向于类似ZK+QConf的方案)。

应用参考test.cpp

流程

  1. 启动时判断本机IP地址,如果要实现灰度发布,这个IP地址需要跟apollo server获取到的IP地址一致,否则灰度不可用。
  2. 注册appId、cluster,同时可以注册多个namespace
  3. 运行run循环,一直监听配置更新,在更新后调用注册的回调函数更新到应用(自己实现)

未实现:

  1. 由于等待apollo配置更新是long polling机制会阻塞,所以需要根据应用场景开启线程; 如果要同时监听多个appId,cluster也需要多线程(apollo接口限制)
  2. 通知到应用,应用通常都是多线程/线程池,如何保证一个处理过程中配置数据的一致性