成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Golang 語言 gRPC 到底是什么?

開發 后端
在正式介紹 gRPC 之前,我們先簡單介紹一下什么是 RPC,它是 Remote Procedure Call 的縮寫,中文譯為遠程過程調用(也可譯為遠程方法調用或遠程調用),它是計算機通信協議,該協議可以實現調用遠程服務就像調用本地服務一樣簡單,無需關心跨網絡,跨平臺,跨語言等問題。

[[421001]]

1.介紹

我們上一篇文章「Golang 語言 gRPC 使用的接口設計語言 protobuf」介紹了 Golang 語言 gRPC 使用的接口設計語言 Protobuf,本文我們開始介紹主角 - 谷歌開源的 RPC 框架 gRPC。

在正式介紹 gRPC 之前,我們先簡單介紹一下什么是 RPC,它是 Remote Procedure Call 的縮寫,中文譯為遠程過程調用(也可譯為遠程方法調用或遠程調用),它是計算機通信協議,該協議可以實現調用遠程服務就像調用本地服務一樣簡單,無需關心跨網絡,跨平臺,跨語言等問題。

gRPC 是通信協議基于 HTTP/2,支持多語言的 RPC 框架,使用 Protobuf 作為它的接口設計語言(IDL),可以通過 protoc 工具生成 Golang 語言的結構體,服務端接口和客戶端 Stub。

gRPC 消息序列化方式通常使用 Protobuf,它是二進制格式,體積小,網絡傳輸快,占用帶寬流量少,調用性能更高,但是可讀性差。不過,gRPC 也支持 JSON 序列化方式。

「圖片來源:https://grpc.io/img/landing-2.svg」

2.怎么使用 gRPC 定義服務端

gRPC 默認使用 Protobuf 作為接口設計語言,我們可以在 .proto 文件中使用 service 關鍵字定義服務,使用 rpc 和 returns 關鍵字定義指定請求參數和返回結果的方法。

示例代碼:

  1. service User { 
  2.   rpc Login (LoginRequest) returns (LoginResponse); 
  3.  
  4. message LoginRequest { 
  5.   string email = 1; 
  6.   string password = 2; 
  7.  
  8. message LoginResponse { 
  9.   int64 id = 1; 
  10.   string name = 2; 

閱讀上面這段代碼,我們使用 Protobuf 接口設計語言定義了一個一元 RPC 服務,即客戶端向服務端發送一個請求,服務端向客戶端返回一個響應。

此外,gRPC 還支持另外三種定義服務的方式,即服務器流式 RPC、客戶端流式 RPC 和雙向流式 RPC。限于篇幅,我準備在后續文章中詳細介紹這四種定義服務的方式,本文先不展開介紹。

gRPC 提供了 Protobuf 編譯器插件 protoc-gen-grpc,用于編譯 .proto 文件,生成服務端和客戶端代碼,我們只需在服務端編寫實現 Api 的代碼,然后在客戶端調用 Api。

3.怎么使用 gRPC 的客戶端

我們通過 protoc 編譯 .proto 文件,自動生成服務端和客戶端代碼后,我們如果想要使用 gRPC 的客戶端,還需要手動編寫客戶端代碼,也就是在服務端實現 Api 的業務邏輯代碼,然后在客戶端調用 Api,具體如下:

在服務端,手動編寫生成的服務端方法的業務邏輯代碼,然后運行 gRPC 服務,接收并處理客戶端請求,gRPC 服務自動解碼請求參數,然后執行服務的方法,并將返回結果自動進行編碼。

在客戶端,Stub (也稱為存根或客戶端)實現和服務相同的方法,然后客戶端可以本地調用這些方法,將請求參數封裝在 Protobuf 的消息類型中,gRPC 將請求發送給服務器,并返回服務器的 Protobuf 序列化方式的響應消息。

4總結

本文我們介紹了 gRPC 到底是什么,怎么定義 gRPC 的服務端,以及怎么使用 gRPC 的客戶端。更多關于 gRPC 的介紹,我建議感興趣的讀者朋友們閱讀官網文檔了解更多。

本文轉載自微信公眾號「Golang語言開發棧」,可以通過以下二維碼關注。轉載本文請聯系Golang語言開發棧公眾號。

 

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2023-03-29 08:24:46

Rune類型開源項目

2011-04-27 09:30:48

企業架構

2020-09-27 06:53:57

MavenCDNwrapper

2020-09-22 08:22:28

快充

2020-10-14 06:22:14

UWB技術感知

2010-11-01 01:25:36

Windows NT

2013-06-09 09:47:31

.NetPDBPDB文件

2021-09-03 09:12:09

Linux中斷軟件

2019-10-30 10:13:15

區塊鏈技術支付寶

2010-04-22 14:14:29

Live-USB

2020-08-04 14:20:20

數據湖Hadoop數據倉庫

2021-01-21 21:24:34

DevOps開發工具

2021-02-05 10:03:31

區塊鏈技術智能

2022-10-08 00:00:00

Spring數據庫項目

2021-07-07 05:07:15

JDKIterator迭代器

2023-07-12 15:32:49

人工智能AI

2020-03-05 10:28:19

MySQLMRR磁盤讀

2024-02-04 00:01:00

云原生技術容器

2009-06-09 22:11:44

JavaScriptObject

2012-07-26 09:55:39

云計算服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜视频一区 | 久久在线精品 | 日韩精品一区二区三区老鸭窝 | 久久久久亚洲精品国产 | 一区二区三区免费 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 美日韩中文字幕 | 国产精品色一区二区三区 | 精品欧美一区二区三区免费观看 | 久久9视频 | 日本精品一区二区三区视频 | 亚洲不卡在线观看 | 日韩一区二区久久 | 在线午夜 | 成人午夜免费福利视频 | 欧美日韩亚 | 国产精品国产精品国产专区不蜜 | 精品国产乱码久久久久久中文 | 午夜爽爽爽男女免费观看 | 久久国产精品久久久久久久久久 | 国产二区视频 | 特级丰满少妇一级aaaa爱毛片 | 五月天婷婷久久 | 中文字幕一区二区三区乱码在线 | 成人免费在线观看视频 | 精品久久久久久久久久久久久久 | 精品影视| 亚洲精品1区2区3区 91免费看片 | 在线观看日本网站 | 日韩精品一区二区三区在线播放 | 中文字幕高清视频 | 国产成人精品一区二区三区网站观看 | 男女免费观看在线爽爽爽视频 | 日韩中文字幕一区 | 亚洲欧美日韩精品久久亚洲区 | 精品综合| 欧美日在线| 国产午夜精品久久久 | 毛片99| 久久综合一区 | 精品久久香蕉国产线看观看亚洲 |