39 | 互聯(lián)網(wǎng)技術(shù)演進的模式

由于各行業(yè)的業(yè)務(wù)發(fā)展軌跡并不完全相同赦肋,無法給出一個統(tǒng)一的模板讓所有的架構(gòu)師拿來就套用是越,因此我以互聯(lián)網(wǎng)的業(yè)務(wù)發(fā)展為案例飘千,談?wù)劵ヂ?lián)網(wǎng)技術(shù)演進的模式,其他行業(yè)可以參考分析方法對自己的行業(yè)進行分析筒扒。

互聯(lián)網(wǎng)業(yè)務(wù)千差萬別,但由于它們具有“規(guī)模決定一切”的相同點绊寻,其發(fā)展路徑也基本上是一致的花墩。互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展一般分為幾個時期:初創(chuàng)期澄步、發(fā)展期冰蘑、競爭期、成熟期村缸。

不同時期的差別主要體現(xiàn)在兩個方面:復(fù)雜性祠肥、用戶規(guī)模

業(yè)務(wù)復(fù)雜性

互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展第一個主要方向就是“業(yè)務(wù)越來越復(fù)雜”梯皿,我們來看看不同時期業(yè)務(wù)的復(fù)雜性的表現(xiàn)仇箱。

1. 初創(chuàng)期

互聯(lián)網(wǎng)業(yè)務(wù)剛開始一般都是一個創(chuàng)新的業(yè)務(wù)點县恕,這個業(yè)務(wù)點的重點不在于“完善”,而在于“創(chuàng)新”剂桥,只有創(chuàng)新才能吸引用戶忠烛;而且因為其“新”的特點,其實一開始是不可能很完善的权逗。只有隨著越來越多的用戶的使用况木,通過快速迭代試錯、用戶的反饋等手段旬迹,不斷地在實踐中去完善火惊,才能繼續(xù)創(chuàng)新。

初創(chuàng)期的業(yè)務(wù)對技術(shù)就一個要求:“快”奔垦,但這個時候卻又是創(chuàng)業(yè)團隊最弱小的時期屹耐,可能就幾個技術(shù)人員,所以這個時候十八般武藝都需要用上:能買就買椿猎,有開源的就用開源的惶岭。

我還以淘寶和 QQ 為例。

