go-zero 單體服務(wù)

2022-04-25 17:47 更新

前言

由于go-zero集成了web/rpc于一體,社區(qū)有部分小伙伴會(huì)問我,go-zero的定位是否是一款微服務(wù)框架,答案是不止于此, go-zero雖然集眾多功能于一身,但你可以將其中任何一個(gè)功能獨(dú)立出來去單獨(dú)使用,也可以開發(fā)單體服務(wù), 不是說每個(gè)服務(wù)上來就一定要采用微服務(wù)的架構(gòu)的設(shè)計(jì),這點(diǎn)大家可以看看作者(kevin)的第四期開源說 ,其中對此有詳細(xì)的講解。

創(chuàng)建greet服務(wù)

$ mkdir go-zero-demo
$ cd go-zero-demo
$ go mod init go-zero-demo
$ goctl api new greet
$ go mod tidy
Done.

說明:如無 cd 改變目錄的操作,所有操作均在 go-zero-demo 目錄執(zhí)行

查看一下?greet?服務(wù)的目錄結(jié)構(gòu)

$ tree greet
greet
├── etc
│   └── greet-api.yaml
├── greet.api
├── greet.go
└── internal
    ├── config
    │   └── config.go
    ├── handler
    │   ├── greethandler.go
    │   └── routes.go
    ├── logic
    │   └── greetlogic.go
    ├── svc
    │   └── servicecontext.go
    └── types
        └── types.go

由以上目錄結(jié)構(gòu)可以觀察到,?greet?服務(wù)雖小,但"五臟俱全"。接下來我們就可以在?greetlogic.go?中編寫業(yè)務(wù)代碼了。

編寫邏輯

$ vim greet/internal/logic/greetlogic.go
func (l *GreetLogic) Greet(req *types.Request) (*types.Response, error) {
    return &types.Response{
        Message: "Hello go-zero",
    }, nil
}

啟動(dòng)并訪問服務(wù)

  • 啟動(dòng)服務(wù)

$ cd greet
$ go run greet.go -f etc/greet-api.yaml

輸出如下,服務(wù)啟動(dòng)并偵聽在8888端口:

Starting server at 0.0.0.0:8888...

  • 訪問服務(wù)

$ curl -i -X GET http://localhost:8888/from/you

  • 返回如下:

HTTP/1.1 200 OK
Content-Type: application/json
Date: Sun, 07 Feb 2021 04:31:25 GMT
Content-Length: 27

{"message":"Hello go-zero"}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號