首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  PHP

Snow—简单易用的 Go 语言业务框架

  •  1
     
  •   hetiansu5 · 134 天前 · 2964 次点击
    这是一个创建于 134 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Snow

    Snow 是一套简单易用的 Go 语言业务框架,整体逻辑设计简洁,支持 HTTP 服务、队列调度和任务调度等常用业务场景模式。

    Goals

    我们致力于让 PHPer 更方便地切入到 Go 语言开发,在业务框架选择上贴合 PHP 主流框架的设计思想,以更低的学习成本快速熟悉框架,致力于业务逻辑的开发。

    Features

    • HTTP 服务:基于gin进行模块化设计,简单易用、核心足够轻量;支持平滑重启;
    • 任务调度:基于cron进行模块化设计,简单易用;
    • 队列调度:基于自研的队列调度服务worker,通过 Queue 接口化,解耦队列调度与底层队列驱动;支持平滑关闭;
    • Cache: 通用的接口化设计,框架实现了 redis 作为缓存底层驱动,支持可扩展;
    • Database: 使用成熟的ORM库,有丰富的数据库驱动支持和特性;
    • Queue: 通用的接口化设计,框架实现了 redis、alimns 作为队列底层驱动,支持可扩展;
    • Config: 采用toml语义化的配置文件格式,简单易用;
    • Logger: 基于logrus进行封装,内嵌上下文通用数据采集和 trace_id 追踪;
    • Request and Response:定义输入和输出数据实体格式;
    • Curl: 简单易用的 Curl 请求库;

    Quick start

    Requirements

    Go version>=1.12

    Installation

    cd $GOPATH/src
    cd my-github/my-space
    git clone [email protected]/qit-team/snow.git my-project
    cd my-project
    sh build/shell/replace.sh my-github/my-space/my-project
    cp .env.example .env
    

    Build & Run

    sh build/shell/build.sh
    build/bin/snow
    

    Test demo

    curl "http://127.0.0.1:8000/hello"  #返回 json 串输出
    

    Documents

    GitHub

    https://github.com/qit-team/snow

    24 回复  |  直到 2019-07-11 17:54:14 +08:00
        1
    bestkayle   134 天前
    已 star,这个放到 go 节点下比较好吧?
        2
    dapang1221   134 天前
    我还纳闷怎么把 go 的发到了 PHP 节点…
    简单看了下,期待增加 cli 的入口,可以把 route 解析出来,搞成 urfave/cli.v2 这种子命令,其实也蛮常用的
    已 star
        3
    loading   134 天前 via Android   ♥ 1
    基于 gin,为啥我不用 gin 呢?
        4
    loading   134 天前 via Android
    似乎没看到 session 和 csrf 那些东西
        5
    ben1024   134 天前
    节点放错了? go 的语法十分不习惯
        6
    Vegetable   134 天前
    看到最后一条,可能作者之前是写 php 的,所以发 php 节点了 233
        7
    hetiansu5   134 天前
    @bestkayle go 节点也有发了,主要是因为框架本身是参考 laravel 的设计模式,本身的定位也主要是面向 phper 过度到 go。
        8
    hetiansu5   134 天前
    @loading 哈哈,都可以,只要能抓老鼠的就行。gin 相对来说轻量又好用。
        9
    hetiansu5   134 天前
    @dapang1221 嘻嘻
        10
    hetiansu5   134 天前
    @ben1024 go 相对其他编译型语言会更快上手,只是 go 做了很多强制的约束规范,可能会有些不习惯。
        11
    hetiansu5   134 天前
    @Vegetable 你猜对啦,哈哈~ php 写得比较久,后面感觉到瓶颈,但是 java 的技术栈有太多了,相比来说学起来耗时优势又不大。
        12
    hetiansu5   134 天前
    @loading 因为框架刚起步,见谅,我们还会在持续迭代。都是趁着下班撸的。
        13
    loading   134 天前 via Android
    @hetiansu5 加油^0^~
        14
    michealzh   134 天前
    加油~
        15
    ylsc633   134 天前
    在 gin 的基础上封装了一些常用的功能

    对于从 php 刚转的 可能还比较习惯

    如果已经写了一段时间 go 的人来说, 可能分开更好,我需要啥,就引入啥,用啥(好几年的 laravel 用户)

    我也用过一段时间的 gin

    学习下楼主代码
        16
    wuchujie   134 天前 via iPhone
    看了一下 orm 跟 redis 的实现。
    interface 满天飞的感觉这点有点不好吧?
        17
    hetiansu5   134 天前
    @michealzh 谢谢~
        18
    hetiansu5   134 天前
    @wuchujie orm 在实现上因为考虑到开发者的方便,确实需要 interface 的设计。其实一开始我初版的设计是将数据库请求与 sql 拼接分开来的,不过后面因为团队在讨论的时候,综合 PHPer 业务使用的习惯,后面改成了 ORM。
        19
    hetiansu5   134 天前
    @ylsc633 被你看穿啦,其实我是从 php 转过来,嘿嘿~
        20
    nanlou   134 天前
    趣店的老哥?看到大学室友在朋友圈里说。。。。
        21
    hetiansu5   133 天前
    @nanlou 哈哈,是的 我是新人啦。
        22
    TypeErrorNone   133 天前
    太麻烦了,一层套一层,go 写东西直接一把梭~
        23
    Coolha   133 天前
    我也是 phper,正在转 go 中,关注一波~
        24
    hetiansu5   132 天前
    @Coolha 谢谢,有机会一起交流哈~
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   953 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 21:55 · PVG 05:55 · LAX 13:55 · JFK 16:55
    ♥ Do have faith in what you're doing.