在這件事發生之前
Daisy覺得今天是一個很平常的周二
刷刷網頁
看看小黃鴨
逛逛微博
....
咦~臥x,微博怎麼打不開了
在試過室內、室外、天台各種地點
4g、WIFI、重啟各種方法以後
終於得出一個結論:微博炸了
(這不廢話麼)
癱瘓的源頭是:趙麗穎和馮紹峰結婚
▼▼
Daisy一小時後才刷出來兩個人的微博
▼▼
此時打開兩個人的微博評論
依舊無法正常查看
(廣告直接馬賽克掉了)
好吧
遇到這種事情還能怎麼辦呢
當然是先發個微博安慰下大家了
對此事微博@微博客服緊急發了一條微博
表示:大家別急!
從微博@相關部門的工作人員用的這個表情裡
你看到了什麼?
Daisy好像看到了身為技術人員的無奈
還記得上次鹿晗公布戀情的時候
微博炸了
結婚當天工程師就這麼被拽出來緊急處理
Daisy腦補了下當天的情形:
(內容純屬虛構,如有雷同,嘻嘻嘻嘻)
一拜天地~(新郎官:敲代碼)
二拜高堂~(新郎官:敲代碼)
夫妻對拜~(新郎官:敲代碼)
...
新郎官配文:都是鹿晗幹的好事兒
估計當時新郎官的「慘狀」讓大家記憶深刻
所以在大約一年後的今天
微博炸了之後
網友表示:
工程師們看到如此關切的問候
估計心裡會這樣回應
如果站在一個程式設計師的角度
如何看待今天這件事呢
在此我們先看一段
當時鹿晗公布戀情導致微博炸了引發的思考
1、讀操作應該不會拖垮微博
第一個想到的流量問題,被大量請求衝擊導致伺服器負載過高,一臺一臺的掛掉了,但是在沒有看到微博公布的數據之前,微博這樣的技術架構應該不太可能輕易的被大流量壓垮,以新浪微博這個體量應該不會這麼容易就垮了,而且即使伺服器負載達到上限,有自動擴容的機制在,應該也可以撐住一段時間,不至於垮了這麼久。
2、資料庫出了問題?
否定了第一個想法後,又想到了數據層面,根據當時的微博轉發數、評論數、評論的回覆數、評論的點讚數及這條微博所關聯的其他微博的數據,極大的可能是由於事發當時需要寫入資料庫的請求太多,寫操作到達峰值,以及大部分寫都會落到同一條微博(也就是鹿晗的這條微博)上,由於微博的評論設置層級較高,某些寫操作還可能會觸發其他的寫操作,資料庫壓力過大扛不過來,導致資料庫掛了一段時間,根據當時的想法整理了一下草圖,(當時畫圖的時候也沒有預料到圖中的n竟然是上億級別的!)
3、緩存或者其他中間件出了問題?
重新縷了一下思路,問題難道在緩存的設計上嗎?微博的緩存設計好像一直有些小問題吧,可能是為了服務的高可用及成本考慮刻意捨棄了一些功能,這個就不討論了。
資料庫肯定是出問題了的,但是主要問題應該不是在資料庫壓力上,畢竟有緩存層,而且評論或者點讚並不一定要完全保證實時性和精準性,有一定的數據丟失和誤差也是可以接受的,因此資料庫掛掉一段時間是可能存在的,其次,當時無法正常發布評論和點讚,那條微博的評論內容也無法正常顯示,比如分頁數據就無法正常獲取,這裡應該是緩存層也出現了問題,可能緩存也被擊穿了….
猜測之後
根據去年@微博數據助手發出來的一條博文
我們可以清楚地了解到:
流量衝擊是罪魁禍首
從中可以獲得的信息有:
微博在傳播中共形成30個轉發層級
經微博反垃圾系統處理後
剩餘有效轉發數336777條
覆蓋微博用戶801,386,453人
8億多用戶是什麼概念
在幾乎一年後的今天
趙麗穎發出微博後炸了的這段期間
點讚221萬,評論56萬,轉發30萬
有網友說
趙麗穎的微博
一分鐘幾乎能刷新出兩萬條評論來
公布戀情一小時後
就已經有了56萬的評論數量
其中究竟有沒有涉及到水軍,刷評論等行為
我們目前尚不清楚
但微博實實在在地崩了
網友評論微博:
對此,你怎麼看?
最後
Daisy還是想說一句
唐僧終究和女兒國國王在一起了
祝你們幸福
參考:Named13 《程式設計師視角:鹿晗公布戀情是如何把微博搞炸的?》、微博@馮紹峰、@趙麗穎、@微博數據助手、@微博客服、@丁振凱等
喜歡就分享一下吧~