fastfiber

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2022 License: Apache-2.0 Imports: 25 Imported by: 0

README

fastfiber

fastfiber是一个基于fiber的快速开始goweb开发的脚手架。目的是为了让开发者更快的进入开发,而无需关注项目组织,系统配置,驱动集成,日志等基础模块。

QuickStart

详细示例 fastfiber-demo

go get -u github.com/nerocho/fastfiber@latest

Features

  • 很棒的性能,参见fasthttp
  • 低内存占用
  • 集成 viper 的配置文件管理
  • 集成 zerolog 的高性能日志输出
  • 集成 gorm 的数据库操作
  • 集成 go-redis 的缓存操作
  • 自动的参数校验及全局错误处理
  • Graceful Shutdown
  • 开箱即用的中间件&工具包
    • 访问日志,限流,跨域,JWT,接口级缓存...
    • 邮件,tracing,response,加解密...

配置文件 config.env.yml

配置文件依赖于环境变量APP_ENV,如APP_ENV=test,则配置文件会读取config.test.yml

# 系统配置
System:
  AppName: 'go-express' # 应用名称
  Port: 3000 # 启动端口
  LogResponseBody: false # 是否打印response日志,默认关闭,开启比较影响性能和存储,比如返回给前端数据很大时,记录日志消耗会比较大

# 数据库配置
Database:
  IsInit: true # 是否初始化到fastfiber对象上
  Type: 'mysql' # 仅支持mysql 和 postgre
  SlowThreshold: 100 # 慢日志,单位毫秒,执行时间大于SlowThreshold的sql会被记录到日志中
  MaxIdleConns: 10 # 最大空闲连接数即一直持有
  MaxIdleTime: 1800 # 默认30分钟,最大空闲时间秒
  MaxOpenConns: 128 # 连接池大小
  EnableReplicas: false # 是否开启读写分离
  Dsn:
    Write: 'root:123456@tcp(127.0.0.1:3306)/dev?charset=utf8mb4&parseTime=True&loc=Local' # mysql
    # Write: 'host=127.0.0.1 port=5432 dbname=dev user=root password=123456 sslmode=disable TimeZone=Asia/Shanghai' # postgre
    Read:
      - 'root:123456@tcp(127.0.0.2:3306)/dev?charset=utf8mb4&parseTime=True&loc=Local'
      - 'root:123456@tcp(127.0.0.3:3306)/dev?charset=utf8mb4&parseTime=True&loc=Local'

# redis 配置
Redis:
  IsInit: true # 是否初始化到fastfiber对象上
  Addr: '127.0.0.1:6379'
  Password: ''
  MaxIdle: 10 #最大空闲连接数
  MaxActive: 1000 # 连接池大小
  IdleTimeout: 60 #空闲超时时间
  IndexDb: 0 #数据库

# Id生成器
IdWorker:
  IsInit: true # 是否初始化到全局对象
  WorkerId: 0 # 为0 则使用默认值 建议按照节点数量自行设置
  DataCenterId: 0 # 为0 则使用默认值 建议按照业务线自行设置
  Twepoch: 0 # 为0 则使用默认值

# 限流配置
Limiter:
  Enable: true # true开启 false 关闭
  IpWhiteList: # 白名单
    - '127.0.0.1'
    - '172.16.1.1'

# 接口缓存配置
ApiCache:
  Enable: true #true开启 false 关闭

# Tracing
Tracer:
  Enable: false
  HostPort: 127.0.0.1:6831 # jaeger server

数据库操作

// 安装模型类生成工具
go install github.com/xxjwxc/gormt@latest

// 项目目录下执行,默认会把所有的dev库里面所有的表生成到models文件夹下
gormt -H=127.0.0.1 -d=dev -p=123456 -u=root --port=3306 -F=true -o=models

// 具体代码可以查看相关文件夹

Stargazers

如果您觉得本项目对您有所帮助,请不要吝啬一个⭐哦!

Stargazers over time

Documentation

Index

Constants

View Source
const (
	// keys
	EventDestroyPrefix = "Destroy_"
	ProcessKilled      = "收到信号,进程被结束"

	// errors
	ErrInitConfigFile       = "初始化配置文件出错:"
	ErrInitLoggerFail       = "初始化日志出错:"
	ErrConfigFileNotExists  = "化配置文件不存在:"
	ErrorsDbInitFail        = "数据库初始化失败:"
	ErrorsIdWorkerInitFail  = "ID生成器 初始化失败:"
	ErrorsRedisInitConnFail = "Redis 初始化连接池失败:"
	ErrorsTracerInitFail    = "Tracer 初始化失败:"
)

Variables

View Source
var (
	// globals
	Logger    winner_logger.Logger   //全局日志
	Conf      interf.ConfigInterface //全局配置
	Db        *gorm.DB               //数据库
	IdWorker  *snowflake.IdWorker    //id 生成器
	RedisPool *redis.Client          //全局redisPool

)

Functions

func BindAndAllErr

func BindAndAllErr(ctx *fiber.Ctx, ptr interface{}) error

绑定请求参数并返回校验的错误(所有)

func BindAndOneErr

func BindAndOneErr(ctx *fiber.Ctx, ptr interface{}) error

绑定请求参数并返回校验的错误(一个)

func Bootstrap

func Bootstrap()

func ErrorHandler

func ErrorHandler(ctx *fiber.Ctx, err error) error

错误处理

func GetEnv

func GetEnv(envName string, defaultValues ...string) string

获取环境变量

func GoSafe

func GoSafe(fn func())

安全运行goroutine

func GraceRun

func GraceRun(app *fiber.App, timeout time.Duration)

Grace shutdown with timeout

func TaskWithTimeout

func TaskWithTimeout(task func() error, duration time.Duration) bool

带时限的异步执行 返回true为超时、false为未超时

Types

This section is empty.

Directories

Path Synopsis
utils
jwt
orm

Jump to

Keyboard shortcuts

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