#研發解決方案#discache-分布式緩存查詢與管理系統


鄭昀 基於馬海元和閆小波的文檔
關鍵詞: memcached 、redis、分布式緩存、控制台、反序列化、Java

本文檔適用人員:研發和運維員工
提綱:
  1. 如何查看緩存里的序列化數據?
  2. 批量刪除來一個
  3. 監控每個緩存端口的訪問情況是很有必要的
  4. discache 解決了這些問題

    電商系統的分布式緩存一般是 redis 和 memcached 集群,每一個節點上會起很多實例,因為一個業務類型對應於一個端口,拆分得很清楚。既然節點很多,端口很多,業務也在變化,隨時都有變動,如何管理呢?當然,最迫切的需求是下面這個,不解決的話就會很麻煩。
 
0x01.如何查看緩存里的序列化數據?
    Java 工程通常 把類實例對象序列化后存儲在緩存里。其次,不同端口存的類對象還不一樣。最后,類對象還有版本之分,你手頭不見得有正確的線上版本 class 文件來反序列化。
    總之,當你想看看鍵值里存的是什么內容時,會非常麻煩,所以我們迫切需要一個系統。
    
0x02.批量刪除來一個
    有時候線上緩存數據想按某個規則刪掉一批,沒有一個趁手的工具的話,那遇到急茬兒事還真是手忙腳亂,尤其是有時候上線預熱數據預熱錯了的時候。假如能按照某個通配符規則批量刪除,善莫大焉。
0x03.監控每個緩存端口的訪問情況是很有必要的
     慢日志
redis 支持各種數據結構,還支持模糊查詢,所以容易在線上出現慢查詢。因此,有一個慢查監控還是很能發現問題的。
     指令執行情況
緩存的指令處理速度、內存使用情況、DB Size 等等,這些能實時觀測也是最好。
 
0x04.discache 解決了這些問題
    2014年,在張鑫和閆小波的努力下,discache 如期發布,也納入到了 IdCenter 體系下。
什么是 discache?
窩窩主站的分布式緩存管理平台,由 節點管理、數據查詢、基本信息和慢日志四部分功能組成的。
入口在這里:
idcenter之discache入口
圖1 idcenter的主界面
 
discache 主界面長這樣:
discache主界面
圖2 discache節點管理界面
你可以按關鍵詞搜索節點名稱:
discache搜索
圖3 按order關鍵詞搜索所有分布式緩存節點
 
來,咱們看看慢日志。
找到對應節點后,點擊那個黃色操作按鈕。
discache慢日志
圖4 某個節點的慢日志
慢日志列表也是可以搜索的。
上圖里的用時為什么這么慢呢?這些請求都是 redis 模式匹配式的指令,數據量大的情況下響應時間確實比 get 單個 key 要多很多。
 
再來看看基本信息,也就是實時監控:
discache基礎信息
圖5 某個節點的實時監控信息
選好某個節點后,頁面會一直更新數據。
 
discache 如何解決最根本的需求:反序列化鍵值
    選擇某個緩存節點,輸入 key 名,支持通配符查詢,如“*index*”、“g_*”等,如果之前有人已經上傳過 CLASS 文件,則點擊某個 key 可以直接展示 value 內容,否則需要上傳一個 CLASS 文件來反序列化。
discache反序列化
圖6 key 模糊搜索和反序列化
    如上圖所示,還展示了某個 key 的過期時間。還支持gzip解壓縮功能,支持多種反序列化方式,如下圖所示。
discache反序列化選項
圖7 序列化下拉列表
    注意,可以點擊“全部刪除”按鈕將搜到的鍵值都刪掉。
 
    好了,我們上面演示了對某個分布式緩存節點的鍵值查詢、批量刪除和單個刪除、慢日志、實時監控。discache 大大提升了窩窩項目中緩存管理效率。
    下面大致說一下查詢的工作原理:
把緩存查詢轉換成 memacache 或 redis 的一組命令來實現,redis 有各種數據結構,那么每種存儲結構的查詢指令都不一樣,界面設計中只需要輸入指定的 key 值,在底層 java 實現中會嘗試各種查詢指令,直到查詢到正確值為止。
 
-EOF-
歡迎訂閱我的微信訂閱號『老兵筆記』,請掃描二維碼關注:
老兵筆記訂閱號二維碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM