RPC说明:
a. RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。
b. RPC 最核心要解决的问题就是在分布式系统间,如何执行另外一个地址空间上的函数、方法,就仿佛在本地调用一样。
c. TCP 协议是 RPC 的 基石,一般来说通信是建立在 TCP 协议之上的,而且 RPC 往往需要可靠的通信,因此不采用 UDP.。
1. 安装
pip3 install zerorpc
2. 服务端
cat zerorpc_server.py
#!/usr/bin/env python3
# coding: utf-8
import time
import zerorpc
class caculate(object):
def hello(self, name):
return 'hello, {}'.format(name)
def add(self, x, y):
return x + y
def multiply(self, x, y):
return x * y
def subtract(self, x, y):
return abs(x-y)
def divide(self, x, y):
return x/y
class test1(object):
def print_msg(self, msg):
return msg
def format_print_msg(self, msg):
return "%s ---> %s" % (time.asctime(), msg)
class test2(object):
def display_timestamp(self):
return time.time()
class main(caculate,
test1,
test2):
def main(self):
return "main"
s = zerorpc.Server(main())
s.bind("tcp://0.0.0.0:4242")
print("run zerorpc...")
s.run()
3. 客户端
cat zerorpc_client.py
#!/usr/bin/env python3
# coding: utf-8
import zerorpc
c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")
def main():
result = c.add(2, 3)
print(result)
result = c.multiply(2, 3)
print(result)
result = c.subtract(2, 3)
print(result)
result = c.divide(2, 3)
print(result)
result = c.print_msg("hello world")
print(result)
result = c.format_print_msg("hello world")
print(result)
result = c.display_timestamp()
print(result)
if __name__ == '__main__':
main()
结果:
python3 zerorpc_client.py
5
6
1
0.6666666666666666
hello world
Wed Sep 16 17:20:08 2020 ---> hello world
1600248008.4201121
网友评论