前言

随着 node.js 社区的不断发展,虽然有 express 、koa 、egg … 这样的框架,或者更应该称之为工具包,无一解决 js 作为一个后端语言的问题 —— 架构。

Nest.js 的出现解决了这些问题,它使用了 Typescript ,较为完整的 AOP 思想,同时在 IO 密集型应用上有着不俗的表现,是真正意义上的后端框架,我们团队主要成员从 PHP(Laravel) 、 Java (spring) 切换到了 Nest.js 。要说它有什么好的话,是在 开发成本(低于 go、Java),维护成本(低于go,跟 java 看齐),硬件成本(略高于 go) 三者之间的一个新的权衡。

Notadd 的出现,是在用 Nest.js 解决后端问题的基础上,用最合理的成本来解决高可用、横向拓展等问题 —— 微服务。

Nest 的全栈开发

Nest 可以说跟 Angular 是绝配了,亮点在于 Nest 在很多方面吸取了 Angular 的特性,并且许多装饰器名字也一致,开发人员可以轻松在 Nest 和 Angular 之间切换,当然,你还需要了解 CSS 和 typeorm 。这大大降低了沟通成本和开发成本,使得人员配置变得更加灵活。

Notadd 也提供了相应 Angular 的前端框架 —— ng-notadd 。

微服务的一点说明

notadd-arch-cn

网关层: 主要处理限流,以及无关业务的权限。 【用户只能请求网关】
API 层: 通过 Grpc 请求服务层拿到数据,提供前端所需的 API ,但不能操作数据库。
服务层: 通过 Typeorm 连接数据库,CURD 以及处理事务、队列,同时提供 Grpc 的服务端,以供 API 层请求。

Notadd 微服务总共可以分为两方面来看,一方面是业务,业务无需关注环境层面问题,根据 IP 和端口建立 Grpc 的连接即可。一方面是环境,环境可以是单机 利用pm2 或者 pandora 等工具进行单机部署,也可以通过docker-compose 进行单机或者多机部署,更可以通过 k8s 进行集群部署。

也就是说业务并不需要关注环境的具体实现,而环境也不需要知道业务的具体实现。你可以按照传统方式部署,也可以按 k8s 集群或者你喜欢的方式部署。
你可以在开发环境像往常一样开发,而在线上将开发的成品进行单机或者集群部署。

Notadd 的微服务

Notadd 后续会提供相应的 cli 工具:

对于业务:

  • 提供相应的开发标准,减少团队沟通成本
  • 提供开箱即用的服务应用
  • 提供一键生成代码

对于环境:

  • 提供快速部署
  • 提供持续集成 (开发中)
  • 提供环境监测和管理(开发中)

特性

【微服务】 支持单机部署和微服务化
【高性能】 异步高性能应用,单机并发轻松上万
【易维护】 使用 Typescript 开发,智能化的代码提示和编译时的代码检查机制
【可插拔】 模块化开发系统,依据业务需求,选择合适的模块,进行 API 层的搭建

相关技术

  • Typescript 【开发语言】
  • Nest.js 【基础框架】
  • GraphQL 【API 接口】
  • TypeORM 【数据库 ORM】
  • Grpc 【微服务通信】
  • Rxjs 【JS 的 ReactiveX 库】

项目地址

https://github.com/notadd/notadd (欢迎star)

相关服务地址: https://github.com/notadd (用户组织权限系统、CMS、短信、Redis 缓存、微信公众平台、微信支付… )