Node.js作微服務的技術選型

如下是從微服務選型之Modern Node.js摘錄的下面內容:

微服務選型

技術棧數據庫

微服務選型api

2.5.1 HTTP API架構

採用Koa.js 2.x做爲http api層框架,主要封裝和組裝rpc服務。框架

Koa的優勢:運維

  • 簡單,可定製性強;異步

  • 高性能,即便一樣不優化,性能也比較好;函數

  • 「同步」流程控制,支持Promise、Generator、Async函數。微服務

當前作法:性能

  • 目前使用Generator和yield + Promise來作異步流程控制;優化

  • 等Node原生支持Async函數,全面切換到Async + Promise(預計10月份) 。

2.5.2 使用RPC拆分服務

比較好的作法是http api調用rpc,提供最終API

  • 單一調用,簡單接口;

  • 多個調用,能夠封裝成上層服務,也能夠組合用。

RPC框架,如Dubbo、dubbo-x、Motan、gRPC等,咱們選的是gRPC。

Node.js還有senecajs.org專門作微服務的,惟一的缺點是多語言支持,其餘都很是好。

2.5.3 RPC拆分後,拆分DB

通常拆分RPC都會按照某些業務主體劃分,因此數據庫是能夠拆分出去。

好比

  • 庫存

  • 訂單

  • 評論

  • 彈幕

其實,只要保證用戶一致,其餘數據庫保存各自的數據就好。在數據分析的時候,彙總到一塊兒便可,不管etl仍是stream均可以。

服務和db拆分的好處是便於橫向擴展,這樣就能夠作到動態伸縮,哪裏有瓶頸治哪裏,在架構調優上是有明顯優點的。

2.5.4 服務多,就要服務治理、發現

採用Consul做爲服務發現軟件(etcd也不錯)。

2.5.5 API多了,怎麼辦呢?

都是重複的,如日誌、權限等,這時,咱們須要API Gateway。

https://getkong.org/

經過Nginx + lua實現,提供插件機制,很是好用。

2.5.6 容器化

剩下的就是你們熟悉的Docker了。

2.5.7 總結

架構是相同的,其實語言是無所謂的。使用Node.js能夠最小成本的快速構建服務,不管從技術難度,運維,仍是將來趨勢上都是比較好的技術選型。

相關文章
相關標籤/搜索