您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
02 redis的發布訂閱機制(spring-redis 發布訂閱模式:發布一條消息收到了兩條,重復監聽)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-10 00:05:50【】1人已围观
简介實現了消息隊列所需要的所有功能,包括:同時需要注意的是Stream只是一個數據結構,他不會主動把消息推送給消費者,需要消費者主動來消費數據。每個Stream都有唯一的名稱,它就是Redis的key,首
同時需要注意的是Stream只是一個數據結構,他不會主動把消息推送給消費者,需要消費者主動來消費數據 。
每個Stream都有唯一的名稱,它就是Redis的key,首次使用 xadd 指令追加消息時自動創建。
常見操作命令如下表:
如果客戶端希望知道自身消費到第幾條數據了,那么就需要記錄一下當前消費的消息ID,下次再次消費的時候就從上次消費的消息ID開始讀取數據即可。
消費組中多了一個游標 last_delivered_id ,表示當前消費到了哪一條數據。同時所有的數據都是待處理消息( PEL ),只有消費者處理完畢之后使用 ack 指令告知redis服務器,數據才會從 PEL 中移除,確認后的消息就無法再次消費。
如果接收到的消息比較多,為了避免Stream過長,可以選擇指定Stream的最大長度,一旦到達了最大長度,就會從最早的消息開始清除,保證Stream中最新的消息。
redis頻道收到發布者信息后可以只推信息給一個訂閱者嗎
Redis 的 SUBSCRIBE 命令可以讓客戶端訂閱任意數量的頻道, 每當有新信息發送到被訂閱的頻道時, 信息就會被發送給所有訂閱指定頻道的客戶端。
作為例子, 下圖展示了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關系:
Redis哨兵機制原理淺析
上一篇文章Redis主從復制原理中簡要地說明了主從復制的一個基本原理,包含全量復制、復制積壓緩沖區與增量復制等內容,有興趣的同學可以先看下。
利用主從復制,可以實現讀寫分離、數據備份等功能。但如果主庫宕機后,需要運維人員手動地將一個從庫提升為新主庫,并將其他從庫slaveof新主庫,以此來實現故障恢復。
因此, 主從模式的一個缺點,就在于無法實現自動化地故障恢復 。Redis后來引入了哨兵機制,哨兵機制大大提升了系統的高可用性。
哨兵,就是站崗放哨的,時刻監控周圍的一舉一動,在第一時間發現敵情并發出及時的警報。
Redis中的哨兵(Sentinel), 則是一個特殊的Redis實例 ,不過它并不存儲數據。也就是說,哨兵在啟動時,不會去加載RDB文件。
關于Redis的持久化,可以參考我的另外一篇文章 談談Redis的持久化——AOF日志與RDB快照
上圖就是一個典型的哨兵架構,由數據節點與哨兵節點構成,通常會部署多個哨兵節點。
哨兵主要具有三個作用, 監控、選主與通知 。
監控:哨兵會利用心跳機制,周期性不斷地檢測主庫與從庫的存活性
選主:哨兵檢測到主庫宕機后,選擇一個從庫將之切換為新主庫
通知:哨兵會將新主庫的地址通知到所有從庫,使得所有從庫與舊主庫slaveof新主庫,也會將新主庫的地址通知到客戶端上
我會在下文詳細講一下監控與選主的過程
哨兵系統是通過3個定時任務,來完成對主庫、從庫與哨兵之間的探活。
首先我們會在配置文件中配置主庫地址,這樣哨兵在啟動后,會以 每隔10秒 的頻率向主庫發送info命令,從而獲得當前的主從拓撲關系,這樣就拿到了所有從庫的地址。
接著 每隔2秒 ,會使用pub/sub(發布訂閱)機制,在主庫上的 sentinel :hello的頻道上發布消息,消息內容包括哨兵自己的ip、port、runid與主庫的配置。
每個哨兵都會訂閱該頻道,在該頻道上發布與消費消息,從而實現哨兵之間的互相感知。
利用啟動配置與info命令可以獲取到主從庫地址,利用發布訂閱可以感知到其余的哨兵節點。
在此基礎上,哨兵會 每隔1秒 向主庫、從庫與其他哨兵節點發送PING命令,因此來進行互相探活。
當某個哨兵在 **down-after-millise買粉絲nds(默認是30秒) **配置的連續時間內,仍然沒有收到主庫的正確響應,則當前哨兵會認為主庫 主觀下線 ,并將其標記為sdown(subjective down)
為了避免當前哨兵對主庫的誤判,因此這個時候還需要參考其他哨兵的意見。
接著當前哨兵會向其他哨兵發送 sentinel is-master-down-by-addr 命令, 如果有半數以上(由quorum參數決定)的哨兵認為主庫確實處于主觀下線狀態,則當前哨兵認為主庫客觀下線 ,標記為odown(objective down)
一旦某個主庫被認定為客觀下線時,這個時候需要進行哨兵選舉,選舉出一個領導者哨兵,來完成主從切換的過程。
哨兵A在向其他哨兵發送 sentinel is-master-down-by-addr 命令時,同時要求其他哨兵同意將其設置為Leader,也就是想獲得其他哨兵的投票。
在每一輪選舉中,每個哨兵僅有一票。投票遵循先來先到的原則,如果某個哨兵沒有投給別人,就會投給哨兵A。
首先獲得半數以上投票的哨兵,將被選舉稱為Leader。
這里的哨兵選舉,采用的是Raft算法。這里不對Raft做詳細的探討,有興趣的同學,可以參考我的另外一篇文章 22張圖,帶你入門分布式一致性算法Raft
該文章采用大量的圖例,相信你可以從中學習到全新的知識,從而打開分布式一致性算法的大門,大伙們記得等我搞完Paxos與Zab。
過半投票機制也常用于很多算法中,例如RedLock,在半數以上的節點上加鎖成功,才代表申請到了分布式鎖,具體可參考這篇文章的最后 我用了上萬字,走了一遍Redis實現分布式鎖的坎坷之路,從單機到主從再到多實例,原來會發生這么多的問題
在Zookeeper選舉中,同樣也用到了過半投票機制,在這篇文章中 面試官:能給我畫個Zookeeper選舉的圖嗎? 我從源碼角度分析了Zookeeper選舉的過程。
在選舉到領導者哨兵后,將由該哨兵完成故障恢復工作。
故障恢復分為以下兩步:
詳細說一下第一步,挑選是有條件的。首先要過濾出不健康的節點,再按某種規則排序,最后取第一個從庫,我們直接從源碼入手:
因此,以下從庫會被過濾出:
剩下的節點,就是健康的節點,此時再執行一次快速排序,排序的規則如下:
本文算是Redis哨兵的一個入門文章,主要講了哨兵的作用,例如監控、選主和通知。
在Redis讀寫分離的情況下,使用哨兵可以很輕松地做到故障恢復,提升了整體的可用性。
但哨兵無法解決Redis單機寫的瓶頸,這就需要引入集群模式,相應的文章也被列為明年的寫作計劃中。
</article>
spring-redis 發布訂閱模式:發布一條消息收到了兩條,重復監聽
當你看到這個文章時,想必已經了解了一些關于spring-redis發布訂閱方面的知識,如果你也遇到同樣的問題
那么請考慮spring在啟動時有沒有重復的加載配置文件
具體的方式可以在 AbstractApplicationContext 的 refresh() 方法中打斷點,如果走了兩次,說明配置文件加載了兩遍
而配置文件加載兩遍的原因是因為web.xml中DispatcherServlet和ContextLoaderLinistener 共用了 某些配置文件導致的。
《Redis設計與實現》pdf下載在線閱讀,求百度網盤云資源
《Redis設計與實現》(黃健宏)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:買粉絲s://pan..買粉絲/s/1M0lgX6oCAbCTQfyVSURJyQ 密碼:g1k5
書名:Redis設計與實現
作者:黃健宏
豆瓣評分:8.6
出版社:機械工業出版社
出版年份:2014-6
頁數:388
內容簡介:
【官方網站】
本書的官方網站 買粉絲.RedisBook.買粉絲 提供了書本試讀、相關源碼下載和勘誤回報等服務,歡迎讀者瀏覽和使用。
【編輯推薦】
系統而全面地描述了 Redis 內部運行機制
圖示豐富,描述清晰,并給出大量參考信息,是NoSQL數據庫開發人員案頭必備
包括大部分Redis單機特征,以及所有多機特性
【讀者評價】
這本書描述的知識點很豐富,覆蓋很全,里面提到特性較多,有不少我們也沒用過 :) 每個命令內部的機制的介紹很不錯,很多估計也是首次有詳細文檔介紹。
——楊衛華(@TimYang)新浪微博技術總監
近幾年Redis以其高性能、高靈活性的優點,變得越來越流行。但很多人在使用Redis時,僅僅還是停留在比較表層的功能性認識,缺乏對內部機制原理的深入理解。本書是huangz同學長期對Redis源碼的閱讀心得結晶,書中對Redis的各個方面都進行了詳細且深入的講解,將復雜的原理用最簡單的方式為大家解構和講解,強烈推薦給每一位Redis的使用者閱讀。
—— iammutex,NoSQLFan站長,樂視網技術經理
Redis 是近些年來特別火爆的 NoSQL 之一。縱觀中外各種書籍還沒有一本能對 Redis 內部進行深入剖析,《Redis 設計與實現》可謂開此先河。常和作者在網上交流,知道作者為這本書付出了大量的心血。這本書行文流暢,思路清晰,詳細地介紹了 Redis 源碼的方方面面。無論是想學習 NoSQL、網絡編程的初學者,還是源碼控的進階者,本書都會有很大的幫助。
—— 阮若夷,支付寶高級專家
【內容簡介】
本書全面而完整地講解了Redis的內部機制與實現方式,對Redis的大多數單機功能以及所有多機功能的實現原理進行了介紹,展示了這些功能的核心數據結構以及關鍵的算法思想,圖示豐富,描述清晰,并給出大量參考信息。通過閱讀本書,讀者可以快速、有效地了解Redis的內部構造以及運作機制,更好、更高效地使用Redis。
本書主要分為四大部分。第一部分“數據結構與對象”介紹了Redis中的各種對象及其數據結構,并說明這些數據結構如何影響對象的功能和性能。第二部分“單機數據庫的實現”對Redis實現單機數據庫的方法進行了介紹,包括數據庫、RDB持久化、AOF持久化、事件等。第三部分“多機數據庫的實現”對Redis的Sentinel、復制、集群三個多機功能進行了介紹。第四部分“獨
很赞哦!(2649)
相关文章
- 沒有海外id怎么下載tiktok(臺灣蘋果id可以下載TikTok嗎)
- 油泵回油管作用(汽車回油管作用)
- 05 youtube music 買粉絲s official(今日新聞淺談:Youtube Music 也加入串流音樂服務大混戰)
- 油泵和進油管接口處漏油(油泵進油管和出油管大小一樣容易壞泵嗎)
- 油煙機pvc排風管安裝(油煙機排風管怎么安裝)
- 05 youtube to mp3 320 y2(想要《咖啡王子一號店》的所有歌曲)
- 油煙機出風口尺寸和煙管的尺寸(油煙機排風管直徑多大)
- 05 youtube to mp3 買粉絲nverter program in java第(0ffer是什么意思)
- 05 youtube to mp3 買粉絲 download 買粉絲中文下載(芭比動畫片的片尾曲叫什么名字?)
- 油井套管頭圖片(中海油服與海油工程)
热门文章
站长推荐
汽車進油管和回油管圖片(帕薩特1.8t發動機進油管和出油管示意圖?)
05 youtube to mp3 買粉絲 download app store切換(mac系統下如何用迅雷)
05 youtube music 買粉絲s 買粉絲untry 2020 playlist new artist grammy nominees(Apple Scheme URL Reference)
05 youtube music reviews(justin bieber的英語演講稿怎么帶中文翻譯)
05 youtube to mp3 320 y2(想要《咖啡王子一號店》的所有歌曲)
05 youtube to mp3 買粉絲nverter download online pdf password remover注冊(有沒有聽了讓人能安靜下來的音樂)
汽車高壓油管在哪個位置(什么是汽車高壓油管)
05 youtube to mp3 downloader pc youtube download online 買粉絲(怎Download綱上影片)