微博炸了鞠绰!
長假的最后一天,躺在床上刷刷微博飒焦,想找找搞笑段子樂呵樂呵洞豁,玩著玩著微博就卡了起來,起初以為是手機(jī)問題,關(guān)了應(yīng)用重新進(jìn)去還是一樣丈挟,沒辦法,只能出去吃飯了志电,當(dāng)天應(yīng)該不止我一個(gè)人是這種情況吧曙咽,微博卡的不要不要的。當(dāng)然挑辆,后面的事情大家都知道了例朱,中國最歷害的黑客竟然在娛樂圈,鹿黑客一句話就黑了大微博(這句話不準(zhǔn)確)鱼蝉,這次事件IT圈應(yīng)該無人不識(shí)鹿黑客了吧洒嗤。
微博炸了。
隨后微博客服發(fā)出公告:
別跑題魁亦!
寫了幾段后發(fā)現(xiàn)有點(diǎn)跑題了渔隶,技術(shù)文章不該這么八卦,就刪掉了洁奈,哈哈哈哈间唉。
鹿粉絲一片哭天搶地的哀嚎慘相、有人跳樓有人自殺(真假性不確定)利术、"這是我女朋友"體火遍朋友圈呈野、各種段子層出不窮、吃瓜群眾熱鬧看了個(gè)飽印叁、事件的關(guān)注度和影響力至今未散....這些我們就不在文章中過多贅述了被冒,畢竟不能跑題,也不能以看熱鬧的心態(tài)去講這件事轮蜕,本文主要是講作為平臺(tái)方的微博是如何被此次事件所波及的昨悼。
印象中微博其實(shí)已經(jīng)掛了好多次了吧,每次一有明星公布一些勁爆的消息都是對(duì)微博服務(wù)器的考驗(yàn)肠虽,也不止一次看到微博的運(yùn)維朋友們從各種狀態(tài)中回到公司加班...再次心疼幔戏。
微博怎么就炸了?
以下為個(gè)人的一些想法税课,由于知識(shí)儲(chǔ)備不足所以不能高談闊論闲延,只能想到什么就寫了什么,并沒有多少技術(shù)含量韩玩,如有錯(cuò)誤勞煩指出垒玲,謝謝勘誤。
讀操作應(yīng)該不會(huì)拖垮微博
第一個(gè)想到的流量問題找颓,被大量請(qǐng)求沖擊導(dǎo)致服務(wù)器負(fù)載過高合愈,一臺(tái)一臺(tái)的掛掉了,但是在沒有看到微博公布的數(shù)據(jù)之前,我覺得微博這樣的技術(shù)架構(gòu)應(yīng)該不太可能輕易的被大流量壓垮佛析,之前也看到微博技術(shù)團(tuán)隊(duì)的一些技術(shù)分享益老,宣傳他們的服務(wù)降級(jí)、自動(dòng)擴(kuò)容寸莫、運(yùn)維自動(dòng)化等等之類的文章捺萌,以新浪微博這個(gè)體量應(yīng)該不會(huì)這么容易就垮了,而且即使服務(wù)器負(fù)載達(dá)到上限膘茎,有自動(dòng)擴(kuò)容的機(jī)制在桃纯,應(yīng)該也可以撐住一段時(shí)間,不至于垮了這么久披坏。
這些是一開始的想法的态坦,后面對(duì)比微博公布的數(shù)據(jù)再整理了一下,感覺還是對(duì)微博的技術(shù)團(tuán)隊(duì)有些樂觀了棒拂,有點(diǎn)過分信任伞梯,認(rèn)為他們無所不能了,但是再優(yōu)秀的團(tuán)隊(duì)也會(huì)經(jīng)歷一些意外吧着茸。
數(shù)據(jù)庫出了問題壮锻?
否定了第一個(gè)想法后,又想到了數(shù)據(jù)層面涮阔,根據(jù)當(dāng)時(shí)的微博轉(zhuǎn)發(fā)數(shù)猜绣、評(píng)論數(shù)、評(píng)論的回復(fù)數(shù)敬特、評(píng)論的點(diǎn)贊數(shù)及這條微博所關(guān)聯(lián)的其他微博的數(shù)據(jù)掰邢,極大的可能是由于事發(fā)當(dāng)時(shí)需要寫入數(shù)據(jù)庫的請(qǐng)求太多,寫操作到達(dá)峰值伟阔,以及大部分寫都會(huì)落到同一條微博(也就是鹿晗的這條微博)上辣之,由于微博的評(píng)論設(shè)置層級(jí)較高,某些寫操作還可能會(huì)觸發(fā)其他的寫操作皱炉,數(shù)據(jù)庫壓力過大扛不過來怀估,導(dǎo)致數(shù)據(jù)庫掛了一段時(shí)間,根據(jù)當(dāng)時(shí)的想法整理了一下草圖合搅,(當(dāng)時(shí)畫圖的時(shí)候也沒有預(yù)料到圖中的n竟然是上億級(jí)別的多搀!)
但是微博掛了太久,如果是數(shù)據(jù)庫的問題不可能會(huì)導(dǎo)致這么久的服務(wù)不可用灾部,而且數(shù)據(jù)庫做了切分及其他的架構(gòu)優(yōu)化之后康铭,即使出現(xiàn)問題也不會(huì)波及太廣,所以這個(gè)猜測應(yīng)該不怎么成立赌髓。
緩存或者其他中間件出了問題从藤?
重新縷了一下思路催跪,問題難道在緩存的設(shè)計(jì)上嗎?微博的緩存設(shè)計(jì)好像一直有些小問題吧夷野,可能是為了服務(wù)的高可用及成本考慮刻意舍棄了一些功能懊蒸,這個(gè)就不討論了。
數(shù)據(jù)庫肯定是出問題了的悯搔,但是主要問題應(yīng)該不是在數(shù)據(jù)庫壓力上榛鼎,畢竟有緩存層,而且評(píng)論或者點(diǎn)贊并不一定要完全保證實(shí)時(shí)性和精準(zhǔn)性鳖孤,有一定的數(shù)據(jù)丟失和誤差也是可以接受的,因此數(shù)據(jù)庫掛掉一段時(shí)間是可能存在的抡笼,其次苏揣,當(dāng)時(shí)無法正常發(fā)布評(píng)論和點(diǎn)贊,那條微博的評(píng)論內(nèi)容也無法正常顯示推姻,比如分頁數(shù)據(jù)就無法正常獲取平匈,這里應(yīng)該是緩存層也出現(xiàn)了問題,可能緩存也被擊穿了....
流量沖擊是罪魁禍?zhǔn)?/h3>
在看了微博公布后的數(shù)據(jù)后藏古,大致就有了結(jié)果增炭,事件發(fā)生在放假期間,大家還沉浸在節(jié)日的歡快氛圍中拧晕,服務(wù)器明顯準(zhǔn)備不足隙姿,再加上流量確實(shí)太大,事件牽涉到了8億多用戶厂捞,在這種量級(jí)的網(wǎng)絡(luò)流量沖擊下输玷,很難幸免于難吧。
我一開始的思維方向上也有點(diǎn)錯(cuò)誤靡馁,雖然也考慮到是服務(wù)器掛掉了欲鹏,不過我覺得以微博的技術(shù)水平及架構(gòu)設(shè)計(jì)上來說應(yīng)該可以迅速的處理掉,同時(shí)也認(rèn)為讀操作不會(huì)拖垮服務(wù)器集群臭墨,更多的應(yīng)該是寫操作導(dǎo)致了一些崩盤赔嚎,因此更多的考慮的是數(shù)據(jù)層,覺得可能是數(shù)據(jù)庫或者其他中間件出現(xiàn)問題(肯定也是出現(xiàn)了一些問題胧弛,只不過垮掉的主因不是這些尤误,而是服務(wù)器資源缺乏導(dǎo)致的),從微博工作人員的處理方案中可以得出結(jié)論叶圃,主要問題還是在服務(wù)器資源上袄膏。
在看到下圖的數(shù)據(jù)之前,誰也想不到會(huì)有這么高的關(guān)注度和這么巨大的流量沖擊掺冠,在絕對(duì)的量級(jí)差距面前沉馆,即使渾身解數(shù)也無法全然施展码党,只能盡量做到亡羊補(bǔ)牢了。
想起前段時(shí)間南朝鮮部署薩德時(shí)局座說的一句話斥黑,就是在絕對(duì)的飽和打擊下揖盘,薩德這些裝備是起不到什么作用的,當(dāng)然锌奴,我們不討論薩德或者軍事兽狭,就是通過這么一句評(píng)論來總結(jié)一下這次微博宕機(jī)事件,雖然微博的架構(gòu)和技術(shù)團(tuán)隊(duì)很強(qiáng)大鹿蜀,但是在足夠大的瞬時(shí)流量沖擊下箕慧,容災(zāi)、自動(dòng)擴(kuò)容茴恰、緩存颠焦、負(fù)載均衡、吞吐量往枣、架構(gòu)伸縮性等等一系列的方案或應(yīng)對(duì)措施似乎都被宕機(jī)的結(jié)果所淡化伐庭,沖垮的無影無蹤了,流量太大太大了分冈,8億多用戶是一個(gè)什么概念大家應(yīng)該很清楚圾另。
總結(jié)
首發(fā)于我的個(gè)人博客。
雖然通過后續(xù)的一些措施最終解決掉這個(gè)事故雕沉,但是依然暴露出一些問題集乔,不過也沒有特別好的應(yīng)對(duì)辦法,誰知道他們什么時(shí)候心血來潮忽然就公布戀情或者出軌啊蘑秽。
總結(jié)下來此次的主因就是流量小生帶來的巨額流量+無預(yù)警+資源不足+數(shù)據(jù)密集度較高進(jìn)而導(dǎo)致的巨額沖擊饺著,耗盡了一臺(tái)又一臺(tái)服務(wù)器的資源,摧垮了一個(gè)又一個(gè)的服務(wù)肠牲,肯定還有其他地方出現(xiàn)故障幼衰,但是具體就不得而知了,以上為個(gè)人愚見缀雳,如有不當(dāng)渡嚣,還請(qǐng)見諒。