使用python的thriftpy2模块来实现一个简单的rpc
rpc
RPC,这是远程功能调用,就是我们原来是一个整体的项目,现在需要拆分为一个个服务。RPC框架就是编程人员在同一台机器的不同进程之间,或者同的机器之间,进行远程调用代码的工具。这样我们就不用去管底层的具体实现,只需要搞好我们原来的业务逻辑处理。
实现一个rpc流程:
我们需要定义thrift文件,来描述服务接口
定义客户端代码
定义服务端代码
先开启服务,就可以执行客户端
如果需要同时提供多个服务,就需要建立多个.thrift文件来实现
rpc举例:
pingpong.thrift
service PingPong {
string ping(),
}
server.py
import thriftpy2
pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")
from thriftpy2.rpc import make_server
class Dispatcher(object):
def ping(self):
return "pong"
server = make_server(pingpong_thrift.PingPong, Dispatcher(), '127.0.0.1', 6000)
server.serve()
client.py
import thriftpy2
pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")
from thriftpy2.rpc import make_client
client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
print(client.ping())
各个文件的功能是什么?
thrift文件通过一种中立的方式描述了服务器和客户端之间通信的接口(Thriftpy创建服务器和客户端都需要对该文件进行解析),使得使用不同语言的客户端和服务器之间可以进行透明的通信
服务端:
thriftpy2构建服务端
1.调用thriftpy.load方法对thrift文件进行解析,在内存中构建对应的module
2.调用make_server将构建的module和完成具体业务功能的class绑定,同时完成传输层和协议层的设置,生成thrift服务器端
3.调用server.serve方法启动服务器
客户端:
thriftpy2构建客户端接口
1.调用thriftpy.load方法对thrift文件进行解析,在内存中构建对应的module
2.调用make_client绑定上一步构建的module,同时完成传输层和协议层的设置,生成Thirft客户端
3.根据生成的客户端调用响应的接口
文笔太差,建议一定要看参考文档。
参考文档:
https://www.jianshu.com/p/2accc2840a1b
https://www.jianshu.com/p/7d6853140e13
https://www.cnblogs.com/hongtrands/p/11148840.html
https://blog.csdn.net/yzj225/article/details/76855991