分享 echo-framework 專案基礎框架

蕭風發表於2021-06-20

echo-framework 是基於 echo 搭建用於快速開發的專案框架

安裝

go get -u github.com/nelsonkti/echo-framework

功能敘述

  • 支援 gorm、logger 日誌、jwt、cron 定時任務、redis 等
  • mysql 資料庫讀寫分離、 負載均衡
  • socket.io 通訊協議
  • nsq 訊息佇列
  • 分散式部署

資料夾結構

  • config 檔案配置和初始化配置資料

  • cron 定時任務

  • lib 日常使用的庫

  • logic logic 業務邏輯

  • main 程式啟動入口, 主要可以啟動 http

  • routes 包含應用的所有路由定義

  • socket 通訊相關的程式碼,以 socket.io 通訊協議為主

  • logic 目錄

    • http 包含了控制器、中介軟體以及表單請求、驗證器等

      • controllers 控制器層
      • middleware 中介軟體
      • models 模型層
      • repository 業務層呼叫資料訪問層
      • responses 返回層
      • services 服務層主要處理業務邏輯
      • validators 表單驗證器
    • mq nsq 生產者和消費者

      • producer 生產者

專案介紹

專案預設支援 nsqmemcacheredis,如果不需要,可以在 main 資料夾下 註釋以下程式碼

memcache

//連線 memcache
db.ConnectMemcache(config.Memcache)

redis

//連線redis
db.ConnectRedis(config.RedisIP, config.RedisPassword, 0, "default")

nsq

//連線redis
go func() {
 defer helper.RecoverPanic() //producer.StartNsqProducer(config.NSQIP) mq.StartNsqServer(config.NSQIP, config.NSQConsumers)}()

cron 本地預設不啟動, 需要啟動,去掉if就可以了

//啟動定時任務
if config.Env != "local" {
 cron.RegisterCrons(config.RedisIP, config.RedisPassword)}

grom 讀寫分離 DBResolver

// 使用 Write 模式
User.Model().Clauses(dbresolver.Write).First(&User)

執行logic

cd main
go run logic.go

執行socket

cd main
go run socket.go

環境要求

  • go >= 1.13
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章