国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

go-zero學(xué)習(xí) 第一章 基礎(chǔ)

這篇具有很好參考價(jià)值的文章主要介紹了go-zero學(xué)習(xí) 第一章 基礎(chǔ)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

重要提示

  1. 因官網(wǎng)重新改版,本文是基于官網(wǎng)最新版本的文檔并整合舊文檔重新進(jìn)行全面總結(jié)、歸納。
  2. 本文主要對(duì)官網(wǎng) 快速開始 進(jìn)行提煉總結(jié),未涉及部分將在后續(xù)章節(jié)陸續(xù)補(bǔ)充完善。

1 相關(guān)命令

  1. go-zerogoctl工具下載
go install github.com/zeromicro/go-zero/tools/goctl@latest
  1. 驗(yàn)證goctl的安裝結(jié)果:
goctl -v
  1. goctl一鍵安裝 protocprotoc-gen-go、protoc-gen-go-grpc
goctl env check --install --verbose --force
  1. go-zero快速生成API服務(wù)
goctl api new greet
  1. api文件格式化
goctl api format --dir xxx.api
  1. go-zero快速生成RPC服務(wù)
goctl rpc new demo

2 參考文檔

  1. 官方文檔:go-zero

3 架構(gòu)圖

go-zero學(xué)習(xí) 第一章 基礎(chǔ)

4 go-zero開發(fā)環(huán)境搭建

go-zero的是基于go語言的,所以首先需要安裝配置go環(huán)境,go的安裝配置可參考:Golang安裝配置、GoLand安裝配置 ,此處不再贅述。

4.1 注意事項(xiàng)

注意:如果是更新go-zero相關(guān)組件的版本,建議先備份原來的組件,防止最新版本的組件出現(xiàn)不兼容的問題。

4.2 go-zero 需要安裝的組件

  • goctl
  • protoc
  • protoc-gen-go
  • protoc-gen-go-grpc

4.3 自動(dòng)安裝4.4 手動(dòng)安裝 均能安裝go-zero的環(huán)境,如果按照4.3 自動(dòng)安裝某個(gè)組件失敗,可按4.4 手動(dòng)安裝 來安裝缺失的組件。

4.3 自動(dòng)安裝

  1. 先下載 goctl
go install github.com/zeromicro/go-zero/tools/goctl@latest
  1. 驗(yàn)證goctl的安裝結(jié)果:goctl -v
D:\Software\Golang\GOPATH\bin>goctl -v
goctl version 1.5.3 windows/amd64
  1. goctl一鍵安裝 protoc、protoc-gen-go、protoc-gen-go-grpc
goctl env check --install --verbose --force

4.4 手動(dòng)安裝

  1. goctl安裝
go install github.com/zeromicro/go-zero/tools/goctl@latest
  1. Protobuf下載安裝
    需要先下載protoc執(zhí)行器
  • 到 https://github.com/protocolbuffers/protobuf/releases 分別下載WindowsLinux環(huán)境的執(zhí)行器
  • 選擇最新版本的protoc下載
    go-zero學(xué)習(xí) 第一章 基礎(chǔ)
  • 將下載的文件解壓,將解壓后的bin目錄加入到環(huán)境變量的path下。
  • 查看安裝是否成功:protoc --version

ProtobufGo、GRPC插件的安裝

protoc-gen-goGo專用的protoc的編譯器插件,安裝后會(huì)在GOPATHbin目錄下生成一個(gè)protoc-gen-go.exe
protoc-gen-go-grpGo調(diào)用grpc的插件,安裝后會(huì)在GOPATHbin目錄下生成一個(gè)protoc-gen-go-grpc.exe

go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1

至此使用Protobuf的準(zhǔn)備工作就做完了。

5 單體服務(wù)

5.1 簡單入門

參考文檔:api demo 代碼生成

  1. 快速生成API服務(wù),API服務(wù)如果不與Service端【RPC端】交互,則可以獨(dú)立成一個(gè)單獨(dú)的服務(wù)。
goctl api new greet
  1. 目錄結(jié)構(gòu):
.
│  go.mod
│  greet.api
│  greet.go
│
├─etc
│      greet-api.yaml
│
└─internal
    ├─config
    │      config.go
    │
    ├─handler
    │      greethandler.go
    │      routes.go
    │
    ├─logic
    │      greetlogic.go
    │
    ├─svc
    │      servicecontext.go
    │
    └─types
            types.go
  1. 啟動(dòng)服務(wù):
cd greet
go mod init
go mod tidy
go run greet.go -f etc/greet-api.yaml
  1. 默認(rèn)偵聽在 8888 端口(可以在配置文件里修改端口),請(qǐng)求:
curl -i http://localhost:8888/from/you

返回如下:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Traceparent: 00-0c577bd0a5d96c7b9669d3bba60d6b09-5f4e42e62eb6a79e-00
Date: Mon, 19 Jun 2023 14:25:01 GMT
Content-Length: 4

null

5.2 api語法

參考:api語法

5.3 api 文件格式化

參考:api文件格式化

api文件編寫完之后,我們的api內(nèi)容參差不齊,就有如下內(nèi)容:

# 格式化前
syntax = "v1"

type User {
    Id int64 `json:"id"`
    Name string `json:"name"`
    Age int `json:"age"`
    Description string `json:"description"`
}

type Student {
    Id int64 `json:"id"`
    No int64 `json:"no"`
    Name string `json:"name"`
    Age int `json:"age"`
    Description string `json:"description"`
}

service User {
    @handler ping
    get /ping
}

這樣的api文件不夠美觀,不便于閱讀,可以使用 goctl api format 命令對(duì) api 文件進(jìn)行格式化。

# 格式化后
syntax = "v1"

type User {
	Id          int64  `json:"id"`
	Name        string `json:"name"`
	Age         int    `json:"age"`
	Description string `json:"description"`
}

type Student {
	Id          int64  `json:"id"`
	No          int64  `json:"no"`
	Name        string `json:"name"`
	Age         int    `json:"age"`
	Description string `json:"description"`
}

service User {
	@handler ping
	get /ping
}

6 微服務(wù)

6.1 簡單入門

參考文檔:gRPC demo 代碼生成

  1. 快速生成RPC服務(wù)
goctl rpc new demo
  1. 目錄結(jié)構(gòu):
.
│  demo.go
│  demo.proto
│  go.mod
│
├─demo
│      demo.pb.go
│      demo_grpc.pb.go
│
├─democlient
│      demo.go
│
├─etc
│      demo.yaml
│
└─internal
    ├─config
    │      config.go
    │
    ├─logic
    │      pinglogic.go
    │
    ├─server
    │      demoserver.go
    │
    └─svc
            servicecontext.go
  1. 編寫簡單的邏輯代碼:
  • 找到 /demo/internal/logic/demologic.go 文件,編輯該文件,將 29 行替換為如下代碼:
return &demo.Response{
    Pong:"pong",
}, nil
  • 修改配置文件 /demo/etc/demo.yaml,刪除 3 至 7 行使用Etcd注冊(cè)服務(wù)的內(nèi)容,然后在追加內(nèi)容 Mode: dev 至末尾:

goctl 生成最小化 gRPC 服務(wù)默認(rèn)啟動(dòng)會(huì)向 ETCD 注冊(cè)中心注冊(cè)當(dāng)前服務(wù)的信息,本次演示就不需要注冊(cè)中心,所以刪除了配置文件中的注冊(cè)中心配置。

原始配置:

Name: demo.rpc
ListenOn: 0.0.0.0:8080
Etcd:
  Hosts:
  - 127.0.0.1:2379
  Key: demo.rpc

更改后的配置:

Name: demo.rpc
ListenOn: 0.0.0.0:8080
Mode: dev
  1. 啟動(dòng)服務(wù):
# 進(jìn)入服務(wù)目錄
$ cd /demo
# 整理依賴文件
$ go mod tidy
# 啟動(dòng) go 程序
$ go run demo.go

當(dāng)控制臺(tái)有如下輸出 Starting rpc server at 0.0.0.0:8080...,說明服務(wù)已經(jīng)啟動(dòng)成功,接著我們來訪問一下該 gRPC 服務(wù)。

  1. 訪問gRPC服務(wù)
    使用Postman訪問測(cè)試,注意這是訪問gRPC服務(wù),所以需要?jiǎng)?chuàng)建grpc類型的請(qǐng)求。
    go-zero學(xué)習(xí) 第一章 基礎(chǔ)

go-zero學(xué)習(xí) 第一章 基礎(chǔ)


go-zero學(xué)習(xí) 第一章 基礎(chǔ)

當(dāng)在Postman中看到如下輸出內(nèi)容時(shí),代表你的服務(wù)已經(jīng)啟動(dòng),并能成功訪問。

{
  "pong": "pong"
}

