高性能分布式RPC框架Zerorpc

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

你可能感兴趣的:(高性能分布式RPC框架Zerorpc)