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