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

Golang 語言 gRPC 怎么使用?

開發 后端
既然我們要介紹 gRPC 怎么在 Golang 語言中使用,那么我們必須搭建 Golang 開發環境。這部分內容比較簡單,本文就不再贅述了,如果有讀者朋友對這塊內容不清楚,建議閱讀 Golang 官網文檔。

[[423367]]

01介紹

在之前的兩篇文章中,我們已經介紹了使用 gRPC 創建 RPC 應用的前導知識。我們了解到 gRPC 支持多語言,本文我們介紹在 Golang 語言中怎么使用 gRPC。

02準備工作

既然我們要介紹 gRPC 怎么在 Golang 語言中使用,那么我們必須搭建 Golang 開發環境。這部分內容比較簡單,本文就不再贅述了,如果有讀者朋友對這塊內容不清楚,建議閱讀 Golang 官網文檔。

此外,我們還需要安裝接口設計語言 Protocol buffer 的編譯器 protoc,我們在之前的文章「Protobuf - 更小、更快、更簡單的交互式數據語言」中也已經介紹過 protoc 的安裝方法,本文就不再贅述了,如果有需要了解的讀者朋友,可以翻閱一下這篇文章。

最后,我們介紹一下 protoc 編譯生成 pb 文件需要使用的插件 protoc-gen-go 和 protoc-gen-go-grpc。插件安裝方式,具體如下:

執行 go install 命令安裝插件

  1. go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 
  2.  go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1 

修改 PATH

  1. $ export PATH="$PATH:$(go env GOPATH)/bin" 

完成以上兩步之后,我們就可以使用 protoc 編譯 .proto 文件,生成 pb 文件了。

03編寫 .proto 文件和生成 pb 文件

在 Golang 語言中使用 gRPC,首先編寫 .proto 文件,然后使用 protoc 編譯 .proto 文件生成 pb 文件,最后編寫剩余的 Golang 代碼。

接口設計語言 protobuf,在之前的文章 「Golang 語言 gRPC 使用的接口設計語言 protobuf」 中也已經介紹過了,本文不再贅述,如果有需要了解的讀者朋友,可以翻閱一下這篇文章。

示例代碼:

