国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

云捕Redis實戰

pkhope / 2604人閱讀

摘要:在這里列舉下面幾個問題大問題云捕中每天,每小時崩潰數,啟動數的統計是通過實時統計,將計算結果存到中實現去重,然后定期將中的數據匯總持久化到數據庫中。

本文由作者余寶虹授權網易云社區發布。

Redis是一個支持豐富數據結構的分布式key-value系統,Redis在云捕系統的地位相當重要,碰到的問題也比較多,最近才解決了一個遺留的老大難問題。由于15年的時候才接觸到Redis,使用過程中姿勢存在比較大的問題。在這里列舉下面幾個問題:

大Set問題
云捕中每天,每小時崩潰數,啟動數的統計是通過Storm實時統計,將計算結果存到Redis中實現去重,然后定期將Redis中的數據匯總持久化到數據庫中。

最初的實現方式是每個產品的崩潰,啟動數都使用一個set來實現統計,set中存儲的是設備ID。隨著數據量的增加,這個set會變得非常大,會達到單機內存的極限,無法分散到多個節點,不利于擴容,最初云捕使用的物理機內存是32GB,經常會收到內存使用率的報警。分析大對象可以使用 --bigkeys 命令,NCR不支持。

當內存使用量到達maxmemory之后就會執行響應的緩存替換策略,默認是allkey-lru,所以當用于統計數據的set被刪除后,就會出現崩潰數從0開始 統計的情況,出現統計數據丟失的問題。

改造前效果:

為了使用NCR的擴容能力,就需要消除掉對大Set的依賴,改造后,采用的方法是:對每個設備ID生成一個key,計數增加之前會判斷對應的設備ID key是否存在。采用這種方式后就會出現大量的key,所以在key的命名上也應該盡量簡短。

protected void add(Jedis jedis, String key, String deviceId, long expireTime) {

expireTime /= 1000;
String value ="";
String member=key+":"+deviceId;    if (jedis.setnx(member, value) == 1) {
    jedis.incr(key);
  }
jedis.expireAt(member, expireTime);
jedis.expireAt(key, expireTime);

}
改造后效果:

CPU抖動
云捕存儲在Redis中的統計數據具有時效性,每天的凌晨會將前一天的數據持久化到數據庫,所以前一天的key都可以刪掉。問題是如果大量的key都突發在同一時間失效的話,就會導致CPU使用率劇增,而且大Set刪除時耗時更長,所以改進后key的失效時間采用隨機化,分批的方式。

具體可以見DBA同學的文章 redis cpu 抖動問題分析 ,redis-faina redis性能問題診斷利器

應用自檢
產品的崩潰數每天都是波動的,不利于發現系統的問題,所以云捕開啟了一個定時發送崩潰數據的任務,每小時發送1000條,然后通過觀察這個App的數據統計就可以感知到整個系統是否穩定。

重復寫
將Redis中的數據持久化到數據庫的過程中可能會出現網絡波動,寫入失敗的情況,為了保證寫成功,云捕中采用每小時重復寫4次的策略,一方面重復寫數據庫比讀取Redis重試的邏輯要簡單,另一方面當出現網絡問題的時候重試有可能反而會加劇這種情況。

更多網易技術、產品、運營經驗分享請訪問網易云社區。

文章來源: 網易云社區

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25349.html

相關文章

  • 網易云捕性能踩坑解決之道上篇

    摘要:從零開始設計開發一個日處理數據億的大數據高并發實時系統,哪些性能問題需要特別注意這里我們一起梳理一下本文中我將以,同學戲稱的系統網易云捕設計開發實踐中兩年的時間里碰到的真實問題,踩過的坑及解決問題的方法和大家一起討論如何解決這些問題。 本文由作者余寶虹授權網易云社區發布。 從零開始設計開發一個日處理數據8億的大數據高并發實時系統,哪些性能問題需要特別注意?這里我們一起梳理一下,本文中我...

    李義 評論0 收藏0
  • Redis常見7種使用場景(PHP實戰)

    摘要:是一個開源的使用語言編寫支持網絡可基于內存亦可持久化的日志型數據庫,并提供多種語言的。本篇文章,主要介紹利用使用,主要的應用場景。場景如果項目中使用了緩存且對緩存設置了超時時間。如果連接斷開,監視和事務都會被自動清除。 Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。 本篇文章,主要介紹利用PHP...

    鄒強 評論0 收藏0
  • Python--Redis實戰:第四章:數據安全與性能保障:第1節:持久化選項

    摘要:為了讓讀者做好使用構建真實軟件的準備,本章將展示維護數據安全以及應對系統故障的方法。上一篇文章實戰第三章命令第七節其他命令下一篇文章實戰第四章數據安全與性能保障第節快照持久化 上一篇文章:Python--Redis實戰:第三章:Redis命令:第七節:其他命令下一篇文章:Python--Redis實戰:第四章:數據安全與性能保障:第2節:快照持久化 前面的幾章介紹了各式各樣的Redi...

    derek_334892 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<