共計 1062 個字符,預(yù)計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
丸趣 TV 小編給大家分享一下 Tumblr 中 Redis 集群控制層有哪些應(yīng)用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Tumblr 是世界上最流行的輕博客服務(wù),其用戶量在最近的一次統(tǒng)計中已經(jīng)達(dá)到 2090 萬,超過了全球最大的博客服務(wù) WordPress。下面丸趣 TV 丸趣 TV 小編來講解下 Tumblr 的 Redis 集群控制層有哪些應(yīng)用?Tumblr 的 Redis 集群控制層性能如何?
Tumblr 的 Redis 集群控制層有哪些應(yīng)用
在 Tumblr 初期,其通知系統(tǒng)是由 MySQL+Memcached 的傳統(tǒng)架構(gòu)組成,但是由于通知系統(tǒng)龐大的添加操作,導(dǎo)致 MySQL 負(fù)擔(dān)非常大,經(jīng)常搞得 InnoDBglobaltransactionmax(1024) 都超出了。于是他們打算重新構(gòu)建消息系統(tǒng)。首先他們分析了消息系統(tǒng)的應(yīng)用特點:
按時間排序
唯一性,每一條消息都是唯一的
讀寫比大概是 60%/30%
每個用戶的消息條數(shù)一定
數(shù)據(jù)按用戶劃分,每個用戶只能讀自己的消息
Tumblr 的 Redis 集群控制層架構(gòu)
基于上面應(yīng)用特點的考慮,Tumblr 選擇了 Redis 的 sortedsets 作為其數(shù)據(jù)存儲。
他們的存儲方式是:
給每個用戶分配一個 sortedsets,其中每一項保存一條通知
每條通知以時間戳為 score 在 sortedsets 中進(jìn)行排序
超出 100 條通知后進(jìn)行 trim 操作
Tumblr 的數(shù)據(jù)量:2300 萬個 BLOG,每個 BLOG100 條消息,每條消息體大概 160bytes。
響應(yīng)速度:大概每秒提供 7,500 次請求,每次請求的響應(yīng)時間小于 5ms。
考慮到容災(zāi)性及可能快速增長的數(shù)據(jù)量,Tumblr 打算采用 preshard 的方式來架構(gòu)他們的 Redis 集群,于是他們開發(fā)了 Staircar(一個提供 HTTP 服務(wù)的 Redis 集群調(diào)度管理組件)。下面是他們的通知系統(tǒng)架構(gòu)圖:
實際上在開發(fā) Staircar 前,他們考查了一些其它的類似功能的產(chǎn)品,但都不能滿足他們所有需求 (或者說閑雜功能過多)。
Tumblr 的 Redis 集群控制層性能如何
Staircar 由 C 語言寫成,以 libevent 為網(wǎng)絡(luò)驅(qū)動層,提供 JSON 格式的 RESTFul 接口,其性能超出了 Tumblr 工程師們的想象,其在最高峰時的響應(yīng)時間也在 5ms 以下,其性能測試結(jié)果是大概能處理每秒 30,000 次左右的請求。
看完了這篇文章,相信你對“Tumblr 中 Redis 集群控制層有哪些應(yīng)用”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!
向 AI 問一下細(xì)節(jié)