最近写分布式应用,无可避免地需要用到rpc调用,看到网上一大片的大堆大堆文字,心生敬畏了。
可是当我看到百度的sofa-rpc的时候,拿来用了一下。立马就发现,亲,这不就是dbus的网络版吗?当然了,很多同学没有用过dbus服务,自己去试试Qt里面的dbus应用吧。很好理解的。
百度sofa-rpc也是谷歌的grpc的产物,当然了还有很多其他的rpc框架。不过只要你明白dbus,rpc也就好理解了。
rpc里面的proto文件就类似于dbus中的xml文件,实际上一个样的。
sofa-rpc的使用
百度写得挺好的,三部曲,一个proto文件,编译生成cc和hh文件,然后定义服务端和客户端。
定义协议只需要编写一个proto文件即可。
范例:echo_service.proto
package sofa.pbrpc.test;
option cc_generic_services = true;
// 定义请求消息
message EchoRequest {
required string message = 1;
}
// 定义回应消息
message EchoResponse {
required string message = 1;
}
// 定义RPC服务,可包含多个方法(这里只列出一个)
service EchoServer {
rpc Echo(EchoRequest) returns(EchoResponse);
}
</