RPC

1.什么是RPC

RPC 就是为解决服务之间信息交互而发明和存在的。

RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。

在服务器端,进程保持睡眠状态直到调用信息到达为止。

当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息

然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

RPC就是一种远程调用函数接口的方式,说白了,就是一种远程调用函数接口的方式,客户端和服务端之间约定一种契约(函数接口),然后服务端一直等待客户端的调用。

有点像平常的WEB网络请求。

一种用途是在多台服务器之间互相进行调用。

另一个用途则在于,不同编程语言之间都支持这种方式,像Python更是内置对其的支持,不需要额外安装什么库,所以可以直接在多语言的服务器之间互相进行调用。

Socket编程就是RPC通信

2.xmlrp库

简单的服务端

像web请求一样,我们需要确定供客户端访问的url和端口号,以及供客户端调用的方法实现,最后要让我们服务器一直处于等待被访问的状态:

rpc_server.py

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() # 保持等待调用状态

rpc_client.py

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 -

python rpc_python与RPC服务相关推荐

  1. 深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务

    RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要 ...

  2. 基于 Python 自建分布式高并发 RPC 服务

    RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要 ...

  3. golang python rpc_grpc - 使用 golang 带你从头撸一套 RPC 服务(一)

    gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求等特.这些特性使得其在移动设备上表现更好,更省电和节省 ...

  4. go 简单的RPC服务与客户端通讯

    2019独角兽企业重金招聘Python工程师标准>>> // 服务器代码 package main// rpc 服务 import ("net/rpc"" ...

  5. 视频教程-RPC服务框架(Dubbo)源码分析-Java

    RPC服务框架(Dubbo)源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大 ...

  6. 【LINUX】——linux如何使用Python创建一个web服务

    问:linux如何使用Python创建一个web服务? 答:一句话,Python! 一句代码: /usr/local/bin/python -m SimpleHTTPServer 8686 > ...

  7. 通过python建立一个web服务查看服务器上的文本、图片、视频等文件

    通过python建立一个web服务查看服务器上的文本.图片.视频等文件 文章目录: 1 在服务器端开启一个服务 2 在本地浏览器中输入服务器的ip地址 1 在服务器端开启一个服务 python -m ...

  8. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  9. python写linux脚本_Linux下设置python脚本文件为服务

    (最简单的方式nohup python xxx.py) ------------------------------------------------------------------------ ...

最新文章

  1. pandas数据清洗
  2. [计算机网络 谢希仁] 第一章
  3. java text 格式化_java.text.DecimalFormat类十进制格式化
  4. 1. ReactJS基础(开发环境搭建)
  5. linux中人脸识别不了,虹软人脸识别在 linux中so文件加载不到的问题
  6. vc的UI编程PngTextButton控件的适用情况
  7. java runnable 使用_java – 在哪里使用可调用以及在哪里使用Runnable接口?
  8. Python接口自动化测试系列文章汇总
  9. 更适合智能家庭使用的新 Wi-Fi 技术问世了
  10. Service层抽象规范
  11. Hibernate 中Property中的formula属性的使用
  12. hbase 伪分布安装 java_HBase伪分布搭建
  13. 人口logistic模型公式_人口指数增长模型和Logistic模型
  14. GStreamer的Decodebin插件
  15. 已知基因名,如何在genbank中查询基因序列?
  16. 设计思维的定义与一些步骤
  17. Cadence用于版图设计时芯片logo的制作
  18. oracle按顺序新增字段,Oracle 修改字段顺序的两种方法
  19. 用微软的云计算来远程管理自己的电脑
  20. Python:实现currency converter货币换算算法(附完整源码)

热门文章

  1. Android分享-微信、Facebook、Google
  2. Redis系列五:redis键管理和redis数据库管理
  3. Echart图表入门
  4. hdu 4771 Stealing Harry Potter#39;s Precious(bfs)
  5. 点击编辑的时候如何绑定DropDownList
  6. POJ 3414 Pots【广搜】
  7. 人生抉择之-创业记录片(一)
  8. SD-WAN成本节省取决于基础WAN技术
  9. 蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解
  10. c#listView