學習新浪微博計數服務

2021-08-07 03:37:18 字數 1286 閱讀 3170

本文摘自

官方ppt :

public/doc/velocity%e5%88%86%e4%ba%ab_%e5%be%ae%e6%9e%b6%e6%9e%84%e8%ae%be%e8%ae%a1%e4%b9%8b%e5%be%ae%e5%8d%9a%e8%ae%a1%e6%95%b0%e5%99%a8%e6%9c%8d%e5%8a%a1_%e6%9d%9c%e4%bc%a0%e8%b5%a2_20121205.pdf

產生的問題

1.資料量大

2.訪問量發 (cache的命中率問題)

3.突發事件的熱點資料

4.占用的記憶體

5.更新方法 如果副本多會影響效能

6.故障解決

階段一:

在微博資料量不是很多的時候,統計數量會很少,所以直接使用sql就可以查出 select count(*),當前階段屬於只用mysql階段

階段二:

當有了一定的使用者基礎後,單純的select count(*)掃瞄的資料行數過多,如果不建立聯合索引來避免查表會消耗很多效能。這裡的解決方案是建立乙個以主鍵和要查詢欄位的聯合索引來避免回表查詢(原理可以檢視《高效能mysql》索引章節 )。此階段依然是單純的使用mysql階段

select count1, count2 from table where id = 111;

此時的系統不在是單純的mysql。

至此的問題如下

為了解決上述問題,採用redis解決

由於我個人沒有用過redis,對aof第一次接觸,如不懂aof可以參考

引入redis後,後端架構如下

最後,就是講這個計數服務進行服務化,為全站提供服務

整體發展過程

Redis計數在新浪微博的應用

作為微博中一項重要的資料,計數類業務在微博業務中佔的比重和重要性逐步提高。計數結果的準確度直接影響使用者體驗,並且很容易引起使用者的投訴。在計數業務上,在不斷的優化和改進中,我們主要經歷了以下三個階段 從2010年開始,使用redis 2.0版本。在最初業務資料比較少的時候,表現相當不錯。但隨著資料...

新浪微博授權

一.建立應用 2.進入我的應用 3.建立應用 二.oauth的授權流程 你所開發的應用需要的流程如下 2.得到request token後重定向使用者到服務商的授權頁面 3.如果使用者選擇授權你的應用,用request token向服務商請求換取access token 4.得到access tok...

模擬新浪微博

1.專案效果圖 主要 如下 android layout width match parent android layout height match parent android padding 10dip android orientation vertical 2 獲取xml資源 在andro...