互联网技术演进了解
目錄
- 業(yè)務(wù)復(fù)雜性
- 初創(chuàng)期
- 發(fā)展期
- 堆功能
- 優(yōu)化
- 競爭期
- 成熟期
- 用戶規(guī)模
- 性能
- 可用性
- 量變到質(zhì)變
互聯(lián)網(wǎng)業(yè)務(wù)千差萬別,但由于它們具有“規(guī)模決定一切”的相同點(diǎn),其發(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ù)雜。
初創(chuàng)期
互聯(lián)網(wǎng)業(yè)務(wù)剛開始一般都是一個創(chuàng)新的業(yè)務(wù)點(diǎn),這個業(yè)務(wù)點(diǎn)的重點(diǎn)不在于完善,而在于創(chuàng)新,只有創(chuàng)新才能吸引用戶;而且因?yàn)槠湫碌奶攸c(diǎn),其實(shí)一開始是不可能很完善的。只有隨著越來越多的用戶的使用,通過快速迭代試錯、用戶的反饋等手段,不斷地在實(shí)踐中去完善,才能繼續(xù)創(chuàng)新。
初創(chuàng)期的業(yè)務(wù)對技術(shù)就一個要求:快,但這個時候卻又是創(chuàng)業(yè)團(tuán)隊(duì)最弱小的時期,可能就幾個技術(shù)人員,所以這個時候十八般武藝都需要用上:能買就買,有開源的就用開源的。
發(fā)展期
當(dāng)業(yè)務(wù)推出后經(jīng)過市場驗(yàn)證如果是可行的,則吸引的用戶就會越來越多,此時原來不完善的業(yè)務(wù)就進(jìn)入了一個快速發(fā)展的時期。業(yè)務(wù)快速發(fā)展時期的主要目的是將原來不完善的業(yè)務(wù)逐漸完善,因此會有越來越多的新功能不斷地加入到系統(tǒng)中。對于絕大部分技術(shù)團(tuán)隊(duì)來說,這個階段技術(shù)的核心工作是快速地實(shí)現(xiàn)各種需求,只有這樣才能滿足業(yè)務(wù)發(fā)展的需要。
堆功能
業(yè)務(wù)進(jìn)入快速發(fā)展期的初期,此時團(tuán)隊(duì)規(guī)模也不大,業(yè)務(wù)需求又很緊,最快實(shí)現(xiàn)業(yè)務(wù)需求的方式是繼續(xù)在原有的系統(tǒng)里面不斷地增加新的功能,重構(gòu)、優(yōu)化、架構(gòu)等方面的工作即使想做,也會受制于人力和業(yè)務(wù)發(fā)展的壓力而放在一邊。
優(yōu)化
隨著功能越來越多,系統(tǒng)開始變得越來越復(fù)雜,后面繼續(xù)堆功能會感到越來越吃力,速度越來越慢,如何解決這個問題,一般會分為兩派:一派是優(yōu)化派,一派是架構(gòu)派。
- 優(yōu)化期
優(yōu)化的核心思想是將現(xiàn)有的系統(tǒng)優(yōu)化。例如,采用重構(gòu)、分層、優(yōu)化某個 MySQL 查詢語句,將機(jī)械硬盤換成 SSD,將數(shù)據(jù)庫從 MySQL 換成 Oracle,增加 Memcache 緩存等。優(yōu)化派的優(yōu)勢是對系統(tǒng)改動較小,優(yōu)化可以比較快速地實(shí)施;缺點(diǎn)就是可能過不了多久,系統(tǒng)又撐不住了。
- 架構(gòu)期
經(jīng)過優(yōu)化期后,如果業(yè)務(wù)能夠繼續(xù)發(fā)展,慢慢就會發(fā)現(xiàn)優(yōu)化也頂不住了,畢竟再怎么優(yōu)化,系統(tǒng)的能力總是有極限的。此時已經(jīng)沒有別的選擇,只能進(jìn)行架構(gòu)調(diào)整,主要是將原來的大系統(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ā)展,缺點(diǎn)是動作較大、耗時較長,對業(yè)務(wù)的發(fā)展影響也比較大。
競爭期
當(dāng)競爭對手加入后,大家互相學(xué)習(xí)和模仿,業(yè)務(wù)更加完善,也不斷有新的業(yè)務(wù)創(chuàng)新出來,而且由于競爭的壓力,對技術(shù)的要求是更上一層樓了。
新業(yè)務(wù)的創(chuàng)新結(jié)果是新的系統(tǒng)會更多,同時,原有的系統(tǒng)也會拆得越來越多。兩者合力的一個典型后果就是系統(tǒng)數(shù)量在原來的基礎(chǔ)上又增加了很多。架構(gòu)拆分后帶來的美好時光又開始慢慢消逝,技術(shù)工作又開始進(jìn)入了慢的狀態(tài),這又是怎么回事呢?
原來系統(tǒng)數(shù)量越來越多,到了一個臨界點(diǎn)后就產(chǎn)生了質(zhì)變,即系統(tǒng)數(shù)量的量變帶來了技術(shù)工作的質(zhì)變。主要體現(xiàn)在下面幾個方面:
- 重復(fù)造輪子
系統(tǒng)越來越多,各系統(tǒng)相似的工作越來越多。例如,每個系統(tǒng)都有存儲,都要用緩存,都要用數(shù)據(jù)庫。 - 系統(tǒng)交互一團(tuán)亂麻
系統(tǒng)越來越多,各系統(tǒng)的交互關(guān)系變成了網(wǎng)狀。
針對這個時期業(yè)務(wù)變化帶來的問題,技術(shù)工作主要的解決手段有:
- 平臺化
目的在于解決“重復(fù)造輪子”的問題。
存儲平臺化:淘寶的 TFS、京東 JFS。
數(shù)據(jù)庫平臺化:百度的 DBProxy、淘寶 TDDL。
緩存平臺化:Twitter 的 Twemproxy,豆瓣的 BeansDB、騰訊 TTC。
- 服務(wù)化
目的在于解決系統(tǒng)交互的問題,常見的做法是通過消息隊(duì)列來完成系統(tǒng)間的異步通知,通過服務(wù)框架來完成系統(tǒng)間的同步調(diào)用。
消息隊(duì)列:淘寶的 Notify、MetaQ,開源的 Kafka、ActiveMQ 等。
服務(wù)框架:Facebook 的 thrift、當(dāng)當(dāng)網(wǎng)的 Dubbox、淘寶的 HSF 等。
成熟期
當(dāng)企業(yè)熬過競爭期,成為了行業(yè)的領(lǐng)頭羊,或者整個行業(yè)整體上已經(jīng)處于比較成熟的階段,市場地位已經(jīng)比較牢固后,業(yè)務(wù)創(chuàng)新的機(jī)會已經(jīng)不大,競爭壓力也沒有那么激烈,此時求快求新已經(jīng)沒有很大空間,業(yè)務(wù)上開始轉(zhuǎn)向?yàn)?strong>求精:我們的響應(yīng)時間是否比競爭對手快?我們的用戶體驗(yàn)是否比競爭對手好?我們的成本是否比競爭對手低……
此時技術(shù)上其實(shí)也基本進(jìn)入了成熟期,該拆的也拆了,該平臺化的也平臺化了,技術(shù)上能做的大動作其實(shí)也不多了,更多的是進(jìn)行優(yōu)化。這個時候的技術(shù)優(yōu)化沒有固定的套路,只能按照競爭的要求,找出自己的弱項(xiàng),然后逐項(xiàng)優(yōu)化。在逐項(xiàng)優(yōu)化時,可以采取之前各個時期采用的手段。
用戶規(guī)模
互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展第二個主要方向就是用戶量越來越大。互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展的幾個階段典型的差別就是用戶量的差別,用戶量隨著業(yè)務(wù)的發(fā)展而越來越大。
用戶量增大對技術(shù)的影響主要體現(xiàn)在兩個方面:性能要求越來越高、可用性要求越來越高。
性能
用戶量增大給技術(shù)帶來的第一個挑戰(zhàn)就是性能要求越來越高。
以互聯(lián)網(wǎng)企業(yè)最常用的 MySQL 為例,再簡單的查詢,再高的硬件配置,單臺 MySQL 機(jī)器支撐的 TPS 和 QPS 最高也就是萬級,低的可能是幾千,高的也不過幾萬。當(dāng)用戶量增長后,必然要考慮使用多臺 MySQL,從一臺 MySQL 到多臺 MySQL 不是簡單的數(shù)量的增加,而是本質(zhì)上的改變,即原來集中式的存儲變?yōu)榱朔植际降拇鎯?#xff0c;分布式 MySQL 要考慮分庫分表、讀寫分離、復(fù)制、同步等很多問題。
可用性
用戶量增大對技術(shù)帶來的第二個挑戰(zhàn)就是可用性要求越來越高。
當(dāng)你有 1 萬個用戶的時候,宕機(jī) 1 小時可能也沒有很大的影響;但當(dāng)你有了 100 萬用戶的時候,宕機(jī) 10 分鐘,投訴電話估計就被打爆了,這些用戶再到朋友圈抱怨一下你的系統(tǒng)有多爛,很可能你就不會再有機(jī)會發(fā)展下一個 100 萬用戶了。
除了口碑的影響,可用性對收入的影響也會隨著用戶量增大而增大。1 萬用戶宕機(jī) 1 小時,你可能才損失了幾千元;100 萬用戶宕機(jī) 10 分鐘,損失可能就是幾十萬元了。
量變到質(zhì)變
通過前面的分析,我們可以看到互聯(lián)網(wǎng)業(yè)務(wù)驅(qū)動技術(shù)發(fā)展的兩大主要因素是復(fù)雜性和用戶規(guī)模,而這兩個因素的本質(zhì)其實(shí)都是量變帶來質(zhì)變。
究竟用戶規(guī)模發(fā)展到什么階段才會由量變帶來質(zhì)變,雖然不同的業(yè)務(wù)有所差別,但基本上可以按照下面這個模型去衡量:
應(yīng)對業(yè)務(wù)質(zhì)變帶來的技術(shù)壓力,不同時期有不同的處理方式,但不管什么樣的方式,其核心目標(biāo)都是為了滿足業(yè)務(wù)快的要求,當(dāng)發(fā)現(xiàn)你的業(yè)務(wù)快不起來的時候,其實(shí)就是技術(shù)的水平已經(jīng)跟不上業(yè)務(wù)發(fā)展的需要了,技術(shù)變革和發(fā)展的時候就到了。
更好的做法是在問題還沒有真正暴露出來就能夠根據(jù)趨勢預(yù)測下一個轉(zhuǎn)折點(diǎn),提前做好技術(shù)上的準(zhǔn)備。
--------來源《極客課程》? 學(xué)習(xí)摘要
總結(jié)
- 上一篇: 界面相当华丽HTC G11西安报价245
- 下一篇: python实现1/n倍频程计算