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