微博炸了!
長假的最后一天,躺在床上刷刷微博,想找找搞笑段子樂呵樂呵,玩著玩著微博就卡了起來,起初以為是手機問題,關了應用重新進去還是一樣,沒辦法,只能出去吃飯了,當天應該不止我一個人是這種情況吧,微博卡的不要不要的。當然,后面的事情大家都知道了,中國最歷害的黑客竟然在娛樂圈,鹿黑客一句話就黑了大微博(這句話不準確),這次事件IT圈應該無人不識鹿黑客了吧。
微博炸了。
隨后微博客服發出公告:
別跑題!
寫了幾段后發現有點跑題了,技術文章不該這么八卦,就刪掉了,哈哈哈哈。
鹿粉絲一片哭天搶地的哀嚎慘相、有人跳樓有人自殺(真假性不確定)、"這是我女朋友"體火遍朋友圈、各種段子層出不窮、吃瓜群眾熱鬧看了個飽、事件的關注度和影響力至今未散....這些我們就不在文章中過多贅述了,畢竟不能跑題,也不能以看熱鬧的心態去講這件事,本文主要是講作為平臺方的微博是如何被此次事件所波及的。
印象中微博其實已經掛了好多次了吧,每次一有明星公布一些勁爆的消息都是對微博服務器的考驗,也不止一次看到微博的運維朋友們從各種狀態中回到公司加班...再次心疼。
微博怎么就炸了?
以下為個人的一些想法,由于知識儲備不足所以不能高談闊論,只能想到什么就寫了什么,并沒有多少技術含量,如有錯誤勞煩指出,謝謝勘誤。
讀操作應該不會拖垮微博
第一個想到的流量問題,被大量請求沖擊導致服務器負載過高,一臺一臺的掛掉了,但是在沒有看到微博公布的數據之前,我覺得微博這樣的技術架構應該不太可能輕易的被大流量壓垮,之前也看到微博技術團隊的一些技術分享,宣傳他們的服務降級、自動擴容、運維自動化等等之類的文章,以新浪微博這個體量應該不會這么容易就垮了,而且即使服務器負載達到上限,有自動擴容的機制在,應該也可以撐住一段時間,不至于垮了這么久。
這些是一開始的想法的,后面對比微博公布的數據再整理了一下,感覺還是對微博的技術團隊有些樂觀了,有點過分信任,認為他們無所不能了,但是再優秀的團隊也會經歷一些意外吧。
數據庫出了問題?
否定了第一個想法后,又想到了數據層面,根據當時的微博轉發數、評論數、評論的回復數、評論的點贊數及這條微博所關聯的其他微博的數據,極大的可能是由于事發當時需要寫入數據庫的請求太多,寫操作到達峰值,以及大部分寫都會落到同一條微博(也就是鹿晗的這條微博)上,由于微博的評論設置層級較高,某些寫操作還可能會觸發其他的寫操作,數據庫壓力過大扛不過來,導致數據庫掛了一段時間,根據當時的想法整理了一下草圖,(當時畫圖的時候也沒有預料到圖中的n竟然是上億級別的!)
但是微博掛了太久,如果是數據庫的問題不可能會導致這么久的服務不可用,而且數據庫做了切分及其他的架構優化之后,即使出現問題也不會波及太廣,所以這個猜測應該不怎么成立。
緩存或者其他中間件出了問題?
重新縷了一下思路,問題難道在緩存的設計上嗎?微博的緩存設計好像一直有些小問題吧,可能是為了服務的高可用及成本考慮刻意舍棄了一些功能,這個就不討論了。
數據庫肯定是出問題了的,但是主要問題應該不是在數據庫壓力上,畢竟有緩存層,而且評論或者點贊并不一定要完全保證實時性和精準性,有一定的數據丟失和誤差也是可以接受的,因此數據庫掛掉一段時間是可能存在的,其次,當時無法正常發布評論和點贊,那條微博的評論內容也無法正常顯示,比如分頁數據就無法正常獲取,這里應該是緩存層也出現了問題,可能緩存也被擊穿了....
流量沖擊是罪魁禍首
在看了微博公布后的數據后,大致就有了結果,事件發生在放假期間,大家還沉浸在節日的歡快氛圍中,服務器明顯準備不足,再加上流量確實太大,事件牽涉到了8億多用戶,在這種量級的網絡流量沖擊下,很難幸免于難吧。
我一開始的思維方向上也有點錯誤,雖然也考慮到是服務器掛掉了,不過我覺得以微博的技術水平及架構設計上來說應該可以迅速的處理掉,同時也認為讀操作不會拖垮服務器集群,更多的應該是寫操作導致了一些崩盤,因此更多的考慮的是數據層,覺得可能是數據庫或者其他中間件出現問題(肯定也是出現了一些問題,只不過垮掉的主因不是這些,而是服務器資源缺乏導致的),從微博工作人員的處理方案中可以得出結論,主要問題還是在服務器資源上。
在看到下圖的數據之前,誰也想不到會有這么高的關注度和這么巨大的流量沖擊,在絕對的量級差距面前,即使渾身解數也無法全然施展,只能盡量做到亡羊補牢了。
想起前段時間南朝鮮部署薩德時局座說的一句話,就是在絕對的飽和打擊下,薩德這些裝備是起不到什么作用的,當然,我們不討論薩德或者軍事,就是通過這么一句評論來總結一下這次微博宕機事件,雖然微博的架構和技術團隊很強大,但是在足夠大的瞬時流量沖擊下,容災、自動擴容、緩存、負載均衡、吞吐量、架構伸縮性等等一系列的方案或應對措施似乎都被宕機的結果所淡化,沖垮的無影無蹤了,流量太大太大了,8億多用戶是一個什么概念大家應該很清楚。
總結
首發于我的個人博客。
雖然通過后續的一些措施最終解決掉這個事故,但是依然暴露出一些問題,不過也沒有特別好的應對辦法,誰知道他們什么時候心血來潮忽然就公布戀情或者出軌啊。
總結下來此次的主因就是流量小生帶來的巨額流量+無預警+資源不足+數據密集度較高進而導致的巨額沖擊,耗盡了一臺又一臺服務器的資源,摧垮了一個又一個的服務,肯定還有其他地方出現故障,但是具體就不得而知了,以上為個人愚見,如有不當,還請見諒。