午 夜 成 人 网站在线观看_精品女视频在线观看_亚洲第一黄_狠狠躁天天开心婷婷综合,久久综合国产,欧美精品小视频,日本在线观看的免费,欧美XXXX做受俱乐部,久久电影网老牛电影网,人妻爽妇网,久久精品一区无人妻中文系列

水上物流網(wǎng)為船舶與海洋工程行業(yè)提供技術(shù)支持與動(dòng)力,是船舶行業(yè)最大門戶分類網(wǎng)站
全國(guó): | 上海:
水上物流產(chǎn)品分類
主頁(yè) > 工具耗材 > 在服務(wù)過(guò)程中發(fā)現(xiàn)異常如何處理概要,?
在服務(wù)過(guò)程中發(fā)現(xiàn)異常如何處理概要,?
來(lái)源:cdfbk.cn    時(shí)間:2022-03-31 05:36    點(diǎn)擊:186   編輯:admin

在專欄前面我講過(guò),單體應(yīng)用改造成微服務(wù)的一個(gè)好處是可以減少故障影響范圍,,故障被局限在一個(gè)微服務(wù)系統(tǒng)本身,,而不是整個(gè)單體應(yīng)用都崩潰。那么具體到一個(gè)微服務(wù)系統(tǒng),如果出現(xiàn)了故障,,應(yīng)該如何處理呢,?首先,我先來(lái)帶你回顧一下微服務(wù)系統(tǒng)可能出現(xiàn)故障的種類,,主要有三種故障,。集群故障。根據(jù)我的經(jīng)驗(yàn),,微服務(wù)系統(tǒng)一般都是集群部署的,,根據(jù)業(yè)務(wù)量大小而定,集群規(guī)模從幾臺(tái)到甚至上萬(wàn)臺(tái)都有可能,。一旦某些代碼出現(xiàn) bug,,可能整個(gè)集群都會(huì)發(fā)生故障,不能提供對(duì)外提供服務(wù),。單 IDC 故障?,F(xiàn)在大多數(shù)互聯(lián)網(wǎng)公司為了保證業(yè)務(wù)的高可用性,往往業(yè)務(wù)部署在不止一個(gè) IDC,。然而現(xiàn)實(shí)中時(shí)常會(huì)發(fā)生某個(gè) IDC 的光纜因?yàn)榈缆肥┕け煌跀?,?dǎo)致整個(gè) IDC 脫網(wǎng)。單機(jī)故障,。顧名思義就是集群中的個(gè)別機(jī)器出現(xiàn)故障,,這種情況往往對(duì)全局沒(méi)有太大影響,但會(huì)導(dǎo)致調(diào)用到故障機(jī)器上的請(qǐng)求都失敗,,影響整個(gè)系統(tǒng)的成功率,。在我的實(shí)踐過(guò)程中,這三種故障都經(jīng)常遇到,,因此相應(yīng)的處理手段也可謂駕輕就熟,,下面就把我應(yīng)對(duì)故障的實(shí)戰(zhàn)經(jīng)驗(yàn)分享給你,希望對(duì)你有所幫助,。集群故障一般而言,,集群故障的產(chǎn)生原因不外乎有兩種:一種是代碼 bug 所導(dǎo)致,比如說(shuō)某一段 Java 代碼不斷地分配大對(duì)象,,但沒(méi)有及時(shí)回收導(dǎo)致 JVM OOM 退出,;另一種是突發(fā)的流量沖擊,超出了系統(tǒng)的最大承載能力,,比如“雙 11”這種購(gòu)物活動(dòng),,電商系統(tǒng)會(huì)在零點(diǎn)一瞬間涌入大量流量,超出系統(tǒng)的最大承載能力,,一下子就把整個(gè)系統(tǒng)給壓垮了,。應(yīng)付集群故障的思路,,主要有兩種:限流和降級(jí)。1. 限流顧名思義,,限流就是限制流量,,通常情況下,系統(tǒng)能夠承載的流量根據(jù)集群規(guī)模的大小是固定的,,可以稱之為系統(tǒng)的最大容量,。當(dāng)真實(shí)流量超過(guò)了系統(tǒng)的最大容量后,就會(huì)導(dǎo)致系統(tǒng)響應(yīng)變慢,,服務(wù)調(diào)用出現(xiàn)大量超時(shí),,反映給用戶的感覺(jué)就是卡頓、無(wú)響應(yīng),。所以,,應(yīng)該根據(jù)系統(tǒng)的最大容量,給系統(tǒng)設(shè)置一個(gè)閾值,,超過(guò)這個(gè)閾值的請(qǐng)求會(huì)被自動(dòng)拋棄,,這樣的話可以最大限度地保證系統(tǒng)提供的服務(wù)正常。除此之外,,通常一個(gè)微服務(wù)系統(tǒng)會(huì)同時(shí)提供多個(gè)服務(wù),,每個(gè)服務(wù)在同一時(shí)刻的請(qǐng)求量也是不同的,很可能出現(xiàn)的一種情況就是,,系統(tǒng)中某個(gè)服務(wù)的請(qǐng)求量突增,,占用了系統(tǒng)中大部分資源,導(dǎo)致其他服務(wù)沒(méi)有資源可用,。因此,,還要針對(duì)系統(tǒng)中每個(gè)服務(wù)的請(qǐng)求量也設(shè)置一個(gè)閾值,超過(guò)這個(gè)閾值的請(qǐng)求也要被自動(dòng)拋棄,,這樣的話不至于因?yàn)橐粋€(gè)服務(wù)影響了其他所有服務(wù),。在實(shí)際項(xiàng)目中,可以用兩個(gè)指標(biāo)來(lái)衡量服務(wù)的請(qǐng)求量,,一個(gè)是 QPS 即每秒請(qǐng)求量,,一個(gè)是工作線程數(shù)。不過(guò) QPS 因?yàn)椴煌?wù)的響應(yīng)快慢不同,,所以系統(tǒng)能夠承載的 QPS 相差很大,,因此一般選擇工作線程數(shù)來(lái)作為限流的指標(biāo),給系統(tǒng)設(shè)置一個(gè)總的最大工作線程數(shù)以及單個(gè)服務(wù)的最大工作線程數(shù),,這樣的話無(wú)論是系統(tǒng)的總請(qǐng)求量過(guò)大導(dǎo)致整體工作線程數(shù)量達(dá)到最大工作線程數(shù),還是某個(gè)服務(wù)的請(qǐng)求量超過(guò)單個(gè)服務(wù)的最大工作線程數(shù),,都會(huì)被限流,,以起到保護(hù)整個(gè)系統(tǒng)的作用。2. 降級(jí)什么是降級(jí)呢?在我看來(lái),,降級(jí)就是通過(guò)停止系統(tǒng)中的某些功能,,來(lái)保證系統(tǒng)整體的可用性。降級(jí)可以說(shuō)是一種被動(dòng)防御的措施,,為什么這么說(shuō)呢,?因?yàn)樗话闶窍到y(tǒng)已經(jīng)出現(xiàn)故障后所采取的一種止損措施。那么降級(jí)一般是如何實(shí)現(xiàn)的呢,?根據(jù)我的實(shí)踐來(lái)看,, 一種可行的方案是通過(guò)開關(guān)來(lái)實(shí)現(xiàn)。具體來(lái)講,,就是在系統(tǒng)運(yùn)行的內(nèi)存中開辟一塊區(qū)域,,專門用于存儲(chǔ)開關(guān)的狀態(tài),也就是開啟還是關(guān)閉,。并且需要監(jiān)聽某個(gè)端口,,通過(guò)這個(gè)端口可以向系統(tǒng)下發(fā)命令,來(lái)改變內(nèi)存中開關(guān)的狀態(tài),。當(dāng)開關(guān)開啟時(shí),,業(yè)務(wù)的某一段邏輯就不再執(zhí)行,而正常情況下,,開關(guān)是關(guān)閉的狀態(tài),。開關(guān)一般用在兩種地方,一種是新增的業(yè)務(wù)邏輯,,因?yàn)樾略龅臉I(yè)務(wù)邏輯相對(duì)來(lái)說(shuō)不成熟,,往往具備一定的風(fēng)險(xiǎn),所以需要加開關(guān)來(lái)控制新業(yè)務(wù)邏輯是否執(zhí)行,;另一種是依賴的服務(wù)或資源,,因?yàn)橐蕾嚨姆?wù)或者資源不總是可靠的,所以最好是有開關(guān)能夠控制是否對(duì)依賴服務(wù)或資源發(fā)起調(diào)用,,來(lái)保證即使依賴出現(xiàn)問(wèn)題,,也能通過(guò)降級(jí)來(lái)避免影響。在實(shí)際業(yè)務(wù)應(yīng)用的時(shí)候,,降級(jí)要按照對(duì)業(yè)務(wù)的影響程度進(jìn)行分級(jí),,一般分為三級(jí):一級(jí)降級(jí)是對(duì)業(yè)務(wù)影響最小的降級(jí),在故障的情況下,,首先執(zhí)行一級(jí)降級(jí),,所以一級(jí)降級(jí)也可以設(shè)置成自動(dòng)降級(jí),不需要人為干預(yù),;二級(jí)降級(jí)是對(duì)業(yè)務(wù)有一定影響的降級(jí),,在故障的情況下,,如果一級(jí)降級(jí)起不到多大作用的時(shí)候,可以人為采取措施,,執(zhí)行二級(jí)降級(jí),;三級(jí)降級(jí)是對(duì)業(yè)務(wù)有較大影響的降級(jí),這種降級(jí)要么是對(duì)商業(yè)收入有重大影響,,要么是對(duì)用戶體驗(yàn)有重大影響,,所以操作起來(lái)要非常謹(jǐn)慎,不在最后時(shí)刻一般不予采用,。單 IDC 故障在現(xiàn)實(shí)情況下,,整個(gè) IDC 脫網(wǎng)的事情時(shí)有發(fā)生,多半是因?yàn)椴豢煽沽Ρ热鐧C(jī)房著火,、光纜被挖斷等,,如果業(yè)務(wù)全部部署在這個(gè) IDC,那就完全不可訪問(wèn)了,,所以國(guó)內(nèi)大部分的互聯(lián)網(wǎng)業(yè)務(wù)多采用多 IDC 部署,。具體來(lái)說(shuō),有的采用同城雙活,,也就是在一個(gè)城市的兩個(gè) IDC 內(nèi)部署,;有的采用異地多活,一般是在兩個(gè)城市的兩個(gè) IDC 內(nèi)部署,;當(dāng)然也有支付寶這種金融級(jí)別的應(yīng)用采用了“三地五中心”部署,,這種部署成本顯然高比兩個(gè) IDC 要高得多,但可用性的保障要更高,。采用多 IDC 部署的最大好處就是當(dāng)有一個(gè) IDC 發(fā)生故障時(shí),,可以把原來(lái)訪問(wèn)故障 IDC 的流量切換到正常的 IDC,來(lái)保證業(yè)務(wù)的正常訪問(wèn),。流量切換的方式一般有兩種,,一種是基于 DNS 解析的流量切換,一種是基于 RPC 分組的流量切換,。1. 基于 DNS 解析的流量切換基于 DNS 解析流量的切換,,一般是通過(guò)把請(qǐng)求訪問(wèn)域名解析的 VIP 從一個(gè) IDC 切換到另外一個(gè) IDC。比如訪問(wèn)“www.weibo.com”,,正常情況下北方用戶會(huì)解析到聯(lián)通機(jī)房的 VIP,,南方用戶會(huì)解析到電信機(jī)房的 VIP,如果聯(lián)通機(jī)房發(fā)生故障的話,,會(huì)把北方用戶訪問(wèn)也解析到電信機(jī)房的 VIP,,只不過(guò)此時(shí)網(wǎng)絡(luò)延遲可能會(huì)變長(zhǎng)。2. 基于 RPC 分組的流量切換對(duì)于一個(gè)服務(wù)來(lái)說(shuō),,如果是部署在多個(gè) IDC 的話,,一般每個(gè) IDC 就是一個(gè)分組,。假如一個(gè) IDC 出現(xiàn)故障,那么原先路由到這個(gè)分組的流量,,就可以通過(guò)向配置中心下發(fā)命令,把原先路由到這個(gè)分組的流量全部切換到別的分組,,這樣的話就可以切換故障 IDC 的流量了,。單機(jī)故障單機(jī)故障是發(fā)生概率最高的一種故障了,尤其對(duì)于業(yè)務(wù)量大的互聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),,上萬(wàn)臺(tái)機(jī)器的規(guī)模也是很常見的,。這種情況下,發(fā)生單機(jī)故障的概率就很高了,,這個(gè)時(shí)候只靠運(yùn)維人肉處理顯然不可行,,所以就要求有某種手段來(lái)自動(dòng)處理單機(jī)故障。根據(jù)我的經(jīng)驗(yàn),,處理單機(jī)故障一個(gè)有效的辦法就是自動(dòng)重啟,。具體來(lái)講,你可以設(shè)置一個(gè)閾值,,比如以某個(gè)接口的平均耗時(shí)為準(zhǔn),,當(dāng)監(jiān)控單機(jī)上某個(gè)接口的平均耗時(shí)超過(guò)一定閾值時(shí),就認(rèn)為這臺(tái)機(jī)器有問(wèn)題,,這個(gè)時(shí)候就需要把有問(wèn)題的機(jī)器從線上集群中摘除掉,,然后在重啟服務(wù)后,重新加入到集群中,。不過(guò)這里要注意的是,,需要防止網(wǎng)絡(luò)抖動(dòng)造成的接口超時(shí)從而觸發(fā)自動(dòng)重啟。一種方法是在收集單機(jī)接口耗時(shí)數(shù)據(jù)時(shí),,多采集幾個(gè)點(diǎn),,比如每 10s 采集一個(gè)點(diǎn),采集 5 個(gè)點(diǎn),,當(dāng) 5 個(gè)點(diǎn)中有超過(guò) 3 個(gè)點(diǎn)的數(shù)據(jù)都超過(guò)設(shè)定的閾值范圍,,才認(rèn)為是真正的單機(jī)問(wèn)題,這時(shí)會(huì)觸發(fā)自動(dòng)重啟策略,。除此之外,,為了防止某些特殊情況下,短時(shí)間內(nèi)被重啟的單機(jī)過(guò)多,,造成整個(gè)服務(wù)池可用節(jié)點(diǎn)數(shù)太少,,最好是設(shè)置一個(gè)可重啟的單機(jī)數(shù)量占整個(gè)集群的最大比例,一般這個(gè)比例不要超過(guò) 10%,,因?yàn)檎G闆r下,,不大可能有超過(guò) 10% 的單機(jī)都出現(xiàn)故障,。總結(jié)今天我們探討了微服務(wù)系統(tǒng)可能出現(xiàn)的三種故障:集群故障,、單 IDC 故障,、單機(jī)故障,并且針對(duì)這三種故障我給出了分別的解決方案,,包括降級(jí),、限流、流量切換以及自動(dòng)重啟,。在遇到實(shí)際的故障時(shí),,往往多個(gè)手段是并用的,比如在出現(xiàn)單 IDC 故障,,首先要快速切換流量到正常的 IDC,,但此時(shí)可能正常 IDC 并不足以支撐兩個(gè) IDC 的流量,所以這個(gè)時(shí)候首先要降級(jí)部分功能,,保證正常的 IDC 順利支撐切換過(guò)來(lái)的流量,。而且要盡量讓故障處理自動(dòng)化,這樣可以大大減少故障影響的時(shí)間,。因?yàn)橐坏┬枰肴藶楦深A(yù),,往往故障處理的時(shí)間都得是 10 分鐘以上,這對(duì)大部分用戶敏感型業(yè)務(wù)的影響是巨大的,,如果能做到自動(dòng)化故障處理的話,,可以將故障處理的時(shí)間降低到 1 分鐘以內(nèi)甚至秒級(jí)別,這樣的話對(duì)于用戶的影響最小,。思考題上面我提到為了避免單 IDC 故障導(dǎo)致服務(wù)不可用情況的發(fā)生,,服務(wù)需要采用多 IDC 部署,這個(gè)時(shí)候就要求服務(wù)依賴的數(shù)據(jù)也需要存儲(chǔ)在多個(gè) IDC 內(nèi),,這樣勢(shì)必會(huì)帶來(lái)數(shù)據(jù)一致性的問(wèn)題,,你有什么解決方案嗎?

在服務(wù)過(guò)程中發(fā)生異常如何處理如果在服務(wù)過(guò)程中發(fā)生了異常的話你一定要想辦法去解決這個(gè)異常情況這個(gè)只有通過(guò)解決了才能夠更好提供