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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Grpc+Grpc Gateway实践一 介绍与环境安装

發布時間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Grpc+Grpc Gateway实践一 介绍与环境安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹與環境安裝

假定我們有一個項目需求,希望用Rpc作為內部API的通訊,同時也想對外提供Restful Api,寫兩套又太繁瑣不符合

于是我們想到了Grpc以及Grpc Gateway,這就是我們所需要的

準備環節

在正式開始我們的Grpc+Grpc Gateway實踐前,我們需要先配置好我們的開發環境

  • Grpc
  • Protoc Plugin
  • Protocol Buffers
  • Grpc-gateway

Grpc

是什么

Google對Grpc的定義:

A high performance, open-source universal RPC framework

也就是Grpc是一個高性能、開源的通用RPC框架,具有以下特性:

  • 強大的IDL,使用Protocol Buffers作為數據交換的格式,支持v2、v3(推薦v3)
  • 跨語言、跨平臺,也就是Grpc支持多種平臺和語言
  • 支持HTTP2,雙向傳輸、多路復用、認證等

安裝

1、官方推薦(需科學上網)

go get -u google.golang.org/grpc

2、通過github.com

進入到第一個$GOTPATH目錄(因為go get 會默認安裝在第一個下)下,新建google.golang.org目錄,拉取golang在github上的鏡像庫:

cd /usr/local/go/path/src mkdir google.golang.orgcd google.golang.org/git clone https://github.com/grpc/grpc-gomv grpc-go/ grpc/

目錄結構:

google.golang.org/ └── grpc...

而在grpc下有許多常用的包,例如:

  • metadata:定義了grpc所支持的元數據結構,包中方法可以對MD進行獲取和處理
  • credentials:實現了grpc所支持的各種認證憑據,封裝了客戶端對服務端進行身份驗證所需要的所有狀態,并做出各種斷言
  • codes:定義了grpc使用的標準錯誤碼,可通用

Protoc Plugin

是什么

編譯器插件

安裝

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

將Protoc Plugin的可執行文件從$GOPATH中移動到$GOBIN下

mv /usr/local/go/path/bin/protoc-gen-go /usr/local/go/bin/

Protocol Buffers v3

是什么

Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format.

Protocol Buffers是Google推出的一種數據描述語言,支持多語言、多平臺,它是一種二進制的格式,總得來說就是更小、更快、更簡單、更靈活,目前分別有v2、v3的版本,我們推薦使用v3

  • proto2 文檔地址
  • proto3 文檔地址

建議可以閱讀下官方文檔的介紹,本系列會在使用時簡單介紹所涉及的內容

安裝

wget https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.zip unzip protobuf-all-3.5.1.zip cd protobuf-3.5.1/ ./configure make make install

檢查是否安裝成功

protoc --version

如果出現報錯

protoc: error while loading shared libraries: libprotobuf.so.15: cannot open shared object file: No such file or directory

則執行ldconfig后,再次運行即可成功

為什么要執行ldconfig

我們通過控制臺輸出的信息可以知道,Protocol Buffers Libraries的默認安裝路徑在/usr/local/lib

