gRPC 中 Client 與 Server 資料互動的 4 種模式

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

項目地址:grpc-modes

最近使用 gRPC 入門微服務開發,特此總結了 gRPC 中 4 種運行模式

目錄結構

$GOPATH└── grpc    ├── simple                  // 簡單模式 RPC    │   ├── client        │   │   └── client.go        # 用戶端代碼    │   ├── proto                │   │   ├── user.pb.go        │   │   └── user.proto       # 通訊的 protobuf 協議    │   └── server    │       └── server.go        # 服務端代碼    ├── server-side-streaming    // 服務端流式 RPC     ├── client-side-streaming    // 用戶端流式 RPC     └── bidirectional-streaming  // 用戶端與服務端雙向流式 RPC

UserService 微服務

本項目中定義了一個微服務:UserService,它只有一個 RPC:GetUserInfo()

syntax = "proto3";package grpc.simple;// 定義 UserService 微服務service UserService {    // 微服務中擷取使用者資訊的 RPC 函數    rpc GetUserInfo (UserRequest) returns (UserResponse);}// 用戶端請求的格式message UserRequest {    int32 ID = 1;}// 服務端響應的格式message UserResponse {    string name = 1;    int32 age = 2;}

GetUserInfo() 函數中類比了一個資料庫,儲存使用者的姓名和年齡:

// ID 為 key,使用者資訊為 value 類比資料庫查詢結果var users = map[int32]pb.UserResponse{    1: {Name: "Dennis MacAlistair Ritchie", Age: 70},    2: {Name: "Ken Thompson", Age: 75},    3: {Name: "Rob Pike", Age: 62},}

用戶端請求帶上 ID,查詢後將使用者資訊作為響應返回。

用戶端與服務端進行資料互動的四種模式

simpe 簡單模式 RPC

用戶端發起一個請求到服務端,服務端返回一個響應。

client 請求 ID 為 2 的使用者資料,server 返回 ID 為 2 的使用者資料:

server-side streaming 服務端流式 RPC

用戶端發起一個請求到服務端,服務端返回一段連續的資料流響應。

client 請求 1 的使用者資料,server 返回 1、2、3 的使用者資料流:

client-side streaming 用戶端流式 RPC

用戶端將一段連續的資料流發送到服務端,服務端返回一個響應。

client 請求 1、2、3 的使用者資料流,server 返回 3 的使用者資料:

Bidirectional streaming 雙向資料流模式的 gRPC

用戶端將連續的資料流發送到服務端,服務端返回互動的資料流。

client 依次請求 1、2、3 的使用者資料流,服務端依次返回 1、2、3 的使用者資料流:

最後

最近在系統的學習 Golang 的微服務,從 gRPC 開始,到 go-micro、Docker 化微服務等,每周更新。歡迎關注我的部落格 wuYinBlog

希望本項目對你有所協助 ️

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.