01什么是RPC
RPC(Remote Procedure Call)遠程程序呼叫協議是一個用于建立適當框架的協議,從本質上講,它使一臺機器上的程式能夠呼叫另一臺機器上的子程式,而不會意識到它是遠程的,
RPC 是一種軟體通信協議,一個程式可以用來向位于網路上另一臺計算機的程式請求服務,而不必了解網路的細節,RPC 被用來像本地系統一樣呼叫遠程系統上的其他行程,程序呼叫有時也被稱為函式呼叫或子程式呼叫
02RPC框架RPC本身是一套協議規范,遵循這一套規范實作的框架比較流行的有以下幾個:
-
grpc框架
gRPC是由 google開發的一個高性能、通用的開源RPC框架,主要面向移動應用開發且基于HTTP/2協議標準而設計,同時支持大多數流行的編程語言,gRPC基于 HTTP/2協議傳輸
-
dubbo框架
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實作服務的輸出和輸入功能,可以和Spring框架無縫集成,
Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:
① 面向介面的遠程方法呼叫
② 智能容錯和負載均衡
③ 服務自動注冊和發現
-
thrift框架
Thrift是一種介面描述語言和二進制通訊協議,原由Facebook于2007年開發,2008年正式提交Apache基金會托管,成為Apache下的開源專案,
Thrift是一個RPC通訊框架,采用自定義的二進制通訊協議設計,相比于傳統的HTTP協議,效率更高,傳輸占用帶寬更小,另外,Thrift是跨語言的
-
Hetty 框架
Hetty 是一款構建于 Netty 和 Hessian 基礎上的高性能的 RPC 框架
Hessian 是一款基于 HTTP 協議的 RPC 框架,采用的是二進制 RPC 協議,非常輕量級 ,且速度較快,
Netty 是一款基于事件驅動的 NIO 框架,用以快速開發高性能、高可靠性的網路服務器和客戶端程式,Hetty 客戶端完全由 Hessian 實作,只是使用 Netty 重新實作了服務端
03基于grpc框架服務的介面測驗01創建一個grpc服務介面
注意在公司里你們的grpc服務可能并不是采用python去實作的,課上咱們為了測驗grpc的介面,使用python先創建grpc的服務介面,
-
安裝依賴庫

-
創建grpc介面協議檔案
在專案下創建一個grpc_study包,包下創建一個add.proto檔案,將下述內容復制進去

-
生成服務代碼
終端下進入proto檔案所在目錄,執行下述命令:

-
創建服務端

02呼叫grpc介面客戶端
以下代碼就是呼叫第一步中的grpc介面的

03介面框架中適配grpc封裝
1、封裝底層channel初始化
在config目錄下創建grpc.yml,其中寫上grpc介面的地址:

在common目錄下的client中增加下述代碼:

在conftes.py中增加下述代碼:

2、封裝grpc介面呼叫
在api包下創建一個grpcapi的包,將grpc的定義proto檔案拷貝進去,然后在終端下進入grpcapi目錄執行下述命令

該目錄下檔案如下:

修改add_pb2_grpc.py中的匯入如下:

根據上述代碼封裝介面呼叫,創建一個api_client.py,寫上如下代碼就是grpc提供的add介面的呼叫方法

3、撰寫grpc介面測驗用例
在testcases包下創建一個grpcapi包,創建一個test_grpc_api.py,撰寫針對add介面的測驗用例如下:

執行測驗
04基于dubbo框架服務的介面測驗dubbo服務管理地址:
http://**.***.**.***:****/dubbo-admin-2.6.0
用戶名和密碼都是root
01dubbo服務管理簡單使用先設定為中文,右側選擇語言

選擇服務治理-->服務


點開MarketService,再點ip和埠,打開如下:

02實戰介面說明
第1步里我們看到了兩個介面,exchange和lottery,下面是這兩個介面的業務說明
-
exchange
業務是積分兌換,該介面的引數是一個物件,物件型別對應后臺java代碼中的某個類cn.testfan.dubbo.model.ExchangeRequest,這個類物件對應的屬性如下,這些屬性其實就是我們的引數

-
lottery
業務是抽獎,引數有兩個,都是數字,沒有引數名稱,按照順序,第一個表示參與的活動id,第二個表示用戶id
03python呼叫dubbo介面-
安裝第三方庫

-
dubbo介面呼叫

04介面框架中適配dubbo封裝
1、封裝底層dubbo初始化
在config目錄下創建dubbo.yml檔案,寫上如下內容

在client.py里增加下述代碼

2、封裝api層
dubbo介面通常是按照服務進行劃分,一個服務下有多個介面,針對該服務創建物件,然后呼叫各個介面,
在api包下創建dubboapi的包,針對market服務創建一個market_api.py檔案,寫上如下代碼:

3、測驗用例層
在testcases包下創建dubboapi包,在其下創建test_market_service.py,寫上如下代碼

執行測驗
下面是一些配套的學習資源,希望能幫到大家,朋友們如果需要可以自行免費領取 【保證100%免費】

軟體測驗面試檔案
我們進階學習自動化測驗—測驗開發必然是為了找到高薪的作業,下面這些面試題是來自阿里、騰訊、位元組等一線互聯網大廠最新的面試資料,并且有位元組大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的作業,

面試檔案獲取方式:
這些都在我的軟體測驗學習交流群里:902061117
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/549676.html
標籤:其他
