新浪微博是如何支撐百萬 QPS 的?

2021-09-26 19:47:08 字數 2170 閱讀 2399

隨著網際網路從門戶/搜尋時代進入移動社交時代,網際網路產品也從滿足使用者單向瀏覽的需求,發展為滿足使用者個性資訊獲取及社交的需求。這就要求產品做到以使用者和關係為基礎,對海量資料進行實時分析計算。也就意味著,使用者的每次請求,服務後端都要查詢使用者的個人資訊、社交關係圖譜,以及關係圖譜涉及到的大量關聯資訊。還要將這些資訊進行聚合、過濾、篩選和排序,最終響應給使用者。

如果這些資訊全部從 db 中載入,將會是乙個無法忍受的漫長等待過程,而快取的使用,是提公升系統效能、改善使用者體驗的唯一解決之道。

所有這些資料都是靠良好的架構和不斷改進的快取體系來支撐的。其實,作為網際網路公司,只要有直接面對使用者的業務,要想持續確保系統的訪問效能和可用性,都需要使用快取。因此,快取也是後端工程師面試中乙個非常重要的考察點,面試官通常會通過應聘者對快取相關知識的理解深入程度,來判斷其開發經驗和學習能力。可以說,對快取的掌握程度,在某種意義上決定了後端開發者的職業高度。

想學好快取,求職脫穎而出,如何做?

需要掌握哪些知識,才能跳槽後拿到高薪?

可以看一下這張「快取知識點全景圖」。

首先,要熟練掌握快取的基礎知識,了解快取常用的分類、讀寫模式,熟悉快取的七大經典問題及解決應對之策,同時要從快取元件的訪問協議、client 入手,熟練掌握如何訪問各種快取元件,如 memcached、redis、pika 等。

其次,要盡可能深入理解快取元件的實現方案、設計原理,了解快取的各種特性、優勢和不足,這樣在快取資料與預期不一致時,能夠快速定位並解決問題。

再次,還要多了解線上大中型系統是如何對快取進行架構設計的。線上系統,業務功能豐富多變,跨域部署環境複雜,而且熱點頻發,使用者習慣迥異。因此,快取系統在設計之初就要盡量進行良好設計,規劃好如何進行 hash 及分布、如何保障資料的一致性、如何進行擴容和縮容。同時快取體系也需要伴隨業務發展持續演進,所以要對快取體系進行持續的狀態監控、異常報警、故障演練,以確保在故障發生時能及時進行人肉或自動化運維處理。

最後,了解快取在各種場景下的最佳實踐,理解這些最佳實踐背後的 tradeoff,做到知其然知其所以然,以便在實際工作中能舉一反三,把知識和經驗更好的應用到工作實踐中來。這些快取知識,網上學習資料很多,但過於零散和重複,想要系統地學習還是需要通過閱讀快取相關的書籍、**和快取原始碼,或是學習一些來自實戰總結的網路課程。但前面幾種形式目前都需要花費較多時間。

快速掌握核心,緊跟大咖學

為了開發者既系統又快速地獲得所需知識,拉勾教育推出了《300分鐘吃透分布式快取》。依託拉勾站內海量招聘大資料,結合陳波老師在微博快取處理的經驗,讓你短時間內明確乙個更好的快取架構體系。

在這 300 分鐘裡,他將結合自己在微博平台的快取架構經驗用 10 個課時分享以下內容:

1、如何更好地引入和使用快取,自系統設計之初,就把快取設計的關鍵點對號入座。

2、如何規避並解決快取設計中的七大經典問題。

3、從協議、使用技巧、網路模型、核心資料結構、儲存架構、資料處理模型、優化及改進方案等,多角度全方位深入剖析網際網路企業大量使用的 memcached、redis 等開源快取元件。

4、教你如何利用它們構建乙個分布式快取服務體系。

5、最後,我將結合諸如秒殺、海量計數、微博 feed 聚合等經典業務場景,分析如何構建相應的高可用、高效能、易擴充套件的快取架構體系。

快速檢視《300分鐘吃透分布式快取》大綱▼

你可以系統的學習快取之設計架構的關鍵知識點;你可以學會如何更好地使用 memcached、redis 等快取元件;並對這些快取元件的內部架構、設計原理有乙個較為深入的了解,真正做到知其然更知其所以然;可以學會如何根據業務需要對快取元件進行二次開發;可以搞懂如何構建乙個大型的分布式快取服務系統;還可以了解在當前多種熱門場景下快取服務的最佳實踐。

如果堅持學完,相信你還可以現學現用,針對網際網路大中型系統,構建出乙個更好的快取架構體系,在大幅提公升系統吞吐和響應效能的同時,達到高可用、高擴充套件,從而可以更從容地應對海量併發請求和極端熱點事件。

新浪微博的布局

import mjtabbaritem.h implementation mjtabbaritem id initwithframe cgrect frame itemdesc mjtabbaritemdesc desc return self pragma mark 覆蓋父類的2個方法 pragm...

實戰新浪微博 騰訊微博的分享功能

算上也是半年前做的,今天翻出來放出來,作為日誌記錄,也許能幫助一些人。我做的大概介面是如下圖。呵呵,上面這些都是些預備工作。下面正式開發。以上就是工程上設定。下面具體 以下處理sina的相關 以下是處理sina的授權驗證函式,qq的未寫。void removeauthdata bool islogg...

Python使用新浪微博API傳送微博的例子

1 註冊乙個新浪應用,得到appkey和secret,以及token,將這些資訊寫入配置檔案sina weibo config.ini,內容如下,僅舉例 複製 如下 userinfo consumer key 8888888888 consumer secret 777777f3feab026050...