Go gRPC環(huán)境安裝教程示例詳解
前言
gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設(shè)計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多復用請求等特。這些特性使得其在移動設(shè)備上表現(xiàn)更好,更省電和節(jié)省空間占用。
在 gRPC 里客戶端應用可以像調(diào)用本地對象一樣直接調(diào)用另一臺不同的機器上服務端應用的方法,使得您能夠更容易地創(chuàng)建分布式應用和服務。
gRPC 默認使用 protocol buffers,這是 Google 開源的一套成熟的結(jié)構(gòu)數(shù)據(jù)序列化機制,它的作用與 XML、json 類似,但它是二進制格式,性能好、效率高(缺點:可讀性差)。
安裝 protobuf
1.下載地址:https://github.com/protocolbuffers/protobuf/releases
根據(jù)自身電腦的操作系統(tǒng),選擇最新的releases版本下載
2.解壓后在bin目錄找到protoc.exe,然后把它復制到GOBIN目錄下
一般操作是把protoc.exe所在的目錄配到環(huán)境變量里,這里直接把protoc.exe復制到GOBIN目錄下,前提是環(huán)境變量已經(jīng)配置了GOBIN環(huán)境變量。
3.打開cmd,運行protoc --version
成功打印當前版本信息證明安裝成功了。
安裝相關(guān)包
安裝 golang 的proto工具包
go get -u github.com/golang/protobuf/proto
安裝 goalng 的proto編譯支持
go get -u github.com/golang/protobuf/protoc-gen-go
安裝 gRPC 包
go get -u google.golang.org/grpc
創(chuàng)建并編譯proto文件
1.新建proto文件夾,在里面新建simple.proto文件
syntax = "proto3";// 協(xié)議為proto3 package proto; // 定義發(fā)送請求信息 message SimpleRequest{ // 定義發(fā)送的參數(shù) // 參數(shù)類型 參數(shù)名 標識號(不可重復) string data = 1; } // 定義響應信息 message SimpleResponse{ // 定義接收的參數(shù) // 參數(shù)類型 參數(shù)名 標識號(不可重復) int32 code = 1; string value = 2; } // 定義我們的服務(可定義多個服務,每個服務可定義多個接口) service Simple{ rpc Route (SimpleRequest) returns (SimpleResponse){}; }
2.編譯proto文件
cmd進入simple.proto所在目錄,運行以下指令進行編譯
protoc --go_out=plugins=grpc:./ ./simple.proto
VSCode-proto3插件介紹
使用VSCode的朋友看這里,博主介紹一個VSCode插件,方便對編輯和編譯proto文件。
- 擴展程序中搜索 VSCode-proto3,然后點擊安裝。
- 在設(shè)置中找到setting.json文件,添加vscode-proto3插件配置
// vscode-proto3插件配置 "protoc": { // protoc.exe所在目錄 "path": "C:\\Go\\bin\\protoc.exe", // 保存時自動編譯 "compile_on_save": true, "options": [ // go編譯輸出指令 "--go_out=plugins=grpc:." ] }
每次編輯完proto文件后,只需要保存,它就會自動幫助完成編譯。而且代碼有高亮顯示,代碼自動補全,代碼格式化等功能。
教程源碼地址:https://github.com/Bingjian-Zhu/go-grpc-example
以上就是Go gRPC環(huán)境安裝教程示例詳解的詳細內(nèi)容,更多關(guān)于Go gRPC環(huán)境安裝教程的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在ubuntu下構(gòu)建go語言開發(fā)環(huán)境的方法
這篇文章主要介紹了在ubuntu下構(gòu)建go語言開發(fā)環(huán)境的方法,需要的朋友可以參考下2014-10-10淺析Go語言中的map數(shù)據(jù)結(jié)構(gòu)是如何實現(xiàn)的
在?Go?中,map?是一種用于存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),它提供了一種快速查找和訪問數(shù)據(jù)的方式,下面我們就來看看Go語言中是如何實現(xiàn)map數(shù)據(jù)結(jié)構(gòu)的吧2024-03-03Go panic和recover函數(shù)使用細節(jié)深入探究
這篇文章主要為大家介紹了Go?的panic和recover函數(shù)使用細節(jié)深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12go?module化?import?調(diào)用本地模塊?tidy的方法
這篇文章主要介紹了go?module化?import?調(diào)用本地模塊?tidy的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09