麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

redis分布式緩存實(shí)現(xiàn)

2019-11-11 04:45:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

轉(zhuǎn)自:

基于redis分布式緩存實(shí)現(xiàn)

第一:Redis 是什么?

Redis是基于內(nèi)存、可持久化的日志型、Key-Value數(shù)據(jù)庫(kù) 高性能存儲(chǔ)系統(tǒng),并提供多種語(yǔ)言的API.

第二:出現(xiàn)背景

數(shù)據(jù)結(jié)構(gòu)(Data Structure)需求越來(lái)越多, 但memcache中沒(méi)有, 影響開(kāi)發(fā)效率性能需求, 隨著讀操作的量的上升需要解決,經(jīng)歷的過(guò)程有: 數(shù)據(jù)庫(kù)讀寫分離(M/S)–>數(shù)據(jù)庫(kù)使用多個(gè)Slave–>增加Cache (memcache)–>轉(zhuǎn)到Redis解決寫的問(wèn)題: 水平拆分,對(duì)表的拆分,將有的用戶放在這個(gè)表,有的用戶放在另外一個(gè)表;

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

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

維護(hù)性復(fù)雜 一致性維護(hù)成本越來(lái)越高; BerkeleyDB使用B樹(shù),會(huì)一直寫新的,內(nèi)部不會(huì)有文件重新組織;這樣會(huì)導(dǎo)致文件越來(lái)越大;大的時(shí)候需要進(jìn)行文件歸檔,歸檔的操作要定期做; 這樣,就需要有一定的down time;

基于以上考慮, 選擇了Redis

第三:Redis 在新浪微博中的應(yīng)用

Redis簡(jiǎn)介

1. 支持5種數(shù)據(jù)結(jié)構(gòu)

支持strings, hashes, lists, sets, sorted sets string是很好的存儲(chǔ)方式,用來(lái)做計(jì)數(shù)存儲(chǔ)。sets用于建立索引庫(kù)非常棒;

2. K-V 存儲(chǔ) vs K-V 緩存

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

3. 社區(qū)活躍

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

Redis基本原理

redis持久化(aof) append online file: 寫log(aof), 到一定程度再和內(nèi)存合并. 追加再追加, 順序?qū)懘疟P, 對(duì)性能影響非常小

1. 單實(shí)例單進(jìn)程

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

2. Replication

過(guò)程: 數(shù)據(jù)寫到master–>master存儲(chǔ)到slave的rdb中–>slave加載rdb到內(nèi)存。 存儲(chǔ)點(diǎn)(save point): 當(dāng)網(wǎng)絡(luò)中斷了, 連上之后, 繼續(xù)傳. Master-slave下第一次同步是全傳,后面是增量同步;、

3. 數(shù)據(jù)一致性

長(zhǎng)期運(yùn)行后多個(gè)結(jié)點(diǎn)之間存在不一致的可能性; 開(kāi)發(fā)兩個(gè)工具程序: 1.對(duì)于數(shù)據(jù)量大的數(shù)據(jù),會(huì)周期性的全量檢查; 2.實(shí)時(shí)的檢查增量數(shù)據(jù),是否具有一致性;

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

第四:分布式緩存的架構(gòu)設(shè)計(jì)

1.架構(gòu)設(shè)計(jì)

由于redis是單點(diǎn),項(xiàng)目中需要使用,必須自己實(shí)現(xiàn)分布式?;炯軜?gòu)圖如下所示

2.分布式實(shí)現(xiàn)

通過(guò)key做一致性哈希,實(shí)現(xiàn)key對(duì)應(yīng)redis結(jié)點(diǎn)的分布。

一致性哈希的實(shí)現(xiàn):

l        hash值計(jì)算:通過(guò)支持md5與MurmurHash兩種計(jì)算方式,默認(rèn)是采用MurmurHash,高效的hash計(jì)算。

l        一致性的實(shí)現(xiàn):通過(guò)java的TreeMap來(lái)模擬環(huán)狀結(jié)構(gòu),實(shí)現(xiàn)均勻分布

3.client的選擇

對(duì)于jedis修改的主要是分區(qū)模塊的修改,使其支持了跟據(jù)BufferKey進(jìn)行分區(qū),跟據(jù)不同的redis結(jié)點(diǎn)信息,可以初始化不同的 ShardInfo,同時(shí)也修改了JedisPool的底層實(shí)現(xiàn),使其連接pool池支持跟據(jù)key,value的構(gòu)造方法,跟據(jù)不同 ShardInfos,創(chuàng)建不同的jedis連接客戶端,達(dá)到分區(qū)的效果,供應(yīng)用層調(diào)用

4.模塊的說(shuō)明

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

l        屏蔽監(jiān)控模塊,對(duì)于jedis操作的異常監(jiān)控,當(dāng)某結(jié)點(diǎn)出現(xiàn)異常可控制redis結(jié)點(diǎn)的切除等操作。

整個(gè)分布式模塊通過(guò)hornetq,來(lái)切除異常redis結(jié)點(diǎn)。對(duì)于新結(jié)點(diǎn)的增加,也可以通過(guò)reload方法實(shí)現(xiàn)增加。(此模塊對(duì)于新增結(jié)點(diǎn)也可以很方便實(shí)現(xiàn))

對(duì)于以上分布式架構(gòu)的實(shí)現(xiàn)滿足了項(xiàng)目的需求。另外使用中對(duì)于一些比較重要用途的緩存數(shù)據(jù)可以單獨(dú)設(shè)置一些redis結(jié)點(diǎn),設(shè)定特定的優(yōu)先級(jí)。另外對(duì) 于緩存接口的設(shè)計(jì),也可以跟據(jù)需求,實(shí)現(xiàn)基本接口與一些特殊邏輯接口。對(duì)于cas相關(guān)操作,以及一些事物操作可以通過(guò)其watch機(jī)制來(lái)實(shí)現(xiàn)。

來(lái)源:http://minglisoft.cn/technology


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久思思爱 | 舌头伸进添的我好爽高潮网站 | 精品一区二区电影 | 久久噜噜噜精品国产亚洲综合 | 色综合久久久久久久久久久 | 在线免费日本 | 中文字幕在线观看亚洲 | 伊人成人免费视频 | 亚洲午夜免费 | 一本视频在线观看 | 性盈盈盈影院 | 欧美亚洲另类在线 | 黄网站免费入口 | 毛片在线免费视频 | 蜜桃91麻豆 | 久久久久久亚洲国产精品 | 双性帝王调教跪撅打屁股 | 一级黄色片在线看 | 久久人人做| 成人男男视频拍拍拍在线观看 | 免费啪视频在线观看 | 牛牛视频在线 | 高清在线观看av | 欧美三级日本三级少妇99 | 国产一区二区视频网站 | 欧美淫交 | 国产三级在线视频观看 | 欧美成人黄色片 | 国产69精品久久99不卡免费版 | 欧美成人性色区 | 性欧美极品xxxx欧美一区二区 | 欧美高清视频一区 | 日本在线高清 | 中午字幕无线码一区2020 | 亚洲午夜精选 | 国产精品久久久久久久久久久久久久久 | av在线免费看网站 | 久久99精品国产 | 狠狠一区二区 | 水多视频在线观看 | 欧美一区二区三区中文字幕 |