单体服务

前言

由于go-zero集成了web/rpc于一体,社区有部分小伙伴会问我,go-zero的定位是否是一款微服务框架, 答案是否定的,go-zero虽然集众多功能于一身,但你可以将其中任何一个功能独立出来去单独使用,也可以开发单体服务, 不是说每个服务上来就一定要采用微服务的架构的设计,这点大家可以看看作者(kevin)的第四期开源说 ,其中对此有详细的讲解。

创建greet服务

  1. $ cd ~/go-zero-demo
  2. $ goctl api new greet
  3. Done.

查看一下greet服务的结构

  1. $ cd greet
  2. $ tree
  1. .
  2. ├── etc
  3. └── greet-api.yaml
  4. ├── greet.api
  5. ├── greet.go
  6. └── internal
  7. ├── config
  8. └── config.go
  9. ├── handler
  10. ├── greethandler.go
  11. └── routes.go
  12. ├── logic
  13. └── greetlogic.go
  14. ├── svc
  15. └── servicecontext.go
  16. └── types
  17. └── types.go

由以上目录结构可以观察到,greet服务虽小,但”五脏俱全”。接下来我们就可以在greetlogic.go中编写业务代码了。

编写逻辑

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

启动并访问服务

  • 启动服务

    1. $ cd ~/go-zero-demo/greet
    2. $ go run greet.go -f etc/greet-api.yaml
    1. Starting server at 0.0.0.0:8888...
  • 访问服务

    1. $ curl -i -X GET \
    2. http://localhost:8888/from/you
    1. HTTP/1.1 200 OK
    2. Content-Type: application/json
    3. Date: Sun, 07 Feb 2021 04:31:25 GMT
    4. Content-Length: 27
    5. {"message":"Hello go-zero"}

源码

greet源码

猜你想看