服務(wù)器集群容錯(cuò)是什么

本篇內(nèi)容主要講解“服務(wù)器集群容錯(cuò)是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“服務(wù)器集群容錯(cuò)是什么”吧!

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),昆玉企業(yè)網(wǎng)站建設(shè),昆玉品牌網(wǎng)站建設(shè),網(wǎng)站定制,昆玉網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,昆玉網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

集群容錯(cuò):集群服務(wù)調(diào)用失敗后,服務(wù)框架需要能夠在底層自動(dòng)容錯(cuò),容錯(cuò)策略很多,分別適用于不同場(chǎng)景。下面將對(duì)集群容錯(cuò)的功能和設(shè)計(jì)進(jìn)行詳細(xì)說(shuō)明。

1、集群容錯(cuò)場(chǎng)景

    在分布式服務(wù)框架中,業(yè)務(wù)消費(fèi)者不需要了解服務(wù)提供者的具體位置,它發(fā)起的調(diào)用請(qǐng)求也不包含服務(wù)提供者的具體地址信息。因此,某個(gè)服務(wù)提供者是否可用對(duì)消費(fèi)者無(wú)關(guān)緊要,最終的服務(wù)調(diào)用成功才是最重要的。

    經(jīng)過(guò)服務(wù)路由之后,選定某個(gè)服務(wù)提供者進(jìn)行遠(yuǎn)程調(diào)用,但是服務(wù)調(diào)用可能出錯(cuò),下面對(duì)可能的故障場(chǎng)景進(jìn)行分析。

    1.1、通信鏈路故障

        這里的鏈路指的是消費(fèi)者和服務(wù)提供者之間的鏈路(通常為長(zhǎng)連接),可能導(dǎo)致鏈路中斷的原因有
            1)、通信過(guò)程中,對(duì)方突然宕機(jī)導(dǎo)致鏈路中斷。
            2)、通信過(guò)程中,對(duì)方因?yàn)榻獯a失敗等原因Rest掉連接,導(dǎo)致鏈路中斷。
            3)、通信過(guò)程中,消費(fèi)者write SocketChannel發(fā)生IOException導(dǎo)致鏈路中斷。
            4)、通信過(guò)程中,消費(fèi)者read SocketChannel發(fā)生IOException異常導(dǎo)致鏈路中斷。
            5)、通信雙方因?yàn)闄z測(cè)心跳超時(shí),主動(dòng)close SocketChannel導(dǎo)致鏈路中斷。
            6)、通信過(guò)程中,網(wǎng)絡(luò)出現(xiàn)閃斷故障。
            7)、通信過(guò)程中,交換機(jī)異常導(dǎo)致鏈路中斷。
            8)、通信過(guò)程中,消費(fèi)者或者服務(wù)提供者因?yàn)殚L(zhǎng)時(shí)間Full GC導(dǎo)致鏈路中斷。
        無(wú)論哪種原因?qū)е骆溌分袛啵紩?huì)導(dǎo)致本次服務(wù)調(diào)用失敗。

    1.2、服務(wù)端超時(shí)

        當(dāng)服務(wù)端無(wú)法再指定的時(shí)間內(nèi)返回應(yīng)答給客戶端,就會(huì)發(fā)生超時(shí),導(dǎo)致超時(shí)的原因主要有:
            1)、服務(wù)端I/O線程沒(méi)有及時(shí)從網(wǎng)絡(luò)中讀取客戶端請(qǐng)求消息,導(dǎo)致該問(wèn)題的原因通常是I/O線程被意外阻塞或者執(zhí)行長(zhǎng)周 期操作
            2)、服務(wù)端業(yè)務(wù)處理緩慢,或者長(zhǎng)時(shí)間阻塞,列如查詢數(shù)據(jù)庫(kù),由于沒(méi)索引導(dǎo)致全表查詢,耗時(shí)較長(zhǎng)。
            3)、服務(wù)端發(fā)生長(zhǎng)時(shí)間Full GC,導(dǎo)致所有業(yè)務(wù)線程暫停運(yùn)行,無(wú)法及時(shí)返回應(yīng)答給客戶端。

    1.3、服務(wù)端調(diào)用失敗

        有時(shí)會(huì)發(fā)生服務(wù)端調(diào)用失敗,導(dǎo)致服務(wù)端調(diào)用失敗的原因主要有如下幾種:
            1)、服務(wù)端解碼失敗,會(huì)返回消息解碼失敗異常。
            2)、服務(wù)端發(fā)生動(dòng)態(tài)流控,返回流控異常。
            3)、服務(wù)消息隊(duì)列積壓率超過(guò)最大閾值,返回系統(tǒng)擁塞異常。
            4)、訪問(wèn)權(quán)限校驗(yàn)失敗,返回權(quán)限相關(guān)異常。
            5)、違反SLA(Service-Level Agreement:服務(wù)等級(jí)協(xié)議)策略,返回SLA控制相關(guān)異常。
            6)、其他系統(tǒng)異常。
        需要指出的是服務(wù)調(diào)用異常不包括業(yè)務(wù)方面的處理異常,例如數(shù)據(jù)庫(kù)異常、用戶記錄不存在異常等。

