日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747



本文我們介紹怎么使用命令行工具 micro new 創建一個 gRPC 服務,并且怎么構建和運行服務。

?01 介紹

Go 開源項目 Micro? 為我們提供一套微服務解決方案,它主要包含兩個部分,分別是微服務框架 go-micro? 和命令行工具 micro。

其中, go-micro? 是一個易用且強大的框架,很多在生產環境運行的項目中在使用 go-micro v1.x 或 v2.x 版本,因為 v3 版本的變動較大,所以很少項目會選擇升級到 v3 版本。

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

雖然命令行工具不是必須的,我們不使用它,也可以使用 go-micro? 創建一個 gRPC 服務。但是,使用命令行工具 micro 可以更加便捷的開發和管理項目。

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

我們在之前的文章中介紹過不借助命令行工具 micro?,直接使用 go-micro? 手動編寫代碼創建一個 gRPC 服務,本文我們介紹怎么使用命令行工具 micro 自動創建一個模板項目。

02 使用命令行工具 micro 生成 gRPC 服務

安裝:

GO111MODULE=on go get github.com/micro/micro/[email protected]

創建項目:

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

閱讀上面這段命令行代碼,我們使用命令行工具 micro? 創建一個項目,服務名稱是 hello。

命令行參數:

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

注意:micro new 的其他參數,感興趣的讀者朋友們請查閱文檔。

我們在運行上面這段命令行代碼之后,終端會輸出以下內容:

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

閱讀上面終端輸出的內容,我們可以發現,micro new? 在 hello 目錄中,為我們自動生成了模板代碼。

安裝 protobuf 和依賴項:

因為 micro 使用 protobuf 定義服務接口,所以我們需要先安裝 protobuf 和依賴項。

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

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

需要注意的是,protoc-gen-micro? 是由 micro 官方開發的 protobuf 的擴展,用于生成 micro 的相關代碼,我們在安裝時,需要顯式開啟 Go Module。

注意:關于 protobuf 的相關內容,我們在之前的文章中介紹過,限于篇幅,本文不再贅述。

構建并運行服務:

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

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

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

cd hello
GO111MODULE=on go get github.com/micro/go-micro/[email protected]

注意:指定 go-micro 的版本,目的是避免因為版本問題,導致不可預知的陷阱。

在我們使用 go build? 構建項目之前,我們先編譯 hello.proto 文件。

編譯 hello.proto 文件:

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

運行編譯 hello.proto? 文件的命令之后,我們可以發現在 proto/hello? 目錄中多出兩個文件,分別是 hello.pb.go? 和 hello.pb.micro.go。

構建:

go build -o hello-service *.go

運行構建命令之后,我們可以發現目錄中多出一個二進制文件 hello-service。

運行服務:

./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
 

到此,我們已經完成使用命令行工具 micro new? 創建一個服務名稱為 hello 的 gRPC 服務,并且成功構建并運行該服務。

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

03 總結

本文我們介紹怎么使用命令行工具 micro new 創建一個 gRPC 服務,并且怎么構建和運行服務。

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

在安裝 micro 官方開發的 protobuf 擴展 protoc-gen-micro 時,我們一定要顯式開啟 Go Module。

我們安裝命令行工具 micro?之前,需要先設置代理。因為官方已不維護 go-micro? 的 v1 和 v2 版本,所以,我們需要使用代理安裝,推薦使用 https://goproxy.cn。

參考資料:

  1. https://micro.dev/getting-started#creating-a-service
  2. https://github.com/go-micro

分享到:
標簽:語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定