精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊Python用rpc實現分布式系統調用的那些事

開發 后端 前端 分布式
對于rpc的應用,更加的傾向于基本資源的獲取和調用,畢竟單純的用socket或者是mq,你在程序里面還要做一個解析過來的數據,然后根據過來的數據在做調用。

通俗的講rpc是什么?

rpc 一般俗稱,遠程過程調用,把本地的函數,放到遠端去調用。

通常我們調用一個方法,譬如: sumadd(10, 20),sumadd方法的具體實現要么是用戶自己定義,要么存在于該語言的庫函數中,也就說在sumadd方法的代碼實現在本地,它是一個本地調用!

“遠程調用”意思就是:被調用方法的具體實現不在程序運行本地,而是在別的某個地方(分布到各個服務器),但是用起來像是在本地。

rpc遠程調用原理 :

比如 A調用B提供的remoteAdd方法:

首先A與B之間建立一個TCP連接;

然后A把需要調用的方法名(這里是remoteAdd)以及方法參數(10, 20)序列化成字節流發送出去;

B接受A發送過來的字節流,然后反序列化得到目標方法名,方法參數,接著執行相應的方法調用(可能是localAdd)并把結果30返回;

A接受遠程調用結果,然后do()。

RPC框架也就是把上線說的具體的細節封裝起來,給用戶好用的API使用(提示:有些遠程調用選擇比較底層的socket協議,有些遠程調用選擇比較上層的HTTP協議);

