




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
分是證州eet01的AEQ\*jc3\*hps13\o\al(\s\up2(e),)起0多8器n個可以理解為注冊的一段函數(shù),定義了事件發(fā)生的時候應該執(zhí)行的動作),這里定期刪除指的是redis默認每100ms就隨機抽取一些設置了過期事件的key,檢查是否過期,如果過期就刪除。如果redis設置了10萬個key都設置了過期時間,每隔幾百毫秒就要檢查10萬個key那CPU負載就很高了,所以redis并不會每隔100ms就檢查所有的key,而是隨機抽取這兩個策略結合起來保證過期的key一定會被刪除。pnyneTranamtADB部分間步注冊積壓函數(shù)事件連接主機哨兵+主從的部署架構是用來保證redismaster宕機的時候,sl和s2切換,并且會從s1和s2中選取一個來進行故障轉移。這個時候是需要滿足majority,也就是大多數(shù)哨兵是運行的,2個哨兵的majority是2,如果2個哨兵都運行著就允許執(zhí)行故障轉移。如果M1所在的機器宕機了,那么s1哨兵也就掛了,只剩s2一個,沒有majorityl來允許執(zhí)行故障轉移,雖然集群還有一臺機此時majority也是2,就算M1所在的機器宕機了,哨兵還是剩下兩個s2和s3,它們滿足majority就可以允許故障轉移執(zhí)行。哨兵核心底層原理sdown是主觀宕機,就是一個哨兵覺得master宕機了,達成條件是如果一個哨兵pingmaster超過了is-master-down-after-milliseconds指定的毫秒數(shù)后就認為odown是客觀宕機,如果一個哨兵在指定時間內(nèi)收到了majority(大多數(shù))數(shù)量的哨兵也認為那個master宕機了,就是客觀宕機。哨兵之間的互相發(fā)現(xiàn):哨兵是通過redis的pub/sub實現(xiàn)的。5.Redis數(shù)據(jù)的恢復(Redis的持久化)RDB(RedisDataBase)是將某一個時刻的內(nèi)存快照(Snapshot),以二進制的方式寫入磁盤的過程。RDB有兩種方式save和bgsave:save:執(zhí)行就會觸發(fā)Redis的持久化,但同時也是使Redis處于阻塞狀態(tài),直到RDB持久化完成,才會響應其他客戶端發(fā)來的命令;bgsave:bgsave會fork)一個子進程來執(zhí)行持久化,整個過程中只有在fork)子進程時有短暫的阻塞,當子進程被創(chuàng)建之后,Redis的主進程就可以響應其他客戶端的請求了。RDB配置除了使用save和bgsave命令觸發(fā)之外,RDB支持自動觸發(fā)策略可配置Redis在指定的時間內(nèi),數(shù)據(jù)發(fā)生了多少次變化時,會自動執(zhí)行bgsave命令。在redis配置文件中配置:在時間m秒內(nèi),如果Redis數(shù)據(jù)至少發(fā)生了n次變化,那么就自動執(zhí)行BGSAVE命令。RDB優(yōu)缺點相對于AOF,直接基于RDB來恢復reids數(shù)據(jù)更快。提供服務,暫停數(shù)秒(主進程需要拷貝自己的內(nèi)存表所有數(shù)據(jù)變更(主進程還在服務),并存儲在server.aof_rewrite_buf_blocks中;everysec:主線程每次寫操作只寫內(nèi)存就返回,然后由后臺線程每隔1秒執(zhí)宕機時會丟失1秒的數(shù)據(jù);100,上一版本的aof文件大小為100M,那么當我們的aof文件達到200M的時auto-aof-rewite-min-size:最小能容忍aof文件大小,超過這個大小必須進行no-appendfsync-on-re暫時存在內(nèi)存中,等rewrite完成后fsync(強制刷新磁盤頁緩存),最多丟失1s的數(shù)據(jù);AOF即使文件很大,觸發(fā)后臺rewrite的操作的時候一般也不會影響客戶端主線程主線程磁盤AOF文件當磁盤的I0負載很高,那這個后臺線程在執(zhí)行AOFf戶端的請求,可能會導致客戶端請求redis超生,就可以立即拷貝AOF,將最后一條flushall命令刪除,再回放AOF恢復數(shù)損壞或不可用的時候還可以使用RDB來快速署,橫向擴展Redis集群的能力。RedisCluster支持N個masternode,每個rediscluster模式下,每個redis要開放兩個端口:6379和10000+以后的端口(如16379)。16379是用來節(jié)點之間通信的,使用的是clusterbus集群總線。rediscluster采用一致性hash+虛擬節(jié)點來負載均衡。rediscluster有固定的16384個slot(2^14),對每個key做CRC16值計算,然后對16384mod。可以獲取么每個master就會持有5000多個slot。hashslot讓node的添加和刪除變得很簡rediscluster主備切換與高可用宕機。如果多個節(jié)點認為一個節(jié)點宕機,那就是fail,客觀宕機。跟哨兵的原理前會進行一次過濾,檢查每個slave與master的斷開時間,如果超過了cluster-node-timeout*cluster-slave-v效果:每臺機器最高峰每秒大概5W,5臺機器最多就是master下掛載了3個slave,如果master由于網(wǎng)絡抖動被哨兵認為宕機了,又恢復了,剛好又有client連的還是老的master,就會產(chǎn)生腦裂,數(shù)redis對此的解決方案是:min-slaves-to-write1至少有一個slave連接用一個io周期得到的就緒io事件越多,處理的就越多。這也不是絕對的,如果調(diào)優(yōu)、監(jiān)控知識和10個具體應用難點。noeviction:返回錯誤當內(nèi)存限制達到并且客戶端嘗試執(zhí)行會讓更多內(nèi)存被使用的命令(大部分的寫入指令,但DEL和幾個例外)volatile-random:回收隨機的鍵使得新添加的數(shù)據(jù)有空間存放,但僅限于在5、Redis集群方案應該怎么做?都有哪些方案?的壓力,使用一致性hash后,對redis節(jié)點數(shù)量改變時候的計算值的改變,數(shù)據(jù)是hash槽的概念,以及自身支持節(jié)點設置從節(jié)點。具體看官方文檔行hash計算,然后去對應的redis實例操作數(shù)據(jù)。那么整個集群就會以為缺少5501-11000這個范圍的槽而不可用。8、說說Redis哈希槽的概念?16384個哈希槽,每個key通過CRC16校驗后對16384取模來決定放置哪個槽,10、Redis集群會有寫操作丟失嗎?為什么?盡可能使用散列表(hashes),散列表(是說散列表里面存儲的數(shù)少)使用個新的鍵),不用多久內(nèi)存限制就會被這個內(nèi)存使用量超越。Redis2.6開始redis-cli支持一種新的被稱之為pipemode的新模式用于執(zhí)行大情況),必須使用可以在運行時進行數(shù)據(jù)再平衡的一套系統(tǒng),而當前只有Redis21、分布式Redis是前期做還是后期規(guī)模上來了再做好?為什么?既然Redis是如此的輕量(單實例只使用1M內(nèi)存),為防止以后的擴容,最一開始就多設置幾個Redis實例,例如32或者64個實例,對大多數(shù)用戶來就是僅僅將Redis實例從一臺服務遷移到另外一臺服務器而已(而不用考慮重新如果你使用的是32位的Redis實例,可以好好利用Hash,list,sortedset,set等使用,在某些時候,無論如何一個服務器是不夠的,所以,如果你想使用多個CPU,你可以考慮一下分片(shard)。理論上Redis可以處理多達232的keys,并且在實際中進行了測試,每個實例至少存放了2億5千萬的keys。我們正在測試一些較大的值。任何list、set、和sortedset都可以放232個元素。網(wǎng)內(nèi)(5)主從復制不要用圖狀結構,用單向鏈表結構更為穩(wěn)定,即:Master<-Slave1<-SlaveAOF持久化方式記錄每次對服務器寫的操作,當服務器重啟的時候會重新到文件末尾。Redis還能對AOF文件進行后臺重寫,使得AOF文件的體積不至優(yōu)先載入AOF文件來恢復原始的數(shù)據(jù),因為在通常情況下AOF最重要的事情是了解RDB和AOF持久化方式的不同,讓我們以RDB持久用兩種持久化功能。如果你非常關心你的數(shù)據(jù),但仍然可以承受數(shù)分鐘以內(nèi)的數(shù)據(jù)丟失,那么你可以只使用RDB持久化。有很多用戶都只使用AOF持久化,但并不推薦這種方式:因為定時生成RDB快照(snapshot)非常便于進行數(shù)據(jù)庫備份,并且RDB恢復數(shù)據(jù)集的速度也要比AOF恢復的速度要快,除此之外,使用RDB還可以避免之前提到的AOF程序30、修改配置不重啟Redis會實時生效嗎?針對運行實例,有許多配置選項可以通過CONFIGSET命令進行修改,而無需執(zhí)行任何形式的重啟。從Redis2.2開始,可以從AOF切換到RDB的快照持久性或其他方式而不需要重啟Redis。檢索‘CONFIGGET’命令獲取更多信息。但偶爾重新啟動是必須的,如為升級Redis程序到新的版本,或者當你需要修改某些目前CONFIG命令還不支持的配置參數(shù)的時候。10個Redis架構和運維必懂的知識1、Redis常用高可用架構有哪些?RedisSentinel集群+內(nèi)網(wǎng)DNS+自定義腳本RedisSentinel集群+VIP+自定義腳本封裝客戶端直連RedisSentinel端口JedisSentinelPool,適合JavaPHP基于phpredis自行封裝RedisSentinel集群+Keepalived/Haproxy2、Redis高可用架構優(yōu)劣對比?一RedisSentinel集群+內(nèi)網(wǎng)DNS+自定義腳本秒級切換腳本自定義,架構可控維護成本略高依賴DNS,存在解析延時Sentinel模式存在短時間的服務不可用一RedisSentinel集群+VIP+自定義腳本秒級切換腳本自定義,架構可控對應用透明維護成本略高Sentinel模式存在短時間的服務不可用一封裝客戶端直連RedisSentinel端口服務探測故障及時DBA維護成本低依賴客戶端支持SentinelSentinel服務器需要開放訪問權限對應用有侵入性秒級切換維護成本高存在腦裂Sentinel模式存在短時間的服務不可用秒級切換對應用透明部署簡單,維護成本低需要腳本實現(xiàn)切換功能存在腦裂(RedisCluster、Twemproxy、Codis優(yōu)劣對比見下個問題3、常見的Redis集群方案有哪些優(yōu)缺點?多個同構Twemproxy(配置相同)同時工作,接受客戶端的請求,根據(jù)hash算法,轉發(fā)給對應的Redis。Twitter內(nèi)部已放棄使用該方案,新使用的架構未開源端Redis客戶端端分發(fā)Codis-Config的命令Codis-Config集成管理工具,有web界面無狀態(tài)代理,兼容Redis協(xié)議基于2.8版本,二次開發(fā)修改了Redis代碼,導致和官方無法同步,新特性P2P模式,無中心化。把key分成16384個slot,每個實例負責一部分slot。組件all-in-box,部署簡單,節(jié)約機器資源多鍵操作支持有限(驅動可以曲線救國)Redis首先它是一種內(nèi)存數(shù)據(jù)庫,最大的優(yōu)勢在于3、新接手一個復雜的Redis集群(Sent1、Redis實例中,存在大量的FIN_WAI這個狀態(tài)存在于主動發(fā)起斷開請求的一端,如果服務器存在大量的這個狀PS:線上Web客戶端用的什么語言?方法二:執(zhí)行redis-cli--latency化RDB的持久化需要vm.overcommit_memory=1,否則會持久化失敗故障時及時上機,使用redis-climonitor打印出操作日志,然后分析(事后分和研發(fā)溝通,確認是否有大Key在堵塞(大Key也可以在日常的巡檢中獲1、提高Redis內(nèi)存數(shù)據(jù)庫的性能,有哪些措施?使用scan代替keys,將遍歷RedisDB中所有key的操作放到客戶端來做避免使用O(N)復雜度的命令定期使用redis-cli--big-keys檢測大KeyRedis調(diào)優(yōu)、監(jiān)控知識和10個具體應用難點單進程單線程高性能服務器,恢復比較慢單機qps(秒并發(fā))可以達到10W,適銷大(低于物理內(nèi)存的3/5),不同命令延遲差別大,官方網(wǎng)站:(1)timeout參數(shù),非常需要關注,官方對t模式10000,一般情況下是夠了,但是在高并發(fā)海量訪問的時候,還是會出現(xiàn)客握手時進入acceptqueue隊列的最大值,也就是send_Q,(4)重點提一下安全的參數(shù),requirepassfoobared個人認為,如果你們覺得據(jù)。如果你開啟這個參數(shù),記得預留一些空間給系統(tǒng)很可能系統(tǒng)會被殺掉。針對這一點,你可以通過info命令對used_memory和做些什么,是清除一些沒用的冷數(shù)據(jù),還是把Redis遷移到更強大的機器上去。持久化。如果因為你的機器或Redis本身的問題導致Redis崩潰了,那么你唯一的救命稻草可能就是dump出來的rdb文件了,所以,對Redisdump文件進行監(jiān)控也是很重要的??梢酝ㄟ^對rdb_dump數(shù)據(jù)操作的時間,還可以通過對rdb_changes_since_last得如果這時候出現(xiàn)故障,會丟失(即已改變)多少數(shù)據(jù)。四、如何更好更合理的使用Redis——10個具體應用難點解讀Redis然后再同步到Oracle,還是先寫Oracle然后的問題,那就是同樣有一份數(shù)據(jù),當數(shù)據(jù)變化的時候,是先寫Redis還是先寫Oracle?是先寫Redis,再寫Oracle,因為代碼層面保證數(shù)據(jù)的一致性,在高并發(fā)寫Oracle,如果先寫Redis,參考前一段話,采取Redis的強一致性;如果先寫2.目前的監(jiān)控系統(tǒng)是Python到Oracle取配置信息,經(jīng)過運算Oracle,然后根據(jù)閥值來觸發(fā)告警,在這樣的模式之下空間呢?5:多維度的告警規(guī)則:如無數(shù)據(jù)告警、存全局ID。熱點數(shù)據(jù)緩存采用的是一主一從三哨兵(分別獨立,共五個節(jié)點);會話保持采用的是一主三從四個哨兵(共四個節(jié)點,每個進程);這個是乙方給的方案,請教大神,這個方案可靠嗎?能否使用cluster方案來替代呢?有必要嗎?答:你有兩套Redis,A作為熱數(shù)據(jù)緩存缺點:A有5個節(jié)點,B有4個節(jié)點,9個節(jié)點中只有2個節(jié)點是主節(jié)點,按照9節(jié)點的規(guī)模,實際組網(wǎng)只能有8臺,4主4從,資源使用率得到很大的提升,而且代理層分別由8個節(jié)點負擔,因此,也能保證了可用性。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 可持續(xù)設計在多媒體應用中的引入試題及答案
- 現(xiàn)代英語測試題及答案
- 系統(tǒng)集成項目管理未來發(fā)展試題及答案
- 鉗工正方拼塊試題及答案
- 醫(yī)保藥品種管理制度
- 理財公司團隊管理制度
- 2025年計算機二級試題及答案分享
- 防靜電區(qū)域管理制度
- 建筑新安法安全管理制度
- 文體中心衛(wèi)生管理制度
- 2024年北京市中考物理模擬卷(一)
- XF-T 3004-2020 汽車加油加氣站消防安全管理
- MOOC 從china到China:中國陶瓷文化三十講-景德鎮(zhèn)陶瓷大學 中國大學慕課答案
- 小區(qū)車輛刮蹭處理預案
- 機動車檢測站全套管理制度(全套)
- 手術室預防墜床課件
- 《復興號動車組》課件
- 學術規(guī)范與學術道德課件
- 合格供應商的聲明函和承諾書范文
- ITSM基礎知識及流程介紹
- 部編版初中語文課后習題答案
評論
0/150
提交評論