欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

基于redis分布式緩存實現

第一:redis 是什么?

目前創(chuàng)新互聯公司已為成百上千的企業(yè)提供了網站建設、域名、網絡空間、網站改版維護、企業(yè)網站設計、佳縣網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發(fā)展。

Redis是基于內存、可持久化的日志型、Key-Value數據庫 高性能存儲系統,并提供多種語言的API.

第二:出現背景

  • 數據結構(Data Structure)需求越來越多, 但memcache中沒有, 影響開發(fā)效率

  • 性能需求, 隨著讀操作的量的上升需要解決,經歷的過程有: 
    數據庫讀寫分離(M/S)–>數據庫使用多個Slave–>增加Cache (memcache)–>轉到Redis

  • 解決寫的問題: 
    水平拆分,對表的拆分,將有的用戶放在這個表,有的用戶放在另外一個表;

  • 可靠性需求 
    Cache的"雪崩"問題讓人糾結 
    Cache面臨著快速恢復的挑戰(zhàn)

  • 開發(fā)成本需求 
    Cache和DB的一致性維護成本越來越高(先清理DB, 再清理緩存, 不行啊, 太慢了!) 
    開發(fā)需要跟上不斷涌入的產品需求 
    硬件成本最貴的就是數據庫層面的機器,基本上比前端的機器要貴幾倍,主要是IO密集型,很耗硬件;

  • 維護性復雜 
    一致性維護成本越來越高; 
    BerkeleyDB使用B樹,會一直寫新的,內部不會有文件重新組織;這樣會導致文件越來越大;大的時候需要進行文件歸檔,歸檔的操作要定期做; 
    這樣,就需要有一定的down time;

基于以上考慮, 選擇了Redis

 

第三:Redis 在新浪微博中的應用

Redis簡介

1. 支持5種數據結構

支持strings, hashes, lists, sets, sorted sets 
string是很好的存儲方式,用來做計數存儲。sets用于建立索引庫非常棒;

 

2. K-V 存儲 vs K-V 緩存

新浪微博目前使用的98%都是持久化的應用,2%的是緩存,用到了600+服務器 
Redis中持久化的應用和非持久化的方式不會差別很大: 
非持久化的為8-9萬tps,那么持久化在7-8萬tps左右; 
當使用持久化時,需要考慮到持久化和寫性能的配比,也就是要考慮redis使用的內存大小和硬盤寫的速率的比例計算;

 

3. 社區(qū)活躍

Redis目前有3萬多行代碼, 代碼寫的精簡,有很多巧妙的實現,作者有技術潔癖 
Redis的社區(qū)活躍度很高,這是衡量開源軟件質量的重要指標,開源軟件的初期一般都沒有商業(yè)技術服務支持,如果沒有活躍社區(qū)做支撐,一旦發(fā)生問題都無處求救;

Redis基本原理

redis持久化(aof) append online file: 
寫log(aof), 到一定程度再和內存合并. 追加再追加, 順序寫磁盤, 對性能影響非常小

1. 單實例單進程

Redis使用的是單進程,所以在配置時,一個實例只會用到一個CPU; 
在配置時,如果需要讓CPU使用率最大化,可以配置Redis實例數對應CPU數, Redis實例數對應端口數(8核Cpu, 8個實例, 8個端口), 以提高并發(fā): 
單機測試時, 單條數據在200字節(jié), 測試的結果為8~9萬tps;

2. Replication

過程: 數據寫到master–>master存儲到slave的rdb中–>slave加載rdb到內存。 
存儲點(save point): 當網絡中斷了, 連上之后, 繼續(xù)傳. 
Master-slave下第一次同步是全傳,后面是增量同步;、

 

3. 數據一致性

長期運行后多個結點之間存在不一致的可能性; 
開發(fā)兩個工具程序: 
1.對于數據量大的數據,會周期性的全量檢查; 
2.實時的檢查增量數據,是否具有一致性;