第一版的淘寶(https://blog.csdn.net/linlin_juejue/article/details/5959171):

第一版的 QQ(http://www.yixieshi.com/20770.html):

可以看到最開始的淘寶和 QQ 與現(xiàn)在相比犯眠,幾乎看不出是同一個業(yè)務(wù)了按灶。

2. 發(fā)展期

當(dāng)業(yè)務(wù)推出后經(jīng)過市場驗證如果是可行的,則吸引的用戶就會越來越多筐咧,此時原來不完善的業(yè)務(wù)就進入了一個快速發(fā)展的時期鸯旁。業(yè)務(wù)快速發(fā)展時期的主要目的是將原來不完善的業(yè)務(wù)逐漸完善,因此會有越來越多的新功能不斷地加入到系統(tǒng)中量蕊。對于絕大部分技術(shù)團隊來說铺罢,這個階段技術(shù)的核心工作是快速地實現(xiàn)各種需求,只有這樣才能滿足業(yè)務(wù)發(fā)展的需要残炮。

如何做到“快”韭赘,一般會經(jīng)歷下面幾個階段。

堆功能期

業(yè)務(wù)進入快速發(fā)展期的初期势就,此時團隊規(guī)模也不大泉瞻,業(yè)務(wù)需求又很緊,最快實現(xiàn)業(yè)務(wù)需求的方式是繼續(xù)在原有的系統(tǒng)里面不斷地增加新的功能苞冯,重構(gòu)袖牙、優(yōu)化、架構(gòu)等方面的工作即使想做抱完,也會受制于人力和業(yè)務(wù)發(fā)展的壓力而放在一邊贼陶。

優(yōu)化期

“堆功能”的方式在剛開始的時候好用,因為系統(tǒng)還比較簡單,但隨著功能越來越多碉怔,系統(tǒng)開始變得越來越復(fù)雜烘贴,后面繼續(xù)堆功能會感到越來越吃力,速度越來越慢撮胧。一種典型的場景是做一個需求要改好多地方桨踪,一不小心就改出了問題。直到有一天芹啥,技術(shù)團隊或者產(chǎn)品人員再也受不了這種慢速的方式锻离,終于下定決定要解決這個問題了。

如何解決這個問題墓怀,一般會分為兩派:一派是優(yōu)化派汽纠,一派是架構(gòu)派。

優(yōu)化派的核心思想是將現(xiàn)有的系統(tǒng)優(yōu)化傀履。例如虱朵,采用重構(gòu)、分層钓账、優(yōu)化某個 MySQL 查詢語句碴犬,將機械硬盤換成 SSD,將數(shù)據(jù)庫從 MySQL 換成 Oracle梆暮,增加 Memcache 緩存等服协。優(yōu)化派的優(yōu)勢是對系統(tǒng)改動較小,優(yōu)化可以比較快速地實施啦粹;缺點就是可能過不了多久偿荷,系統(tǒng)又撐不住了。

架構(gòu)派的核心思想是調(diào)整系統(tǒng)架構(gòu)卖陵,主要是將原來的大系統(tǒng)拆分為多個互相配合的小系統(tǒng)遭顶。例如,將購物系統(tǒng)拆分為登錄認(rèn)證子系統(tǒng)泪蔫、訂單系統(tǒng)、查詢系統(tǒng)喘批、分析系統(tǒng)等撩荣。架構(gòu)派的優(yōu)勢是一次調(diào)整可以支撐比較長期的業(yè)務(wù)發(fā)展,缺點是動作較大饶深、耗時較長餐曹,對業(yè)務(wù)的發(fā)展影響也比較大。

相信在很多公司都遇到這種情況敌厘,大部分情況下都是“優(yōu)化派”會贏台猴,主要的原因還是因為此時“優(yōu)化”是最快的方式。至于說“優(yōu)化派”支撐不了多久這個問題,其實也不用考慮太多饱狂,因為業(yè)務(wù)能否發(fā)展到那個階段還是個未知數(shù)曹步,保證當(dāng)下的競爭力是最主要的問題。

架構(gòu)期

經(jīng)過優(yōu)化期后休讳,如果業(yè)務(wù)能夠繼續(xù)發(fā)展讲婚,慢慢就會發(fā)現(xiàn)優(yōu)化也頂不住了,畢竟再怎么優(yōu)化俊柔,系統(tǒng)的能力總是有極限的筹麸。Oracle 再強大,也不可能一臺 Oracle 頂住 1 億的交易量雏婶;小型機再好物赶,也不可能一臺機器支持 100 萬在線人數(shù)。此時已經(jīng)沒有別的選擇留晚,只能進行架構(gòu)調(diào)整酵紫,在優(yōu)化期被壓制的架構(gòu)派開始揚眉吐氣了,甚至?xí)湴恋卣f“看看吧倔丈,早就說要進行架構(gòu)調(diào)整憨闰,你們偏要優(yōu)化,現(xiàn)在還是頂不住了吧需五,哼……”鹉动。

架構(gòu)期可以用的手段很多,但歸根結(jié)底可以總結(jié)為一個字“拆”宏邮,什么地方都可以拆泽示。

拆功能:例如,將購物系統(tǒng)拆分為登錄認(rèn)證子系統(tǒng)蜜氨、訂單系統(tǒng)械筛、查詢系統(tǒng)、分析系統(tǒng)等飒炎。

拆數(shù)據(jù)庫:MySQL 一臺變兩臺埋哟,2 臺變 4 臺,增加 DBProxy郎汪、分庫分表等赤赊。

拆服務(wù)器:服務(wù)器一臺變兩臺,2 臺變 4 臺煞赢,增加負(fù)載均衡的系統(tǒng)抛计,如 Nginx、HAProxy 等照筑。

3. 競爭期

當(dāng)業(yè)務(wù)繼續(xù)發(fā)展吹截,已經(jīng)形成一定規(guī)模后瘦陈,一定會有競爭對手開始加入行業(yè)來競爭,畢竟誰都想分一塊蛋糕波俄,甚至有可能一不小心還會成為下一個 BAT晨逝。當(dāng)競爭對手加入后,大家互相學(xué)習(xí)和模仿弟断,業(yè)務(wù)更加完善咏花,也不斷有新的業(yè)務(wù)創(chuàng)新出來,而且由于競爭的壓力阀趴,對技術(shù)的要求是更上一層樓了昏翰。

新業(yè)務(wù)的創(chuàng)新給技術(shù)帶來的典型壓力就是新的系統(tǒng)會更多,同時刘急,原有的系統(tǒng)也會拆得越來越多棚菊。兩者合力的一個典型后果就是系統(tǒng)數(shù)量在原來的基礎(chǔ)上又增加了很多。架構(gòu)拆分后帶來的美好時光又開始慢慢消逝叔汁,技術(shù)工作又開始進入了“慢”的狀態(tài)统求,這又是怎么回事呢?

原來系統(tǒng)數(shù)量越來越多据块,到了一個臨界點后就產(chǎn)生了質(zhì)變码邻,即系統(tǒng)數(shù)量的量變帶來了技術(shù)工作的質(zhì)變。主要體現(xiàn)在下面幾個方面:

重復(fù)造輪子

系統(tǒng)越來越多另假,各系統(tǒng)相似的工作越來越多像屋。例如,每個系統(tǒng)都有存儲边篮,都要用緩存己莺,都要用數(shù)據(jù)庫。新建一個系統(tǒng)戈轿,這些工作又要都做一遍凌受,即使其他系統(tǒng)已經(jīng)做過了一遍,這樣怎么能快得起來思杯?

系統(tǒng)交互一團亂麻

系統(tǒng)越來越多胜蛉,各系統(tǒng)的交互關(guān)系變成了網(wǎng)狀。系統(tǒng)間的交互數(shù)量和系統(tǒng)的數(shù)量成平方比的關(guān)系色乾。例如腾么,4 個系統(tǒng)的交互路徑是 6 個,10 個系統(tǒng)的交互路徑是 45 個杈湾。每實現(xiàn)一個業(yè)務(wù)需求,都需要幾個甚至十幾個系統(tǒng)一起改攘须,然后互相調(diào)用來調(diào)用去漆撞,聯(lián)調(diào)成了研發(fā)人員的災(zāi)難、聯(lián)測成了測試人員的災(zāi)難、部署成了運維的災(zāi)難浮驳。

針對這個時期業(yè)務(wù)變化帶來的問題悍汛,技術(shù)工作主要的解決手段有:

平臺化

目的在于解決“重復(fù)造輪子”的問題。

存儲平臺化:淘寶的 TFS至会、京東 JFS离咐。

數(shù)據(jù)庫平臺化:百度的 DBProxy、淘寶 TDDL奉件。

緩存平臺化:Twitter 的 Twemproxy宵蛀,豆瓣的 BeansDB、騰訊 TTC县貌。

服務(wù)化

目的在于解決“系統(tǒng)交互”的問題术陶,常見的做法是通過消息隊列來完成系統(tǒng)間的異步通知,通過服務(wù)框架來完成系統(tǒng)間的同步調(diào)用煤痕。

消息隊列:淘寶的 Notify梧宫、MetaQ,開源的 Kafka摆碉、ActiveMQ 等塘匣。

服務(wù)框架:Facebook 的 thrift、當(dāng)當(dāng)網(wǎng)的 Dubbox巷帝、淘寶的 HSF 等忌卤。

4. 成熟期

當(dāng)企業(yè)熬過競爭期,成為了行業(yè)的領(lǐng)頭羊锅睛,或者整個行業(yè)整體上已經(jīng)處于比較成熟的階段埠巨,市場地位已經(jīng)比較牢固后,業(yè)務(wù)創(chuàng)新的機會已經(jīng)不大现拒,競爭壓力也沒有那么激烈辣垒,此時求快求新已經(jīng)沒有很大空間,業(yè)務(wù)上開始轉(zhuǎn)向為“求精”:我們的響應(yīng)時間是否比競爭對手快印蔬?我們的用戶體驗是否比競爭對手好勋桶?我們的成本是否比競爭對手低……

此時技術(shù)上其實也基本進入了成熟期,該拆的也拆了侥猬,該平臺化的也平臺化了例驹,技術(shù)上能做的大動作其實也不多了,更多的是進行優(yōu)化退唠。但有時候也會為了滿足某個優(yōu)化鹃锈,系統(tǒng)做很大的改變。例如瞧预,為了將用戶響應(yīng)時間從 200ms 降低到 50ms屎债,可能就需要從很多方面進行優(yōu)化:CDN仅政、數(shù)據(jù)庫、網(wǎng)絡(luò)等盆驹。這個時候的技術(shù)優(yōu)化沒有固定的套路圆丹,只能按照競爭的要求,找出自己的弱項躯喇,然后逐項優(yōu)化辫封。在逐項優(yōu)化時,可以采取之前各個時期采用的手段廉丽。

用戶規(guī)模

互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展第二個主要方向就是“用戶量越來越大”倦微。互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展會經(jīng)歷“初創(chuàng)期雅倒、發(fā)展期璃诀、競爭期、成熟期”幾個階段蔑匣,不同階段典型的差別就是用戶量的差別劣欢,用戶量隨著業(yè)務(wù)的發(fā)展而越來越大。

用戶量增大對技術(shù)的影響主要體現(xiàn)在兩個方面:性能要求越來越高裁良、可用性要求越來越高凿将。

1. 性能

用戶量增大給技術(shù)帶來的第一個挑戰(zhàn)就是性能要求越來越高。以互聯(lián)網(wǎng)企業(yè)最常用的 MySQL 為例价脾,再簡單的查詢牧抵,再高的硬件配置,單臺 MySQL 機器支撐的 TPS 和 QPS 最高也就是萬級侨把,低的可能是幾千犀变,高的也不過幾萬。當(dāng)用戶量增長后秋柄,必然要考慮使用多臺 MySQL获枝,從一臺 MySQL 到多臺 MySQL 不是簡單的數(shù)量的增加,而是本質(zhì)上的改變骇笔,即原來集中式的存儲變?yōu)榱朔植际降拇鎯Α?/p>

稍微有經(jīng)驗的工程師都會知道省店,分布式將會帶來復(fù)雜度的大幅度上升。以 MySQL 為例笨触,分布式 MySQL 要考慮分庫分表懦傍、讀寫分離、復(fù)制芦劣、同步等很多問題粗俱。

2. 可用性

用戶量增大對技術(shù)帶來的第二個挑戰(zhàn)就是可用性要求越來越高。當(dāng)你有 1 萬個用戶的時候虚吟,宕機 1 小時可能也沒有很大的影響源梭;但當(dāng)你有了 100 萬用戶的時候娱俺,宕機 10 分鐘,投訴電話估計就被打爆了废麻,這些用戶再到朋友圈抱怨一下你的系統(tǒng)有多爛,很可能你就不會再有機會發(fā)展下一個 100 萬用戶了模庐。

除了口碑的影響烛愧,可用性對收入的影響也會隨著用戶量增大而增大。1 萬用戶宕機 1 小時掂碱,你可能才損失了幾千元怜姿;100 萬用戶宕機 10 分鐘,損失可能就是幾十萬元了疼燥。

量變到質(zhì)變

通過前面的分析沧卢,我們可以看到互聯(lián)網(wǎng)業(yè)務(wù)驅(qū)動技術(shù)發(fā)展的兩大主要因素是復(fù)雜性和用戶規(guī)模,而這兩個因素的本質(zhì)其實都是“量變帶來質(zhì)變”醉者。

