Notadd —— 基於 nest.js 的微服務開發框架
前言
隨著 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 。
微服務的一點說明

閘道器層: 主要處理限流,以及無關業務的許可權。 【使用者只能請求閘道器】
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/notad d (歡迎star)
相關服務地址: https:// github.com/notadd (使用者組織許可權系統、CMS、簡訊、Redis 快取、微信公眾平臺、微信支付... )