前言
上周有幸和淘寶前端團(tuán)隊的七念老師做了一些NodeJS方面上的交流(實際情況其實是他電話面試了我╮(╯-╰)╭),我們主要聊到了我參與維護(hù)的一個線上NodeJS服務(wù),關(guān)于它的現(xiàn)狀和當(dāng)下的不足。他向我提出的一些問題帶給了我很大啟發(fā),盡管回答的不是很好。問題大意是,對于你意識到的這些不足,你將嘗試怎樣去改進(jìn)它們?甚至,如果給你一個機(jī)會來重新設(shè)計這個系統(tǒng)服務(wù),你將如何做?相比現(xiàn)在有什么的改進(jìn)?
為什么說這些問題對我產(chǎn)生了啟發(fā),是因為這些問題是我不曾考慮過的?;蛘哒f考慮過,但沒有這么嚴(yán)肅的考慮過。這里的“嚴(yán)肅”指的是具體到線上,細(xì)節(jié),容災(zāi)容錯等方面。而在電話之后我重新嘗試回答這些問題的過程中又收獲了不少新的知識。
這篇文章與以往的文章不同,并不是闡述某一個問題的最佳解決方案,也不會落實到具體的代碼上。而是分享在探尋答案過程中收獲的心得、留下的困惑還有一點個人的經(jīng)驗。至于這些能否拿來回答最初的那些問題我沒有十足的把握,也許能,但肯定不是最佳答案。因為后端架構(gòu)實在一個很有深度的話題,也是一個極其成熟的技術(shù)方向。即使有了理論方面的積累,面對千變?nèi)f化的業(yè)務(wù)需求難免還是靈活的對方案進(jìn)行改進(jìn),而無論是理論還是實踐經(jīng)驗都是我欠缺的。
這段話本來應(yīng)該是寫在結(jié)尾,感覺順嘴也就掛在了開頭。
最后,本文的部分內(nèi)容和圖片參考自圖書Node.js design patterns的第七章內(nèi)容Scalability and Architectural Patterns。其實書中該章中的大部分內(nèi)容也并非原創(chuàng),但是它做了很好的匯總和遷移,具體我會在之后說明。所以如有雷同,不是巧合。
正文
一個怎樣的后端服務(wù)才能算得上優(yōu)秀?或者放低身段說合格?再把這個問題翻譯翻譯,優(yōu)秀或者合格的標(biāo)準(zhǔn)是什么?
假設(shè)現(xiàn)在需要你用NodeJS搭建一個http服務(wù),我猜測你會借助express框架用不到10行的代碼完成這項工作。不能說這么做是錯的,但這樣簡易的程序是脆弱的:一旦部署上線之后,可能瞬間就被大量涌入的請求擊垮,更不要提各種潛在的漏洞危險。退一步說,即使線上程序經(jīng)過了這一關(guān)考驗,如果你要更新程序怎么辦?不得不讓用戶中斷訪問一段時間?
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26