微信在2016年发布了一个RPC框架phxrpc,github地址是:https://github.com/Tencent/phxrpc。号称微信后台很多地方都使用到了。
一、编译
本人的环境是CentOS 7,gcc 4.8.5,支持C++ 11。
参考文档可以见微信:编译说明
此处自己来总结一下:
PhxRPC必须依赖的第三方库只有protobuf。在编译前,在third_party目录放置好protobuf目录,或者通过软链的形式。这个third_party目录是没有的,需要自己创建,并且将protobuf代码放进去,也就是说,third_party和sample,plugin_boost等文件夹是同级关系。
另外,我下载的Protobuf版本是3.5.2。https://github.com/protocolbuffers/protobuf
1.编译protobuf
进入third_party/protobuf目录。
./autogen.sh
./configure CXXFLAGS=-fPIC -prefix=[当前目录绝对路径], 这一步CXXFLAGS和-prefix都必须设置对。
例如我的路径是:/home/firecat/Prj/1mystudyhard/rpc/phxrpc/third_party/protobuf
make && make install
编译完成后检查是否在当前目录成功生成bin,include,lib三个子目录。
[root@localhost protobuf]# ./autogen.sh [root@localhost protobuf]# ./configure CXXFLAGS=-fPIC -prefix=/home/firecat/Prj/1mystudyhard/rpc/phxrpc/third_party/protobuf [root@localhost protobuf]# make [root@localhost protobuf]# make install
2.编译phxrpc
进入PhxRPC根目录。
make
编译完成后检查是否生成lib子目录,并检查lib目录下是否生成静态库libphxrpc.a.
3.代码自动生成
上面三步其实不仅生成了libphxrpc.a,还生成了sample中的代码。
sample中的代码默认生成使用的是:
../codegen/phxrpc_pb2server -I ../ -I ../third_party/protobuf/include -f search.proto -d .
所以如果想要生成的worker是使用协程方式执行,需要在sample下重新生成,或者你直接修改sample中的Makefile文件就OK:
../codegen/phxrpc_pb2server -I ../ -I ../third_party/protobuf/include -f search.proto -d . -u
4.运行
进入sample,执行server:
./search_main -c search_server.conf
后面的-c是server的配置文件。
执行client:
./search_tool_main -f PHXEcho -s "hello"
这个search_tool_main是封装了client的可执行文件,上面的-f代表需要调用server中的哪个函数,-s代表这个函数需要什么参数。
如果需要使用方法,直接执行:
./search_tool_main
会有usage的提示。
5.为了方便源码的查看和单步断点调试,本人整理成了QtCreator工程,请下载:
https://download.csdn.net/download/libaineu2004/10854976
注意,里面的工程文件.pro有误,修正为:
INCLUDEPATH += \
../
# ../../phxrpc
---
参考文献:
https://blog.csdn.net/shanshanpt/article/details/55213287