Snow
Snow是一套簡(jiǎn)單易用的Go語(yǔ)言業(yè)務(wù)框架裕菠,整體邏輯設(shè)計(jì)簡(jiǎn)潔,支持HTTP服務(wù)、隊(duì)列調(diào)度、任務(wù)調(diào)度和和腳本任務(wù)等常用業(yè)務(wù)場(chǎng)景模式御板。
Goals
我們致力于讓PHPer更方便地切入到Go語(yǔ)言開(kāi)發(fā)说榆,在業(yè)務(wù)框架選擇上貼合PHP主流框架的設(shè)計(jì)思想虚吟,以更低的學(xué)習(xí)成本快速熟悉框架,致力于業(yè)務(wù)邏輯的開(kāi)發(fā)签财。
Features
- HTTP服務(wù):基于gin進(jìn)行模塊化設(shè)計(jì)串慰,簡(jiǎn)單易用、核心足夠輕量唱蒸;支持平滑重啟邦鲫;
- 任務(wù)調(diào)度:基于cron進(jìn)行模塊化設(shè)計(jì),簡(jiǎn)單易用油宜;
- 隊(duì)列調(diào)度:基于自研的高性能隊(duì)列調(diào)度服務(wù)worker掂碱,通用的Queue接口化怜姿,解耦隊(duì)列調(diào)度與底層隊(duì)列驅(qū)動(dòng);支持平滑關(guān)閉疼燥;
- Cache: 通用的緩存接口化設(shè)計(jì)沧卢,核心組件實(shí)現(xiàn)了插件式的redis驅(qū)動(dòng)支持,可擴(kuò)展醉者;
- Database: 使用成熟的ORM庫(kù)但狭,有豐富的數(shù)據(jù)庫(kù)驅(qū)動(dòng)支持和特性;
- Queue: 通用的接口化設(shè)計(jì)撬即,框架實(shí)現(xiàn)了redis立磁、alimns作為隊(duì)列底層驅(qū)動(dòng),支持可擴(kuò)展剥槐;
- Config: 采用toml語(yǔ)義化的配置文件格式唱歧,簡(jiǎn)單易用;
- Logger: 基于logrus進(jìn)行封裝粒竖,內(nèi)嵌上下文通用數(shù)據(jù)采集和trace_id追蹤颅崩;
- Request and Response:定義輸入和輸出數(shù)據(jù)實(shí)體格式;
- Curl: 簡(jiǎn)單易用的Curl請(qǐng)求庫(kù)蕊苗;
- 腳手架:方便快捷的創(chuàng)建新項(xiàng)目沿后,可一鍵升級(jí);
Quick start
Requirements
- Go version >= 1.12
- Global environment configure (Linux/Mac)
export GO111MODULE=on
export GOPROXY=https://goproxy.io
Installation
go get -u github.com/qit-team/snow/tool/snow
cd $GOPATH/src
snow new snow-demo
Build & Run
cd snow-demo
sh build/shell/build.sh
build/bin/snow
Test demo
curl "http://127.0.0.1:8000/hello" #返回json串輸出