成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 語(yǔ)言怎么一鍵生成一個(gè) gRPC 服務(wù)?

開(kāi)發(fā) 前端
本文我們介紹怎么使用命令行工具 micro new 創(chuàng)建一個(gè) gRPC 服務(wù),并且怎么構(gòu)建和運(yùn)行服務(wù)。

?01 介紹

Go 開(kāi)源項(xiàng)目 Micro? 為我們提供一套微服務(wù)解決方案,它主要包含兩個(gè)部分,分別是微服務(wù)框架 go-micro? 和命令行工具 micro。

其中, go-micro? 是一個(gè)易用且強(qiáng)大的框架,很多在生產(chǎn)環(huán)境運(yùn)行的項(xiàng)目中在使用 go-micro v1.x 或 v2.x 版本,因?yàn)?v3 版本的變動(dòng)較大,所以很少項(xiàng)目會(huì)選擇升級(jí)到 v3 版本。

命令行工具 micro? 也是基于 go-micro 開(kāi)發(fā)的,它提供了很多便捷功能。

雖然命令行工具不是必須的,我們不使用它,也可以使用 go-micro? 創(chuàng)建一個(gè) gRPC 服務(wù)。但是,使用命令行工具 micro 可以更加便捷的開(kāi)發(fā)和管理項(xiàng)目。

此外,官方還提供了一些插件 go-plugins,go-micro 使用插件架構(gòu)設(shè)計(jì),可以非常靈活地組合各種功能,我們也可以自己開(kāi)發(fā)插件,滿足我們自己的個(gè)性化需求。本文不涉及插件,暫時(shí)不做詳細(xì)介紹。

我們?cè)谥暗奈恼轮薪榻B過(guò)不借助命令行工具 micro?,直接使用 go-micro? 手動(dòng)編寫代碼創(chuàng)建一個(gè) gRPC 服務(wù),本文我們介紹怎么使用命令行工具 micro 自動(dòng)創(chuàng)建一個(gè)模板項(xiàng)目。

02 使用命令行工具 micro 生成 gRPC 服務(wù)

安裝:

GO111MODULE=on go get github.com/micro/micro/v2@v2.4.0

創(chuàng)建項(xiàng)目:

micro new --namespace=com.foo --gopath=false hello

閱讀上面這段命令行代碼,我們使用命令行工具 micro? 創(chuàng)建一個(gè)項(xiàng)目,服務(wù)名稱是 hello。

命令行參數(shù):

  • micro new 使用命令行工具 micro 和其子命令 new 創(chuàng)建一個(gè) gRPC 服務(wù)。
  • --namespcae=com.foo 指定服務(wù)的命名空間。
  • --gopath=fase? 在當(dāng)前目錄生成代碼,而不是生成到 GOPATH 目錄。
  • hello 指定服務(wù)名稱。

注意:micro new 的其他參數(shù),感興趣的讀者朋友們請(qǐng)查閱文檔。

我們?cè)谶\(yùn)行上面這段命令行代碼之后,終端會(huì)輸出以下內(nèi)容:

Creating service com.foo.service.hello in hello

.
├── main.go
├── generate.go
├── plugin.go
├── handler
│ └── hello.go
├── subscriber
│ └── hello.go
├── proto/hello
│ └── hello.proto
├── Dockerfile
├── Makefile
├── README.md
├── .gitignore
└── go.mod


download protobuf for micro:

brew install protobuf
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u github.com/micro/protoc-gen-micro/v2

compile the proto file hello.proto:

cd hello
protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. proto/hello/hello.proto

閱讀上面終端輸出的內(nèi)容,我們可以發(fā)現(xiàn),micro new? 在 hello 目錄中,為我們自動(dòng)生成了模板代碼。

安裝 protobuf 和依賴項(xiàng):

因?yàn)?micro 使用 protobuf 定義服務(wù)接口,所以我們需要先安裝 protobuf 和依賴項(xiàng)。

brew install protobuf
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
GO111MODULE=on go get -u github.com/micro/protoc-gen-micro/v2

在我們運(yùn)行 micro new? 命令之后,終端中已經(jīng)為我們輸出安裝 protobuf 和依賴項(xiàng)的提示,并且提供了安裝命令,我們只需運(yùn)行安裝命令即可。

需要注意的是,protoc-gen-micro? 是由 micro 官方開(kāi)發(fā)的 protobuf 的擴(kuò)展,用于生成 micro 的相關(guān)代碼,我們?cè)诎惭b時(shí),需要顯式開(kāi)啟 Go Module。

注意:關(guān)于 protobuf 的相關(guān)內(nèi)容,我們?cè)谥暗奈恼轮薪榻B過(guò),限于篇幅,本文不再贅述。

構(gòu)建并運(yùn)行服務(wù):

雖然 micro new? 在生成代碼時(shí),為我們生成了一個(gè) Makefile? 文件,其中,包含一些常用的任務(wù),我們可以使用 make 命令運(yùn)行該文件中定義好的任務(wù)。

但是我決定在本文中不使用 make? 命令,原因是讀者朋友們可能有人不熟悉 make?,為了避免增加這部分讀者的學(xué)習(xí)成本,我仍然使用 go 命令。

需要注意的是,我們需要先運(yùn)行 go get? 安裝指定版本的 go-micro?,目的是避免在代碼編譯期間,自動(dòng)安裝最新版本的 go-micro。

cd hello
GO111MODULE=on go get github.com/micro/go-micro/v2@v2.4.0

注意:指定 go-micro 的版本,目的是避免因?yàn)榘姹締?wèn)題,導(dǎo)致不可預(yù)知的陷阱。

在我們使用 go build? 構(gòu)建項(xiàng)目之前,我們先編譯 hello.proto 文件。

編譯 hello.proto 文件:

cd hello
protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. proto/hello/hello.proto

運(yùn)行編譯 hello.proto? 文件的命令之后,我們可以發(fā)現(xiàn)在 proto/hello? 目錄中多出兩個(gè)文件,分別是 hello.pb.go? 和 hello.pb.micro.go。

構(gòu)建:

go build -o hello-service *.go

運(yùn)行構(gòu)建命令之后,我們可以發(fā)現(xiàn)目錄中多出一個(gè)二進(jìn)制文件 hello-service。

運(yùn)行服務(wù):

./hello-service
2023-03-04 17:00:54 level=info Starting [service] com.foo.service.hello
2023-03-04 17:00:54 level=info Server [grpc] Listening on [::]:50669
2023-03-04 17:00:54 level=info Broker [eats] Connected to [::]:50671
2023-03-04 17:00:54 level=info Registry [mdns] Registering node: com.foo.service.hello-e0057b02-6432-4d0d-b1e4-2b87ea1034a3
2023-03-04 17:00:54 level=info Subscribing to topic: com.foo.service.hello

到此,我們已經(jīng)完成使用命令行工具 micro new? 創(chuàng)建一個(gè)服務(wù)名稱為 hello 的 gRPC 服務(wù),并且成功構(gòu)建并運(yùn)行該服務(wù)。

注意:如果遇到一些無(wú)法解決的問(wèn)題,可以嘗試刪除 GOPATH/pkg/mod 目錄下的文件后重試。

03 總結(jié)

本文我們介紹怎么使用命令行工具 micro new 創(chuàng)建一個(gè) gRPC 服務(wù),并且怎么構(gòu)建和運(yùn)行服務(wù)。

需要注意的是,在構(gòu)建之前,我們先指定 go-micro 版本,避免在代碼編譯時(shí)使用最新版本,掉入不可預(yù)知的陷阱。

在安裝 micro 官方開(kāi)發(fā)的 protobuf 擴(kuò)展 protoc-gen-micro 時(shí),我們一定要顯式開(kāi)啟 Go Module。

我們安裝命令行工具 micro?之前,需要先設(shè)置代理。因?yàn)楣俜揭巡痪S護(hù) go-micro? 的 v1 和 v2 版本,所以,我們需要使用代理安裝,推薦使用 https://goproxy.cn。

參考資料:

  1. https://micro.dev/getting-started#creating-a-service
  2. https://github.com/go-micro
責(zé)任編輯:武曉燕 來(lái)源: Golang語(yǔ)言開(kāi)發(fā)棧
相關(guān)推薦

2025-05-20 09:39:57

GogRPC微服務(wù)

2015-02-09 15:25:52

換膚

2022-08-02 14:27:01

HDF驅(qū)動(dòng)框架驅(qū)動(dòng)開(kāi)發(fā)

2024-03-15 14:34:12

Oracle數(shù)據(jù)庫(kù)一鍵巡檢

2019-10-11 11:00:53

Nginx神器前端

2021-12-02 07:50:29

分支服務(wù)git worktre

2024-01-02 12:17:44

Go傳統(tǒng)遠(yuǎn)程

2025-04-24 10:37:46

MCP服務(wù)器DevOps容器

2024-06-21 10:27:21

Service生成工具鴻蒙

2023-03-28 16:37:38

論文視頻

2023-12-19 15:45:07

Linux工具

2025-03-03 03:35:00

DeepSeekXmind思維導(dǎo)圖

2020-05-11 09:40:47

IDEA代碼神器

2023-02-07 10:40:30

gRPC系統(tǒng)Mac

2025-06-05 05:22:00

2020-08-25 20:10:53

GitHub代碼開(kāi)發(fā)者

2025-02-04 13:53:18

NixGogRPC

2017-11-14 11:12:50

Go語(yǔ)言編譯器

2015-11-03 15:29:49

ONOS開(kāi)放網(wǎng)絡(luò)操作系統(tǒng)SDN

2023-06-01 15:30:30

Service代碼生成工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩在线观看中文字幕 | 黄片毛片在线观看 | 国产成人综合网 | 久久69精品久久久久久久电影好 | 九九久久国产精品 | 日韩视频 中文字幕 | 欧美一级淫片007 | 成人国产一区二区三区精品麻豆 | 亚洲色图网址 | 99资源| 91国产精品 | 欧美一区二区三区在线看 | 天天操网 | 欧美日韩国产在线观看 | 一区视频 | 国产精品久久久久久久久久妇女 | 久草视频在线播放 | 99精品热视频 | 日本午夜网站 | 成年网站在线观看 | 欧美激情一区二区三区 | 国产激情精品视频 | 日本爱爱| 国产成人精品一区二区三区 | 91精品久久久久久久久 | 亚洲人成在线播放 | 黄色毛片网站在线观看 | 日韩中文一区二区三区 | 91视频正在播放 | 久久不卡| 91成人影院 | 精品久久香蕉国产线看观看亚洲 | 久久网站免费视频 | 日本在线看 | 午夜免费网站 | 日本三级做a全过程在线观看 | 一区二区三区精品 | 国产在线资源 | 四虎最新 | 久久97精品 | 亚洲国产高清在线观看 |