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

GDK 商用异端框架

  •  2
     
  •   MiguelValentine · 2015-12-14 17:25:48 +08:00 · 3699 次点击
    这是一个创建于 3265 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/MiguelValentine/GDK
    欢迎 issues

    GDK

    GDK is a global based framework for node.

    Installation

    $ npm install gdk
    

    Features

    • No export And require.
    • NO third-module.
    • Micro enough.
    • Flat.
    • Support command.
    • Support Cluster Mode.
    • Locked global error,never shut down.

    Docs & Community [还在筹备]

    Quick Start

    No.GDK dose not support quick start.And I will not provide a generator.

    I don't think less is best.I can guide you to make your our service different with anyone.

    At First make sure that your env is in your project and you npm installed gdk.

    You can download Learning Project.

    1.Create bin File to guide - bin/start.js

    require('gdk')
    
      var baseDir  = __dirname;
      gdk.load(gdk.c.path.join(baseDir,'../config'));
    
      gdk.boot();
    
      gdk.load(gdk.c.path.join(baseDir,'../http'));
    
      gdk.cluster(function(){
          gdk.http.boot();
      });
    

    2.Create config File - config/index.js

    var baseFile = __filename;
      gdk.updatePath.config = baseFile;
    
      gdk.config.Mcores = true;
      gdk.config.errLog = gdk.c.path.join(__dirname,'../err.log');
      gdk.config.port = 3000;
    

    3.Create http base - http/index.js

    gdk.updatePath.http = __filename;
      gdk.http = {};
    
      gdk.load(gdk.c.path.join(__dirname,'./router'));
      gdk.load(gdk.c.path.join(__dirname,'./flow'));
      gdk.load(gdk.c.path.join(__dirname,'./instance'));
    

    4.Create flow file - http/flow/index.js

    gdk.http.flow = function(req,res){
        if(gdk.http.router[gdk.c.url.parse(req.url).path]){
          gdk.http.router[gdk.c.url.parse(req.url).path](req,res);
        }else{
          res.end();
        }
      }
    

    5.Create router file - http/router/index.js

    gdk.http.router = {};
    
      gdk.http.router['/'] = function(req,res){
        res.end('Hello World!');
      }
    

    6.Create instance file - http/instance/index.js

    gdk.http.server = function(req,res){
          gdk.http.flow(req,res);
      };
    
      gdk.http.boot = function(){
          var server = gdk.c.http.createServer(gdk.http.server);
          server.on('error',function(err){
              gdk.errCatch('server err',err);
          });
          server.listen(gdk.config.port);
      };
    

    7.Run

    node bin/start.js
    

    Command

    1.bash command

    Example:
    bash
    bash---console.log(gdk.config)

    2.Hot-update command

    Example:
    bash
    update---config

    Example2:
    bash
    upfile---/node/http/index.js

    3.Your command

    Example:

    gdk.runTime.print = function(info){
    console.log(info)
    }

    print---here is a test
    

    Cluster message I/O

    In gdk Cluster mode.gdk.cluster(cb).cb will always run on workers.

    Workers can use process.send to call a runtime function in all workers or master.

    Example:
    ```
    gdk.runTime.print = function(a,b){
    console.log(a+b)
    }

    process.send({bash:'print',arg:{'hello',' world'}});
    ```

    Example:
    ```
    gdk.runTime.MainCore = function(a,b){
    console.log(a+b)
    }

    process.send({bash:'MainCore',arg:{'hello',' world'},Master:true});
    ```

    geminiyellow
        1
    geminiyellow  
       2015-12-14 17:30:04 +08:00   ❤️ 1
    good job !不顶不是中国人。
    zenwong
        2
    zenwong  
       2015-12-14 17:33:13 +08:00
    不好意思,我们又一次没捆严实他,让他从 cnodejs 跑到这里来了,这是我们深圳 node.js 大本营群( 364189010 )的失误。抱歉抱歉。( A :这次广告是不是又有点硬了? B :别哔哔,快走,不然一会还要被打。)
    zenwong
        3
    zenwong  
       2015-12-14 17:37:37 +08:00   ❤️ 1
    GuaPiJS 你值得信赖,作者比代码更帅。
    denghongcai
        4
    denghongcai  
       2015-12-14 18:09:28 +08:00   ❤️ 1
    GDK ,走向成功的最好垫脚石
    mcfog
        5
    mcfog  
       2015-12-14 19:31:00 +08:00
    扫了一眼,没看明白干啥用的,只看到

    > Locked global error,never shut down.

    死刑。

    回头一想不能冤枉人啊,点进去搜了一把

    https://github.com/MiguelValentine/GDK/blob/5502399d0489a2d64cd7e03741df5922f80b1ef5/err/index.js#L16

    核准判决有效,立即执行

    不解释
    MiguelValentine
        6
    MiguelValentine  
    OP
       2015-12-14 20:01:54 +08:00
    @mcfog 所以你家项目怎么 7x24 ? pm2?
    MiguelValentine
        7
    MiguelValentine  
    OP
       2015-12-14 20:09:09 +08:00
    @mcfog 你要是有本质上能解决错误的方法你可以发 pr 。我这种方法中断单 req 比 refork 强的的多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1225 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:24 · PVG 07:24 · LAX 15:24 · JFK 18:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.