日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gRPC快速入门记录

發布時間:2023/11/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gRPC快速入门记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么使用grpc

1.protocl buffer一種高效的序列化結構。
2.支持http 2.0標準化協議。

http/2

1.http/2對每個源只需創建一個持久連接,在這一個連接內,可以并行的處理多個請求和響應,而且做到不相互影響。
2.允許客戶端和服務端實現自己的數據流和連接流控制,這對我們傳輸大數據非常有幫助。

安裝 grpc 與 protobuf 解釋器

這里我們需要使用 protobuf 解釋器 將 protobuf 語法的代碼轉化成對應語言的代碼,以及使用 grpc 實現跨越性,所以我們需要先安裝它們。
本教程中只會用到 python3 以及 golang ,所以我們只安裝這兩個語言的解釋器就足夠了

python3 安裝 grpc 與 protobuf

安裝 grpc 庫

pip3 install grpcio

安裝 grpc 工具 以及 protobuf 解釋器

pip3 install grpcio-tools googleapis-common-protos

go 安裝 grcp 與 protobuf

安裝 grpc 庫:

go get -u -v google.golang.org/grpc

然后從 https://github.com/protocolbuffers/protobuf/releases 下載 與你操作系統對應的 protobuf 解釋器,這里選擇的 linux64 進行下載
首先新建一個目錄用來容納下載安裝包解壓后的文件,并進入目錄

mkdir protobuf && cd protobuf

下載 protobuf 解釋器

wget https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip

解壓縮下載的文件

unzip protoc*.zip

刪除剛才下載好的壓縮包

rm protoc*.zip

移動 protobuf 目錄到 ~/.local

mv ~/protobuf/ ~/.local/

將 protobuf 的可執行文件添加進系統變量

echo "PATH=\"\$HOME/.local/protobuf/bin:\$PATH\"" >> ~/.profile

安裝 protobuf go 語言的插件

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

將插件添加進系統變量

echo "PATH=\$PATH:\$GOPATH/bin" >> ~/.profile

然后使用 cd 命令回到用戶根目錄

cd

使用 grpc

創建本次使用的工程目錄

創建工程目錄并進入目錄

mkdir $GOPATH/src/demo && cd $GOPATH/src/demo

編寫 proto 文件

proto 文件為 protobuf 的擴展名,我們編寫這個文件用于生成 python 與 go 都支持的代碼。
這里我們再新建一個目錄用來容納 proto 文件以及 使用 protobuf 編譯器轉化過的代碼
創建目錄并進入目錄

mkdir hello && cd hello

接下來開始編寫 proto 文件,這里我們新建一個 名為 hello.proto 的文件并在里面寫入以下內容

syntax = "proto3"; //指定語法為 protobuf3 語法,如果不寫這句的話默認語法為 protobuf2 package hello; //指定包名,這句在本次演示中只對 go 生效,python 的 protobuf 解釋器會忽略它service Greeter { // 定義grpc 遠程調用的方法rpc SayHello (HelloRequest) returns (HelloReply) {} // 接受 HelloRequest 返回 HelloReply,SayHello 需要自己在服務端實現 }message HelloRequest { //定義一個消息類型string name = 1; //定義 name 字段為 string 類型 tag 為 1 }message HelloReply {string message = 1; }

完成后保存并退出編輯

生成對應語言的代碼

編輯好 proto 文件后我們并不能直接使用它,還需要將它轉化成對應語言的代碼才能使用
生成 go 語言的代碼

protoc hello.proto --go_out=plugins=grpc:.

生成 python 的代碼

python3 -m grpc_tools.protoc -I . --python_out=. --grpc_python_out=. hello.proto

然后我們回到 demo 工程目錄,開始真正的 代碼編寫

cd ..

編寫服務端

服務端端這里我采用的 go 語言進行編寫
創建一個名為 server.go 的文件并寫入以下內容

