hardinfo中文翻譯,hardinfo是什么意思,hardinfo發(fā)音、用法及例句
- 內容導航:
- 1、hardinfo
- 2、redis是怎么實(shí)現的
1、hardinfo
hardinfo發(fā)音
英: 美:
hardinfo中文意思翻譯
常見(jiàn)釋義:
硬件信息
hardinfo相似詞語(yǔ)短語(yǔ)
1、hard working───勤奮的;努力工作的
2、banned orchard spray───禁果噴霧
3、pochard way───波查德路
4、can hardly───很難
5、awfully hard towers───非常堅硬的塔
6、hard to know───很難知道
7、hard lock───硬鎖
8、pilchard bob the builder───建筑工人皮爾查德·鮑伯
9、hardship synonym───困難同義詞
10、hard evidence───真憑實(shí)據;[法] 鐵證
2、redis是怎么實(shí)現的
第一:Redis 是什么?
Redis是基于內存、可持久化的日志型、Key-Value數據庫 高性能存儲系統,并提供多種語(yǔ)言的API.
第二:出現背景
數據結構(Data Structure)需求越來(lái)越多, 但memcache中沒(méi)有, 影響開(kāi)發(fā)效率
性能需求, 隨著(zhù)讀操作的量的上升需要解決,經(jīng)歷的過(guò)程有:
數據庫讀寫(xiě)分離(M/S)–>數據庫使用多個(gè)Slave–>增加Cache (memcache)–>轉到Redis
解決寫(xiě)的問(wèn)題:
水平拆分,對表的拆分,將有的用戶(hù)放在這個(gè)表,有的用戶(hù)放在另外一個(gè)表;
可靠性需求
Cache的"雪崩"問(wèn)題讓人糾結
Cache面臨著(zhù)快速恢復的挑戰
開(kāi)發(fā)成本需求
Cache和DB的一致性維護成本越來(lái)越高(先清理DB, 再清理緩存, 不行啊, 太慢了!)
開(kāi)發(fā)需要跟上不斷涌入的產(chǎn)品需求
硬件成本最貴的就是數據庫層面的機器,基本上比前端的機器要貴幾倍,主要是IO密集型,很耗硬件;
維護性復雜
一致性維護成本越來(lái)越高;
BerkeleyDB使用B樹(shù),會(huì )一直寫(xiě)新的,內部不會(huì )有文件重新組織;這樣會(huì )導致文件越來(lái)越大;大的時(shí)候需要進(jìn)行文件歸檔,歸檔的操作要定期做;
這樣,就需要有一定的down time;
基于以上考慮, 選擇了Redis
第三:Redis 在新浪微博中的應用
Redis簡(jiǎn)介
1. 支持5種數據結構
支持strings, hashes, lists, sets, sorted sets
string是很好的存儲方式,用來(lái)做計數存儲。sets用于建立索引庫非常棒;
2. K-V 存儲 vs K-V 緩存
新浪微博目前使用的98%都是持久化的應用,2%的是緩存,用到了600+服務(wù)器
Redis中持久化的應用和非持久化的方式不會(huì )差別很大:
非持久化的為8-9萬(wàn)tps,那么持久化在7-8萬(wàn)tps左右;
當使用持久化時(shí),需要考慮到持久化和寫(xiě)性能的配比,也就是要考慮redis使用的內存大小和硬盤(pán)寫(xiě)的速率的比例計算;
3. 社區活躍
Redis目前有3萬(wàn)多行代碼, 代碼寫(xiě)的精簡(jiǎn),有很多巧妙的實(shí)現,作者有技術(shù)潔癖
Redis的社區活躍度很高,這是衡量開(kāi)源軟件質(zhì)量的重要指標,開(kāi)源軟件的初期一般都沒(méi)有商業(yè)技術(shù)服務(wù)支持,如果沒(méi)有活躍社區做支撐,一旦發(fā)生問(wèn)題都無(wú)處求救;
Redis基本原理
redis持久化(aof) append online file:
寫(xiě)log(aof), 到一定程度再和內存合并. 追加再追加, 順序寫(xiě)磁盤(pán), 對性能影響非常小
1. 單實(shí)例單進(jìn)程
Redis使用的是單進(jìn)程,所以在配置時(shí),一個(gè)實(shí)例只會(huì )用到一個(gè)CPU;
在配置時(shí),如果需要讓CPU使用率最大化,可以配置Redis實(shí)例數對應CPU數, Redis實(shí)例數對應端口數(8核Cpu, 8個(gè)實(shí)例, 8個(gè)端口), 以提高并發(fā):
單機測試時(shí), 單條數據在200字節, 測試的結果為8~9萬(wàn)tps;
2. Replication
過(guò)程: 數據寫(xiě)到master–>master存儲到slave的rdb中–>slave加載rdb到內存。
存儲點(diǎn)(save point): 當網(wǎng)絡(luò )中斷了, 連上之后, 繼續傳.
Master-slave下第一次同步是全傳,后面是增量同步;、
3. 數據一致性
長(cháng)期運行后多個(gè)結點(diǎn)之間存在不一致的可能性;
開(kāi)發(fā)兩個(gè)工具程序:
1.對于數據量大的數據,會(huì )周期性的全量檢查;
2.實(shí)時(shí)的檢查增量數據,是否具有一致性;
對于主庫未及時(shí)同步從庫導致的不一致,稱(chēng)之為延時(shí)問(wèn)題;
對于一致性要求不是那么嚴格的場(chǎng)景,我們只需要要保證最終一致性即可;
對于延時(shí)問(wèn)題,需要根據業(yè)務(wù)場(chǎng)景特點(diǎn)分析,從應用層面增加策略來(lái)解決這個(gè)問(wèn)題;
例如:
1.新注冊的用戶(hù),必須先查詢(xún)主庫;
2.注冊成功之后,需要等待3s之后跳轉,后臺此時(shí)就是在做數據同步。
第四:分布式緩存的架構設計
1.架構設計
由于redis是單點(diǎn),項目中需要使用,必須自己實(shí)現分布式?;炯軜媹D如下所示:
2.分布式實(shí)現
通過(guò)key做一致性哈希,實(shí)現key對應redis結點(diǎn)的分布。
一致性哈希的實(shí)現:
l hash值計算:通過(guò)支持MD5與MurmurHash兩種計算方式,默認是采用MurmurHash,高效的hash計算.
l 一致性的實(shí)現:通過(guò)java的TreeMap來(lái)模擬環(huán)狀結構,實(shí)現均勻分布
3.client的選擇
對于jedis修改的主要是分區模塊的修改,使其支持了跟據BufferKey進(jìn)行分區,跟據不同的redis結點(diǎn)信息,可以初始化不同的 ShardInfo,同時(shí)也修改了JedisPool的底層實(shí)現,使其連接pool池支持跟據key,value的構造方法,跟據不同 ShardInfos,創(chuàng )建不同的jedis連接客戶(hù)端,達到分區的效果,供應用層調用
4.模塊的說(shuō)明
l 臟數據處理模塊,處理失敗執行的緩存操作。
l 屏蔽監控模塊,對于jedis操作的異常監控,當某結點(diǎn)出現異??煽刂苧edis結點(diǎn)的切除等操作。
整個(gè)分布式模塊通過(guò)hornetq,來(lái)切除異常redis結點(diǎn)。對于新結點(diǎn)的增加,也可以通過(guò)reload方法實(shí)現增加。(此模塊對于新增結點(diǎn)也可以很方便實(shí)現)
對于以上分布式架構的實(shí)現滿(mǎn)足了項目的需求。另外使用中對于一些比較重要用途的緩存數據可以單獨設置一些redis結點(diǎn),設定特定的優(yōu)先級。另外對 于緩存接口的設計,也可以跟據需求,實(shí)現基本接口與一些特殊邏輯接口。對于cas相關(guān)操作,以及一些事物操作可以通過(guò)其watch機制來(lái)實(shí)現。
聲明:所有博客服務(wù)于分布式框架,作為框架的技術(shù)支持及說(shuō)明,框架面向企業(yè),是大型互聯(lián)網(wǎng)分布式企業(yè)架構,后期會(huì )介紹linux上部署高可用集群項目。
版權聲明: 本站僅提供信息存儲空間服務(wù),旨在傳遞更多信息,不擁有所有權,不承擔相關(guān)法律責任,不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責。如因作品內容、版權和其它問(wèn)題需要同本網(wǎng)聯(lián)系的,請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。