RPC 就是为解决服务之间信息交互而发明和存在的。python
RPC(Remote Procedure Call)——远程过程调用,它是一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。web
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。 首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,而后等待应答信息。 在服务器端,进程保持睡眠状态直到调用信息到达为止。 当一个调用信息到达,服务器得到进程参数,计算结果,发送答复信息 而后等待下一个调用信息,最后,客户端调用进程接收答复信息,得到进程结果,而后调用执行继续进行。
RPC就是一种远程调用函数接口的方式,说白了,就是一种远程调用函数接口的方式,客户端和服务端之间约定一种契约(函数接口),而后服务端一直等待客户端的调用。 有点像日常的WEB网络请求。 一种用途是在多台服务器之间互相进行调用。 另外一个用途则在于,不一样编程语言之间都支持这种方式,像Python更是内置对其的支持,不须要额外安装什么库,因此能够直接在多语言的服务器之间互相进行调用。 Socket编程就是RPC通讯
from xmlrpc.server import SimpleXMLRPCServer # 调用函数 def respon_string(str): return "get string:%s"%str if __name__ == '__main__': server = SimpleXMLRPCServer(('localhost', 8888)) # 初始化 server.register_function(respon_string, "get_string") # 注册get_string函数 print ("Listening for Client") server.serve_forever() # 保持等待调用状态
from xmlrpc.client import ServerProxy if __name__ == '__main__': server = ServerProxy("http://localhost:8888") # 初始化服务器 print (server.get_string("RPC RPC")) # 调用get_string函数并传参,调用get_string让服务端经过respon_string函数处理请求,并返回。
#服务端启动: [root@xujunk tmp]#python3 rpc_server.py Listening for Client #客户端启动: [root@xujunk tmp]#python3 rpc_client.py get string:RPC RPC #返回结果 #服务端接到请求: 127.0.0.1 - - [22/Sep/2019 00:12:03] "POST /RPC2 HTTP/1.1" 200 -