Qt应用之关于RPC的那点儿理解,说得通透点吧

最近写分布式应用,无可避免地需要用到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);
}

使用protoc编译’echo_service.proto’,生成接口文件’echo_service.pb.h’和’echo_service.pb.cc’。
Client支持同步和异步两种调用方式:
同步调用时,调用线程会被阻塞,直到收到回复或者超时;
异步调用时,调用线程不会被阻塞,收到回复或者超时会调用用户提供的回调函数;

你可能感兴趣的:(QT,linux开发,C++开发)