RPC的简单实现(Python)

Posted 划水舟济人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC的简单实现(Python)相关的知识,希望对你有一定的参考价值。

Simple RPC Experiment

RPC(Remote Procedure Call),远程过程调用,简单的说是指某一个node请求另一个node为其工作并反馈的机制

上周分布式老师讲解了RPC的模式,其基于S/C(Server/Client)的方式进行通信,Client可以远程调用Server端的方法,其模式图如下:

实践体会

Python3

Twisted

我们此实验采取Python语言编写RPC程序,这是一个简单的小程序,用意是体会上述RPC的框架以及提高动手能力,首先我们先使用命令安装好Twisted包,以便我们接下来的实验

pip install Twisted

环境搭建好后,我这边使用PycharmIDEA来实验

对于Server端,我们需要定义:方法、监听器、注册实例。

from xmlrpc.server import SimpleXMLRPCServer  # 导入模块

s = SimpleXMLRPCServer(("localhost"6666))  # 设置服务端ip和端口


class Server:  # 定义类
    def _dispatch(self, method, param):  # 定义_dispatch方法
        print(method)  # 在服务端显示调用的方法名
        func = getattr(self, method)  # 调用接口
        return func(*param)

    def response(self):
        return 'Hello, Client~'

    def sub(self, a, b):
        return a - b


s.register_instance(Server())  # 注册类方法函数(让客户端发现)
s.serve_forever()  # 启动服务端

这样Server端就完成了最简单的服务设置,接下来就是Client端的服务设置

import xmlrpc.client    # 导入模块

s = xmlrpc.client.ServerProxy('http://localhost:6666')  # 链接服务端
print(s.response())   # 调用函数
print(s.sub(20201024))

由此,全部都设置好,我们先启动Server端的服务后就可以启动Client端的服务了,我们得到下面的输出

# client端的输出
Hello, Client~
996

#
 Server端的输出
response
127.0.0.1 - - [28/Oct/2020 15:29:55] "POST /RPC2 HTTP/1.1" 200 -
sub
127.0.0.1 - - [28/Oct/2020 15:29:55] "POST /RPC2 HTTP/1.1" 200 -

实验结果图

Server


Client


以上是关于RPC的简单实现(Python)的主要内容,如果未能解决你的问题,请参考以下文章

RPC ---- RPC入门了解 & 最简单的RPC的实现

RPC ---- RPC入门了解 & 最简单的RPC的实现

利用Hadoop提供的RPC API实现简单的RPC程序

Python实战之用内置模块来构建REST服务RPC服务

Python实战之用内置模块来构建REST服务RPC服务

Python实战之用内置模块来构建REST服务RPC服务