精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

云原生應用開發之Go 中構建 gRPC

云計算 云原生
通過本文我們已經了解了如何在 Go 中構建一個簡單的 gRPC 客戶端和服務器。我們構建了一個基本服務器,它接受來自客戶端的傳入消息,然后向這些客戶端返回響應。

1.什么是 gRPC

gRPC 由谷歌開發的,是一種語言中立、平臺中立、開源的遠程調用過程。

什么是遠程調用過程?簡單理解就是公開本地應用給其他應用程序調用的方法。gRPC 是一項進程間通信技術,可以用來連接、調用、操作和調式分布式異構應用程序。也像 RPC 應用程序的特點一樣:像調用本地函數一樣。

圖片

2.特點

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

在 gRPC 里客戶端應用可以像調用本地對象一樣直接調用另一臺不同的機器上服務端應用的方法,使得您能夠更容易地創建分布式應用和服務。

gRPC 默認使用 protocol buffers,這是 Google 開源的一套成熟的結構數據序列化機制,它的作用與 XML、json 類似,但它是二進制格式,性能好、效率高(缺點:可讀性差)。

3.gRPC 和 REST 區別

它類似于 REST API 通信,通過它,您可以有效地將應用程序中的功能公開給使用 HTTP 連接作為通信媒介的其他應用程序。

雖然 REST 和 gRPC 有點相似,但您應該注意它們的工作方式存在區別:

gRPC 使用 HTTP/2 協議,而 REST 使用 HTTP 1.1

gRPC 使用協議緩沖區數據格式,而不是通常在 REST API 中使用的標準 JSON 數據格式

使用 gRPC,您可以根據需要利用 HTTP/2 功能,例如服務器端流式傳輸、客戶端流式傳輸甚至雙向流式傳輸。

4.Go 建立一個 gRPC 服務器

我們從在 Go 中定義一個非常簡單的 gRPC 服務器開始。一旦我們有一個簡單的服務器啟動并運行,我們就可以著手創建一個能夠與之交互的 gRPC 客戶端。

gRPC 可以實現微服務,將大的項目拆分為多個小且獨立的業務模塊,也就是服務,各服務間使用高效的protobuf 協議進行 RPC 調用,gRPC 默認使用 protocol buffers ,這是 google 開源的一套成熟的結構數據序列化機制(當然也可以使用其他數據格式如 JSON )??梢杂?proto files 創建 gRPC 服務,用 message 類型來定義方法參數和返回類型

安裝 golang 的proto工具包:

go get -u github.com/golang/protobuf/proto

在開始建立 gRPC 之前,確保已安裝 Protocol Buffers v3:

go get -u github.com/golang/protobuf/protoc-gen-go

在 Go 中安裝 gRPC:

go get google.golang.org/grpc

然后寫一個服務器,通過監聽 TCP 連接的端口。如下的 main 函數:

package main

import (
"log"
"net"
)

func main() {

lis, err := net.Listen("tcp", ":8000")
if err != nil {
log.Fatalf("Fail to listen: %v", err)
}
}

接下來,我們要從 golang.org 導入官方的 gRPC 包,以便我們可以創建一個新的 gRPC 服務器,然后注冊我們想要公開的端點,然后通過我們上面定義的現有 TCP 連接提供服務:

package main

import (
"log"
"net"

"google.golang.org/grpc"
)

func main() {

lis, err := net.Listen("tcp", ":8000")
if err != nil {
log.Fatalf("Fail to listen: %v", err)
}

grpcServer := grpc.NewServer()

if err := grpcServer.Serve(lis); err != nil {
log.Fatalf("Fail to serve: %v", err)
}
}

這是用 go 編寫的最基礎 gRPC 服務器,現在的功能還很有限。

5.添加一些功能

然后寫一個客戶端與前面的服務器進行交互,創建一個 client.proto 文件:

syntax = "proto3"; // 協議為proto3

package chat;

// 定義發送請求信息
message Message {
// 定義發送的參數
// 參數類型 參數名 標識號(不可重復)
string body = 1;
}

// 定義我們的服務(可定義多個服務,每個服務可定義多個接口)
service ChatService {
rpc SayHello(Message) returns (Message) {}
}

這個 .proto 文件公開了我們的 ChatService,它具有一個單獨的 SayHello 函數,可以由任何用任何語言編寫的 gRPC 客戶端調用。

這些 .proto 定義通常在各種形狀和大小的客戶端之間共享,以便它們可以生成自己的代碼來與我們的 gRPC 服務器通信。

讓我們使用 protoc 工具生成 Go 特定的 gRPC 代碼:

$ protoc --go_out=plugins=grpc:chat chat.proto

您會看到這將生成一個 chat/chat.pb.go 文件,該文件將包含生成的代碼,以便我們在代碼中輕松調用。讓我們更新我們的 server.go 來注冊我們的 ChatService,如下所示:

package main

import (
"fmt"
"log"
"net"

"github.com/tutorialedge/go-grpc-beginners-tutorial/chat"
"google.golang.org/grpc"
)

func main() {

fmt.Println("Go gRPC Beginners Tutorial!")

lis, err := net.Listen("tcp", fmt.Sprintf(":%d", 9000))
if err != nil {
log.Fatalf("failed to listen: %v", err)
}

s := chat.Server{}

grpcServer := grpc.NewServer()

chat.RegisterChatServiceServer(grpcServer, &s)

if err := grpcServer.Serve(lis); err != nil {
log.Fatalf("failed to serve: %s", err)
}
}

然后我們將必須定義 SayHello 方法,該方法將接收一條消息,讀取消息的正文,然后返回它自己的消息:

package chat

import (
"log"

"golang.org/x/net/context"
)

type Server struct {
}

func (s *Server) SayHello(ctx context.Context, in *Message) (*Message, error) {
log.Printf("Receive message body from client: %s", in.Body)
return &Message{Body: "Hello From the Server!"}, nil
}

如果我們想為我們的 gRPC 服務器定義更高級的功能,那么我們可以通過定義一個基于我們的 Server 結構構建的新方法來實現,然后將該函數的名稱添加到我們的 chat.proto 文件中,以便我們的應用程序可以將其公開為某種東西其他 gRPC 客戶端可以訪問。

完成這些最終更改后,讓我們嘗試運行我們的服務器:

$ go run server.go
Go gRPC Beginners Tutorial!

驚人的!我們現在在我們的機器上的 localhost:8000 上啟動并運行了一個嶄新的、閃亮的新 gRPC 服務器!

6在 Go 中構建 gRPC 客戶端

現在我們的服務器已經啟動并運行了,讓我們看看如何構建一個能夠與之交互的簡單客戶端。更新一下 client.go 文件:

package main

import (
"log"

"golang.org/x/net/context"
"google.golang.org/grpc"

"github.com/tutorialedge/go-grpc-beginners-tutorial/chat"
)

func main() {

var conn *grpc.ClientConn
conn, err := grpc.Dial(":8000", grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect: %s", err)
}
defer conn.Close()

c := chat.NewChatServiceClient(conn)

response, err := c.SayHello(context.Background(), &chat.Message{Body: "Hello From Client!"})
if err != nil {
log.Fatalf("Error when calling SayHello: %s", err)
}
log.Printf("Response from server: %s", response.Body)

}

當我們運行它時,我們應該看到我們的客戶端從服務器收到了一個非常好的 Hello 消息,如下所示:

$ go run client.go
2022/07/07 23:23:01 Response from server: Hello From the Server!

我們已經成功創建了一個非常簡單的 gRPC 客戶端,它現在可以與我們的新 gRPC 服務器通信!

安裝問題

如果遇到 go get google.golang.org/grpc 安裝出錯,如下:

圖片

通過如下方式替換:

  • git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
  • git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
  • git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
  • go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
  • git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
  • cd $GOPATH/src/
  • go install google.golang.org/grpc

7.總結

通過本文我們已經了解了如何在 Go 中構建一個簡單的 gRPC 客戶端和服務器。我們構建了一個基本服務器,它接受來自客戶端的傳入消息,然后向這些客戶端返回響應。

責任編輯:武曉燕 來源: 宇宙之一粟
相關推薦

2023-08-30 16:22:03

云原生云計算

2020-12-01 17:44:15

華為云Go語言云原生

2017-12-10 14:13:14

云服務云原生應用程序

2022-02-21 09:00:00

云原生應用開發

2021-01-11 18:33:07

云原生

2022-11-30 18:38:50

2021-07-12 15:47:00

云計算云原生

2023-07-26 16:20:36

云原生云計算

2025-02-04 13:53:18

NixGogRPC

2014-12-04 14:10:22

移動應用云

2025-06-04 10:08:00

Go開發云原生

2020-07-16 08:05:15

