Skip to content

icedme666/blog-api

Repository files navigation

blog-api

Feature

应用优化

  • log
  • 优雅重启
    • 目的
      • 不关闭现有连接(正在运行中的程序)
      • 新的进程启动并替代旧进程
      • 新的进程接管新的连接
      • 连接要随时响应用户的请求,当用户仍在请求旧进程时要保持连接,新用户应请求新进程,不可以出现拒绝请求的情况
    • 流程
      1. 替换可执行文件或修改配置文件
      2. 发送信号量 SIGHUP
      3. 拒绝新连接请求旧进程,但要保证已有连接正常
      4. 启动新的子进程
      5. 新的子进程开始 Accet
      6. 系统将新的请求转交新的子进程
      7. 旧进程处理完所有旧连接后正常结束
  • swagger
  • 通过gorm实现callbacks
  • corn
    • 通过corn实现定时任务清理无效数据
    • 运行
      go run cron.go
  • 由程序把控初始化的先后顺序
    • 在 Go 中,当存在多个 init 函数时,执行顺序为:
      • 相同包下的 init 函数:按照源文件编译顺序决定执行顺序(默认按文件名排序)
      • 不同包下的 init 函数:按照包导入的依赖关系决定先后顺序
  • redis

deploy

  • docker
    docker build -t blog-api .
    cd deploy/mysql
    docker build -t blog-mysql .
    docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/iced_me/data/docker-mysql:/var/lib/mysql -d blog-mysql
    docker run --link mysql:mysql -p 8000:8000 blog-api -e MYSQL_ROOT_PASSWORD=123456
  • 构建 Scratch 镜像
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o blog-api .
    docker build -t blog-api-scratch -f ScratchDockerfile .
    docker run --link mysql:mysql -p 8000:8000 blog-api-scratch

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages