上周,騰訊云舉 辦了“最強應用,由你智造”的沙龍活動。 騰訊云的商務合作負責人王志永表示,騰訊云開始做應用的時候,有許多血的教訓。尤其是服務的微信、QQ空間、還有手Q這種過億級的應用,踩過很多坑,有很 多血和淚的教訓。這次是希望把經驗分享出來,一來是讓創業者和互聯網公司少走些彎路,二來希望以此吸引更多的客戶。
騰訊云研發總監鄭立峰:打造一款億級應用會碰到什么問題?
每年應用數都在不斷地增長。我前兩天向我們開放平臺的同事要了一個數據,注冊的開發者有一兩百萬,然后活躍的開發者,也就是一個月內還在經常地不斷上傳應用的這些的廠商,也有達到了20多萬。由此可見,整個行業新的應用是非常非常多的。
那么大家在創業的過程當中,也遇到了各種各樣的挑戰。有產品上的挑戰,產品同質化,然后流量成本也很高,大家可能要去各個電子市場買流量。然后運營成本也很高,比如說你去拉一個新用戶,新用戶的成本是越來越高。技術上的挑戰,往往會被忽視。
問題一:流量突然暴增,擴展性不足
有一家客戶,他在一周內流量暴漲,連自己都沒有想到在一周內從一個基本上沒有什么人用的應用,突然變成了全國人民都非常喜愛用的一個應用。然后一周 內dau就突破了兩百萬。他們的服務器可能就幾臺,他們的程序員可能就幾個人。那么面對著突然到來的流量暴增,技術人員壓力非常大。
我去訪談的時候我坐在他們旁邊,跟技術人員去聊,他說我都好幾天沒有睡覺了,然后因為流量暴漲所帶來的各種各樣的技術問題,在一兩天里面集中地爆發出來,流量暴漲、程序的bug,被無數人使用之后各種程序bug也會出來。那么性能問題、架構可擴展性問題等等的暴露出來了。
我把第一個問題列成是業務訪問短時間內暴漲、技術架構彈性不足,導致服務器壓跨。一個是說高性能的設計不足,另外是擴展性不足。還有就算擴展性是足 的,那么幾天里面的流量暴漲,面臨的一個問題是說我采購服務器也沒有那么快。按照我們常規的采購服務器的流程的話,可能我去買服務器、下單,就算按照快 的,我在中關村里面去買一個服務器、下單,等把它能夠上架可能也需要幾天工夫,但是在這幾天里面已經是擋不住了。
另外一個情況,還有一類企業是這樣的。就是每個月的訪問數據都在漲,也就是說每個月都漲dau漲個10萬。然后這樣的一些公司的運維的同事也很苦 逼,每個月都在采購設備、上架設備,采購設備、然后上架設備,不斷地做著重復性的勞動。這樣的勞動對他來說,一方面是感受到公司快速發展帶來的喜悅,另外 一方面也是在不斷地重復性的勞動,他本身的自我的價值認知是不高的,因為一直在做這樣的一些事情。
解決辦法:部署高質量的云主機
高質量的云主機。云的一個普遍的特性,就是鼠標點幾下、機器就拿到了??赡苁?00臺,也可能是1000臺。這樣對于移動應用的好處不言而喻。你的業務量漲了,你馬上可以把機器部署出來,為了達到快速部署,我們有一個鏡像的能力。比如說你是web服務的話,我可以把第一臺的web而做個鏡像,然后買一百臺機器,然后一百臺快速的進行部署,整個部署的速度也是非常快的。
“餓了么”的實例,它原來有一個機房,差不多有兩三百臺機器吧。但是每個月的業務都在漲,所以運維部門很頭疼,就像我剛才說的每個月都要采購設備、 上架設備。然后那個機房容量還有限,可能快滿了。那再部署一個機房,整個周期又很強,所以我們跟他說,你把服務部署在騰訊云機房吧,我們第一可以給你非常 高的安全防護,第二我們的性能又非常好。在這樣一種情況下,兩個機房如何打通,我們建設了一個VPN,是一條加密的隧道,那么從它的自有的機房能夠同步到 我們騰訊云的機房,通過數據庫同步,把數據同步過來。
實際的情況呢,從北京的機房到我們上海的云機房,通過VPN打通之后,數據庫的延時是60毫秒,遠遠超出大家對這個事情的預期。
問題二:安全問題,總有幾個“友商”不太喜歡你的應用
社會很大,總有幾個廠商不太喜歡你們的應用。那么這樣的情況下,DDOS的攻擊,目前的情況來看是越來越頻繁地在出現,而且花樣也越來越多。以前說的最多的是DDOS攻擊,現在CC攻擊、主機入侵、木馬植入這種情況越來越多。
還有新的一種情況,在我們O2O里面是比較明顯的,就是O2O的這些信息平臺都很關注它的上面的商家的信息。那么同類應用出來的時候,總是想把這樣的商家的信息給扒過來,這樣的情況對于O2O的應用來說也是不太能忍,他們也會來求助我們有沒有防扒的一些手段。
還有安全防護。尤其舉辦重大活動的時候,比如說餓了么要舉行一個美食街,舉辦重大活動的時候被攻擊、被打趴下,那這個業務基本上沒有辦法干了。
在安全層,騰訊云有全方位的安全防護體系——宙斯盾+大禹、洋蔥、WAF防護。
“宙斯盾”是安全防護非常重要的一個組件,騰訊所有自己的業務也都在用這個服務。它有幾個特性,當有用戶打擊你,對你這個應用進行攻擊的時候,這個 “宙斯盾”會在幾秒內探測出來,馬上開啟防御,幾秒就開啟防御了。然后它會把攻擊流量轉移到另外一個地方去,進行流量清洗,以保證正常的流量能夠正常的進 來,大概是這樣的。
它整個的反應是很快的。剛開始也沒有這么快,我們已經打磨挺長時間了,現在可以做到幾秒內馬上就可以進行響應。前陣子,有一次大的攻擊,是500G 流量,對我們的一個機房進行攻擊,它快速作出了響應,幾秒內就把攻擊流量轉移到另外的一個地方去了。那么其他的流量都能夠正常進來,我們所有的業務都能夠 正常的去運作。像這樣一個問題,如果說你不是放在云機房的話,可能碰到這樣的情況還是挺棘手的。
自己去應對、去解決這樣的一個問題是非常棘手的。我們也碰到很多客戶,也包括游戲的客戶,也包括應用的客戶,那會被打的開不了門,一下子就被打趴下 了,這樣的話其實業務就沒有辦法正常開展了。那騰訊對安全一直向來都非常重視,我們的QQ業務也在用它,我們的微信業務也在用它。
“大禹”,“大禹”這個防御體系跟“宙斯盾”有點不太一樣?!爸嫠苟堋笔窃跈C房前頭加了一個防御盾,誰來打我,我就把流量干掉。那么“大禹”是說我在全國有400多個接入點,我在域名解析的時候就是就近解析到某一個節點去的。那么再通過那些節點再到我們的云機房。
當有用戶來打擊的時候,域名解析、我可能把它解析到某個OC節點上,它打趴下一個節點,我其他的節點都還是正常的。它打趴下哪一個節點都沒有關系。那么我們這套的“大禹”的分布式的防御系統,最高可以支持2T的DDOS攻擊,所以這個容量已經是非常高了。
騰訊云工程師蔡璞:從35萬到600萬訂單,滴滴打車差點崩潰
2014年,移動應用排行榜上排名前10個APP幾乎都是BAT的,但是這個原因肯定有很多。其中一個很重要的原因,就是BAT在這么多年長期的運營積累的海量運營的經驗,為他們旗下的這些APP是添上了翅膀。
那么日訂單35萬的APP和日訂單600萬的APP應用有什么區別?大家知道APP應用其實是客戶端和服務器端共同來完成的功能。那么對于客戶端來 說,可能就是一些界面進行優化,然后功能有些疊加。但是在服務器端,那就真的是要做到性能、架構有質的提升,上的不是一個臺階,可能是很多個臺階。
今天要講的從35萬到600萬訂單的應用其實就是滴滴打車。
滴滴打車,2014年和快的死磕的時候,其實拼的、燒的是錢。但是拼的是他們的后臺的服務器。當時的情況就是誰扛不住、那誰就輸了。
滴滴打車,目前2014年全國使用滴滴打車的用戶超過1億,那2014年平安夜單日全國用滴滴打車出行人數超過了3000萬人。對比2013年,滴 滴打車月活躍用戶增長了600多倍,而打車成功率是高于90%。這個數字看起來是很客觀的。但是現在滴滴打車在騰訊云上的架構,我們是評估過的,日訂單量 再翻一倍也是沒有問題的,我們能扛住的。
那么這種架構是怎么實現出來的,羅馬不是一天建成的,但是滴滴打車這種架構也不是一下子就做成了的。
2014年初,騰訊云開始和滴滴打車接觸。騰訊云開始接觸滴滴打車的時候,滴滴打車當時是流量上去了,但是用戶體驗是快速下降了的。這個反映就是在 用戶下單的時候下不了單,司機搶不到單,然后這個應用可能就會出現整個應用就卡在那里,或者是干脆用戶就關掉、退出。這么差的用戶體驗的根本原因就是它的 后臺架構上的問題,它的后臺當時已經扛不住了。
比如說出現個LVS單機故障,也就是單點,整個一個系統的關鍵節點出現問題,一個主件掛掉、那么整個路徑就全部掛掉。還有一個就是存儲系統的故障, 然后還有網絡故障,交換機流量滿了。因為當時不是BGPIP的,所以說在不是BGPIP的,在跨網、跨運營商的時候,在流量高的時候就會出現丟包率高、延 時高,用戶體驗就下降了。
還有一個就是Webserver扛不住,他們當時Webserver用了很多,有狀態的,就導致它需要擴容的時候根本沒有短期內把它擴上去,就機器都加不上去。還有就是Mysql扛不住,鏈接數上限這些問題。
滴滴打車是有三個主要的問題,一個是用戶的下單,第二個是司機搶單,第三個就是系統分單。其中用戶下單的時候,用戶下了單會不停地看這個單的情況, 而司機搶單的時候,他搶了單會不停地上報他的坐標,還有就是系統分單、它會有很大的計算量來匹配司機和用戶。所有的應用的關鍵點都落實到他們的數據上,都 是到Mysql上面來。所有的大量的數據讀取,都是他們的Mysql來扛。當訂單量大的時候就扛不下去了,很多的應用最后就卡在數據庫這里了。
對于這些問題,騰訊云給出了解決方案。LVS大家都很熟了,就是對于這種開源軟件,創業者其實很喜歡用,非常簡單,方便快捷地部署起來就能用。但是 開源軟件有個問題,就是當上量商業化之后,會出現很多你意想不到的奇奇怪怪的問題出來,那么沒法解決的,這不是說寫開源軟件的一些大牛們沒法解決這些問 題,說是他當時寫這些開源軟件的時候,他都不知道當你的量上去之后會有這么復雜的情況需要你來處理。
騰訊,其實也是經歷了從開源軟件的這種過程過來的。我們以前也用過LVS,現在發展到了我們自己的外網負載更換系統,我們內部叫TGW,它是多個集 群來組成的,而每個集群目前標配是4臺機器,但是這4臺是可擴容的。就是說這個集群里的單機的pps可以達到120萬,但是我們通常到80萬的時候就開始 進行擴容了,就跑到120萬,集群鏈接數可以到1.2個億。
還有就是騰訊云有百G出口帶寬,它有BGPIP,那么就解決了跨網、跨容量、跨運營商的網絡之間的這種問題。
分系統解耦,其實這就是解決你有機器、你架不上去的這些問題,來讓你的設備、你的系統能夠平行的擴。
Nosql高速緩存,把它的那些常用的熱數據用Mysql這種可以高并發的、內存很快的速度來把它扛下來。
高性能的CDB。其實高性能的CDB,目前就是我前兩天和我們做數據庫的總監談過一次,他說我們現在測出來的我們實際的高性能CBD馬上推出來,可以到4W+qps。
最后就是機房保障。
騰訊在這么多年的海量運營過程中,其實是積累了一套很完善的機房建設標準的,只要你的業務放在騰訊云上面,要么你的機房保障,其實是和QQ、微信這些應用的機房保障條件是完全一樣的。
來源:鈦媒體?? 作者:李小年