Libraries have been installed in:/usr/local/libIf you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:- add LIBDIR to the `LD_LIBRARY_PATH' environment variableduring execution- add LIBDIR to the `LD_RUN_PATH' environment variableduring linking- use the `-Wl,-rpath -Wl,LIBDIR' linker flag- have your system administrator add LIBDIR to `/etc/ld.so.conf'See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.

而我們安裝了一個新的動態鏈接庫,ldconfig一般在系統啟動時運行,所以現在會找不到這個lib,因此我們要手動執行ldconfig,讓動態鏈接庫為系統所共享,它是一個動態鏈接庫管理命令,這就是ldconfig命令的作用

protoc使用

我們按照慣例執行protoc --help(查看幫助文檔),我們抽出幾個常用的命令進行講解

1、-IPATH, --proto_path=PATH:指定import搜索的目錄,可指定多個,如果不指定則默認當前工作目錄

2、--go_out:生成golang源文件

參數

若要將額外的參數傳遞給插件,可使用從輸出目錄中分離出來的逗號分隔的參數列表:

protoc --go_out=plugins=grpc,import_path=mypackage:. *.proto
  • import_prefix=xxx:將指定前綴添加到所有import路徑的開頭
  • import_path=foo/bar:如果文件沒有聲明go_package,則用作包。如果它包含斜杠,那么最右邊的斜杠將被忽略。
  • plugins=plugin1+plugin2:指定要加載的子插件列表(我們所下載的repo中唯一的插件是grpc)
  • Mfoo/bar.proto=quux/shme: M參數,指定.proto文件編譯后的包名(foo/bar.proto編譯后為包名為quux/shme)

Grpc支持

如果proto文件指定了RPC服務,protoc-gen-go可以生成與grpc相兼容的代碼,我們僅需要將plugins=grpc參數傳遞給--go_out,就可以達到這個目的

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

Grpc-gateway

是什么

grpc-gateway is a plugin of protoc. It reads gRPC service definition, and generates a reverse-proxy server which translates a RESTful JSON API into gRPC. This server is generated according to custom options in your gRPC definition.

grpc-gateway是protoc的一個插件。它讀取gRPC服務定義,并生成一個反向代理服務器,將RESTful JSON API轉換為gRPC。此服務器是根據gRPC定義中的自定義選項生成的。

安裝

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway

如果出現以下報錯,我們分析錯誤提示可得知是連接超時(大概是被墻了)

package google.golang.org/genproto/googleapis/api/annotations: unrecognized import path "google.golang.org/genproto/googleapis/api/annotations" (https fetch: Get https://google.golang.org/genproto/googleapis/api/annotations?go-get=1: dial tcp 216.239.37.1:443: getsockopt: connection timed out)

有兩種解決方法,

1、科學上網

2、通過github.com

進入到第一個$GOPATH目錄的google.golang.org目錄下,拉取genproto在github上的go-genproto鏡像庫:

cd /usr/local/go/path/src/google.golang.orggit clone https://github.com/google/go-genproto.gitmv go-genproto/ genproto/

在安裝完畢后,我們將grpc-gateway的可執行文件從$GOPATH中移動到$GOBIN

mv /usr/local/go/path/bin/protoc-gen-grpc-gateway /usr/local/go/bin/

到這里我們這節就基本完成了,建議多反復看幾遍加深對各個組件的理解!

參考

示例代碼

  • grpc-hello-world

總結

以上是生活随笔為你收集整理的Grpc+Grpc Gateway实践一 介绍与环境安装的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产另类视频 | 先锋影音一区二区 | 亚洲污视频 | 福利国产片| 日韩操操操 | 久久久久人妻一道无码AV | 国产免费激情 | 欧美三级精品 | 中文字幕一区二区三区久久久 | 99热97| 午夜色网站| 日韩在线观看视频一区 | 操处女逼视频 | 日本黄色免费 | 欧美伊人久久 | 久久午夜无码鲁丝片午夜精品 | 波多野结衣在线观看一区二区三区 | 亚洲欧美激情一区二区三区 | 日本xxxxwwwww | 天天躁夜夜躁狠狠躁 | 天海翼视频在线观看 | 天天操天天干视频 | 国产免费黄色大片 | 国产人成一区二区三区影院 | 国产成人精品免高潮在线观看 | 自拍偷拍激情 | 国产精品亚洲综合 | 日韩视频第一页 | 亚洲天堂日韩在线 | 欧美日韩久久久久久 | 在线播放日韩av | 亚洲香蕉av| 污污小视频 | 张津瑜国内精品www在线 | 欧美一区二区三区久久成人精品 | 片多多在线观看 | 野战少妇38p| 日韩视频h| 日日草 | 国内精品久久久久 | 中文字幕精品一区二区精品 | 毛片网站在线播放 | 日本在线视频不卡 | 按摩毛片 | 久久七| 亚洲色图20p | 春色校园激情 | 夜夜躁狠狠躁日日躁av | 国产成人一区二区三区视频 | 日韩天天 | 久久国产亚洲精品无码 | 奇米色播| 国产人成视频在线观看 | 久久夜夜操 | 米奇久久 | 欧美一区二区公司 | 国产福利小视频在线 | 亚洲黄色片视频 | 一区二区三区日 | av午夜激情 | 亚洲成人av一区二区三区 | 夜夜夜久久久 | 国产91久久精品一区二区 | 久久精品欧美日韩 | 成人国产片女人爽到高潮 | 成人免费网站在线 | 最新视频 - 8mav | 日韩免费观看 | 国产中文在线视频 | www.毛片com | 国产h在线观看 | 老司机精品视频在线 | 日本九九视频 | 日韩欧美三级视频 | 草莓视频一区二区三区 | 亚洲免费观看高清完整版在线 | 91国产一区二区 | 蜜桃av噜噜一区二区三区网址 | 日本人体一区 | 欧美调教视频 | 国产精品久久久久久久久免费相片 | 无码粉嫩虎白一线天在线观看 | 天天操天天射天天 | 久久久久久久亚洲精品 | 日本日韩欧美 | 日韩在线黄色 | 一级少妇女片 | 一区二区三区免费在线观看视频 | 少妇真实被内射视频三四区 | 黄色在线网站 | 欧美日韩a | 国产一区二区在线播放 | 日韩中文字幕亚洲精品欧美 | 精射女上司 | 亚洲免费看黄 | 日本网站在线免费观看 | 九热视频在线观看 | 欧美黄大片 | 成人在线影片 |