Charlesbases 2019-11-16
代码开发自然要多读其他人开发的一些开源,阅读源代码最好的方式是先使用它,有个感性的认识。对着分布式技术的广泛应用,网络相关的技术是必须要掌握的。今天我们就介绍一下百度的brpc,这是一个比较不错的rpc框架。
rpc是很多业务开发的基础,因此学习rpc的代码对大家后续的开发会有很大的帮助。由于版本的问题可能会导致编译失败,因此这里提供了详细的版本信息。
本文基于Ubuntu 18.04编译通过,其它版本暂时没有测试验证。
百度的brpc依赖一些第三方的软件包,在编译brpc之前需要先安装编译这些软件包,下面我们分别介绍一下安装方法。
安装gflags
本文编译安装的是 2.0,用最新版本貌似静态链接库有点问题。
git clone https://github.com/gflags/gflags.git cd gflags git checkout v2.0 sh autogen.sh ./configure make make install
安装protobuf
本文编译安装的是 3.0 ,之前没看版本依赖,用最新的protobuf结果提示少了gzip_stream.h 头文件。由于在国内无法下载谷歌内的一个文件,因此需要手动修改autogen.sh中的一句代码,可以将其该问如下内容。
https://github.com/shuningzhang/cxy-mst-dzh/blob/master/gmock-1.7.0.zip
整个安装过程如下:
https://github.com/google/protobuf.git cd protobuf git checkout v3.0.0 sh autogen.sh ./configure make make install
安装leveldb
最新版的有静态库的问题,本文采用1.10版本。
git clone https://github.com/google/leveldb.git git checkout v1.10 make sudo cp libleveldb.so* /usr/local/lib & sudo cp -R include/* /usr/local/include
安装openssl
openssl是一个开源的加密库,接下来进行编译和安装:
wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz tar zxvf openssl-1.1.1a.tar.gz cd openssl-1.1.1a ./config make sudo make install
将/usr/local/lib加入默认系统链接库
echo "/usr/local/lib" >> /etc/ld.so.conf /sbin/ldconfig
一切就绪之后就可以编译brpc了,具体步骤如下:
git clone https://github.com/brpc/brpc.git cd brpc sh config_brpc.sh --headers=/usr/local/include --libs=/usr/local/lib make sh tools/make_all_examples
在编译的时候可能会存在找不到snappy函数的情况,此时需要修改一下config.mk文件,在其中增加对动态库的支持-lsnappy。
brpc里面有很多示例程序,我们可以运行一个简单的示例。这个实例在两个程序之间发送消息。
cd example/echo_c++ make ./echo_server & ./echo_client