這是一道真真實實的阿里面試題:“請解釋下為什么鹿晗發布戀情的時候, 微博系統會崩潰,如何解決?”
哎,我原本以為認真學技術就可以了。但面試官的這個面試題還得讓我關注明顯戀情,不知道程序員單身居多嗎?
話說一個合格的程序員,每看過一個系統,就應該了解的五臟六腑,內部設計。大型系統的底層設計尤其值得我們思考,現在面試題也開始追熱點了,和高考一樣,實時關注社會百態。
要回答好這個問題,你首先得知道鹿晗是誰?要不然“業余草”發布一條微博,連個閱讀都沒幾個。
鹿晗首先是一個明星,流量明星。粉絲量眾多,所以,他已公布戀情,瞬間的流量很大。但是我們要注意到,這里面有一個問題。就是這個瞬間流量增大,增的不僅是瀏覽量。如果僅僅是閱讀,我們只需把鹿晗的這條微博放入 redis 緩存,以微博技術,不可能掛得了的吧。
Redis學習筆記
注意:需要這份Redis學習筆記的朋友可以后臺私信【Redis】
這個之所以微博掛掉,是因為這個時間段,轉發 + 評論量非常的大,并不是只有閱讀量大。這個要注意,幾乎所有的大型網站掛掉,基本上都是并發寫造成的。并發讀,以大型公司的技術,除了 12306 這樣的,基本上很少有故障的。
另外針對明星的微博,會有一個消息推送功能。第一時間熱點數據,只要你聯的有網,都能夠收到推送。所以一個熱點事件,普通人轉不轉發沒啥影響。因為大家都收到了同樣的推送。
請解釋下為什么鹿晗發布戀情的時候, 微博系統會崩潰,如何解決?
所以,總結下來,熱點微博。第一個就是 Redis 的大 Key 問題。第二個就是,熱點消息你是選擇 pull 還是 push。第三個就是分表的處理,不能把轉發的,評論等瞬時數據分到同一個庫和表中。