一般rpc配合http協議的多點,也就是走http的多。 當然還是看應用,我曾經一共的rpc框架是基于zeromq的zerorpc。速度是挺快,server和client都有python的gevent支持,速度沒道理慢。(有興趣的,可以看看有關zerorpc的文章 http://rfyiamcool.blog.51cto.com/1030776/1254000 )最少要比python本身的xml-rpc要快。 rpc over http(基于http的rpc)有兩種協議,一種是xml-rpc ,還有一個是 json-rpc。

XML-RPC:XML Remote Procedure Call,即XML遠程方法調用,利用http+xml封裝進行RPC調用。基于http協議傳輸、XML作為信息編碼格式。一個xml-rpc消息就是一個請求體為xml的http-post請求,服務端執行后也以xml格式編碼返回。這個標準面前已經演變為下面的SOAP協議。可以理解SOAP是XML-RPC的高級版本。

JSON-RPC:JSON Remote Procedure Call,即JSON遠程方法調用 。類似于XML-RPC,不同之處是使用JSON作為信息交換格式

下面是一個例子,很簡單。我們是用python的rpc庫SimpleXMLRPCServer 做的測試,創建rpc server,然后注冊一些函數,供應別的客戶端去調用。

  1. from SimpleXMLRPCServer import SimpleXMLRPCServer   
  2. 原文:xiaorui.cc   
  3. def add(x,y):   
  4.     return x+y   
  5.     
  6. def subtract(x, y):   
  7.     return x-y   
  8.     
  9. def multiply(x, y):   
  10.     return x*y   
  11.     
  12. def divide(x, y):   
  13.     return x/y  
  14.     
  15. # A simple server with simple arithmetic functions   
  16. server = SimpleXMLRPCServer(("localhost"8000))   
  17. print "Listening on port 8000..." 
  18. server.register_multicall_functions()   
  19. server.register_function(add, 'add')   
  20. server.register_function(subtract, 'subtract')   
  21. server.register_function(multiply, 'multiply')   
  22. server.register_function(divide, 'divide')   
  23. server.serve_forever() 
  1. import xmlrpclib   
  2.     
  3. proxy = xmlrpclib.ServerProxy("http://localhost:8000/")   
  4. multicall = xmlrpclib.MultiCall(proxy)   
  5. multicall.add(7,3)   
  6. multicall.subtract(7,3)   
  7. multicall.multiply(7,3)   
  8. multicall.divide(7,3)   
  9. result = multicall()   
  10.     
  11. print "7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d" % tuple(result) 

rpc本來是單任務的,如果任務相對頻繁,可以設置成多線程的默認,你不用在調用threading模塊什么的,直接引用 。

  1. class AsyncXMLRPCServer(SocketServer.ThreadingMixIn,SimpleXMLRPCServer): pass 

然后rpc初始化的方法換成。

  1. server = AsyncXMLRPCServer((''1111), SimpleXMLRPCRequestHandler) 

這里再說下,和xmlrpc相似的jsonrpc,貌似現在用xmlrpc的,要比jsonrpc的多點。 有時候到國外的it論壇看帖子,xmlrpc用的交多點。其實現在較大的公司,一般干脆直接自己實現了rpc框架,像淘寶Dubbo(朋友有搞過,搞了半天,沒有對接成接口,說是有難度,不明覺厲!),百度的xxx(忘名字了)。

  1. import jsonrpc   
  2. server = jsonrpc.Server(jsonrpc.JsonRpc20(), jsonrpc.TransportTcpIp(addr=("127.0.0.1"31415), logfunc=jsonrpc.log_file("myrpc.log")))   
  3. #原文:xiaorui.cc   
  4. # 注冊一個函數方法   
  5. def echo(s):   
  6.     return s   
  7.     
  8. def search(number=None, last_name=None, first_name=None):   
  9.     sql_where = []   
  10.     sql_vars  = []   
  11.     if number is not None:   
  12.         sql_where.append("number=%s")   
  13.         sql_vars.append(number)   
  14.     if last_name is not None:   
  15.         sql_where.append("last_name=%s")   
  16.         sql_vars.append(last_name)   
  17.     if first_name is not None:   
  18.         sql_where.append("first_name=%s")   
  19.         sql_vars.append(first_name)   
  20.     sql_query = "SELECT id, last_name, first_name, number FROM mytable" 
  21.     if sql_where:   
  22.         sql_query += " WHERE" + " AND ".join(sql_where)   
  23.     cursor = ...   
  24.     cursor.execute(sql_query, *sql_vars)   
  25.     return cursor.fetchall()   
  26.     
  27. server.register_function( echo )   
  28. server.register_function( search )   
  29.     
  30. # start server   
  31. server.serve() 
  1. # 創建jsonrpc客戶端   
  2. import jsonrpc   
  3. server = jsonrpc.ServerProxy(jsonrpc.JsonRpc20(), jsonrpc.TransportTcpIp(addr=("127.0.0.1"31415)))   
  4.     
  5. #調用遠端的一個函數   
  6. result = server.echo("hello world")   
  7.     
  8. found = server.search(last_name='Python')  

我做過一些個壓力的測試,XMLRPCSERVER的開了async之后,每個連接特意堵塞5秒,他的并發在40個左右 。也就是每秒成功40個左右,剩下的還是在堵塞等待中。 其實他的瓶頸不是在于rpc的本身,是承載rpc的那個basehttpserver,太弱爆了。

wKiom1PIg-qhOXPZAAH7nZDKUJM508.jpg
 

接收請求,調用方法 !

wKioL1PIilzjVjTxAAX07GYu-No166.jpg
 

 現在開源社區這么發達,有不少人都根據rpc的協議,重寫了承載rpc的web服務。  比如用flask,tornado,配合uwsgi,你猜咋招了。。。。如果不堵塞連接,那還可以,如果堵塞連接,uwsgi的廢材特色就顯出來了,以前有文章說過,uwsgi是prework,他會預先啟動進程,官方都推薦要根據你的cpu核數或者超線程來開啟進程,如果開的太多,你會發現,uwsgi他是駕馭不了那么多進程的。還是看我大tornado,用了@gen.engine之后。輕易飆到500的并發連接。 

(以上是我的吃飽又蛋疼測試,沒聽過誰會重復調用那么多的堵塞方法,自評 sx行為) 

不多說了,看flask實現xmlrpc服務端的代碼,看了下flask xmlrpc的源碼,實現的不難。

  1. from flask import Flask   
  2. from flaskext.xmlrpc import XMLRPCHandler, Fault   
  3.     
  4. app = Flask(__name__)   
  5.     
  6. handler = XMLRPCHandler('api')   
  7. handler.connect(app, '/api' 
  8.     
  9. @handler.register   
  10. def woca(name="world"):   
  11.     if not name:   
  12.         raise Fault("fuck...fuck""fuck shencan!")   
  13.     return "Hello, %s!" % name   
  14. 原文:xiaorui.cc   
  15. app.run() 

對于每個連接的超時,有多種的方法,如果你用的是flask,tornado做web server,那就寫個裝飾器single起來,只是性能不好。 或者是前面掛一個nginx,然后做個client_header_timeout,client_body_timeout,proxy_connect_timeout(你懂的。),如果用的python自帶的xml-rpc的話,需要引入socket。

  1. import socket   
  2. socket.setdefaulttimeout() 

再說下rpc安全的問題。

至于安全方面,有興趣就開個ssl,或者是在程序里面判斷下client ip,反正配置都是統一下發的,你重載daemon的時候,也就知道該判斷什么ip了。

我個人對于rpc的應用,更加的傾向于基本資源的獲取和調用,畢竟單純的用socket或者是mq,你在程序里面還要做一個解析過來的數據,然后根據過來的數據在做調用。 (alert: 我想觸發 add() ,如果是rpc的話,我不用管,只是傳過去就行了,到那時mq和socket就需要eval調用函數了),一些復雜的應用還是喜歡用面向資源的rest,也推薦大家用這個,靠譜的。

博文地址:http://rfyiamcool.blog.51cto.com/1030776/1439824

責任編輯:林師授 來源: 51CTO
相關推薦

2021-07-09 05:49:53

分布式代碼算法

2021-12-09 10:45:19

分布式事務框架

2022-04-08 08:27:08

分布式鎖系統

2017-12-20 16:15:30

分布式系統架構

2023-02-10 00:04:53

2023-05-29 14:07:00

Zuul網關系統

2018-01-23 15:55:23

分布式系統架構

2021-12-15 10:00:21

分布式事務框架

2024-07-05 08:26:54

2015-11-10 17:45:00

分布式系統設計開源模塊

2018-04-03 09:27:42

分布式架構系統

2023-11-29 10:26:52

分布式數據

2021-02-01 09:35:53

關系型數據庫模型

2022-06-13 10:01:36

Apollo攜程框架

2025-03-06 11:30:15

2023-05-12 08:23:03

分布式系統網絡

2018-06-11 11:12:09

秒殺限流分布式

2018-06-19 09:35:51

分布式系統限流

2024-05-31 08:45:24

2017-05-10 08:59:18

分布式系統承載量
點贊
收藏

51CTO技術棧公眾號

五月婷婷中文字幕| 成人区人妻精品一区二| 日本网站在线免费观看视频| 黑人巨大精品欧美黑白配亚洲| 久久综合色影院| 又黄又爽的网站| 精品69视频一区二区三区| 亚洲一区在线播放| 日韩欧美精品在线不卡| 国产福利第一视频| 天堂久久久久va久久久久| 久久精品一区中文字幕| 亚洲乱码国产乱码精品精大量 | 九九精品在线播放| 人妻大战黑人白浆狂泄| 亚洲欧美日本国产| 欧美日韩三级一区二区| 成人黄色av片| 97caopron在线视频| 国产亚洲欧洲一区高清在线观看| 91久久中文字幕| 精品无码一区二区三区的天堂| 午夜精品久久| 深夜成人在线观看| 五级黄高潮片90分钟视频| 视频一区视频二区欧美| 欧美日精品一区视频| 国产高清精品在线观看| 污污网站在线看| 亚洲欧洲韩国日本视频| 欧美一区亚洲二区| 亚洲精品一区二区三区四区| 久久国产成人午夜av影院| 日本精品久久久久久久| 动漫精品一区一码二码三码四码| 天天综合一区| 中文亚洲视频在线| 天天干天天舔天天操| 五月天亚洲一区| 亚洲精品国产精品国产自| 亚欧美一区二区三区| 九七电影院97理论片久久tvb| 欧美午夜片在线免费观看| 国产精品videossex国产高清 | 精品国产伦一区二区三| 麻豆极品一区二区三区| 国产精品久久久久不卡| 国产成人无码精品| 亚洲精品美女| 亚州精品天堂中文字幕| 久久久无码一区二区三区| 欧美69视频| 欧美成人网在线| 玖玖爱这里只有精品| 99久久99热这里只有精品| 色妞久久福利网| www.99re6| 91一区在线| 久久综合亚洲社区| 欧美日韩免费做爰视频| 欧美先锋影音| 性欧美在线看片a免费观看| 亚洲一区 视频| 亚洲免费精品| 欧美在线亚洲在线| 国语对白永久免费| 日本成人超碰在线观看| 国产日韩欧美影视| 成人高潮片免费视频| 成人激情午夜影院| 免费成人看片网址| 国产精品视频一区二区久久| 国产精品麻豆久久久| 欧美日韩午夜爽爽| 人人草在线视频| 日本道在线观看一区二区| 污污的网站18| 视频精品一区| 亚洲欧洲av一区二区| 刘亦菲国产毛片bd| 国产精品v亚洲精品v日韩精品| 国语自产在线不卡| 亚洲国产成人精品女人久久| 久88久久88久久久| 国产v亚洲v天堂无码| 久久精品国产亚洲a∨麻豆| 中文字幕在线观看一区| 人人妻人人澡人人爽欧美一区| 九色porny丨首页入口在线| 色婷婷亚洲精品| www.成人黄色| 日本天堂一区| www亚洲精品| 久久草视频在线| 蜜桃传媒麻豆第一区在线观看| 91精品久久久久久蜜桃| 日韩在线免费播放| 亚洲日本青草视频在线怡红院| heyzo亚洲| 亚洲福利影视| 亚洲美女黄色片| 国产盗摄x88av| 免费的国产精品| 国外成人免费视频| 黄色网页在线免费看| 欧美日韩视频在线| 天天操天天干天天做| 国产欧美一区二区三区米奇| 日韩中文在线视频| 国偷自拍第113页| 国产精品一区久久久久| 日产国产精品精品a∨| 国内在线视频| 777精品伊人久久久久大香线蕉| 大地资源二中文在线影视观看| 亚洲精品中文字幕乱码| 热久久这里只有精品| 亚洲成人黄色片| 国产精品久久久久久久久动漫| 亚洲 高清 成人 动漫| 国产一区二区三区精品在线观看| 国产一级揄自揄精品视频| 国产一级免费av| 国产一区在线看| 亚洲 国产 日韩 综合一区| 九九色在线视频| 制服.丝袜.亚洲.另类.中文 | 中文字幕一区二区三| 亚洲中文字幕无码不卡电影| 成人搞黄视频| 欧美国产日本高清在线 | 国产稀缺真实呦乱在线| 国产精品一卡二| 日本女人高潮视频| 国产情侣一区二区三区| 亚洲视频在线免费看| 九九九在线观看| 91色综合久久久久婷婷| 性欧美大战久久久久久久| 无人区乱码一区二区三区| 久久国产一区二区三区| 在线观看av大片| 国产精品乱子久久久久| 91热这里只有精品| 成人高清电影网站| 国产精品69av| av在线电影院| 欧美在线制服丝袜| 91大神福利视频| 韩国欧美国产一区| 特色特色大片在线| 日韩欧美高清一区二区三区| 欧美成人一区二区三区电影| 99热这里精品| 亚洲一区二区三区视频在线播放| 日本少妇xxxx软件| 影音先锋中文字幕一区| 久久riav二区三区| 欧美电影免费观看| 中文字幕精品一区久久久久| 在线免费观看一区二区| 亚洲情趣在线观看| 风韵丰满熟妇啪啪区老熟熟女| 亚洲成人资源| 欧美精品尤物在线| 国产精品亚洲d| www国产精品com| www.激情五月.com| 激情成人在线视频| 国产精品传媒入口麻豆| 精品视频一区在线| xxxxxx欧美| 在线播放国产精品| 国产精品国产一区二区三区四区| 亚洲欧美另类小说| 在线观看免费视频国产| 美女国产精品| 最新视频 - x88av| 黄色欧美在线| 国产精品久久久一区| а√天堂资源地址在线下载| 精品国产一区a| 在线免费观看av网址| 综合久久一区二区三区| 在线观看免费视频黄| 石原莉奈一区二区三区在线观看| 中文字幕在线亚洲精品| 草草视频在线一区二区| 国产精品wwww| 日本在线视频www鲁啊鲁| 精品视频www| 国产精品美女一区| 精品久久久久久中文字幕| 免费成人深夜天涯网站| 国产91在线|亚洲| 激情视频综合网| 午夜日韩视频| 亚洲高清资源综合久久精品| aaa国产精品| 国产精品视频久久久| 羞羞的视频在线看| 亚洲性日韩精品一区二区| 好吊视频一二三区| 欧美日韩国产中文| 中日韩黄色大片| 一区av在线播放| 正在播放国产对白害羞| 99久久精品免费| 天堂网成人在线| 美腿丝袜亚洲三区| 黄色a级片免费| 精久久久久久| 午夜啪啪福利视频| 欧美色爱综合| 欧美高清性xxxxhd| 国偷自产视频一区二区久| 国产日韩在线亚洲字幕中文| 国产精品伦理| 国语自产偷拍精品视频偷 | 日本成年人网址| 激情久久久久久久| 在线一区亚洲| 日本不卡高清| 欧美午夜精品久久久久久蜜| 久久亚洲道色| 国产高清在线一区二区| 97久久中文字幕| 国产精品一区专区欧美日韩| 成人福利av| 欧美一级免费视频| 岛国在线视频网站| 欧美大片欧美激情性色a∨久久| 日本成人网址| 日韩中文字在线| 午夜视频成人| 精品国产拍在线观看| 婷婷激情在线| 北条麻妃99精品青青久久| 粉嫩av一区| 亚洲视频自拍偷拍| 国产色在线 com| 国产性色av一区二区| 香蕉视频成人在线| 日韩电影在线观看中文字幕| 天天干,夜夜爽| 亚洲第一偷拍网| 香蕉av在线播放| 国产丝袜视频一区| 国产女主播在线直播| 国产亚洲精品一区二区| a视频网址在线观看| 在线亚洲男人天堂| 国产黄a三级三级三级av在线看 | 欧美日韩亚洲在线| 伊人久久大香线蕉综合网蜜芽 | 久久久久亚洲AV成人网人人小说| 国产成人av电影在线观看| 91成人在线观看喷潮蘑菇| 本田岬高潮一区二区三区| 国模私拍在线观看| 99久久国产综合精品女不卡| 麻豆av免费观看| 国产精品国产精品国产专区不蜜| 成人信息集中地| 一区二区三区在线不卡| 日本三级视频在线| 日本久久电影网| 亚洲最大成人av| 欧美va亚洲va香蕉在线| 无码h黄肉3d动漫在线观看| 亚洲美女自拍视频| 在线视频1区2区| 欧美大尺度激情区在线播放| 3344国产永久在线观看视频| 国产999精品久久久| 久久久加勒比| 国产99在线免费| 精品国产欧美日韩| 欧美少妇在线观看| 亚洲神马久久| 欧美特黄aaa| 成人三级伦理片| 日韩免费成人av| 亚洲丶国产丶欧美一区二区三区| 黄色在线视频网址| 91精品国产欧美一区二区18| 污污网站在线免费观看| 日韩中文字幕国产| 超碰91在线观看| 国产精品美乳在线观看| www.成人网| 亚洲成人第一| aa亚洲婷婷| 91 视频免费观看| www.日韩精品| 麻豆视频在线免费看| 一本大道综合伊人精品热热| 国产丰满果冻videossex| 国产视频精品xxxx| yellow91字幕网在线| 欧美在线观看日本一区| 欧美片网站免费| 日韩精品大片| 亚洲久久一区二区| 五月天国产视频| 国产精品视频麻豆| 久草国产精品视频| 日韩一区二区免费高清| 东热在线免费视频| 午夜精品视频在线| 日本一区二区三区播放| 视频一区视频二区视频三区高 | 国产精品久久久毛片| 99精品视频在线观看| 男女羞羞免费视频| 欧美日韩电影在线播放| 每日更新在线观看av| 97在线视频免费播放| 日韩精品视频一区二区三区| 亚洲综合第一| 久久婷婷亚洲| av无码av天天av天天爽| 亚洲国产精品影院| 国产浮力第一页| 久久成年人视频| 伊人久久大香伊蕉在人线观看热v| 欧美午夜精品理论片a级大开眼界| 亚洲视频日本| 无码人妻aⅴ一区二区三区玉蒲团| 亚洲视频网在线直播| 亚洲中文一区二区三区| 国产一区二区精品丝袜| 日韩高清成人| 日韩国产精品一区二区三区| 久久精品中文| 亚洲人成人无码网www国产| 日韩欧美国产成人| 青青青手机在线视频观看| 91av视频在线免费观看| 欧美韩一区二区| 免费国产黄色网址| 99久久久精品| 日韩伦理在线视频| 亚洲精品久久久久久久久久久久| 不卡视频观看| 国内精品久久久久久久果冻传媒| 中文亚洲免费| 免费a级黄色片| 91成人在线精品| jyzzz在线观看视频| 国产日产欧美a一级在线| 先锋资源久久| 国产精品二区视频| 亚洲国产日韩精品| 午夜av免费观看| 日韩暖暖在线视频| 欧美一级本道电影免费专区| 99热手机在线| 亚洲精品日日夜夜| 五月天激情婷婷| 日本一欧美一欧美一亚洲视频| 狠狠色丁香婷婷综合影院| 免费看国产黄色片| 亚洲免费色视频| 天天摸天天碰天天爽天天弄| 日本高清视频一区| 欧美日韩在线观看视频小说| 91亚洲精品久久久蜜桃借种| 一区二区三区精品视频| 午夜福利视频一区二区| 国产精品xxx视频| 91tv精品福利国产在线观看| www.555国产精品免费| 欧美日韩中文字幕日韩欧美| av男人的天堂在线| 亚洲一区美女视频在线观看免费| 影院欧美亚洲| 欧美福利在线视频| 亚洲精品一线二线三线| 少妇一区视频| 超碰超碰超碰超碰超碰| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲精品一区二区二区| 欧美日本啪啪无遮挡网站| 台湾佬综合网| 天天久久综合网| 色美美综合视频| 欧美黄色视屏| 午夜精品一区二区三区在线观看| 国产精品综合二区| 怡红院av久久久久久久| 欧美精品在线免费| 欧美日韩123| 91超薄肉色丝袜交足高跟凉鞋| 欧美色图片你懂的| 999av小视频在线| 热这里只有精品| 久久久精品tv| 色哟哟中文字幕| 91成人免费看|