做者:wistbean
連接:https://www.zhihu.com/question/20004877/answer/252472988
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
nginx
有一天,隔壁小王睡前忽然有一個大膽的插法,哦不~ 大膽的想法,他要作一個在線B2C的美女網站,忽然發現接下來要發了,能夠贏取白富美了,不過他又想到了一個問題:程序員
「想法都有了,就差一個程序員了」!web
翻了一會通信錄後發現了樓下的小明就是個程序員啊!因而也無論幾點就直接從牀上跳起來,穿着拖鞋跑到樓下猛敲小明的房門。數據庫
小明這時候正在寫代碼,被連續的敲門聲嚇得寫了一個bug後就去開門了。tomcat
「什麼事啊?」服務器
「呀,我是你樓上的小王啊,你還沒睡啊?有事找你有事找你」併發
小王無論不顧的走進去,小明一陣錯愕!分佈式
「小明」,小王放低了聲音,「我有一個項目,絕對能發,如今就差開發了,據說你的技術很牛逼!」性能
「什麼項目?」,小明被小王的神祕語氣和一種不知哪來的自信引發了興趣!學習
「一個B2C的美女網站,用戶能夠購買美女的時間,好比買11月15號的下午14:00-16:00,而後下訂單,美女能夠在這兩個鍾陪用戶讀書學習 :) ……」 小王繪聲繪色,小明卻一臉無奈。。
小王知道小明的意思,就繼續吹:「到時必定賺錢的,你就是個人合夥人啊,你拿30%」。
小明不爲所動…
這時候小王冒出了些許冷汗,轉念一想,作出了猥瑣的表情說道:「我但是樓上小王哦!」
…
總之,在小王的威逼利誘下,小明勉強答應了!
小明跟小王聊了5個晚上的需求,有時候聊着聊着就一塊兒睡着了,慢慢理清了思路,就開始幹了。
他像之前的開發那樣,創建一個web工程,不斷往web裏邊添加功能,好比訂單功能,用戶管理功能,商品信息管理功能等都丟到web工程裏邊。
在小王的催促和監督下,通過兩個多月,小明終於搞完第一個初始版本!
小明和小王都測試了一遍發現沒什麼問題,就打算弄個服務器,而後把web項目和數據庫都扔到一個tomcat裏去。
上線了!!!
小王很開心,看到了本身的想法實現了,而且已經在網上能夠找到!
過了好幾天,網站的用戶量是2,也就是隻有他們2個。小王開始急了 - -
小王發現推廣很重要,因而去跟他爸爸拿了幾百萬投放廣告,他爸爸剛開始不願,說不懂互聯網,因而小王把網站發給他爸看,他爸就贊成了。
小王有錢以後,就去找廣告商了,因而慢慢的電視上的綜藝節目有了他的美女網站的廣告了!
理所固然的用戶量開始愈來愈高了,小明發現,服務器崩了!!
併發量太大,小明以爲一個tomcat已經不行了,因而小明就告訴小王,我們用戶量愈來愈多了,一個服務器不行,買多兩臺服務器吧,小王聽到用戶量增長,開心的答應了。
小明把項目在每一個服務器裏邊都放了一份,而後用nginx代理轉發。
就這樣能夠頂了一段時間…
最近小王在後臺上架了一個很是漂亮的美女,致使太多用戶訪問,服務器又崩了…
小明對小王說:「咱們得增強一下服務器配置了,把帶寬,內存和cpu都升級吧!」
因而,又頂了一段時間…
過不久又崩了!
小王開始不爽了,對小明說:「怎麼搞的?怎麼服務器總是不行??」
小明說:「我他媽怎麼知道你是個富二代?一開始覺得你是鬧着玩的,誰知道用戶量會增多?」
小王發現小明有點生氣了,他想着不能得罪程序員,因而輕聲說:「那怎麼辦?」
「我得重構了!每一個tomcat都放着整個web工程,後臺訪問也就咱們兩個,沒有併發的問題,浪費資源了。模塊之間耦合度過高了,其中一個功能升級其餘的也都得升級,系統擴展性也差,不可以靈活的去部署」,小明如是說!
小王有點似懂非懂的問:「那怎麼重構呢?」
「用分佈式!咱們把整個項目工程拆分紅多個子項目,每一個子項目負責本身的功能,例如訂單這個功能就是一個單獨的系統項目,會員系統也是一個單獨的系統。」 小明邊說邊在紙上畫了一張圖:
小王依然似懂非懂的問:「這樣比以前有多好?」
「這樣的話,咱們把每一個模塊都拆分出來,能夠靈活的部署了,好比美女商品信息這個模塊被訪問的量比較大,那麼咱們就能夠單獨對這個模塊進行服務性能的提高,不用所有都一塊兒提高。也下降了代碼的耦合度,模塊之間互不影響,這樣若是之後有人加入開發,他只要負責他的模塊去開發就能夠了,合做也高效!」 小明說道。
「那有什麼缺點沒?」
「有吧,就是各個模塊之間須要通訊,這時候須要開發接口,增長了些工做量!不過這是值得,總比花錢去買更多服務器配置好吧!」
「恩,有道理有道理!」
因而小明就這樣開始重構了他的項目,慢慢的項目的穩定性比以前的好多了。
過了6個月,項目開始盈利了,因而小王開始招兵買馬,把小明踢出去。
(哈哈,沒有啦,開玩笑的,最後他們在一塊兒了!)