新浪微博是如何支撑百万 QPS 的?
隨著互聯網從門戶/搜索時代進入移動社交時代,互聯網產品也從滿足用戶單向瀏覽的需求,發展為滿足用戶個性信息獲取及社交的需求。這就要求產品做到以用戶和關系為基礎,對海量數據進行實時分析計算。也就意味著,用戶的每次請求,服務后端都要查詢用戶的個人信息、社交關系圖譜,以及關系圖譜涉及到的大量關聯信息。還要將這些信息進行聚合、過濾、篩選和排序,最終響應給用戶。
如果這些信息全部從 DB 中加載,將會是一個無法忍受的漫長等待過程,而緩存的使用,是提升系統性能、改善用戶體驗的唯一解決之道。
以新浪微博為例,作為移動互聯網時代的一個開拓者和重量級社交分享平臺,自 2009 年上線后,用戶數量和微博數量都從 0 開啟并高速增長,到 2019 年,日活躍用戶已超 2 億,每日新發 Feed 1-2 億,每日訪問量百億級,歷史數據高達千億級。同時,在微博的日常服務中,核心接口可用性要達到 99.99%,響應時間在 10-60ms 以內,核心單個業務的數據訪問量高達百萬級 QPS。
所有這些數據都是靠良好的架構和不斷改進的緩存體系來支撐的。其實,作為互聯網公司,只要有直接面對用戶的業務,要想持續確保系統的訪問性能和可用性,都需要使用緩存。因此,緩存也是后端工程師面試中一個非常重要的考察點,面試官通常會通過應聘者對緩存相關知識的理解深入程度,來判斷其開發經驗和學習能力。 可以說,對緩存的掌握程度,在某種意義上決定了后端開發者的職業高度。
想學好緩存,求職脫穎而出,如何做?
需要掌握哪些知識,才能跳槽后拿到高薪?
可以看一下這張“緩存知識點全景圖”。
首先,要熟練掌握緩存的基礎知識,了解緩存常用的分類、讀寫模式,熟悉緩存的七大經典問題及解決應對之策,同時要從緩存組件的訪問協議、Client 入手,熟練掌握如何訪問各種緩存組件,如 Memcached、Redis、Pika 等。
其次,要盡可能深入理解緩存組件的實現方案、設計原理,了解緩存的各種特性、優勢和不足,這樣在緩存數據與預期不一致時,能夠快速定位并解決問題。
再次,還要多了解線上大中型系統是如何對緩存進行架構設計的。線上系統,業務功能豐富多變,跨域部署環境復雜,而且熱點頻發,用戶習慣迥異。因此,緩存系統在設計之初就要盡量進行良好設計,規劃好如何進行 hash 及分布、如何保障數據的一致性、如何進行擴容和縮容。同時緩存體系也需要伴隨業務發展持續演進,所以要對緩存體系進行持續的狀態監控、異常報警、故障演練,以確保在故障發生時能及時進行人肉或自動化運維處理。
最后,了解緩存在各種場景下的最佳實踐,理解這些最佳實踐背后的 Tradeoff,做到知其然知其所以然,以便在實際工作中能舉一反三,把知識和經驗更好的應用到工作實踐中來。這些緩存知識,網上學習資料很多,但過于零散和重復,想要系統地學習還是需要通過閱讀緩存相關的書籍、論文和緩存源碼,或是學習一些來自實戰總結的網絡課程。但前面幾種形式目前都需要花費較多時間。
快速掌握核心,緊跟大咖學
300分鐘吃透分布式緩存 - 新浪微博研發中心平臺架構技術專家陳波
為了開發者既系統又快速地獲得所需知識,拉勾教育推出了《300分鐘吃透分布式緩存》。依托拉勾站內海量招聘大數據,結合陳波老師在微博緩存處理的經驗,讓你短時間內明確一個更好的緩存架構體系。
講師陳波,相比真名可能大家對他的網名 fishermen 更熟悉。是資深老碼農一枚,經歷了新浪微博從起步到當前月活數億用戶的大型互聯網系統的技術演進過程,現任新浪微博技術專家。
于 2008 年加入新浪,最初從事新浪IM的后端研發。2009 年之后開始微博 Feed 平臺系統的的研發及架構工作,深度參與最初若干個版本幾乎所有業務的開發和架構改進,2013 年后開始從事微博平臺基礎架構相關的研發工作。目前主要從事微博 Feed 平臺的基礎設施、緩存中間件、分布式存儲等的研發及架構優化工作。
在這 300 分鐘里,他將結合自己在微博平臺的緩存架構經驗用 10 個課時分享以下內容:
1、如何更好地引入和使用緩存,自系統設計之初,就把緩存設計的關鍵點對號入座。
2、如何規避并解決緩存設計中的七大經典問題。
3、從協議、使用技巧、網絡模型、核心數據結構、存儲架構、數據處理模型、優化及改進方案等,多角度全方位深入剖析互聯網企業大量使用的 Memcached、Redis 等開源緩存組件。
4、教你如何利用它們構建一個分布式緩存服務體系。
5、最后,我將結合諸如秒殺、海量計數、微博 Feed 聚合等經典業務場景,分析如何構建相應的高可用、高性能、易擴展的緩存架構體系。
快速查看《300分鐘吃透分布式緩存》大綱▼
你可以系統的學習緩存之設計架構的關鍵知識點;你可以學會如何更好地使用 Memcached、Redis 等緩存組件;并對這些緩存組件的內部架構、設計原理有一個較為深入的了解,真正做到知其然更知其所以然;可以學會如何根據業務需要對緩存組件進行二次開發;可以搞懂如何構建一個大型的分布式緩存服務系統;還可以了解在當前多種熱門場景下緩存服務的最佳實踐。
如果堅持學完,相信你還可以現學現用,針對互聯網大中型系統,構建出一個更好的緩存架構體系,在大幅提升系統吞吐和響應性能的同時,達到高可用、高擴展,從而可以更從容地應對海量并發請求和極端熱點事件。
總結
以上是生活随笔為你收集整理的新浪微博是如何支撑百万 QPS 的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 崩坏3九游服务器稳定吗,为什么崩坏三萌新
- 下一篇: WinIo64驱动级别的键盘模拟(jav