go-kit

module
v0.0.0-...-04e3e86 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2022 License: MIT

README

go-kit

从go-zero仓库fork而来,在继承go-zero众多特性的同时,会在此基础上做一些适配我们自己业务的二次开发。

1. Installation

在项目目录下通过如下命令安装:

GO111MODULE=on GOPROXY=https://goproxy.cn/,direct 
go get -u github.com/graydance/go-kit

2. Quick Start

  1. 完整示例请查看

    快速构建高并发微服务

    快速构建高并发微服务 - 多 RPC 版

  2. 安装 goctl 工具

    goctl 读作 go control,不要读成 go C-T-Lgoctl 的意思是不要被代码控制,而是要去控制它。其中的 go 不是指 golang。在设计 goctl 之初,我就希望通过 工具 来解放我们的双手👈

    # Go 1.15 及之前版本
    GO111MODULE=on GOPROXY=https://goproxy.cn/,direct 
    go get -u github.com/graydance/go-kit/tools/goctl@latest
    
    # Go 1.16 及以后版本
    GOPROXY=https://goproxy.cn/,direct 
    go install github.com/graydance/go-kit/tools/goctl@latest
    
    # For Mac
    brew install goctl
    
    # docker for amd64 architecture
    docker pull kevinwan/goctl
    # run goctl like
    docker run --rm -it -v `pwd`:/app kevinwan/goctl goctl --help
    
    # docker for arm64 (M1) architecture
    docker pull kevinwan/goctl:latest-arm64
    # run goctl like
    docker run --rm -it -v `pwd`:/app kevinwan/goctl:latest-arm64 goctl --help
    

    要特别注意的是,goctl必须从graydance/go-kit仓库安装,而不是从go-zero仓库安装。这是因为go-kit里的goctl做了改造 其可以适配我们自已的开发与生产环境。 关于api文件的声明参考:goctl使用说明

  3. 快速生成 api 服务

    goctl api new greet
    cd greet
    go mod init
    go mod tidy
    go run greet.go -f etc/greet-api.yaml
    

    默认侦听在 8888 端口(可以在配置文件里修改),可以通过 curl 请求:

    curl -i http://localhost:8888/from/you
    

    返回如下:

    HTTP/1.1 200 OK
    Content-Type: application/json
    Date: Thu, 22 Oct 2020 14:03:18 GMT
    Content-Length: 14
    
    {"message":""}
    

    编写业务代码:

    • api 文件定义了服务对外 HTTP 接口,可参考 api 规范
    • 可以在 servicecontext.go 里面传递依赖给 logic,比如 mysql, redis 等
    • 在 api 定义的 get/post/put/delete 等请求对应的 logic 里增加业务处理逻辑
  4. 可以根据 api 文件生成前端需要的 Java, TypeScript, Dart, JavaScript 代码

    goctl api java -api greet.api -dir greet
    goctl api dart -api greet.api -dir greet
    ...
    

3. 文档

3.1. yapi同步步骤
  1. 安装goctl-swagger插件
GOPROXY=https://goproxy.cn/,direct go install github.com/graydance/goctl-swagger@latest
  1. 添加goctl-swagger到环境变量
export PATH=$PATH:$GOPATH/bin/
  1. 安装yapi-cli工具
npm install -g yapi-cli
  1. 使用goctl-swagger生成swagger文档(可选步骤)
goctl api plugin -plugin goctl-swagger="swagger -filename user.json" -api user.api -dir .
  1. 配置yapi服务的token

    在$HOME/.docrc目录下创建app.json文件,加入如下配置

    {
    	"server": "http://yapi.linkr.bio/",
    	"apps" : {
    		"demo-api": {
                      "type": "swagger",
                      "token": "17fba0027f300248b804",
                      "appDir": "/apps/demo-api/",
                      "merge": "normal" 							
                    }
    	}
    }
    

    其中各个配置项说明如下:

    server : 表示yapi服务器的地址

    apps : 表示一组app,每一个对应yapi里的项目

    ​ demo-api : 表示项目名,这个在同步工具中要用到的,注意:这个名字必须可以找到{appDIr}/demo-api.api文件

    ​ type: 文档类型,目前yapi只支持swagger

    ​ token: 每个项目中openapi的token, 从项目api > 配置中复杂,每个项目token不一样

    ​ appDir: 这个是工程的根目录,按照规范,.api文件一定是在根目录下

    ​ merge: 合并方式,normal-如果已经存在不导入 good-已存在的接口,将合并返回数据的response, mergin-完全覆盖

  2. 一件更新api文档到yapi

    goctl doc -push yapi -app demo-api
    

4. 支持Cloud Run

1. 触发器需要设置自定义环境变量
    _DEPLOY_REGION : 发布地区
    _SERVICE_NAME : 服务名

5. 开发规范

这个开发规范目前主要针对Golang的项目,分为以下几个部分:

  1. 工程规范
  2. 编码规范
  3. 测试规范
  4. 发布规范

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL