iOS gRPC 初步探索

宋奕發表於2018-10-11

下面讓我來具體說說,gRPC的簡單原理和使用方法,最重要的是踩過的坑

一、何為gRPC

gRPC 是一個高效能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。gRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連線上的多複用請求等特。這些特性使得其在移動裝置上表現更好,更省電和節省空間佔用。

而RPC框架,即RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。

簡單來說,是一種可以簡化客戶端和伺服器之間互動響應的策略。

二、gRPC的使用

和我們平時所呼叫的短鏈API一樣。首先伺服器要定義服務,然後服務中包含了API函式,客戶端在進行gRPC的接入並啟用服務後,可以直接呼叫響應API函式,達到和伺服器互動的目的。

為了能夠使用gRPC框架,iOS工程必須繼承CocoaPods,gRPC利用CocoaPods的特性,將提前定義好的,包含了服務和API的.proto檔案,生成對應的object-c函式,使其可以直接呼叫

所以,第一步,匯入所需的.proto檔案,例如: 由於我們之前確定了基本的CDN框架。並且我這邊已經把整個CDN引數獲取,儲存,上報的大架子已經搭完了,剩下具體工作還有幾項:

具體引數的整合。 目前只獲取了初步需要的基本引數,如網路的DNS時間等,視訊的下載總大小總時長等。主要剩下1. 比較細小的通用引數,需要和伺服器繼續商定還需要什麼,例如運營商名稱,經緯度等 2. 具體的視訊互動引數,例如緩衝了幾次,緩衝的總時長,是否進行過中英文切換等。

資料的本地持久化。 目前DEMO中簡單進行了儲存和整合,這個星期對WCDB進行了簡單調研,發現除了多層巢狀模型比較難處理以外,剩下沒有任何問題,可以接入。下個版本嘗試先接入到CDN上報引數中。並根據業務要求,封裝出一套滿足業務要求的中間API呼叫層,無非是增刪改查

網路上報的具體方式 目前DEMO中使用HTTP短鏈push請求上報。經過小楠的建議,後續可以採取RPC方式。也因此,初步實現了gRPC的接入

下面讓我來具體說說,gRPC的簡單原理和使用方法,最重要的是踩過的坑

一、何為gRPC

gRPC 是一個高效能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。gRPC 基於 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連線上的多複用請求等特。這些特性使得其在移動裝置上表現更好,更省電和節省空間佔用。

而RPC框架,即RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。

簡單來說,是一種可以簡化客戶端和伺服器之間互動響應的策略。

二、gRPC的使用

和我們平時所呼叫的短鏈API一樣。首先伺服器要定義服務,然後服務中包含了API函式,客戶端在進行gRPC的接入並啟用服務後,可以直接呼叫響應API函式,達到和伺服器互動的目的。

為了能夠使用gRPC框架,iOS工程必須繼承CocoaPods,gRPC利用CocoaPods的特性,將提前定義好的,包含了服務和API的.proto檔案,生成對應的object-c函式,使其可以直接呼叫

所以,第一步,匯入所需的.proto檔案,例如:

iOS gRPC 初步探索

檔案內容如下:

iOS gRPC 初步探索

其中,service和message都是服務端需要定義好的服務跟API函式 第二步,寫好.podspec 檔案和podfile,進行pod install生成所需.h和.m檔案

.podspec檔案內容如下:

iOS gRPC 初步探索

podfile檔案如下:

iOS gRPC 初步探索

執行完成後,會生成對應的檔案如下:

iOS gRPC 初步探索
分別對應了service和message。

其中,你在pod install的時候可能會遇到各種連結被牆到問題。這個時候需要配置一下你的git代理到你的vpn代理上

例如,我的vpn代理為:

iOS gRPC 初步探索

則,我需要配置我的git 代理為:

iOS gRPC 初步探索

第三步,當然是寫程式碼啦!!!

iOS gRPC 初步探索

看起來超簡單!!!!

目前只是初步實現了Demo。呼叫可以成功實現。

但是,還需要有一個負載均衡的策略,目前在iOS的API中沒有發現有相關使用,後續可能需要我們自己做。

參考資料:

gRPC 官方文件中文版:doc.oschina.net/grpc?t=6014…

demo地址:github.com/yifriday/gR…

相關文章