2、容錯(cuò)策略

    服務(wù)不同,容錯(cuò)策略也往往不同。下面看看集群容錯(cuò)和路由策略之間的關(guān)系。如圖1-1所示:
     服務(wù)器集群容錯(cuò)是什么
                                        圖1-1:集群容錯(cuò)和服務(wù)路由的關(guān)系

    消費(fèi)者根據(jù)配置的路由策略選擇某個(gè)目標(biāo)地址之后,發(fā)起遠(yuǎn)程服務(wù)調(diào)用,在此期間如果發(fā)生遠(yuǎn)程服務(wù)調(diào)用異常,則需要框架進(jìn)行集群容錯(cuò),重新進(jìn)行選路和調(diào)用,集群容錯(cuò)是系統(tǒng)自動(dòng)執(zhí)行的,上層用戶并不關(guān)心底層的服務(wù)調(diào)用過(guò)程。

    2.1、失敗自動(dòng)切換(Failover)

        服務(wù)調(diào)用失敗自動(dòng)切換策略指的是當(dāng)發(fā)生RPC調(diào)用異常時(shí),重新選路,查找下一個(gè)可用的服務(wù)提供者。

        服務(wù)發(fā)布的時(shí)候,可以指定服務(wù)的集群容錯(cuò)策略。消費(fèi)者可以覆蓋服務(wù)提供者的通用配置,實(shí)現(xiàn)個(gè)性化的容錯(cuò)策略。

        Failover策略的設(shè)計(jì)思路如下:消費(fèi)者路由操作完成之后,獲得目標(biāo)地址,調(diào)用通信框架的消息發(fā)送接口發(fā)送請(qǐng)求,監(jiān)聽(tīng)服務(wù)端應(yīng)答。如果返回的結(jié)果時(shí)RPC調(diào)用異常(超時(shí)、流控、解碼失敗等系統(tǒng)異常),根據(jù)消費(fèi)者集群容錯(cuò)的策略進(jìn)行容錯(cuò)路由,如果是Failover,則重新返回到路由Handler的入口,從路由節(jié)點(diǎn)繼續(xù)執(zhí)行。選路完成之后,對(duì)目標(biāo)地址進(jìn)行對(duì)比,防止重新路由到故障服務(wù)節(jié)點(diǎn),過(guò)濾掉上次的故障服務(wù)提供者之后,調(diào)用通信框架的消息發(fā)送接口發(fā)送請(qǐng)求消息。

        分布式服務(wù)框架提供Failover容錯(cuò)策略,但是用戶在使用時(shí)需要自己保證用對(duì)地方,下面對(duì)應(yīng)用場(chǎng)景進(jìn)行總結(jié):
            1)、讀操作,因?yàn)橥ǔK莾绲鹊摹?br/>            2)、冪等性服務(wù),保證調(diào)用1次與N次效果相同。
        需要特別指出的是,失敗重試會(huì)增加服務(wù)調(diào)用時(shí)延,因此框架必須對(duì)失敗重試的最大數(shù)做限制,通常默認(rèn)為3,防止無(wú)限制重試導(dǎo)致服務(wù)調(diào)用時(shí)延不可控。

    2.2、失敗通知(Failback)

        很多業(yè)務(wù)場(chǎng)景中,消費(fèi)者需要能夠獲取到服務(wù)調(diào)用失敗的具體信息,通過(guò)對(duì)失敗錯(cuò)誤碼等異常信息的判斷,決定后續(xù)的執(zhí)行策略,例如非冪等性服務(wù)調(diào)用。

        Failback的設(shè)計(jì)方案如下:服務(wù)框架獲取到服務(wù)提供者返回的RPC異常響應(yīng)之后,根據(jù)策略進(jìn)行容錯(cuò)。如果是Failback模式,則不再重試其他服務(wù)提供者,而是將RPC異常通知給消費(fèi)者,由消費(fèi)者捕獲異常進(jìn)行后續(xù)處理。

    2.3、失敗緩存(Failcache)

        Failcache策略是失敗自動(dòng)恢復(fù)的一種,在實(shí)際開(kāi)發(fā)中應(yīng)用場(chǎng)景如下:
            √ 服務(wù)狀態(tài)路由,必須定點(diǎn)發(fā)送到指定的服務(wù)提供者。當(dāng)發(fā)生鏈路中斷、流控等服務(wù)暫時(shí)不可用時(shí),服務(wù)框架將消息暫時(shí)緩存起來(lái),等待周期T,重新發(fā)送,回到服務(wù)提供者能夠正常處理該消息。
             √ 對(duì)時(shí)延要求不敏感的服務(wù)。系統(tǒng)服務(wù)調(diào)用失敗,通常是鏈路暫時(shí)不可用、服務(wù)流控、GC掛住服務(wù)提供者進(jìn)程等,這種失敗不是永久性的,他的失敗是可預(yù)期的。如果消費(fèi)者調(diào)用對(duì)時(shí)延不敏感,可以考慮使用自動(dòng)恢復(fù)模式。既先緩存、再等待、最后重試。
             √ 通知類(lèi)服務(wù)。對(duì)服務(wù)調(diào)用的實(shí)時(shí)性不高,可以容忍自動(dòng)恢復(fù)帶來(lái)的時(shí)延增長(zhǎng)。

        為了保證可靠性,F(xiàn)ailcache策略在設(shè)計(jì)的時(shí)候需要考慮如下幾個(gè)要素:

              √ 緩存時(shí)間、緩存對(duì)象上限數(shù)等需要做出限制,防止內(nèi)存溢出。
              √ 緩存淘汰算法的選擇,是否支持用戶配置。
              √ 定時(shí)重試的周期T,重試的最大次數(shù)等需要做出限制并支持用戶指定。

    2.4、快速失?。‵ailfast)

        在業(yè)務(wù)高峰期,對(duì)于一些非核心的服務(wù),希望只調(diào)用一次,失敗也不再重試,為重要的核心服務(wù)節(jié)約寶貴的運(yùn)行資源。此時(shí)快速失敗是個(gè)不錯(cuò)的選擇。

        快速失敗策略設(shè)計(jì)簡(jiǎn)單,獲取到服務(wù)異常之后,直接忽略異常,記錄異常日志。

    2.5、容錯(cuò)策略擴(kuò)展

        無(wú)論服務(wù)框架支持多少種容錯(cuò)策略,業(yè)務(wù)在實(shí)際使用過(guò)程中一定會(huì)有不適應(yīng)的地方,通過(guò)開(kāi)放容錯(cuò)策略接口的方式,可以支持用戶自定義擴(kuò)展容錯(cuò)策略。

        在集群容錯(cuò)設(shè)計(jì)的時(shí)候,需要考慮擴(kuò)展性,主要從以下幾方面進(jìn)行設(shè)計(jì):

            1)、容錯(cuò)接口的開(kāi)放。
            2)、屏蔽底層細(xì)節(jié),用戶定制簡(jiǎn)單。
            3)、配置應(yīng)當(dāng)支持?jǐn)U展,不要讓用戶擴(kuò)展服務(wù)框架Schema。

到此,相信大家對(duì)“服務(wù)器集群容錯(cuò)是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前名稱(chēng):服務(wù)器集群容錯(cuò)是什么
網(wǎng)站路徑:http://bm7419.com/article36/iipppg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航手機(jī)網(wǎng)站建設(shè)、Google、網(wǎng)站導(dǎo)航、網(wǎng)站排名企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)