美文网首页Distributed transaction
高性能分布式RPC框架Zerorpc

高性能分布式RPC框架Zerorpc

作者: Odven | 来源:发表于2020-09-16 17:21 被阅读0次

    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

        本文链接:https://www.haomeiwen.com/subject/oarhyktx.html