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

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

  •  1
     
  •   hetiansu5 · 2019-07-09 11:24:36 +08:00 · 5689 次点击
    这是一个创建于 1993 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    我也用过一段时间的 gin

    学习下楼主代码
    wuchujie
        16
    wuchujie  
       2019-07-09 18:38:10 +08:00 via iPhone
    看了一下 orm 跟 redis 的实现。
    interface 满天飞的感觉这点有点不好吧?
    hetiansu5
        17
    hetiansu5  
    OP
       2019-07-09 20:42:11 +08:00
    @michealzh 谢谢~
    hetiansu5
        18
    hetiansu5  
    OP
       2019-07-09 20:47:47 +08:00
    @wuchujie orm 在实现上因为考虑到开发者的方便,确实需要 interface 的设计。其实一开始我初版的设计是将数据库请求与 sql 拼接分开来的,不过后面因为团队在讨论的时候,综合 PHPer 业务使用的习惯,后面改成了 ORM。
    hetiansu5
        19
    hetiansu5  
    OP
       2019-07-09 20:48:23 +08:00
    @ylsc633 被你看穿啦,其实我是从 php 转过来,嘿嘿~
    nanlou
        20
    nanlou  
       2019-07-09 23:19:34 +08:00
    趣店的老哥?看到大学室友在朋友圈里说。。。。
    hetiansu5
        21
    hetiansu5  
    OP
       2019-07-10 10:23:46 +08:00
    @nanlou 哈哈,是的 我是新人啦。
    TypeErrorNone
        22
    TypeErrorNone  
       2019-07-10 10:49:59 +08:00
    太麻烦了,一层套一层,go 写东西直接一把梭~
    Coolha
        23
    Coolha  
       2019-07-10 21:56:36 +08:00
    我也是 phper,正在转 go 中,关注一波~
    hetiansu5
        24
    hetiansu5  
    OP
       2019-07-11 17:54:14 +08:00
    @Coolha 谢谢,有机会一起交流哈~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   883 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:06 · PVG 04:06 · LAX 12:06 · JFK 15:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.