一、数据交换格式
1. JSON
json 格式方便易用,性能一般。纯文本,容易阅读,方便编辑,适用性最广
推荐库实现:https://github.com/nlohmann/json。功能完善、使用方便
2. MessagePack
二进制格式。性能比 JSON 好。比如 redis 就使用它。小巧高效,在开源界接受程度比较高
3. protobuf
二进制数据格式,工业级产品。是工业级的数据格式,注重安全和性能,多用在大公司的商业产品里
二、网络通信库
1. libcurl
高可移植、功能丰富的通信库
2. cpr
基于 C++11 对于 libcurl 的封装,推荐推荐
github地址:https://github.com/libcpr/cpr
3. ZMQ
高效、快速、多功能的通信库
- libcurl 和 cpr 处理的都是 HTTP 协议,虽然用起来很方便,但协议自身也有一些限制,比如必须要一来一回,必须点对点直连,在超大数据量通信的时候就不是太合适。
- libcurl 和 cpr 只能充当 HTTP 的客户端,如果你想写服务器端程序,这两个工具就完全派不上用场。
官方地址:https://zeromq.org/
三、性能分析的工具
系统级工具:top、pstack、strace 和 perf。都是非侵入型工具
pstack:可以打印出进程的调用栈信息,有点像是给正在运行的进程拍了个快照,你能看到某个时刻的进程里调用的函数和关系,对进程的运行有个初步的印象。
侵入型工具,需要埋点。google 的 gperftools 工具。官方文档:https://github.com/gperftools/gperftools/tree/master/docs。和 perf 一样,基于采样进行统计分析。
ASAN 工具,OpenResty XRay 工具,valgrind 工具