雲端計算開發-RPC應用
RPC概念
1. 概念
RPC是系統間的一種通訊方式,就是從一臺機器上通過引數傳遞的方式呼叫另一臺機器上的一個函式或方法並得到返回的結果。
2. 原因
無法在一個程式內,甚至一個計算機內通過本地呼叫的方式完成的需求,比如不同的系統間的通訊,甚至不同的組織間的通訊。由於計算能力需要橫向擴充套件,需要在多臺機器組成的叢集上部署應用
RPC框架
- thrift,Finagle,dubbo,grpc,json-rpc等
RPC框架應該具備的特點
- 具有服務的分層設計,借鑑Future/Service/Filter概念
- 具有網路的分層設計,區分協議層、資料層、傳輸層、連線層
- 獨立的可適配的codec層,可以靈活增加HTTP,Memcache,Redis,MySQL/JDBC,Thrift等協議的支援。
- 將多年各種遠端呼叫的經驗融入在實現中,如負載均衡,failover,多副本策略,開關降級等。
- 通用的遠端呼叫實現,採用非同步方式來減少業務服務的開銷,並通過future分離遠端呼叫與資料流程的關注。
- 具有狀態檢視及使用統計功能
- 具備通用的遠端容錯處理能力,如超時、重試、負載均衡、failover等
RPC呼叫流程
- 服務消費者(Client 客戶端)通過本地呼叫的方式呼叫服務
- 客戶端存根(Client Stub)接收到呼叫請求後負責將方法、入參等資訊序列化(組裝)成能夠進行網路傳輸的訊息體
- 客戶端存根(Client Stub)找到遠端的服務地址,並且將訊息通過網路傳送給服務端
- 服務端存根(Server Stub)收到訊息後進行解碼(反序列化操作)
- 服務端存根(Server Stub)根據解碼結果呼叫本地的服務進行相關處理
- 服務端(Server)本地服務業務處理
- 處理結果返回給服務端存根(Server Stub)
- 服務端存根(Server Stub)序列化結果
- 服務端存根(Server Stub)將結果通過網路傳送至消費方
- 客戶端存根(Client Stub)接收到訊息,並進行解碼(反序列化)
- 服務消費方得到最終結果
Python3呼叫RPC簡單應用
- [server端]
#] server.py
from xmlrpc.server import SimpleXMLRPCServer
def fun_add(a, b):
totle = a + b
return totle
if __name__ == '__main__':
s = SimpleXMLRPCServer(('0.0.0.0', 8088)) # 開啟xmlrpcserver
s.register_function(fun_add) # 註冊函式fun_add
print("server is online...")
s.serve_forever() # 開啟迴圈等待
#] python server.py
server is online... [掛起,等待連線]
-
- [client端]
]# client.py
from xmlrpc.client import ServerProxy
s = ServerProxy("http://192.168.89.134:8088") #定義xmlrpc客戶端
print(s.fun_add(2,3))
]# python client.py
5
- Python3呼叫RPC多執行緒訪問
1. 客戶端不用更改,只需動用服務端即可實現多客戶端訪問呼叫
2. server.py
from xmlrpc.server import SimpleXMLRPCServer
from socketserver import ThreadingMixIn
class ThreadXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):
pass
def fun_add(a, b):
totle = a + b
return totle
def fun_delf(a, b):
result = a - b
return result
if __name__ == '__main__':
s = SimpleXMLRPCServer(('0.0.0.0', 8088)) # 開啟xmlrpcserver
s.register_function(fun_add, "add") # 註冊函式1
s.register_function(fun_delf, "delf") # 註冊函式2
print("server is online...")
s.serve_forever() # 開啟迴圈等待
3. client.py
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.client import ServerProxy
s = ServerProxy("http://192.168.89.134:8088") #定義xmlrpc客戶端
print(s.add(2,3))
print(s.delf(2,3))
相關文章
- 雲端計算教程開發知識,學雲端計算有什麼用?
- 雲端計算有什麼用?雲端計算的應用領域有多大?
- 雲端計算開發教程,雲端計算能幹什麼?
- 雲端計算演進與應用
- 雲端計算應用現狀及需求
- 雲端計算開發學習教程,簡單介紹雲端計算
- 雲端計算開發的貢獻有哪些?雲端計算開發的功能你想不到
- 搭建雲端計算開發框架(轉)框架
- 雲端計算開發與人工智慧的關係,雲端計算開發主宰物聯網人工智慧
- 邊緣雲端計算典型應用場景
- 雲端計算導論 # 1 雲端計算概述:起源、概念、發展現狀、商業模式、架構與應用模式架構
- 雲端計算開發要學習什麼知識?雲端計算開發哪個方向更有前途?
- RabbitMQ訊息佇列(七):適用於雲端計算叢集的遠端呼叫(RPC)MQ佇列RPC
- 雲端計算開發課程,雲端計算的工作累不累什麼體驗?
- 雲端計算開發是什麼?雲端計算的就業前途怎麼樣?就業
- 雲端計算素材、課件:雲端計算可以做什麼用?
- 雲端計算開源產業聯盟:2019年雲端計算與邊緣計算協同九大應用場景(附下載)產業
- 零基礎如何學習雲端計算?雲端計算開發課程詳解
- 雲端計算開發學習教程,雲端計算基礎架構實現講解架構
- 雲端計算開發技術,雲端計算改變企業的四種途徑
- 函式計算-HelloWorld應用開發函式
- 雲端計算應該學些什麼?Linux雲端計算要學多久Linux
- 雲端計算環境下的BGP協議應用協議
- 雲端計算培訓學院,雲端計算Python自動化運維開發實戰Python運維
- 雲端計算都有哪些特點?展望雲端計算的發展前景
- 雲端計算開發分析:2019年雲端計算行業將有那些趨勢或者變化行業
- 雲端計算 - 內容分發網路CDN技術與應用全解
- Linux雲端計算有哪些應用範圍?Linux運維Linux運維
- 雲端計算基礎學習,雲端計算的八大運用分析
- 2020年雲端計算標準和應用大會, 杉巖喜獲年度雲端計算卓越產品獎
- 雲端計算實現物聯網的核心,雲端計算應該怎麼學?
- 雲端計算學習路線教程大綱課件:雲端計算開發程式設計條件結構程式設計
- 雲端計算和雲服務是一樣的嗎?計算機linux運維開發計算機Linux運維
- 雲端計算開發教程:Python運算子與表示式Python
- 雲端計算技術在家庭辦公環境的應用
- 雲端計算是什麼意思?新手怎麼學雲端計算開發入門課程
- 【雲端計算小知識】什麼是雲端計算?雲端計算特點是什麼?
- 什麼叫雲端計算?雲端計算通俗解釋