究竟用戶規(guī)模發(fā)展到什么階段才會由量變帶來質(zhì)變但狭,雖然不同的業(yè)務(wù)有所差別,但基本上可以按照下面這個模型去衡量撬即。

應(yīng)對業(yè)務(wù)質(zhì)變帶來的技術(shù)壓力立磁,不同時期有不同的處理方式,但不管什么樣的方式剥槐,其核心目標(biāo)都是為了滿足業(yè)務(wù)“快”的要求唱歧,當(dāng)發(fā)現(xiàn)你的業(yè)務(wù)快不起來的時候,其實就是技術(shù)的水平已經(jīng)跟不上業(yè)務(wù)發(fā)展的需要了粒竖,技術(shù)變革和發(fā)展的時候就到了颅崩。更好的做法是在問題還沒有真正暴露出來就能夠根據(jù)趨勢預(yù)測下一個轉(zhuǎn)折點,提前做好技術(shù)上的準(zhǔn)備蕊苗,這對技術(shù)人員的要求是非常高的主穗。

小結(jié)

今天我為你講了互聯(lián)網(wǎng)技術(shù)演進的基本模式窒盐,希望對你有所幫助。

這就是今天的全部內(nèi)容,留一道思考題給你吧诡蜓,參考今天文章的方法,簡單分析一下你所在行業(yè)级历,看看是否存在典型的技術(shù)演進模式纺荧?

歡迎你把答案寫到留言區(qū),和我一起討論非剃。相信經(jīng)過深度思考的回答置逻,也會讓你對知識的理解更加深刻。(編輯亂入:精彩的留言有機會獲得豐厚福利哦1刚馈)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末券坞,一起剝皮案震驚了整個濱河市鬓催,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恨锚,老刑警劉巖宇驾,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異猴伶,居然都是意外死亡课舍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門他挎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筝尾,“玉大人,你說我怎么就攤上這事办桨〕镆” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵呢撞,是天一觀的道長损姜。 經(jīng)常有香客問我,道長狸相,這世上最難降的妖魔是什么薛匪? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮脓鹃,結(jié)果婚禮上逸尖,老公的妹妹穿的比我還像新娘。我一直安慰自己瘸右,他們只是感情好娇跟,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著太颤,像睡著了一般苞俘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上龄章,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天吃谣,我揣著相機與錄音,去河邊找鬼做裙。 笑死岗憋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锚贱。 我是一名探鬼主播仔戈,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了监徘?” 一聲冷哼從身側(cè)響起晋修,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凰盔,沒想到半個月后墓卦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡廊蜒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年趴拧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片山叮。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖添履,靈堂內(nèi)的尸體忽然破棺而出屁倔,到底是詐尸還是另有隱情,我是刑警寧澤暮胧,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布锐借,位于F島的核電站,受9級特大地震影響往衷,放射性物質(zhì)發(fā)生泄漏钞翔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一席舍、第九天 我趴在偏房一處隱蔽的房頂上張望布轿。 院中可真熱鬧,春花似錦来颤、人聲如沸汰扭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萝毛。三九已至,卻和暖如春滑黔,著一層夾襖步出監(jiān)牢的瞬間笆包,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工略荡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留庵佣,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓撞芍,卻偏偏與公主長得像秧了,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子序无,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容