Skip to content

基于gin+gorm+redis+mq+zap的脚手架,包含jaeger链路追踪,elk日志分析,依赖倒置原则抽象dao层,内置一些常见中间件jwt,cors等。支持制作dockerfile,docker-compose一键化编排。为了构建基于gin项目,供小伙伴们学习使用

Notifications You must be signed in to change notification settings

q-cloud-ll/go_builder

Repository files navigation

一、go_builder脚手架介绍

1、项目介绍

本脚手架是基于gin框架实现

  • 内置zap日志库
  • viper读取配置文件
  • jwt & cors & track的中间件
  • 缓存使用redis,orm框架使用gorm
  • 七牛云oss文件上传
  • 使用依赖倒置原则抽象dao层
  • dockerfile制作镜像,docker-compose编排项目
  • 使用shell脚本自动生成dao、cache、service、svc模板代码
  • elk日志收集系统
  • kubernetes集群搭建

准备实现

  • jaeger的链路追踪收集到jaeger-ui
  • 添加apollo配置注册中心

2、项目目的

在使用Gin框架的时候,因为比较轻量级,使用gin.new(),并且run起来就运行起来了,但是我们项目中往往需要配置许多依赖库,我这里就使用cld的架构搭建里一套关于gin框架的脚手架。

3、项目介绍

脚手架架构分为CLD分层,controller为api层、service为逻辑层,dao层为数据库层,上手简单,目录结构清晰,一些常用小工具后续会慢慢加上~~~

二、go_builder 脚手架目录结构

├── conf
├── api
├── cmd
├── deploy
├── logger
├── middlewares
├── repository
    ├── cache
    ├── db
      ├── dao
      ├── model
    ├── es
    ├── rabbitmq
    ├── track
├── router
├── service
	  ├── svc
├── setting
└── utils
    ├── app
    └── snowflake
    ├── jwt
    ├── upload
文件夹 说明 描述
conf 配置包 放置配置文件,例:config.yaml
api api层 程序入口层
cmd 服务程序包 包含程序运行main函数以及运行脚本
deploy 外来配置工具包 配置nginx.conf、sql建表、script脚本、组件yaml配置等
logger 日志包 初始化日志文件
middlewares 中间件 自定义关于gin的中间件,例如jwt、cors等
repository 组件仓库 包含缓存、db、es、mq等
--cache 缓存组件 使用redis缓存层
--db sql组件 存放mysql的model & dao
router 路由层 用于放入全局路由
service 逻辑层 用于放入业务逻辑
--svc 逻辑上下文层 用于初始化service层的context,拿到dao层接口数据
setting 配置项 yaml配置映射为结构体
utils 工具包 自定义工具使用
--app 全局响应 返回json数据的封装,success & failed
--snowflake 雪花算法工具包 生成int64的id

三、关于gencode自动生成代码

使用的是shell脚本实现

gencode脚本在deploy/gencode/gencode.sh中,首先进入gencode文件目录,如果我要生成关于user的代码,命令:./gencode.sh user,会生成对应的svc、service、dao、cache模板代码。后续考虑单独抽出来,放入gopath/bin目录下

四、关于ELK日志系统分析

使用的是filebeat收集业务数据发送到 -> kafka消息队列 <- 使用go-stash消费kafka当中的日志数据 -> 发送到es里 <- 最后收集进kibana展示

1、配置的filebeat.yml在deploy下,挂在到docker-compose

2、配置的go-stash.yaml也在deploy下,挂在所需要的配置文件进docker

Image text

最终运行docker-compose -f docker-compose-env.yml up -d运行起来elk环境,最终访问kibana即可

五、docker的使用

1、使用dockerfile制作镜像

docker build -t go_builder . 构建镜像

2、使用docker-compose一键编排项目

docekr-compose up 一键启动项目

docker-compose stop 一键关闭项目

3、关于docker-compose-env

这个是中间件的环境包含mysql、redis、kafka等

六、kubernetes的使用

1、启动deployment服务

kubectl apply -f server-deployment.yaml

2、 启动service服务

kubectl apply -f server-service.yaml

3、 创建configMap对象

kubectl apply -f server-configMap.yaml

七、关于CICD流水线构建流程

1、使用jenkins+镜像仓库+github/gitlab

  • 配置jenkins和github,当main分支有变动jenkins就可以触发然后拉去最新代码
  • 执行build.sh去当可以构建流水线,执行build.sh脚本构建镜像
  • 构建完成之后就可以在docker-compose或者k8s更改版本号执行即可

欢迎大家提issue!!!

About

基于gin+gorm+redis+mq+zap的脚手架,包含jaeger链路追踪,elk日志分析,依赖倒置原则抽象dao层,内置一些常见中间件jwt,cors等。支持制作dockerfile,docker-compose一键化编排。为了构建基于gin项目,供小伙伴们学习使用

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published