精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

4p变态网欧美系列| 欧美视频在线观看免费网址| 成人精品久久久| 久久久久久久久久久久久久久| 欧美aaaxxxx做受视频| 成人av网站在线| 日本久久久久久久| 国产在线观看免费视频软件| 亚洲日本视频在线| 欧美日韩亚洲系列| 成人免费直播live| 人妻大战黑人白浆狂泄| 亚洲精品伦理| 欧美日韩一区二区三区| 九色91在线视频| 91黄色在线视频| 9色国产精品| 久久精品99国产精品酒店日本| 久久国产精品国产精品| 国产盗摄一区二区| 欧美激情综合在线| 国产欧美日韩中文字幕在线| 日韩av大片在线观看| 91久久国产| 亚洲视频第一页| 欧美激情 亚洲| 国产亚洲亚洲国产一二区| 岛国av在线不卡| 99久久99久久精品| 天堂аⅴ在线地址8| 韩国三级在线一区| 久久91亚洲精品中文字幕| 极品人妻一区二区| 国产精品久久久久77777丨| 国产精品无人区| 成人激情视频在线播放| 麻豆亚洲av成人无码久久精品| 91九色鹿精品国产综合久久香蕉| 亚洲激情五月婷婷| 欧美日韩视频免费在线观看| 国产日本在线视频| wwwwww.欧美系列| 国产精品加勒比| 亚洲国产精品久久久久久久| 国内精品伊人久久久久av一坑 | 久久久久无码国产精品一区李宗瑞| 欧美日韩经典丝袜| 亚洲男人天堂av| 在线电影看在线一区二区三区| 成人午夜福利视频| 国产乱码精品一区二区三区忘忧草| 国外成人性视频| 久久婷婷一区二区| 欧美国产三级| 麻豆国产va免费精品高清在线| 亚洲人人夜夜澡人人爽| 奇米影视777在线欧美电影观看| 欧美性做爰猛烈叫床潮| 久久久国产欧美| 51一区二区三区| 欧美三级中文字幕| www.色就是色.com| 在线看片国产福利你懂的| 婷婷成人综合网| www.中文字幕在线| 欧美xxxxxx| 在线视频欧美精品| 精品人妻少妇一区二区| 91探花在线观看| 欧美性黄网官网| 鲁一鲁一鲁一鲁一澡| 电影网一区二区| 在线观看视频一区二区欧美日韩| 久久这里只有精品23| 看黄在线观看| 亚洲一卡二卡三卡四卡无卡久久| 一区二区三区电影| 成人高清免费在线| 国产精品伦理一区二区| 欧美精品久久96人妻无码| 黄页网站在线观看免费| 欧美视频国产精品| 日本中文字幕二区| 第四色中文综合网| 亚洲欧美在线第一页| а天堂中文在线资源| 欧美成人午夜| 日本亚洲欧美三级| 国产精品久久久久久久一区二区| 日本不卡一区二区| 欧洲一区二区视频| 91麻豆国产视频| 成人avav影音| 亚洲欧洲精品一区二区| 欧美wwww| 欧美日韩视频一区二区| 欧美人与性动交α欧美精品| 亚洲免费专区| 久久中文字幕一区| caoporn国产| 肉色丝袜一区二区| 1卡2卡3卡精品视频| 黄色视屏网站在线免费观看| 亚洲自拍偷拍av| 日本在线视频www| 亚洲第一二三四区| 精品国产乱码久久久久久夜甘婷婷 | 久久久综合网| av蓝导航精品导航| 91在线高清| 欧美日韩国产精品| 香蕉视频xxxx| 亚洲三级av| 亚洲精品成人久久久| 三级黄色免费观看| 日本怡春院一区二区| 翡翠波斯猫1977年美国| 天堂在线视频观看| 国产精品久久久久久久久久免费看| 一区在线电影| 精品一性一色一乱农村| 欧美日韩一区三区| 不卡一区二区在线观看| 狠狠色狠狠色综合日日tαg| 国产日韩在线精品av| 日本视频在线观看一区二区三区| 国产亚洲女人久久久久毛片| 国产无限制自拍| 成人看片网页| 日韩精品免费在线| 国产精品第一页在线观看| 久久久久久网| 精品一区久久| 9765激情中文在线| 欧美成人综合网站| 外国一级黄色片| 韩国一区二区三区| 欧美日韩在线观看一区二区三区| 大胆av不用播放器在线播放 | 日韩乱码人妻无码中文字幕| 久久爱www久久做| 国产精成人品localhost| 国产调教视频在线观看| 欧美日韩人人澡狠狠躁视频| 久久久午夜精品福利内容| 成人av国产| 国产精品旅馆在线| 成年人免费在线视频| 在线精品视频免费播放| 亚洲色图欧美另类| 激情久久一区| 精品一卡二卡三卡四卡日本乱码| 国产在线激情| 日韩欧美国产综合一区| 久久中文字幕在线观看| 国产成人亚洲综合色影视| 涩涩日韩在线| 福利一区在线| 精品国产区一区二区三区在线观看| 日韩成人免费在线视频| 91在线看国产| 人妻av无码专区| 精品国产乱子伦一区二区| 2019中文字幕在线| 韩国精品视频| 678五月天丁香亚洲综合网| 黄色片在线观看网站| 国产不卡在线播放| 免费看黄在线看| 自拍亚洲一区| 国产精品日韩一区| 中文字幕在线观看播放| 欧美日韩你懂的| 亚洲成人生活片| 成人一区二区三区视频在线观看| 国产精品h视频| 国产 日韩 欧美 综合 一区| 日韩av免费在线观看| 拍真实国产伦偷精品| 欧美成人aa大片| 亚洲男人的天堂在线视频| 日本一区二区三级电影在线观看| 欧美日韩在线中文| 欧美高清视频手机在在线| 国产精品久久久久久久av电影| 亚洲日本香蕉视频| 欧美美女喷水视频| 日韩亚洲欧美中文字幕| 成人午夜激情在线| 亚洲老女人av| 亚洲精品一级| 亚洲自拍三区| 久久丝袜视频| 91久久国产精品| 久久久久久久久免费视频| 亚洲国产黄色片| 一级成人免费视频| 精品免费在线视频| 日本高清不卡免费| 久久久精品tv| 亚洲性生活网站| 欧美精品日韩| 亚洲一二区在线| 色爱av综合网| 成人三级视频在线观看一区二区| 日本片在线观看| 在线观看欧美www| 亚洲图片视频小说| 欧美午夜xxx| 免费三片在线播放| 中文字幕欧美日韩一区| 免费一区二区三区在线观看| 99精品国产在热久久婷婷| 青少年xxxxx性开放hg| 国产精品一区二区av交换| 国产亚洲精品美女久久久m| 在线播放成人| 国产精品三级在线| 另类专区亚洲| 一区二区三欧美| av 一区二区三区| 欧美日韩国产123区| 精品人妻一区二区色欲产成人| 国产午夜精品一区二区三区视频| 久久国产这里只有精品| 西西人体一区二区| 国产精品一线二线三线| 中出一区二区| 亚洲欧美一二三| 93在线视频精品免费观看| 色一情一乱一伦一区二区三区 | 亚洲免费综合| 每日在线观看av| 亚洲香蕉网站| 97久久国产亚洲精品超碰热| 亚洲国产精品91| 91免费网站视频| 婷婷亚洲最大| 中文字幕日韩精品久久| 日韩av影院| 精品高清视频| 全国精品免费看| 九色91在线视频| 久久伊人久久| 91传媒在线免费观看| 精品国产伦一区二区三区观看说明| 欧美一区二区视频97| 人人草在线视频| 久久精品99久久久香蕉| 色综合久久久久综合一本到桃花网| 精品国产1区二区| 色婷婷av一区二区三区之e本道| 欧美色图12p| 国产日韩免费视频| 精品毛片乱码1区2区3区| 欧美一区二区三区激情| 亚洲黄色av女优在线观看 | 国产区一区二区| 精品人人人人| 92看片淫黄大片欧美看国产片| 美女100%一区| 国产精品视频自在线| 日韩美香港a一级毛片| 91免费观看网站| 88久久精品| 国产美女在线精品免费观看| 国产ts一区| 欧美第一黄网| 99久久亚洲精品| 国产精品videossex国产高清 | 夜夜嗨av色一区二区不卡| 亚乱亚乱亚洲乱妇| 九九热最新视频//这里只有精品 | 国产成人av免费看| 欧美视频在线一区| 国产视频一区二区三区四区五区| 欧美在线观看一区二区| 国产永久免费视频| 欧美三电影在线| www.看毛片| 亚洲精品v欧美精品v日韩精品| 亚洲国产成人一区二区| 欧美一级淫片007| 同心难改在线观看| 深夜成人在线观看| 8x8ⅹ拨牐拨牐拨牐在线观看| 欧美成人免费在线视频| 色吧亚洲日本| 91在线观看免费高清| 丝袜连裤袜欧美激情日韩| 亚洲一区二区在| 国产一区导航| 亚洲熟妇av一区二区三区| 久久99精品久久久久久国产越南 | 成人在线啊v| 快播日韩欧美| 欧美成人综合| 国产天堂在线播放| 丰满岳乱妇一区二区三区| 亚洲图片第一页| 欧美性20hd另类| 精品国精品国产自在久不卡| 日韩精品一区二区三区视频播放| 亚洲国产精品国自产拍久久| 亚洲国产精品人人爽夜夜爽| 搡老岳熟女国产熟妇| xxx欧美精品| 视频二区不卡| 国产久一道中文一区| 国产精品毛片久久| 中文字幕永久视频| 2欧美一区二区三区在线观看视频| 91麻豆精品国产91久久综合| 亚洲www啪成人一区二区麻豆| 国产精品免费av一区二区| 日韩欧美在线播放| 中文字幕av在线免费观看| 亚洲精品电影在线| 亚洲淫性视频| 成人激情视频网| 凹凸成人精品亚洲精品密奴| 中文字幕精品一区日韩| 首页欧美精品中文字幕| 国产艳俗歌舞表演hd| 午夜电影一区二区| 亚洲毛片欧洲毛片国产一品色| 亚洲区中文字幕| 国产拍在线视频| www日韩av| 国产一区二区三区四区五区传媒 | 91久久中文| 美女日批在线观看| 久久久久高清精品| 亚洲国产成人无码av在线| 亚洲成人999| sm在线播放| 国产啪精品视频| 成人3d精品动漫精品一二三| 亚欧在线免费观看| 国产亚洲成年网址在线观看| 91video| 亚洲少妇中文在线| 1区2区3区在线视频| 91亚洲人电影| 国产一区亚洲| 亚洲av成人片无码| 午夜久久久久久电影| 少妇人妻偷人精品一区二区| 91精品国产高清久久久久久久久| 9999在线精品视频| 黄色网址在线免费看| 国产高清视频一区| 久久精品亚洲无码| 亚洲精品国产精品国自产观看浪潮| 国产激情在线视频| 99久久综合狠狠综合久久止| 精品成人国产| 在线 丝袜 欧美 日韩 制服| 色综合一区二区| 1769在线观看| 亚洲影院在线看| 亚洲天堂偷拍| 色欲av无码一区二区三区| 91国在线观看| 精品欧美色视频网站在线观看| 啪一啪鲁一鲁2019在线视频| 成人春色在线观看免费网站| 欧美成人免费在线观看视频| 久久久久久久综合色一本| 一区二区视频网| 欧美国产第一页| 亚洲色图丝袜| 日韩精品视频一二三| 国产丝袜欧美中文另类| 精品成人久久久| 中文字幕在线亚洲| 亚洲三级av| www.欧美日本| 亚洲综合另类小说| a视频免费在线观看| 91精品国产一区| 好吊妞国产欧美日韩免费观看网站| 成人高清dvd| 久久综合久久鬼色| 91中文字幕在线视频| 97精品在线视频| 不卡在线一区| 成人做爰www看视频软件| 欧美亚洲动漫精品| 欧美精品videossex少妇| 日本精品国语自产拍在线观看| 久久亚洲欧美| 久久在线视频精品| 色偷偷亚洲男人天堂| 久久99精品久久久久久欧洲站| 黄页网站在线观看视频| 国产精品美女久久久久久久久| 中文字幕第31页| 97在线观看视频国产| 91精品国偷自产在线电影|