node基座设计

90 阅读2分钟

目录

common目录为config 和 工具链相关,后期可通过脚手架内置。

filter为过滤器,目前有一个全局处理httpCode和全局报错的过滤器,业务可自行扩展。

interceptor为拦截器,目前有个全局超时拦截,和统一返回格式处理

middlewares为中间件,目前有一个cat中间件以及异步线程中间件(目前挂载工具)

modules为业务开发模块(业务线主要工作模块)

pipes为管道,目前有一个根据dto统一处理校验规则的管道

utils为工具方法,目前提供一个获取日期的方法,此处可与工具库进行关联

main.ts 为主入口,添加了一些必要的全局中间件

数据流

image.png

image.png

中间件

业务方面:

cat中间件

工具中间件

性能方面

compression 压缩

安全

helmet 防XSS & CSRF

服务稳定性

rateLimit 限流

bodyParser 参数做了数据大小限制

Catch (global-exception.filter 模拟了catch中间件功能)

orm

typeOrm替换原来的mongoose,核心优势支撑多种数据库

文档:typeorm.bootcss.com/decorator-r…

能力

  统一处理请求上报cat服务

  自动区分环境,业务线不需要关心

全局catch处理

会统一处理业务code码和代码报错,不会导致服务不可用,同时返回当前请求的tranceId,方便业务线查询

统一格式返回

业务线只需要正常return结果,除了业务code情况,无需关系报错和服务导致的异常情况。

错误异常处理规范

全局校验管道

会根据模型自动告诉哪些字段不对

自动生成文档

提供mock能力:blog.csdn.net/gwdgwd123/a…

随时可用的工具箱

自动关联zipkin,同时可以拿一些必要的方法。

tranceId

通过网关拿tranceId,提供方法获取

umeLog

自动打到公司日志平台,支持生产、灰度、测试

cat追加日志

zipkin包装器

上次问题

  离群摘除

  provider:通过cat报警手动摘除

  consumer:目前通过订阅动态配置,支持动态摘除

zhuanlan.zhihu.com/p/427233786