6.2 proto 語法

參考:proto 語法文章來源地址http://www.zghlxwxcb.cn/news/detail-493177.html

7 目錄結(jié)構(gòu)介紹

  1. 目錄結(jié)構(gòu)
example
├── etc
│   └── example.yaml
├── main.go
└── internal
    ├── config
    │   └── config.go
    ├── handler
    │   ├── xxxhandler.go
    │   └── xxxhandler.go
    ├── logic
    │   └── xxxlogic.go
    ├── svc
    │   └── servicecontext.go
    └── types
        └── types.go
  1. 各文件介紹
  • example:單個(gè)服務(wù)目錄,一般是某微服務(wù)名稱。
  • etc:靜態(tài)配置文件目錄。
  • main.go:程序啟動(dòng)入口文件。
  • internal:單個(gè)服務(wù)內(nèi)部文件,其可見范圍僅限當(dāng)前服務(wù)。
  • config:靜態(tài)配置文件對(duì)應(yīng)的結(jié)構(gòu)體聲明目錄。
  • handler:handler 目錄,可選,一般 http 服務(wù)會(huì)有這一層做路由管理,handler 為固定后綴。
  • logic:業(yè)務(wù)目錄,所有業(yè)務(wù)編碼文件都存放在這個(gè)目錄下面,logic 為固定后綴。
  • svc:依賴注入目錄,所有 logic 層需要用到的依賴都要在這里進(jìn)行顯式注入。
  • types:結(jié)構(gòu)體存放目錄。