對于主庫未及時同步從庫導致的不一致,稱之為延時問題; 
對于一致性要求不是那么嚴格的場景,我們只需要要保證最終一致性即可; 
對于延時問題,需要根據業(yè)務場景特點分析,從應用層面增加策略來解決這個問題; 
例如: 
1.新注冊的用戶,必須先查詢主庫; 
2.注冊成功之后,需要等待3s之后跳轉,后臺此時就是在做數據同步。

 

第四:分布式緩存的架構設計

1.架構設計

由于redis是單點,項目中需要使用,必須自己實現分布式。基本架構圖如下所示:

 

基于redis分布式緩存實現

 

2.分布式實現

通過key做一致性哈希,實現key對應redis結點的分布。

一致性哈希的實現:

l        hash值計算:通過支持MD5與MurmurHash兩種計算方式,默認是采用MurmurHash,高效的hash計算.

l        一致性的實現:通過java的TreeMap來模擬環(huán)狀結構,實現均勻分布

3.client的選擇

對于jedis修改的主要是分區(qū)模塊的修改,使其支持了跟據BufferKey進行分區(qū),跟據不同的redis結點信息,可以初始化不同的 ShardInfo,同時也修改了JedisPool的底層實現,使其連接pool池支持跟據key,value的構造方法,跟據不同 ShardInfos,創(chuàng)建不同的jedis連接客戶端,達到分區(qū)的效果,供應用層調用

4.模塊的說明

l        臟數據處理模塊,處理失敗執(zhí)行的緩存操作。

l        屏蔽監(jiān)控模塊,對于jedis操作的異常監(jiān)控,當某結點出現異??煽刂苧edis結點的切除等操作。

整個分布式模塊通過hornetq,來切除異常redis結點。對于新結點的增加,也可以通過reload方法實現增加。(此模塊對于新增結點也可以很方便實現)

對于以上分布式架構的實現滿足了項目的需求。另外使用中對于一些比較重要用途的緩存數據可以單獨設置一些redis結點,設定特定的優(yōu)先級。另外對 于緩存接口的設計,也可以跟據需求,實現基本接口與一些特殊邏輯接口。對于cas相關操作,以及一些事物操作可以通過其watch機制來實現。

聲明:所有博客服務于分布式框架,作為框架的技術支持及說明,框架面向企業(yè),是大型互聯網分布式企業(yè)架構,后期會介紹linux上部署高可用集群項目。

歡迎大家一起學習研究相關技術,源碼獲取請加求求(企鵝): 2042849237

更多詳細源碼參考來源:http://×××/technology

當前文章:基于redis分布式緩存實現
鏈接URL:http://aaarwkj.com/article24/peigce.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站制作、標簽優(yōu)化、網站設計定制網站、網站設計公司手機網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

小程序開發(fā)
久久精品人妻少妇一区二区| 欧美日韩精品在线二区| 亚洲精品一区二区免费看| 欧美福利在线观看视频| 亚洲中文字幕精品视频乱码| 97超碰97资源在线| 中文字幕有码手机在线看| 亚洲一区二区日韩人妻| 亚洲午夜一区二区三区精品| 日韩一区不卡在线观看| 国产成人精品亚洲av无人区| 国产亚洲av看码精品永久| 中国成熟女人毛茸茸视频| 18禁黄网站免费视频| 日本一区二区裸体视频| 国产精品无卡无在线播放| 日韩av网址在线免费观看| 日本不卡一区二区三区四| 91熟女激情五月综合| 精品少妇高潮蜜臀av| 中文字幕伦理一区二区| 91九色在线免费观看| av毛片在线播放免费| 国产亚洲黄片免费在线观看| 日本精品人妻一区二区三区蜜桃| 欧美一区二区国产日韩在线| 粉嫩极品国产在线观看| 日本免费一区二区三个| 久久成人影院免费观看| 亚洲日本一区二区高清在线 | 九九久久亚洲av成人乱片| 国产在线精品成人欧美| 国产传媒网站在线观看| 午夜福利中文字幕在线亚洲| 国产日韩欧美老年人激情| 中文字幕精品一区二区三区精品 | 九九九热视频这里只有精品| 日韩av在线专区观看| 天天天干夜夜添狠操美女| 欧美日韩精品一区二区三| 色哟哟网站在线观看入口|