乐趣区

关于前端:tsw初探

介绍

TSW 是一个反对抓包、全息日志、监控的基于 Node.js 的 web server。说人话 就是一个内置了日志采集、申请上报能力的 http-server。

咱们能够把 TSW 看作是 Nginx 这样的 Web-Server,也能够将其看作 Koa+ 一些内置根底逻辑来实现的一个小型服务器

为什么应用 TSW

大略是为了防止本人去解决日志存储、抓包相干的能力吧. TSW 提供了如下一些能力:

  • 基于多核多过程的负载平衡
  • 优雅重启
  • 谬误监控、性能监控;告警推送
  • 日志记录、存储;
  • 染色抓包

TSW 的装置

目前 TSW 官网提供了三种形式,然而 npm 的形式显然不晓得该如何操作, 从 tsw 代码组织来看,目前作为 npm 包来用是不太事实的。( 官网文档中也没有给出 npm 装置形式如何配置和应用 纠正: 这里纠正曾经能够 npm 装置,请期待官网更新)。因而咱们暂且应用 git clone 的形式。

git clone https://github.com/Tencent/TSW.git

显然这是把 TSW 仓库的代码当做一个 webserver 代码来用。clone 之后,再装置其本身的依赖:

cd TSW
npm install

官网文档里这里应用的命令是 npm install --no-optional 但实际上,从 TSW 的 package.json 中能够看到 TSW 本身并没有任何 optionalDependencies,所以文档里的装置命令显然是多余的 (揭示: 这里官网会进行修复)。

目录构造

我这里只介绍几个对咱们来说有用的

— conf 这是 TSW 的配置目录
— bin 这是 TSW 的次要外围程序
— index.js 负责援用和启动 TSW 外围程序
— examples 这是业务站点的目录

大略能够理解了:

  • conf 目录是配置 TSW 的 (如端口、监听 IP 等信息)
  • examples 目录下是咱们的业务逻辑,外面有个 framework 目录,能够反对独立的 koa 或 express 等类型的框架

启动入口

通过 TSW/conf/config.js 能够发现,其间接把 examples/framework/config.js 导出,因而咱们能够间接在 framework/config.js 中配置站点。

另外留神到 framework/config.js 中有援用路由的一段代码:

// 路由
this.router = require('./router.js');
// router.js
// 定义一个路由表
const map = {
  // http://127.0.0.1/egg
  egg: './helloworld.egg/app.js',
   // http://127.0.0.1/express
  express: './express.js',
  // http://127.0.0.1/koa
  koa: './koa.js',
  // http://127.0.0.1/other
  default: './helloworld.js'
  };

因而,TSW 启动后,其实是加载了 router.js 中定义的路由,从而启动到对应的 framework 业务框架。

而对于业务框架来说,则不须要再本人启动 webserver,只须要将对应的 handler 裸露给 TSW 即可. 例如对于 KOA 来说,能够这样:

module.exports = app;

奉献

TSW 在社区方面还存在显著有余,我的通俗感知有以下有余:

  • 代码标准和开源社区配套差
  • 文档有余
  • 必须拷贝源码应用,无奈基于 npm 生态应用

从 TSW 所解决的问题来看,感觉是在加强 web 开发的根底能力 (如日志、监控等),防止反复开发。但换个角度想,这难道不应该做成一个 web 框架,而为何要做成一个 web-server 呢?

business --> web framework --> web-server --> nginx

TSW 目前定位在 web-server 这里,但实际上做的事件并不像真正的 webserver 最应该关注的,但这个定位使得开发者能够自由选择 express、koa 等框架;如果退后一步定位再 web framework 层,我感觉也是个很好的解决方案,像 egg/think 一样,既能提供该有的日志等能力,又能提供更多简化 web 开发的能力。

前面能够钻研下是否帮助参加改良

退出移动版