前言

上周有幸和淘寶前端團隊的七念老師做了一些NodeJS方面上的交流(實際情況其實是他電話面試了我╮(╯-╰)╭),我們主要聊到了我參與維護的一個線上NodeJS服務,關于它的現(xiàn)狀和當下的不足。他向我提出的一些問題帶給了我很大啟發(fā),盡管回答的不是很好。問題大意是,對于你意識到的這些不足,你將嘗試怎樣去改進它們?甚至,如果給你一個機會來重新設計這個系統(tǒng)服務,你將如何做?相比現(xiàn)在有什么的改進?

為什么說這些問題對我產(chǎn)生了啟發(fā),是因為這些問題是我不曾考慮過的?;蛘哒f考慮過,但沒有這么嚴肅的考慮過。這里的“嚴肅”指的是具體到線上,細節(jié),容災容錯等方面。而在電話之后我重新嘗試回答這些問題的過程中又收獲了不少新的知識。

這篇文章與以往的文章不同,并不是闡述某一個問題的最佳解決方案,也不會落實到具體的代碼上。而是分享在探尋答案過程中收獲的心得、留下的困惑還有一點個人的經(jīng)驗。至于這些能否拿來回答最初的那些問題我沒有十足的把握,也許能,但肯定不是最佳答案。因為后端架構實在一個很有深度的話題,也是一個極其成熟的技術方向。即使有了理論方面的積累,面對千變?nèi)f化的業(yè)務需求難免還是靈活的對方案進行改進,而無論是理論還是實踐經(jīng)驗都是我欠缺的。

這段話本來應該是寫在結尾,感覺順嘴也就掛在了開頭。

最后,本文的部分內(nèi)容和圖片參考自圖書Node.js design patterns的第七章內(nèi)容Scalability and Architectural Patterns。其實書中該章中的大部分內(nèi)容也并非原創(chuàng),但是它做了很好的匯總和遷移,具體我會在之后說明。所以如有雷同,不是巧合。

正文

一個怎樣的后端服務才能算得上優(yōu)秀?或者放低身段說合格?再把這個問題翻譯翻譯,優(yōu)秀或者合格的標準是什么?

假設現(xiàn)在需要你用NodeJS搭建一個http服務,我猜測你會借助express框架用不到10行的代碼完成這項工作。不能說這么做是錯的,但這樣簡易的程序是脆弱的:一旦部署上線之后,可能瞬間就被大量涌入的請求擊垮,更不要提各種潛在的漏洞危險。退一步說,即使線上程序經(jīng)過了這一關考驗,如果你要更新程序怎么辦?不得不讓用戶中斷訪問一段時間?

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式