由于go-zero集成了web/rpc于一體,社區(qū)有部分小伙伴會問我,go-zero的定位是否是一款微服務(wù)框架,答案是不止于此, go-zero雖然集眾多功能于一身,但你可以將其中任何一個功能獨立出來去單獨使用,也可以開發(fā)單體服務(wù), 不是說每個服務(wù)上來就一定要采用微服務(wù)的架構(gòu)的設(shè)計,這點大家可以看看作者(kevin)的第四期開源說 ,其中對此有詳細(xì)的講解。
$ 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
}
$ cd greet
$ go run greet.go -f etc/greet-api.yaml
輸出如下,服務(wù)啟動并偵聽在8888端口:
Starting server at 0.0.0.0:8888...
$ 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"}
更多建議: