咱們爲何須要Node中間層

首先跳出前端


要看清node中間層在整個服務承擔什麼角色,首先咱們要跳出前端的視野,把本身視角提示一個level —— 去鳥瞰整個項目。

互聯網時代其實就是信息時代,咱們都是在利用數據交換,來產生價值。
一個最簡單的數據流,前端-->後端-->數據庫。
在這個原始的流程之間,咱們有不少事情能夠作。來看和前端最近這條線,前端-->後端。

  • 代理
  • 緩存
  • 限流
  • 日誌
  • 監控
  • 鑑權
  • 路由
  • 灰度
  • ...

上面列出的是一些咱們一個服務除了前端的展現,service端的網絡服務,API的提供,數據落庫等以外也要作的部分事情。在先後端沒有分離的時代,這些都是交給後端來作,好比Java,PHP等。尤爲在以前,套用模板語言就能解決大部分問題的時候,能夠說前端不值得單獨拿出來作。可是,當谷歌把JavaScript的宿主環境擴展到瀏覽器之外時,咱們有了更寬泛的選擇。

先後端分離


先後端分離幾乎是如今開發的必選項。我要放棄傳統的MVC模式,解除模板語言的限制,獨立構建開發環境,SPA頁面作SEO,分離部署依賴,統一API出口去適應更好的適應多端等等…….先後端分離的優劣我就不過多贅述。

在先後端分離的前提下,咱們就能夠在服務器(JAVA)和瀏覽器(JS)中間架一箇中間層(NODEJS).


爲何選擇NODEJS作中間層:

- 前端熟悉的語言,學習成本極低
- 都是JS能夠先後端複用
- 類似的特性:時間驅動、非阻塞I/O
- 執行速度也可接受
- 有利於一些SEO的解決方案


Node中間層


在先後端分離的自然選擇下,node中間層能夠承擔更多的責任。
  • 代理:在開發環境下,咱們能夠利用代理來,解決最多見的跨域問題;在線上環境下,咱們能夠利用代理,轉發請求到多個服務端。
  • 緩存:緩存實際上是更靠近前端的需求,用戶的動做觸發數據的更新,node中間層能夠直接處理一部分緩存需求。
  • 限流:node中間層,能夠針對接口或者路由作響應的限流。
  • 日誌:相比其餘服務端語言,node中間層的日誌記錄,能更方便快捷的定位問題(是在瀏覽器端仍是服務端)。
  • 監控:擅長高併發的請求處理,作監控也是合適的選項。
  • 鑑權:有一箇中間層去鑑權,也是一種單一職責的實現。
  • 路由:前端更須要掌握頁面路由的權限和邏輯。
  • 服務端渲染:node中間層的解決方案更靈活,好比SSR、模板直出、利用一些JS庫作預渲染等等。
  • 更多的可能性

這些,都是在有個node中間層的好處,使得服務更加的靈活。固然,node也有不少弊端,若是設計很差,很容易讓代碼充滿 callback 。CPU使用率較重、IO使用率較輕的應用——如視頻編碼、人工智能等,Node.js的優點沒法發揮(在後面的成熟更新中,node對這類問題可能也有比較好的解決方案)。

沒有最好的方案,只有最合適的方案。
相關文章
相關標籤/搜索