編寫 .proto 文件。

  1. syntax = "proto3"
  2.  
  3. option go_package = "advanced_go/lesson06/proto/greeter"
  4.  
  5. service Greeter { 
  6.   rpc SayHello (HelloRequest) returns (HelloReply) {} 
  7.  
  8. message HelloRequest { 
  9.   string name = 1; 
  10.  
  11. message HelloReply { 
  12.   string message = 1; 

使用 protoc 編譯 .proto 文件,生成 pb 文件。

  1. $ protoc --go_out=. --go_opt=paths=source_relative \ 
  2. --go-grpc_out=. --go-grpc_opt=paths=source_relative \ 
  3. proto/helloworld.proto 

04編寫服務端和客戶端 Golang 代碼

我們在之前的文章中介紹過 gRPC 是什么,接下來,我們通過示例代碼介紹在 Golang 語言中怎么使用 gRPC,本文先來介紹使用 gRPC 的編碼流程,限于篇幅,關于 gRPC 的更多使用方法,后續會新開篇文章介紹。

首先使用接口設計語言 protobuf 的編譯器 protoc、protoc-gen-go 和 protoc-gen-go-grpc 插件生成 pb 文件,我們通過查看生成的 pb 文件,可以看到 protoc 為我們自動生成結構體、接口和方法等 Golang 代碼。

接下來,我們只需把剩余的 Golang 代碼寫完就可以了,具體實現如下:

服務端示例代碼:

  1. const ( 
  2.  port = ":50051" 
  3.  
  4. type server struct { 
  5.  pb.UnimplementedGreeterServer 
  6.  
  7. func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { 
  8.  log.Printf("Received: %v"in.GetName()) 
  9.  return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil 
  10.  
  11. func main () { 
  12.  lis, err := net.Listen("tcp", port) 
  13.  if err != nil { 
  14.   log.Fatalf("failed to listen: %v", err) 
  15.  } 
  16.  s := grpc.NewServer() 
  17.  pb.RegisterGreeterServer(s, &server{}) 
  18.  log.Printf("server listening at %v", lis.Addr()) 
  19.  if err := s.Serve(lis); err != nil { 
  20.   log.Fatalf("failed to serve: %v", err) 
  21.  } 

閱讀上面這段代碼,我們使用 Golang 語言編寫了 SayHello 方法,該方法實際上就是 pb 文件中自動生成的 SayHello 方法的具體實現,對應自動生成的 pb 文件 helloworld_grpc.pb.go 中的代碼如下:

  1. // UnimplementedGreeterServer must be embedded to have forward compatible implementations. 
  2. type UnimplementedGreeterServer struct { 
  3.  
  4. func (UnimplementedGreeterServer) SayHello(context.Context, *HelloRequest) (*HelloReply, error) { 
  5.  return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented"

在 main 函數中,我們使用 grpc 調用 NewServer 函數創建一個服務,然后使用 pb 文件中的 RegisterGreeterServer 函數注冊服務,對應自動生成的 pb 文件 helloworld_grpc.pb.go 中的代碼如下:

  1. func RegisterGreeterServer(s grpc.ServiceRegistrar, srv GreeterServer) { 
  2.  s.RegisterService(&Greeter_ServiceDesc, srv) 

客戶端示例代碼:

  1. const( 
  2.  address = ":50051" 
  3.  defaultName = "word" 
  4.  
  5. func main () { 
  6.  conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) 
  7.  if err != nil { 
  8.   log.Fatalf("did not connect: %v", err) 
  9.  } 
  10.  defer conn.Close() 
  11.  c := pb.NewGreeterClient(conn) 
  12.  
  13.  name := defaultName 
  14.  if len(os.Args) > 1 { 
  15.   name = os.Args[1] 
  16.  } 
  17.  ctx, cancel := context.WithTimeout(context.Background(), time.Second
  18.  defer cancel() 
  19.  r, err := c.SayHello(ctx, &pb.HelloRequest{Namename}) 
  20.  if err != nil { 
  21.   log.Fatalf("could not greet: %v", err) 
  22.  } 
  23.  log.Printf("Greeting: %s", r.GetMessage()) 

閱讀上面這段代碼,我們使用 pb 文件中的 NewGreeterClient 方法創建一個客戶端,然后就可以使用創建的客戶端直接調用服務端的 SayHello 方法,對應自動生成的 pb 文件 helloworld_grpc.pb.go 中的代碼如下:

  1. type GreeterClient interface { 
  2.  SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloReply, error) 
  3.  
  4. type greeterClient struct { 
  5.  cc grpc.ClientConnInterface 
  6.  
  7. func NewGreeterClient(cc grpc.ClientConnInterface) GreeterClient { 
  8.  return &greeterClient{cc} 
  9.  
  10. func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloReply, error) { 
  11.  out := new(HelloReply) 
  12.  err := c.cc.Invoke(ctx, "/Greeter/SayHello"inout, opts...) 
  13.  if err != nil { 
  14.   return nil, err 
  15.  } 
  16.  return out, nil 

編寫完服務端和客戶端代碼,接下來,我們分別啟動服務端和客戶端,執行結果如下:

  1. go run grpc_server/main.go  
  2. 2021/09/11 23:02:59 server listening at [::]:50051 
  3. 2021/09/11 23:03:23 Received: word 
  4. 2021/09/11 23:03:31 Received: frank 
  5.  
  6. go run grpc_client/main.go  
  7. 2021/09/11 23:03:23 Greeting: Hello word 
  8.  
  9. go run grpc_client/main.go frank 
  10. 2021/09/11 23:03:31 Greeting: Hello frank 

05總結

本文我們介紹在 Golang 語言中怎么使用 gRPC,為了方便讀者朋友們理解,文章通過一個簡單示例從零到一的實現,介紹了在 Golang 語言中使用 gRPC 的編碼流程。

建議讀者朋友們閱讀完本文,動手敲一遍示例代碼,來進一步加深理解。限于篇幅,關于 gRPC 的更多使用方法,我們后續撰文介紹。

編碼流程歸納如下:

 

  1. 搭建 Golang 開發環境。
  2. 安裝 protobuf 編譯器 protoc 和插件 protoc-gen-go、protoc-gen-go-grpc,設置環境變量。
  3. 初始化項目 go mod init。
  4. 編寫 protobuf,生成 pb 文件,執行 go mod tidy 整理依賴包。
  5. 編寫剩余 Golang 代碼。

 

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

2021-09-26 10:20:06

開發Golang代碼

2022-02-20 23:15:46

gRPCGolang語言

2021-09-01 23:29:37

Golang語言gRPC

2021-06-07 23:19:44

Golang語言 Defer

2021-01-29 08:56:13

Golang標準庫函數

2021-07-12 05:05:59

Golang語言字段

2025-01-13 06:00:00

Go語言gRPC

2021-06-09 23:36:46

Golang語言版本

2021-10-10 23:02:49

Golang語言代碼

2021-12-13 01:24:14

語言Golang panic

2021-06-29 23:40:19

Golang語言并發

2021-11-08 23:09:07

Go排序數據

2021-04-28 09:02:48

Golang語言Context

2021-07-26 11:19:43

微服務開發技術

2021-12-05 23:14:24

微服務GolanggRPC

2025-02-04 13:53:18

NixGogRPC

2021-10-31 23:01:50

語言拼接字符串

2021-11-28 23:06:30

語言編程接口

2022-01-04 23:13:57

語言PanicGolang

2022-04-29 11:52:02

API代碼HTTP
點贊
收藏

51CTO技術棧公眾號

欧美大片免费观看| 欧美日韩一区二区电影| 国产在线一区二| 亚洲欧美偷拍视频| 成人一区而且| 在线91免费看| 波多野结衣之无限发射| 国产午夜在线观看| 国产综合色产在线精品| 97久久超碰福利国产精品…| 四虎永久免费在线观看| 亚洲国产一区二区久久| 婷婷综合久久一区二区三区| 亚洲精品久久久久久一区二区| av男人天堂网| 老司机精品视频网站| 久久亚洲欧美日韩精品专区| 亚洲最大的黄色网| 综合欧美精品| 欧美在线一二三四区| 欧美这里只有精品| av在线免费观看网| av网站免费线看精品| 国产在线精品播放| 在线视频一区二区三区四区| 欧美精品黄色| 中文欧美日本在线资源| 亚洲一区二区三区综合| 亚洲成av人片在线观看www| 日韩欧美亚洲综合| 国产曰肥老太婆无遮挡| 成人在线观看免费网站| 中文字幕精品综合| 欧美日韩国产精品一区二区| 好男人www在线视频| 激情综合一区二区三区| 国产精品久久久精品| 亚洲高清毛片一区二区| 天天综合一区| 中文字幕在线成人| 国产免费看av| 欧美18免费视频| 欧美精品一区二区三区久久久| 五月天中文字幕在线| 桃子视频成人app| 疯狂蹂躏欧美一区二区精品| 日本a视频在线观看| 四虎亚洲成人| 亚洲欧洲av一区二区三区久久| 日韩av高清| 国产高清视频免费最新在线| 91蝌蚪porny| 久久一区二区三区av| 欧美熟妇交换久久久久久分类 | 国产欧美一区视频| 欧美精品久久| 国产在线观看高清视频| 国产午夜亚洲精品午夜鲁丝片| 久久精品99| 日韩欧美电影在线观看| 91美女福利视频| 免费国产在线精品一区二区三区| 日韩电影在线观看完整版| 26uuu精品一区二区三区四区在线| 精品国产一二| 青青国产在线| 国产日韩欧美a| 视频在线观看成人| 日本美女高清在线观看免费| 亚洲欧洲精品天堂一级| 草草草视频在线观看| 91色在线看| 日韩欧美亚洲一二三区| 国产九九在线观看| 亚洲成人五区| 亚洲国产精品字幕| 欧美 日韩 国产 成人 在线观看 | 国产高清一区日本| 99在线观看视频| 日韩一区二区三区不卡| 91女神在线视频| 欧美极品一区二区| 日韩精品成人av| 亚洲综合色在线| 草草久久久无码国产专区| 日本免费久久| 欧美日韩国产小视频在线观看| 伊人五月天婷婷| 精品欠久久久中文字幕加勒比| 亚洲美女精品久久| 开心激情五月网| 亚洲午夜视频| 国产福利精品在线| 国产肥老妇视频| 97精品久久久久中文字幕 | 国产精品videosex极品| 6080yy精品一区二区三区| 五月天中文字幕| 国产成人日日夜夜| 日本一区二区久久精品| 伊人手机在线| 色综合天天在线| xxxx国产视频| 一本久久青青| 欧美黑人巨大xxx极品| 日韩欧美国产另类| 国产白丝精品91爽爽久久| 日韩欧美视频第二区| 最新国产露脸在线观看| 欧美午夜电影网| 亚洲一区二区在线免费| 婷婷综合视频| 国产成人精品亚洲精品| 丰满肥臀噗嗤啊x99av| 中文字幕精品一区二区精品绿巨人| 六月婷婷激情综合| 亚洲青青久久| 在线播放国产一区二区三区| 久久黄色小视频| 另类人妖一区二区av| 久久96国产精品久久99软件| 91蜜桃在线视频| 精品视频一区二区三区免费| 网站免费在线观看| 狠狠色丁香久久综合频道| 成人疯狂猛交xxx| 你懂的在线播放| 亚洲成人在线网站| 欧美69精品久久久久久不卡| 久久在线视频| 日本伊人精品一区二区三区介绍 | 天天操天天干视频| 国产成人精品影视| 一区在线电影| 99欧美精品| 亚洲香蕉伊综合在人在线视看 | 国产精品刘玥久久一区| 在线亚洲免费视频| 一级特级黄色片| 日韩视频精品在线观看| 电影午夜精品一区二区三区| 国产一二三区在线观看| 欧美日韩国产不卡| 综合 欧美 亚洲日本| 日韩激情一二三区| 日本在线观看一区二区| 日韩免费va| 国产香蕉一区二区三区在线视频 | 久久中文免费视频| 久久成人麻豆午夜电影| 亚洲精品在线观看免费| 日本美女久久| 最近2019中文字幕第三页视频| 男操女视频网站| 国产日本亚洲高清| wwwwww.色| 日韩一区自拍| 成人综合国产精品| 污网站在线免费看| 欧美电影免费提供在线观看| 久久国产一级片| 成人av网站免费| 日本一道本久久| 要久久爱电视剧全集完整观看 | 亚洲国产精品无码久久久| 久久美女高清视频| 熟女少妇精品一区二区| 精品一级毛片| 91亚洲精华国产精华| 羞羞的视频在线观看| 亚洲成av人乱码色午夜| 三级视频在线观看| 国产精品免费av| 激情在线观看视频| 影音先锋久久| 青娱乐国产91| 欧美大片91| 91国产美女在线观看| 成人在线免费观看| 欧美一级日韩不卡播放免费| 精品亚洲永久免费| 久久久久久久久久久久久女国产乱| 国产免费又粗又猛又爽| 欧美精品午夜| 女女同性女同一区二区三区91| 国产精品久久久久久吹潮| 美女999久久久精品视频| 欧美一级淫片免费视频魅影视频| 色爱区综合激月婷婷| www.av成人| 99re视频精品| 日韩视频在线观看一区二区三区| 亚洲一级网站| 亚洲高清在线播放| 成人高潮a毛片免费观看网站| 欧美在线一级视频| 黄色网在线看| 亚洲嫩模很污视频| 国产不卡精品视频| 一本大道久久a久久精二百| 午夜精品一区二区三级视频| 成人午夜电影网站| www.精品在线| 亚洲影院一区| 水蜜桃在线免费观看| 久久不见久久见国语| 97视频热人人精品| 成人亚洲网站| 欧美一级高清免费| 色女人在线视频| 中文字幕亚洲一区| 亚州精品国产精品乱码不99按摩| 欧美久久免费观看| 日韩在线 中文字幕| 亚洲主播在线观看| 91视频最新网址| 久久久久久久久免费| 白嫩情侣偷拍呻吟刺激 | 国产免费成人av| 日韩在线伦理| 午夜精品理论片| 岛国成人毛片| 色噜噜狠狠狠综合曰曰曰| 香蕉av在线播放| 精品久久久久久久久久久久久久久| 在线观看免费视频一区| 日韩欧亚中文在线| jizz国产免费| 亚洲自拍偷拍综合| 毛片aaaaa| 亚洲色图在线看| 亚洲精品视频网址| 国产午夜一区二区三区| 亚洲第一香蕉网| 91在线国产观看| 一区二区免费在线观看视频| 丰满放荡岳乱妇91ww| 男插女视频网站| 国内不卡的二区三区中文字幕| 美女喷白浆视频| 日韩激情中文字幕| 天美星空大象mv在线观看视频| 免费亚洲婷婷| av天堂永久资源网| 久久久久久穴| 黄色三级视频片| 日韩国产成人精品| 狠狠热免费视频| 麻豆精品国产传媒mv男同| 精品久久久久久中文字幕2017| 日韩电影在线观看一区| 另类小说第一页| 精品在线免费观看| 亚洲最大天堂网| 国产一区二区h| 国产成人精品综合久久久久99| 国产一区二区0| 成人在线观看一区二区| aaa亚洲精品一二三区| 久久久国产精品无码| 久久这里都是精品| 无码人妻aⅴ一区二区三区69岛| 国产三级精品视频| 一级片黄色录像| 亚洲免费在线播放| 国语对白一区二区| 色哟哟一区二区| 最近中文字幕免费观看| 91精品国产综合久久香蕉的特点 | 久久久久亚洲av成人片| 亚洲影视资源网| 国产成人免费看| 在线亚洲欧美专区二区| 国产露脸国语对白在线| 日韩免费观看高清完整版| 熟妇人妻中文av无码| 亚洲热线99精品视频| 黄色一级大片在线免费看产| 色综合久久天天综线观看| 热三久草你在线| 国产精品视频1区| 深夜福利一区二区三区| 久久伊人资源站| 国产精品久久久久久久| 99在线免费视频观看| 日韩高清国产一区在线| 中文字幕avav| 国产亚洲精品中文字幕| 午夜免费激情视频| 日韩欧美999| 国产日韩免费视频| 亚洲裸体xxxx| 久操视频在线播放| 欧美夜福利tv在线| 国产不卡精品| 欧美久久在线| 欧美日韩亚洲一区| 香蕉视频禁止18| 成人涩涩免费视频| 国产一区二区三区视频播放| 午夜精品影院在线观看| 91午夜交换视频| 亚洲男人天堂久| 色在线视频网| 国产精品亚洲片夜色在线| 国产精品毛片视频| 一区二区日本| 日韩专区中文字幕一区二区| 女人扒开双腿让男人捅 | 日韩精品中文字幕有码专区 | 久久久久在线观看| 日韩三区四区| 日本一区二区三区在线视频| 激情文学一区| 中文字幕一区二区在线观看视频 | 国产精品 欧美激情| 一本久道久久综合中文字幕 | 99久久亚洲国产日韩美女| 国产午夜精品在线| 欧美精品1区| 爱爱爱爱免费视频| 国产午夜精品一区二区三区视频 | 人妖欧美1区| 成人黄色在线播放| 欧美一级本道电影免费专区| aa在线观看视频| 成人午夜精品一区二区三区| 99自拍视频在线| 欧美日韩在线电影| 毛片在线免费| 欧美最猛性xxxxx(亚洲精品)| 成人自拍在线| 国产女主播自拍| 懂色av中文一区二区三区| 极品久久久久久| 日韩一级高清毛片| 2024最新电影免费在线观看| 成人黄色av网| 色777狠狠狠综合伊人| 男人插女人下面免费视频| 久久婷婷成人综合色| wwwwww国产| 亚洲人成电影在线| 欧美艳星kaydenkross| 欧美男人的天堂| 久久字幕精品一区| 蜜桃传媒一区二区亚洲| 色狠狠色狠狠综合| 成人资源www网在线最新版| 国产精品户外野外| 成人在线免费观看视频| 尤物国产在线观看| 中文字幕亚洲在| 国产成人精品一区二区无码呦 | 日韩在线三级| 美女视频一区二区| 999精品在线视频| 日韩一区二区视频在线观看| 2020国产在线视频| 国产精品国产亚洲精品看不卡15 | 99久久99久久综合| 中文字幕乱码一区二区三区| 久久国产麻豆精品| 91插插插插插插| 日韩女优av电影| 日本免费一区二区六区| 日本一区二区三区四区高清视频| 男男成人高潮片免费网站| fc2ppv在线播放| 精品日韩一区二区三区免费视频| 99色在线观看| 日本一区二区三不卡| 韩日av一区二区| 国产午夜精品无码一区二区| 精品香蕉一区二区三区| 国产在线|日韩| 青青视频免费在线| 91亚洲精品一区二区乱码| 无码人妻丰满熟妇区五十路| 色婷婷av一区二区三区久久| 精品国产乱码一区二区三区| 色欲色香天天天综合网www| 久久久久久电影| 国产精品午夜福利| 97在线视频免费看| 欧美日韩一二| 日本性生活一级片| 欧美在线影院一区二区| bl视频在线免费观看| 日韩精品福利视频| 国产成人精品免费视频网站| 91精品国产高清一区二区三密臀| 久热精品视频在线| 自拍欧美一区| 日韩欧美中文在线视频| 欧美日韩中文字幕| caoporn97在线视频| 欧美激情导航| 成人精品亚洲人成在线| 一区精品在线观看|