JavaGo

2014-07-15 11:16:17

Go語言

2021-02-03 15:10:38

GoKubernetesLinux

2020-11-19 15:01:50

云原生IBMCloud Paks

2023-01-05 14:41:24

2022-10-21 11:07:19

亞馬遜云科技Serverless數據庫

2023-08-22 15:40:12

云原生云計算

2022-06-22 09:24:30

云原生Go 語言

2025-07-03 11:21:04

點贊
收藏

51CTO技術棧公眾號

成人在线免费观看视视频| 日韩中文字幕精品| 国产99久久九九精品无码| 可以免费看污视频的网站在线| 日韩av在线播放中文字幕| www国产亚洲精品久久网站| 久久久久亚洲AV成人网人人小说| 中文字幕21页在线看| 国产精品成人在线观看| 国产一区免费观看| 亚洲视频中文字幕在线观看| 亚洲小说欧美另类社区| 夜夜躁日日躁狠狠久久88av| 中文字幕制服丝袜| 99热播精品免费| 亚洲成av人片在线观看| 午夜在线视频免费观看| 国产高清一区在线观看| 成人精品视频一区二区三区 | 天天鲁一鲁摸一摸爽一爽| 精品深夜福利视频| 欧美一二三四区在线| 久久久久免费精品| 国产在线精彩视频| 一区二区激情小说| 综合国产精品久久久| 国产精品一级伦理| 26uuu色噜噜精品一区| 99热99热| www.日本在线观看| 久久99精品国产麻豆不卡| 日韩av手机在线看| 久久久久久久久久免费视频 | 精品欠久久久中文字幕加勒比| 5858s免费视频成人| 日韩在线xxx| 色在线中文字幕| 亚洲大片精品永久免费| 香蕉视频免费版| 久操视频在线播放| 中文字幕亚洲一区二区va在线| 欧美三级华人主播| 蜜桃免费在线| 久久婷婷国产综合国色天香| 黄色99视频| 日韩一级片免费观看| 国产精品亚洲成人| 99在线首页视频| 国产黄色片免费观看| 国产乱码精品一区二区三区五月婷| 国产精品美女免费| 伊人网综合在线| 久久国产生活片100| 国产欧美亚洲精品| 97av免费视频| 国产伦精品一区二区三区免费 | 97视频免费看| 日本中文字幕免费| 99成人在线| 欧日韩在线观看| 欧产日产国产69| 毛片一区二区| 国产精品亚洲视频在线观看| 亚洲精品国产精品乱码视色| 全部av―极品视觉盛宴亚洲| 国产欧美日韩精品丝袜高跟鞋| 一级特黄aaa| 国产一区二区免费看| 成人av免费看| 亚洲色偷精品一区二区三区| 国产视频一区二区三区在线观看| 亚欧精品在线| 欧美极品另类| 亚洲午夜在线视频| 久久久噜噜噜www成人网| 天天综合网天天| 欧美日韩国产精选| 少妇熟女视频一区二区三区| 日韩成人av在线资源| 亚洲无线码在线一区观看| 中国美女黄色一级片| 91精品观看| 91爱视频在线| 97精品久久人人爽人人爽| 丁香亚洲综合激情啪啪综合| 久久综合中文色婷婷| 欧美日韩欧美| 午夜久久电影网| 91精品无人成人www| 视频一区日韩| 亚洲一区二区精品| 欧美国产在线看| 久久久久久9| 99在线影院| 97电影在线| 姬川优奈aav一区二区| 亚洲第一狼人区| 国产乱人伦丫前精品视频| 国产一区二区三区视频在线观看| 91嫩草丨国产丨精品| 国产精品美女久久久浪潮软件| 国产精品视频xxx| 好吊色一区二区| 国产精品麻豆99久久久久久| 无码中文字幕色专区| 国产精品蜜月aⅴ在线| 日韩av在线免费播放| 顶级黑人搡bbw搡bbbb搡| 一区二区三区国产在线| 亚洲精品日韩av| 成人在线视频成人| 欧美性20hd另类| 欧美日韩一区二区区别是什么 | 久久麻豆一区二区| 成人黄色大片网站| 国产乱码精品一区二区三区亚洲人 | 91av视频在线免费观看| 精品区在线观看| 中文字幕日韩一区| 亚欧在线免费观看| 日本精品影院| 久久久这里只有精品视频| 国产精品一二三四五区| 久久精品夜色噜噜亚洲aⅴ| 日本xxxxxxxxxx75| 久久丁香四色| 日韩天堂在线视频| 中文字幕资源网| 久久久久久久综合狠狠综合| 久久人人爽人人爽人人av| 国产精品亚洲d| 亚洲乱码一区二区| 国产午夜免费视频| 国产99久久久国产精品免费看 | 欧美午夜精品一区二区三区| 欧美 变态 另类 人妖| 在线日本成人| 国产精品久久久久久久天堂第1集| 欧美三级理伦电影| 制服丝袜亚洲色图| 日韩成人短视频| 国产一区在线看| 国产成人三级视频| 国内精品视频| 欧美人与物videos| 亚洲国产欧美另类| 亚洲超丰满肉感bbw| 无码国产精品一区二区免费式直播 | 黄色特一级视频| 日韩一区二区三区高清在线观看| 久久成人一区二区| 国产毛片一区二区三区va在线 | 国产一区二区三区黄网站| 日韩在线观看av| 97超碰资源站| 亚洲影视在线播放| xxxx黄色片| 免费在线欧美黄色| 日韩欧美视频一区二区三区四区| 91天天综合| 久久影视电视剧免费网站清宫辞电视| 国产精品污视频| 亚洲综合一区在线| 中出视频在线观看| 蜜桃久久久久久| 日韩精品一区二区三区电影| 99精品在免费线中文字幕网站一区 | 白浆在线视频| 亚洲日本欧美日韩高观看| 国产情侣小视频| 综合欧美一区二区三区| 国产精品一区二区在线免费观看| 亚洲国产综合在线看不卡| 欧美理论一区二区| 日韩成人一区| 午夜精品一区二区三区在线视 | 风间由美中文字幕在线看视频国产欧美 | 欧美大胆人体bbbb| www.国产高清| 国产精品久久久久三级| 亚洲黄色小说在线观看| 先锋影音久久| 中文字幕一区二区三区5566| 亚洲成人三级| 99精品在线视频观看| 中文字幕一区二区三| 国产在线a视频| 国产亚洲一区在线| 亚洲成人av动漫| 88久久精品| 国产精品99蜜臀久久不卡二区| 麻豆传媒在线完整视频| 亚洲国产成人一区| 亚洲综合成人av| 亚洲国产色一区| 国产亚洲精品精品精品| 成人一区二区三区在线观看| 精品久久久久久中文字幕2017| 欧美一区二区三区久久精品茉莉花| 好吊色欧美一区二区三区四区| 成人国产一区| 97视频免费在线看| av在线下载| 在线看福利67194| 天天干天天爽天天操| 欧美精品精品一区| www毛片com| 亚洲国产综合色| 一起操在线播放| 日本一区二区三区久久久久久久久不| 欧美xxxx日本和非洲| 麻豆精品在线看| av网址在线观看免费| 亚洲免费二区| 亚洲国产精品一区二区第一页| 欧美电影完整版在线观看| 成人性生交xxxxx网站| 欧美极品免费| 5566日本婷婷色中文字幕97| 蜜臀av国内免费精品久久久夜夜| 最近2019中文字幕第三页视频| 天堂91在线| 日韩成人网免费视频| 亚洲第一色视频| 91精品国产综合久久蜜臀| 中文字幕视频一区二区| 色婷婷久久久综合中文字幕| 日韩特黄一级片| 亚欧色一区w666天堂| 久久久www成人免费毛片| 亚洲同性同志一二三专区| 呻吟揉丰满对白91乃国产区| 久久久国产精华| 欧美成人午夜精品免费| 91小视频在线| 添女人荫蒂视频| 久久先锋资源网| a级大片在线观看| 久久久亚洲高清| xxx在线播放| 国产欧美一二三区| 国产高清一区二区三区四区| 久久免费的精品国产v∧| 中国黄色a级片| 国产亚洲欧美一区在线观看| 亚洲一区二区三区蜜桃| 久久久久久久国产精品影院| 强伦人妻一区二区三区| 国产亚洲欧美日韩在线一区| 成人免费网站黄| 国产午夜精品一区二区三区视频| 久久成人激情视频| 国产精品日韩精品欧美在线| 中文字幕在线观看二区| 中文字幕一区二区不卡| 1024手机在线视频| 一区二区成人在线观看| 日韩精品在线不卡| 色综合天天综合给合国产| 夜夜爽妓女8888视频免费观看| 欧美性生活影院| 国产精品视频第一页| 欧美大片免费久久精品三p| 四虎永久在线精品免费网址| 精品视频在线播放色网色视频| 韩国中文字幕2020精品| 日韩一区二区福利| 欧美wwww| 国产成+人+综合+亚洲欧洲 | 欧美精品一区二区三区中文字幕| 欧美日韩精品久久久免费观看| 日韩精品首页| 韩国无码av片在线观看网站| 国产视频欧美| 天堂中文av在线| www.亚洲色图.com| 少妇精品无码一区二区免费视频| 国产精品久久精品日日| 久操视频免费在线观看| 一本一本久久a久久精品综合麻豆| 瑟瑟视频在线免费观看| 日韩视频免费观看高清在线视频| 污污视频在线免费看| 亚洲天堂av女优| 中文在线观看免费| 日韩免费视频在线观看| 日本亚州欧洲精品不卡| 日本视频精品一区| 欧美福利视频| 丁香婷婷激情网| 国产成人免费在线视频| 蜜桃传媒一区二区亚洲| 亚洲美女免费视频| 国产熟妇一区二区三区四区| 日韩一区二区在线看| 日本啊v在线| 欧美成人免费全部观看天天性色| 欧美aa视频| 国产福利久久| 久久国产亚洲| 欧美污视频网站| 国产麻豆视频一区二区| 中文字幕免费视频| 精品人伦一区二区三区蜜桃免费| 一级黄色片免费| 亚洲精品自拍第一页| 牛牛精品在线| 国产一区二区在线播放| 日韩大片在线免费观看| 黄色一级片黄色| 捆绑调教一区二区三区| 国产精品无码网站| 亚洲自拍偷拍欧美| 一级特黄特色的免费大片视频| 亚洲色图偷窥自拍| 精品丝袜在线| 超碰97在线人人| 在线一区免费| 五月天视频在线观看| 国产亚洲女人久久久久毛片| 日本少妇性生活| 日韩欧美电影一区| 国内精品久久久久国产| 国产玖玖精品视频| 欧美天天综合| 麻豆传传媒久久久爱| 91视频在线观看免费| 久热精品在线观看| 日韩一区二区三区三四区视频在线观看 | 一二区成人影院电影网| 精品视频高清无人区区二区三区| 韩国亚洲精品| 能看毛片的网站| 亚洲精品欧美在线| a级片在线播放| 久久九九精品99国产精品| 亚洲成人高清| 一区二区三区在线视频看| 久久精品国产一区二区三区免费看| 在线小视频你懂的| 色综合咪咪久久| 国产视频福利在线| 国产精品久久久久久久久久久久久久 | 欧美人妻精品一区二区免费看| 欧美一区二区三区在线视频| 蜜桃视频在线观看www社区| 国产女精品视频网站免费| 色综合咪咪久久网| www.久久com| 亚洲综合视频网| 日本人妻丰满熟妇久久久久久| 久久免费高清视频| 日韩超碰人人爽人人做人人添| 黄色一级在线视频| 久久久久久久久久久电影| 日韩在线视频不卡| 正在播放欧美一区| 99国内精品久久久久| 青青草免费在线视频观看| 成人小视频免费在线观看| 国产精品99精品| 日韩成人久久久| 黄色精品视频| 国产手机视频在线观看| 国产成人综合亚洲网站| 久久精品欧美一区二区| 精品中文视频在线| 国产精品亚洲成在人线| 男女啪啪免费观看| 99视频在线观看一区三区| 国产字幕在线观看| www.欧美三级电影.com| 成人免费直播在线| 91av俱乐部| 亚洲人成小说网站色在线| 免费看黄网站在线观看| 欧美做受高潮电影o| 天天综合一区| 视频免费在线观看| 在线精品视频免费播放| 欧洲一区二区三区| 欧美日韩国产高清视频| 黑人巨大精品欧美一区| 日本一二三区不卡| 中文字幕日韩精品在线观看| 欧美经典一区| 可以免费在线看黄的网站| 亚洲人123区| 六十路在线观看| 亚洲一区二区中文字幕| 麻豆成人在线| 久久国产精品二区| 色香阁99久久精品久久久| 在线视频亚洲欧美中文| 欧美日韩大尺度| 亚洲最大的成人av| 香蕉视频在线播放| 久热国产精品视频一区二区三区| 激情五月婷婷综合网| 国产又大又黄视频|