package mainimport ("context""google.golang.org/grpc""google.golang.org/grpc/reflection""log""demo/hello""net" )const (port = ":50051" // 監聽端口 )type server struct{}func (s *server) SayHello(ctx context.Context, in *hello.HelloRequest) (*hello.HelloReply, error) { // 服務端實現 proto 中定義的方法return &hello.HelloReply{Message: "Hello " + in.Name}, nil //拼接客戶端發送過來的消息,并返回給客戶端 }func main() {lis, err := net.Listen("tcp", port) // 啟動監聽if err != nil {log.Fatalf("failed to listen: %v", err) }s := grpc.NewServer()hello.RegisterGreeterServer(s, &server{})reflection.Register(s) // 在 grpc 上注冊服務if err := s.Serve(lis); err != nil { //啟動服務并處理錯誤log.Fatalf("failed to server: %v", err) } }

編寫 客戶端

客戶端我采用的 python3 進行編寫
創建一個名為 client.py 的文件寫入以下內容

#! /usr/bin/env python3 # -*- coding: utf-8 -*-import grpc # 導入 grpc 模塊import sys sys.path.append('hello') # 將 hello 目錄臨時添加進環境變量,不然接下來的導入會失敗import hello_pb2 #導入我們剛才從 helloWorld.proto 生成的 python 代碼 import hello_pb2_grpcdef run():with grpc.insecure_channel('localhost:50051') as channel: # 創建連接到服務端的通道stub = hello_pb2_grpc.GreeterStub(channel) #創建提供調用的存根response = stub.SayHello(hello_pb2.HelloRequest(name = 'niconiconi')) #調用 SayHello 方法 發送我們剛才在 proto 文件中定義的字段,返回我們在 proto 中定義的返回值print("Greeter client received: " + response.message) #打印返回值if __name__ == '__main__':run()

運行 grpc 服務端與客戶端

首先我們啟動服務端

go run server.go

使用 CTRL + z 將 正在運行的服務端掛起在后臺,然后使用 bg命令使掛起的 程序繼續運行。
接下來運行我們編寫的客戶端

python3 client.py

不出意外的話你的屏幕上應該會打印

Greeter client received: Hello niconiconi

到這里 演示就全部結束了。

轉載于:https://www.cnblogs.com/Paul-watermelon/p/11338019.html

總結

以上是生活随笔為你收集整理的gRPC快速入门记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费看黄 | a免费观看 | 免费看片网站91 | 自拍偷拍小视频 | jizz在线看 | 91视频社区 | 91插插插永久免费 | 偷拍xxxx| 亚洲精品xxxx | 久久免费黄色 | 国产丝袜视频在线 | 天天看天天色 | 高h放荡受浪受bl | 亚洲久久久久久久 | 国产丝袜在线播放 | 国产黄色在线观看 | 欧美精品v | 啪啪网视频| 亚欧精品在线 | 午夜黄视频 | 黄色美女毛片 | 亚洲av无码国产在丝袜线观看 | 都市激情麻豆 | 亚洲一区二区动漫 | 日韩欧美国产另类 | 制服.丝袜.亚洲.另类.中文 | 都市激情麻豆 | 日本女人性视频 | 色婷网 | 欧美三级一区 | xxx黄色片 | 麻豆久久久久久 | 黄色在线观看av | 国产欧美视频一区 | 自偷自拍亚洲 | 老司机在线精品视频 | 成人人人人人欧美片做爰 | 黄色大视频| 国产农村妇女毛片精品久久麻豆 | 四虎5151久久欧美毛片 | 国产午夜福利精品 | 日韩在线不卡一区 | 免费中文字幕在线观看 | 人妻无码中文字幕 | 日本一区二区三区网站 | 国产精品精品久久久 | 舐め犯し波多野结衣在线观看 | 日本加勒比一区 | 天堂中文在线资 | 小视频免费在线观看 | 人人澡超碰碰97碰碰碰 | aa一级黄色片 | 国产成人精品一区二区三区在线 | 精品欧美乱码久久久久久 | 永久久久久久久 | av视屏在线| 中文一级片 | 日本午夜电影 | 人人爱国产 | 久久久精品一区二区三区 | 日韩久久视频 | 欧美片网站yy | 两个人看的www视频免费完整版 | 91插插插插 | 色婷婷六月 | 91香蕉视频在线观看免费 | 污污网站在线观看 | 奇米四色影视 | 欧美亚洲综合一区 | 不卡欧美 | 九九久久精品视频 | 亚洲av成人精品一区二区三区在线播放 | 国产裸体网站 | 亚欧美一区二区三区 | 日韩天堂在线 | 久久无码人妻一区二区三区 | 欧美视频在线观看一区二区三区 | 国产在线精品播放 | 天天操网站 | 91丨porny丨国产入口 | 免费精品视频一区二区三区 | 99免费精品视频 | 熟女少妇一区二区三区 | 午夜剧场免费看 | 俺去草 | 日韩在线播放一区 | 中国人妖和人妖做爰 | 国产美女主播在线观看 | 欧美夜夜骑 | 天堂网8| 中文字幕不卡 | 香蕉色综合 | 夜夜春夜夜爽 | 午夜91视频| 制服中文字幕 | 中文在线不卡视频 | 国产精品成人一区二区网站软件 | 欧美激情一区二区三区四区 | 日韩精品国产一区 |