到了這里,關(guān)于go-zero學(xué)習(xí) 第一章 基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【go-zero】go-zero分布式鎖實(shí)戰(zhàn) | apifox測(cè)試go-zero分布式鎖方式

    包地址:github.com/zeromicro/go-zero/core/stores/redis 使用場景: 為了防止并發(fā)的下載相同的excel 我們通過redis鎖來控制請(qǐng)求相同的excel下載 個(gè)人思路: req為API傳入的請(qǐng)求參數(shù) 然后加密成md5的字符串,這樣可以處理 相同的請(qǐng)求

    2024年02月15日
    瀏覽(18)
  • 【go-zero】docker鏡像直接部署go-zero的API與RPC服務(wù) 如何實(shí)現(xiàn)注冊(cè)發(fā)現(xiàn)?docker network 實(shí)現(xiàn) go-zero 注冊(cè)發(fā)現(xiàn)

    【go-zero】docker鏡像直接部署go-zero的API與RPC服務(wù) 如何實(shí)現(xiàn)注冊(cè)發(fā)現(xiàn)?docker network 實(shí)現(xiàn) go-zero 注冊(cè)發(fā)現(xiàn)

    使用docker直接部署go-zero微服務(wù)會(huì)發(fā)現(xiàn)API無法找到RPC服務(wù) 用docker直接部署 我們會(huì)發(fā)現(xiàn)API無法注冊(cè)發(fā)現(xiàn)RPC服務(wù) 原因是我們?nèi)鄙倭薲ocker的network網(wǎng)橋 RPC服務(wù)運(yùn)行正常 API服務(wù)啟動(dòng),通過docker logs 查看日志還是未發(fā)現(xiàn)RPC API的yaml配置 RPC服務(wù)的IP是 127.0.0.1 與對(duì)應(yīng)的端口 下圖為改成了定

    2024年02月13日
    瀏覽(28)
  • 【go-zero】go-zero阿里云oss 前端上傳文件到go-zero API服務(wù) 并在k8s pod中創(chuàng)建文件 并推送到阿里云oss 最佳實(shí)踐

    問題:在本地通過上傳文件,然后將文件推送到aliyun的oss中,是沒問題的 但是部署到了k8s中,則出現(xiàn)了問題,一直報(bào)錯(cuò)沒有創(chuàng)建的權(quán)限 思路:開始認(rèn)為應(yīng)該將該文件掛載到configmap中,然后通過這種方式修改了deployment和dockerfile。最終發(fā)現(xiàn)應(yīng)該是go的創(chuàng)建文件路徑方式搞錯(cuò)了,

    2024年02月13日
    瀏覽(29)
  • go-zero系列:接入Prometheus

    go-zero系列:接入Prometheus

    參考文檔:https://zhuanlan.zhihu.com/p/463418864 https://prometheus.io/download/ 進(jìn)入下載文件夾,比如prometheus-2.44.0.windows-amd64。 然后雙擊Prometheus.exe啟動(dòng)軟件。 啟動(dòng)后,可以訪問 http://127.0.0.1:9090/。就能查看Prometheus后臺(tái)。 然后重啟go-zero項(xiàng)目,能看到輸出日志:Starting prometheus agent at 0.0.

    2024年02月16日
    瀏覽(19)
  • go-zero的服務(wù)發(fā)現(xiàn)源碼閱讀

    go-zero的服務(wù)發(fā)現(xiàn)源碼閱讀

    服務(wù)發(fā)現(xiàn)原理與grpc源碼解析_wangxiaoangg的博客-CSDN博客 ? go-zero rpc demo官方文檔:rpc編寫與調(diào)用 | go-zero 目錄 一 服務(wù)注冊(cè) 1.?創(chuàng)建rpc服務(wù) 2. 啟動(dòng)rpc服務(wù) 3.?registerEtcd做了什么 4.?discov.NewPublisher 服務(wù)發(fā)布者 二 服務(wù)發(fā)現(xiàn) 1.定義注冊(cè)resolver 2.解析etcd地址創(chuàng)建鏈接 3.update方法 在看rp

    2024年02月06日
    瀏覽(16)
  • go-zero 開發(fā)之安裝 etcd

    本文只涉及 Linux 上的安裝。 二進(jìn)制安裝 下載二進(jìn)制安裝包 下載地址示例: 解壓二進(jìn)制安裝包 刪除二進(jìn)制安裝包 版本檢查 啟動(dòng) etcd 往 etcd 寫讀數(shù)據(jù) Docker 安裝 etcd 主要使用 Google 容器注冊(cè)表(gcr.io)下的 gcr.io/etcd-development/etcd 倉庫來存儲(chǔ)其容器鏡像。作為次要選項(xiàng),它還使

    2024年02月04日
    瀏覽(18)
  • go-zero微服務(wù)實(shí)戰(zhàn)——服務(wù)構(gòu)建

    go-zero微服務(wù)實(shí)戰(zhàn)——服務(wù)構(gòu)建

    接上一節(jié)go-zero微服務(wù)實(shí)戰(zhàn)——基本環(huán)境搭建。搭建好了微服務(wù)的基本環(huán)境,開始構(gòu)建整個(gè)微服務(wù)體系了,將其他服務(wù)也搭建起來。 order的目錄結(jié)構(gòu),如下 根目錄 api服務(wù) rpc服務(wù) 自定義邏輯層logic 自定義參數(shù)層models 自定義工具層util api服務(wù)和rpc服務(wù)都是基于goctl一鍵生成的,當(dāng)

    2024年02月14日
    瀏覽(24)
  • 使用go-zero快速構(gòu)建微服務(wù)

    使用go-zero快速構(gòu)建微服務(wù)

    本文是對(duì) 使用go-zero快速構(gòu)建微服務(wù) [1] 的親手實(shí)踐 編寫API Gateway代碼 mkdir api goctl api -o api/bookstore.api cd api goctl api go -api bookstore.api -dir . go run bookstore.go -f etc/bookstore-api.yaml 啟動(dòng)API Gateway服務(wù),默認(rèn)偵聽在8888端口 因?yàn)槟J(rèn)生成的 api/etc/bookstore-api.yml 為: 按提示下載,再次運(yùn)行

    2024年02月13日
    瀏覽(25)
  • go-zero的rpc服務(wù)案例解析

    go-zero的rpc服務(wù)案例解析

    go-zero的遠(yuǎn)程調(diào)用服務(wù)是基于gRpc的gRPC教程與應(yīng)用。 zero使用使用gRpc需要安裝 protoc 插件,因?yàn)間Rpc基于protoc插件使用protocol buffers文件生成rpc服務(wù)器和api的代碼的。 gRPC 的代碼生成還依賴 protoc-gen-go,protoc-gen-go-grpc 插件來配合生成 Go 語言的 gRPC 代碼。 也可以使用go get命令安裝

    2024年02月13日
    瀏覽(21)
  • go-zero 是如何做路由管理的?

    原文鏈接: go-zero 是如何做路由管理的? go-zero 是一個(gè)微服務(wù)框架,包含了 web 和 rpc 兩大部分。 而對(duì)于 web 框架來說,路由管理是必不可少的一部分,那么本文就來探討一下 go-zero 的路由管理是怎么做的,具體采用了哪種技術(shù)方案。 路由管理方案有很多種,具體應(yīng)該如何選

    2024年02月13日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包