dis Sentinel故障監(jiān)控集群,Redis Sentinel是Redis官方推薦的高可用性(HA)解決方案,它使用流言協(xié)議(gossip protocols)來(lái)接收關(guān)于主服務(wù)器是否下線的信息,并使用投票協(xié)議(agreement protocols)來(lái)決定是否執(zhí)行自動(dòng)故障迀移,以及選擇哪個(gè)從服務(wù)器作為新的主服務(wù)器;它能監(jiān)控多個(gè)主從集群,發(fā)現(xiàn)master宕機(jī)后能進(jìn)行自動(dòng)切換,并觸發(fā)FailOver事件通知,使用Redis Sentinel—定要以集群形式,首先判斷客觀下線需要多臺(tái)Sentinel,其次可以避免單臺(tái)Sentinel的單點(diǎn)故障問(wèn)題。
[0060]綜上所述,本發(fā)明的優(yōu)點(diǎn)如下:
[0061]本發(fā)明的一種基于Redis管道通信的消息傳遞方法是一種平臺(tái)間大規(guī)模數(shù)據(jù)消息穩(wěn)定有效的傳輸?shù)姆椒?,通過(guò)Redis管道通信將數(shù)據(jù)按照類(lèi)型發(fā)布到不同的管道,業(yè)務(wù)處理平臺(tái)只需要根據(jù)配置偵聽(tīng)對(duì)應(yīng)類(lèi)型的管道,收取需要的數(shù)據(jù),減少了數(shù)據(jù)的冗余;在本方法中,業(yè)務(wù)處理服務(wù)和接收服務(wù)所使用的Redis連接池可以支持Redis主從集群,保證了數(shù)據(jù)讀寫(xiě)分離,實(shí)現(xiàn)了數(shù)據(jù)的高效傳輸;還提供了利用Redis Sentinel故障監(jiān)控集群搭建的Redis集群故障自動(dòng)迀移系統(tǒng),根據(jù)Redis Sentinel上報(bào)的當(dāng)前主服務(wù)器master所使用的ip、端口創(chuàng)建Redis Client可讀寫(xiě)連接發(fā)布數(shù)據(jù)消息,根據(jù)Redis Sentinel上報(bào)的當(dāng)前從服務(wù)器sIave所使用的ip、端口創(chuàng)建Redis Client只讀連接,獲取發(fā)布的數(shù)據(jù)消息;當(dāng)發(fā)生故障轉(zhuǎn)移Fai 1ver事件觸發(fā)時(shí),釋放當(dāng)前已斷開(kāi)的連接,重新創(chuàng)建連接,切換到新的master服務(wù)器,保證業(yè)務(wù)不受中斷,保證了數(shù)據(jù)的持續(xù)穩(wěn)定傳輸。
[0062]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于RediS管道通信的消息傳遞方法,其特征在于:包括如下步驟: 步驟1、啟動(dòng)接收服務(wù)器,接收數(shù)據(jù)消息并讀取基礎(chǔ)數(shù)據(jù),將該數(shù)據(jù)消息、其接口及該基礎(chǔ)數(shù)據(jù)進(jìn)行封裝,并將封裝后的數(shù)據(jù)消息進(jìn)行分類(lèi),調(diào)用發(fā)布指令,并根據(jù)該數(shù)據(jù)消息的類(lèi)型將該數(shù)據(jù)消息發(fā)布到Redis服務(wù)器的不同通道中;同時(shí),將封裝后的基礎(chǔ)數(shù)據(jù)存儲(chǔ)至Redis服務(wù)器內(nèi); 步驟2、業(yè)務(wù)處理平臺(tái)發(fā)送訂閱指令給Redis服務(wù)器,Redis服務(wù)器接收該訂閱指令后,將相應(yīng)通道中的數(shù)據(jù)消息傳輸給業(yè)務(wù)處理平臺(tái);同時(shí),業(yè)務(wù)處理平臺(tái)從Redis服務(wù)器獲取基本數(shù)據(jù); 步驟3、業(yè)務(wù)處理平臺(tái)將訂閱后的數(shù)據(jù)消息進(jìn)行過(guò)濾; 步驟4、業(yè)務(wù)處理平臺(tái)使用封裝好的接口將過(guò)濾后的數(shù)據(jù)消息的格式直接轉(zhuǎn)換為用業(yè)務(wù)處理平臺(tái)來(lái)解讀的對(duì)象格式后,根據(jù)基礎(chǔ)數(shù)據(jù)將過(guò)濾后的數(shù)據(jù)消息進(jìn)行解析; 步驟5、業(yè)務(wù)處理平臺(tái)獲取解析后的數(shù)據(jù)消息,并將該數(shù)據(jù)消息傳輸?shù)接脩?hù)軟件進(jìn)行顯不O2.根據(jù)權(quán)利要求1所述的一種基于Redis管道通信的消息傳遞方法,其特征在于:所述接收服務(wù)器及業(yè)務(wù)處理平臺(tái)與Redis服務(wù)器的連接方式具體為: 接收服務(wù)器與業(yè)務(wù)處理平臺(tái)均使用Redis連接池與Redis服務(wù)器進(jìn)行Redis連接,如果Redis Sentinel集群監(jiān)控到Redis服務(wù)器發(fā)生故障,說(shuō)明Redis連接中斷,貝IjRedis連接池將等待Redis Sentinel集群進(jìn)行自動(dòng)的故障轉(zhuǎn)移切換,若切換成功,則重新創(chuàng)建Redis連接進(jìn)行數(shù)據(jù)消息的傳輸,若切換不成功,則結(jié)束流程;如果Redi s服務(wù)器不發(fā)生故障,則說(shuō)明Redis連接不中斷,則Redis Sentinel集群不進(jìn)行故障轉(zhuǎn)移切換。3.根據(jù)權(quán)利要求1所述的一種基于Redis管道通信的消息傳遞方法,其特征在于:所述步驟I中將該數(shù)據(jù)消息及其接口進(jìn)行封裝具體為: 將數(shù)據(jù)消息封裝為json格式字符串,并將其接口封裝為json序列化接口。4.根據(jù)權(quán)利要求1所述的一種基于Redis管道通信的消息傳遞方法,其特征在于:所述步驟I中所述數(shù)據(jù)消息的類(lèi)型包括最新位置信息類(lèi)型、報(bào)警信息類(lèi)型、圖片信息類(lèi)型、外設(shè)信息類(lèi)型和應(yīng)答信息及其他業(yè)務(wù)數(shù)據(jù)類(lèi)型。5.一種基于Redis管道通信的消息傳遞系統(tǒng),其特征在于:包括: 數(shù)據(jù)消息接收模塊,用于啟動(dòng)接收服務(wù)器,接收數(shù)據(jù)消息并讀取基礎(chǔ)數(shù)據(jù),將該數(shù)據(jù)消息、其接口及該基礎(chǔ)數(shù)據(jù)進(jìn)行封裝,并將封裝后的數(shù)據(jù)消息進(jìn)行分類(lèi),調(diào)用發(fā)布指令,并根據(jù)該數(shù)據(jù)消息的類(lèi)型將該數(shù)據(jù)消息發(fā)布到Redis服務(wù)器的不同通道中;同時(shí),將封裝后的基礎(chǔ)數(shù)據(jù)存儲(chǔ)至Redis服務(wù)器內(nèi); 數(shù)據(jù)消息傳輸模塊,用于業(yè)務(wù)處理平臺(tái)發(fā)送訂閱指令給Redis服務(wù)器,Redis服務(wù)器接收該訂閱指令后,將相應(yīng)通道中的數(shù)據(jù)消息傳輸給業(yè)務(wù)處理平臺(tái);同時(shí),業(yè)務(wù)處理平臺(tái)從Redis服務(wù)器獲取基本數(shù)據(jù); 數(shù)據(jù)消息過(guò)濾模塊,用于業(yè)務(wù)處理平臺(tái)將訂閱后的數(shù)據(jù)消息進(jìn)行過(guò)濾; 數(shù)據(jù)消息解析模塊,用于業(yè)務(wù)處理平臺(tái)使用封裝好的接口將過(guò)濾后的數(shù)據(jù)消息的格式直接轉(zhuǎn)換為用業(yè)務(wù)處理平臺(tái)來(lái)解讀的對(duì)象格式后,根據(jù)基礎(chǔ)數(shù)據(jù)將過(guò)濾后的數(shù)據(jù)消息進(jìn)行解析; 數(shù)據(jù)消息顯示模塊,用于業(yè)務(wù)處理平臺(tái)獲取解析后的數(shù)據(jù)消息,并將該數(shù)據(jù)消息傳輸?shù)接脩?hù)軟件進(jìn)行顯示。6.根據(jù)權(quán)利要求5所述的一種基于Redis管道通信的消息傳遞系統(tǒng),其特征在于:所述接收服務(wù)器及業(yè)務(wù)處理平臺(tái)與Redis服務(wù)器的連接方式具體為: 接收服務(wù)器與業(yè)務(wù)處理平臺(tái)均使用Redis連接池與Redis服務(wù)器進(jìn)行Redis連接,如果Redis Sentinel集群監(jiān)控到Redis服務(wù)器發(fā)生故障,說(shuō)明Redis連接中斷,貝IjRedis連接池將等待Redis Sentinel集群進(jìn)行自動(dòng)的故障轉(zhuǎn)移切換,若切換成功,則重新創(chuàng)建Redis連接進(jìn)行數(shù)據(jù)消息的傳輸,若切換不成功,則結(jié)束切換;如果Redi s服務(wù)器不發(fā)生故障,則說(shuō)明Redis連接不中斷,則Redis Sentinel集群不進(jìn)行故障轉(zhuǎn)移切換。7.根據(jù)權(quán)利要求5所述的一種基于Redis管道通信的消息傳遞系統(tǒng),其特征在于:所述數(shù)據(jù)消息接收模塊中將該數(shù)據(jù)消息及其接口進(jìn)行封裝具體為: 將數(shù)據(jù)消息封裝為json格式字符串,并將其接口封裝為json序列化接口。8.根據(jù)權(quán)利要求5所述的一種基于Redis管道通信的消息傳遞系統(tǒng),其特征在于:所述數(shù)據(jù)消息接收模塊中所述數(shù)據(jù)消息的類(lèi)型包括最新位置信息類(lèi)型、報(bào)警信息類(lèi)型、圖片信息類(lèi)型、外設(shè)信息類(lèi)型和應(yīng)答信息及其他業(yè)務(wù)數(shù)據(jù)類(lèi)型。
【專(zhuān)利摘要】本發(fā)明提供一種基于Redis管道通信的消息傳遞方法,包括:1、接收數(shù)據(jù)消息并讀取基礎(chǔ)數(shù)據(jù),再進(jìn)行封裝,調(diào)用發(fā)布指令,并根據(jù)該數(shù)據(jù)消息的類(lèi)型將該數(shù)據(jù)消息發(fā)布到Redis服務(wù)器的不同通道中;同時(shí),將封裝后的基礎(chǔ)數(shù)據(jù)存儲(chǔ)至Redis服務(wù)器內(nèi);2、業(yè)務(wù)處理平臺(tái)調(diào)用訂閱指令獲取相應(yīng)通道中的數(shù)據(jù)消息;3、業(yè)務(wù)處理平臺(tái)將訂閱后的數(shù)據(jù)消息進(jìn)行過(guò)濾;4、業(yè)務(wù)處理平臺(tái)使用封裝好的接口將過(guò)濾后的數(shù)據(jù)消息進(jìn)行格式轉(zhuǎn)換,根據(jù)封裝后的基礎(chǔ)數(shù)據(jù)消息將過(guò)濾后的數(shù)據(jù)消息進(jìn)行解析;5、業(yè)務(wù)處理平臺(tái)獲取解析后的數(shù)據(jù)消息,并傳輸?shù)接脩?hù)軟件顯示。本發(fā)明還提供一種基于Redis管道通信的消息傳遞系統(tǒng),消息快速有效的傳輸,可自動(dòng)故障轉(zhuǎn)移。
【IPC分類(lèi)】G06F9/54, G06F17/30, G06F11/07
【公開(kāi)號(hào)】CN105630913
【申請(qǐng)?zhí)枴緾N201510967985
【發(fā)明人】鄒山青, 陳建靈, 徐品
【申請(qǐng)人】福建星海通信科技有限公司
【公開(kāi)日】2016年6月1日
【申請(qǐng)日】2015年12月22日