雙十一小馬哥背後的女人們
標題有點嘩眾取寵的味道了,當然了背後到底是誰不重要,重要是創造了這一盛舉的背後到底發生了什麼?寫這篇文章的時候,國慶將至,我就在想雙十一還會遠嗎?每年的雙十一伴著TT貓的打折促銷活動如約而至,瘋狂的購物也不能讓人遺忘它最初的意義——光棍節,單身的人們是感歎調侃一句不著急,還是早已春心欲動,因為這樣或那樣的原因,至今一人看花,程序猿的你依舊是單身汪。
不得不說TT貓的迅勐發展得益於互聯網和中國的人口紅利,否則何來上億級的並發請求,所以小馬哥你最應該感謝的是全國人民。
那麼TT貓又是如何抵擋住上億用戶的訪問?這不得不佩服TT貓的工程師們,看過淘寶技術這十年都知道,架構從來不是從初始就有的,也不是精心設計而成的,而是隨著業務慢慢演進而來的。當然了,小馬哥自己也曾說過:雙十一從互聯網技術本身大容量的並發處理可能已經達到了人類社會的極限,到目前為止的極限,當然了還有很大的提升空間,支付能力巨大提升,物流能力巨大提升。
今天,就扯開跟大家聊一聊TT貓是如何來駕馭雙十一的,首先大家看一張全係後端架構圖(請自行忽略部分環節和細節):
防禦篇
俗話說的好,人怕出名豬怕壯,樹大招風風撼樹。其實說這些,就是有些不懷好意的"黑客"從中作梗,惡意攻擊使壞,見不得別人好。但是大家有沒有發現,每年的雙十一TT貓基本上都會平穩度過,為什麼?現如今,曾經的小貓也成為了老虎,每年的雙十一小馬哥特別增強了海量DDoS清洗能力,可以完美防禦SYN Flood、ACK Flood、ICMP Flood、UDP Flood、NTP Flood 、SSDP Flood、DNS Flood、HTTP Flood、CC攻擊,就問你?黑客們,怕不怕?
記得知乎上有人問過,黑客為什麼不攻擊淘寶?有個答主回答的比較全麵與大家分享一下:
- 攻擊了,沒啥動靜
- 攻擊了,製造出動靜了,監控發現了,動靜不大掐滅了
- 攻擊了,製造出動靜了,監控發現了,動靜有點大逮起來了
- 一聽阿裏,沒信心能進去,算了
- 一聽阿裏,沒信心能出來,算了
且看下麵更生動形象逗比的回答,其實我們都是DDOS的一份子:
你不知道麼,每年雙十一都有超大規模的ddos攻擊啊,去年我也參與了,就是成本有點高,肉疼,還吃了一個月的土~
解析篇
首先,我們來看一張"雙十一"各省消費排行前10(12小時數據),圖片源於網絡,我們暫且不談數據準確性以及後麵到底有幾個零,作為工程師更應該要關心的是數據排行分布情況。
大家都知道像TT貓這樣的巨型貓,光靠一張嘴怎麼能吃下這麼多剁手黨?
安裝使用過寬帶的小夥伴們,可能會遇到各種服務商,什麼鐵通,網通,長城之類的,其實大多租賃的是電信或者聯通的線路。不知道大家有沒有聽說過這樣一句話: 世界上,最遙遠的距離不是南極和北極,而是電信和聯通。尼瑪,玩遊戲扔鍵盤的有麼有?
江湖流傳,北聯通南電信,檢測一下TT貓域名的A記錄,以下是截取的部分記錄,TT貓根據省份或者城市的人口以及消費情況做了不同的IP解析。
集群篇
其實雲解析篇,就是最簡單最原始的集群實現,它根據用戶的請求按照地域劃分,根據用戶的網絡環境分配最合適的主機服務,不管你是電信還是網通都暢通無阻。
下麵是TT貓的集群基礎架構圖,負載均衡采用集群部署,可實現會話同步,以消除服務器單點故障,提升冗餘,保證服務的穩定性,阿裏雲當前提供四層(TCP協議和UDP協議)和七層(HTTP和HTTPS協議)的負載均衡服務。
四層采用開源軟件LVS(Linux Virtual Server)+ keepalived的方式實現負載均衡,並根據雲計算需求對其進行了個性化定製。
七層采用Tengine實現負載均衡。Tengine是由淘寶網發起的Web服務器項目,它在Nginx的基礎上,針對有大訪問量的網站需求,添加了很多高級功能和特性。
緩存篇
如上圖所示,我們在應用服務和數據庫之間加一層選擇cache,這層cache這裏采用Redis集群,由於Redis是基於內存設計,大家都知道內存的讀寫速度遠比磁盤快得多,對於熱點數據或者基於某種應用場景的快速響應,我們可以把數據暫存至Redis,來加速數據的讀寫,減少磁盤IO的操作,減少重複查詢,提高吞吐量,縮短響應時間。
當然了,做到以上緩存的配置還遠遠不夠,這裏隻是簡單的介紹一下後端緩存架構原理。對於前端,能夠優化的地方可能會更多,比如瀏覽器緩存、CDN緩存等等。
隊列篇
雙十一哪天,每個人都是DDOS的一份子,有女朋友的在忙著給女朋友清空購物車,沒男朋友的忙著給自己清空購物車。
狂歡的這一天肯定少不了秒殺或者團搶,這時候就需要使用消息隊列來進行流量削鋒,要知道再強大的DB也承受不住如此大的並發請求,數量有限,解決問題的辦法就是讓大家安安靜靜的排隊。
當然了,全靠後端服務還遠遠不夠的,對於大並發的秒殺或者團搶,我們需要提前生成靜態HTML內容並推送至CDN,而不是等用戶主動去拉取。同時為了防止作弊和刷搶,還需要做好前台校驗,比如常見的圖片驗證碼,手機驗證碼校驗服務,對於惡意IP後台直接禁止訪問。
數據篇
近幾年TT貓雙十一直播大屏給大家帶來了不少驚喜,你以為那一個億一個億的跳動、突破、刷屏以及立體全方位的統計排名是美工PS的嗎?
顯然不是,TT貓通過自研的大數據計算服(MaxCompute)能夠快速、完全托管的 GB/TB/PB 級數據倉庫。MaxCompute 擁有完善的數據導入方案以及多種經典的分布式計算模型,能夠更快速的解決海量數據計算問題。
這僅僅是數據處理,更多詳見:阿裏DataV 2016雙十一媒體大屏回顧&技術分享
日誌篇
對於日誌的重要性,相信大家都不言而喻了吧,但是仍會有不少公司並不是太重視,有的隨手往數據庫一扔,也有的寫入文本,各種類型的日誌甚至都不會太去區分,隻有線上出問題了才會去翻翻看。
當然了大部分互聯網公司還是比較重視日誌的存儲、分析、監控的,提到日誌實時分析,不少人都會想到比較流行的開源日誌組件的ELK Stack(Elastic/Logstash/Kibana)來搭建,在社區中有大量的內容和使用案例。
當然了,對於大公司而言,不僅僅滿足於這些開源組件,比如TT貓的日誌服務(SLS),以下是日誌從收集到分析的整體架構:
相比自建ELK它又有什麼優勢呢?據說,SLS在提供同樣查詢速度、更高吞吐量、更強分析能力背後隻需要開源方案13%成本。
隻有完善的日誌采集、存儲、清洗、展示,才會保障線上實時的監控預警,為雙十一保駕護航。
娛樂篇
夢想還是要有的,錢多了就能實現。
馬雲合壁,江湖放歌,或許再過幾年,小馬哥就可以出專輯了。
總結
簡單幾篇怎麼能概述的了TT貓備戰雙十一的艱辛曆程呢,無論是前端設計,後端架構還是讓人嫌棄的產品狗都參與其中,每年都會為大家呈現一個不一樣的狂歡節。隻能說,一群優秀的人創造了一個了不起的公司,才有了今天的狂歡。
最後弱弱的問下,運維小哥你準備好了麼?據說某浪能同時抗壓8個明星出軌。
作者: 小柒
出處: https://blog.52itstyle.com
分享是快樂的,也見證了個人成長曆程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出, 如有問題, 可郵件(345849402@qq.com)谘詢。
最後更新:2017-11-06 22:03:57