项目作者: fengliangwang
项目描述 :
apollo client
高级语言: C++
项目地址: git://github.com/fengliangwang/apollo_client_cpp.git
apollo C++ client
根据 Apollo官方git上面的其它语言客户端接入指南官方文档实现了:
1.4 应用感知配置更新
1.3 通过不带缓存的Http接口从Apollo读取配置
1.2 通过带缓存的Http接口从Apollo读取配置
具体如何接入应用,需要参考config_change_notify函数,当配置发生更新时,通知到应用(这里没有实现,不同应用实现的方式可能不太一样,个人倾向于类似ZK+QConf的方案)。
应用参考test.cpp
流程
- 启动时判断本机IP地址,如果要实现灰度发布,这个IP地址需要跟apollo server获取到的IP地址一致,否则灰度不可用。
- 注册appId、cluster,同时可以注册多个namespace
- 运行run循环,一直监听配置更新,在更新后调用注册的回调函数更新到应用(自己实现)
未实现:
- 由于等待apollo配置更新是long polling机制会阻塞,所以需要根据应用场景开启线程; 如果要同时监听多个appId,cluster也需要多线程(apollo接口限制)
- 通知到应用,应用通常都是多线程/线程池,如何保证一个处理过程中配置数据的一致性