Linux 下 C++百度开源框架 sofa-pbrpc环境搭建
sofa-pbrpc 是百度内部使用的c++开源网络框架。sofa-pbrpc使用Boost::Asio作为其网络层实现,采用protobuf作为数据打包格式和异步通信框架。
sofa-pbrpc的设计目标:
- 轻量
- 易用
- 高性能
sofa-pbrpc的特性:
- 接口简单,容易使用
- 实现高效,性能优异
- 测试完善,运行稳定
- 支持同步和异步调用
- 支持多级超时设定
- 支持精准的网络流量控制,对应用层透明
- 支持透明压缩传输,节省带宽
- 提供服务和方法级别的服务调用统计信息,方便监控
- 支持自动建立连接和自动重连,用户无需感知连接
- 远程地址相同的Client Stub 共享一个连接通道, 节省资源
- 空闲连接自动关闭,及时释放资源
- 支持Mock测试
- 支持多Server负责均衡和容灾
- 原生支持Http协议访问
- 提供内建的Web监控页面
- 提供Python客户端
Centos 6.3 系统搭建
- 编译依赖
- 编译
- 安装
- 单元测试
- 使用样例
编译依赖
- Boost-1.53.0
– 下载地址:
http://downloads.sourceforge.net/project/boost/boost/1.53.0/boost_1_53_0.tar.gz 因为只需要使用boost的头文件, 所以解压即可, 无需编译。我们此时需要修改“depends.mk”,将BOOST_HEADER_DIR设置为解压得到的boost文件夹路径,譬如:
BOOST_HEADER_DIR=/home/work/libs/boost_1_53_0
- Protobuf 2.4.1
– 下载地址:
http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz , 编译protobuf的步骤:
– 解压,cd到加压的文件夹下
– ./configure –prefix=$PWD/output
– make && make install
配置:修改”Depend.mk”, 将PROTOBUF_DIR设置为编译输出文件夹路径,譬如:
PROTOBUF_DIR=/home/work/libs/protobuf-2.4.1/output
- Snappy
– 下载地址 http://snappy.googlecode.com/files/snappy-1.1.1.tar.gz, 编译如下:
– 加压,cd到文件夹下
– ./configure –prefix=$PWD/output
– make && make install
配置, 修改 “depend.mk”, 将SNAPPY_DIR设置为编译输出文件夹路径,譬如:
SNAPPY_DIR=/home/work/libs/snappy-1.1.1/output
- Zlib
– 如果你的系统中安装了zlib, 请直接跳过。
– 下载地址: http://zlib.net/zlib-1.2.8.tar.gz
– 编译:
– 解压
– ./configure –prefix-=$PWD/output
– make && make install
– 配置: 修改 “Depends.mk”, 将ZLIB_DIR设置为编译输出文件夹路径,例如:
ZLIB_DIR=/home/work/libs/zlib-1.2.8/output
编译、安装
make && make install, 默认会安装到output/bin目录下。安装的文件包括:
- include
- lib/libsofa-pbrpc.a
- bin/sofa-pbrpc-client
使用样例
进入sample文件夹
使用的sample共有四个,echo/timeout_sample/compress_sample/mock_sample