简介

apollo是携程开源的一款较为成熟的远程配置系统。
通过这个远程配置,用户可以在界面上配置参数,然后让参数自动同步到服务上,减少中间不必要的CICD流程。
目前apollo提供了java和.net的客户端,但没有c++版本的,本文将设计并实现一款c++语言版本的客户端。
对于直接使用的用户,可以直接跳到“使用案例”环节。

设计

阅读全文 »

简介

boost::fiber是一类用户级线程,也就是纤程。其提供的例子与实际生产环境相距较远,本文将对其进行一定的改造,将其能够投入到生产环境。
同时由于纤程是具有传染性的,使用纤程的代码里也全部要用纤程封装,本文将对一些组件进行简单封装。

fiber封装

阅读全文 »

深入解析 Folly 中 ConcurrentHashMap 和 AtomicHashMap 的底层实现原理,包括分片锁机制、无锁读取、CAS 操作、hazard pointer 内存回收等。

阅读全文 »

简介

本文将谈一谈并发队列,讲解集中可手写的并发队列的实现方式,以及介绍几种开源并发队列的实现,当然都是c++版本的。
可手撸的并发队列实现起来相对简单,面试的时候可以撸一撸,简单生产环境也可以用一用;
当然,实际生产环境中,还是建议直接用高性能的开源实现。
可手撸的版本包括,单锁队列、双锁队列、原子队列;开源并发队列包括boost中的并发队列、tbb中的并发队列、folly中的并发队列、moodycamel中的并发队列。

单锁队列实现

阅读全文 »

简介

taskflow是一个轻量级的图引擎,或者说是轻量级的tensorflow。
taskflow允许用户构建一个有向图,然后并行执行这个图,让图中相互依赖的节点串行执行,不依赖的节点并行执行。
这种方式既可视化了业务逻辑的依赖关系,又提升了整体执行的效率。
本文将先从源码的角度介绍taskflow库,然后基于taskflow开发一套企业级的策略引擎。

源码解读

阅读全文 »