這篇文章主要為大家展示了“FA1#微服務(wù)流控防護(hù)場(chǎng)景與應(yīng)對(duì)措施的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“FA1#微服務(wù)流控防護(hù)場(chǎng)景與應(yīng)對(duì)措施的示例分析”這篇文章吧。
成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),安鄉(xiāng)網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安鄉(xiāng)等地區(qū)。安鄉(xiāng)做網(wǎng)站價(jià)格咨詢:18982081108
當(dāng)服務(wù)D的某個(gè)接口服務(wù)被上游服務(wù)過(guò)載調(diào)用時(shí),如果不對(duì)服務(wù)D加入保護(hù),可能整體將服務(wù)D整體拖垮。在這種場(chǎng)景中,我們需要對(duì)服務(wù)D配置限流,以保護(hù)服務(wù)D不被整體沖跨。
應(yīng)對(duì)措施:針對(duì)服務(wù)提供方D配置流量防護(hù)規(guī)則,對(duì)進(jìn)入服務(wù)D的流量進(jìn)行控制,從而對(duì)服務(wù)D提供保護(hù)。觸發(fā)流控時(shí)可以有多重策略,例如:快速失敗、預(yù)熱模式、排隊(duì)等待、預(yù)熱模式+排隊(duì)等待。
快速失敗:發(fā)生流控時(shí)直接拋出異常。
預(yù)熱模式:發(fā)生流控時(shí),流量緩慢增加的一種模式,效果如下圖所示,流量QPS從200緩慢增加到600。
排隊(duì)等待:請(qǐng)求勻速通過(guò),過(guò)多請(qǐng)求需要排隊(duì),此時(shí)排隊(duì)有超時(shí)時(shí)間,超過(guò)排隊(duì)時(shí)間拋出流控異常。效果如下圖所示:請(qǐng)求QPS保持1000的勻速通過(guò)。
預(yù)熱模式+排隊(duì)等待:這種模式是預(yù)熱和排隊(duì)等待的疊加模式,請(qǐng)求以勻速的方式緩慢增加。如下圖:請(qǐng)求從0緩慢增加到500,勻速通過(guò)一段時(shí)間后,再增加到1000。
下面的場(chǎng)景A調(diào)用B、A調(diào)用C、A調(diào)用D,當(dāng)服務(wù)B服務(wù)不穩(wěn)定時(shí),服務(wù)A調(diào)用服務(wù)B發(fā)生了慢調(diào)用或者大量異常錯(cuò)誤。這種場(chǎng)景,如果不干預(yù),可能影響到A調(diào)用C和A調(diào)用D的狀況。
應(yīng)對(duì)措施:A調(diào)用B配置熔斷降級(jí)規(guī)則,當(dāng)服務(wù)B不穩(wěn)定發(fā)生慢調(diào)用或者異常時(shí),如果觸發(fā)閾值,將服務(wù)B的調(diào)用熔斷;從而保護(hù)了服務(wù)A調(diào)用C、服務(wù)A調(diào)用D的正常情況。
熔斷效果:熔斷的實(shí)現(xiàn)通常通過(guò)斷路器實(shí)現(xiàn),具體過(guò)程為:
分布式鏈路中,如果某一條鏈路產(chǎn)生慢調(diào)用,對(duì)其他鏈路造成擠壓。除了上面提到配置熔斷降級(jí)外,可以通過(guò)線程并發(fā)控制來(lái)隔離。
下圖中有3條鏈路,其中鏈路1由于服務(wù)E的不穩(wěn)定,產(chǎn)生了慢調(diào)用。
鏈路標(biāo)號(hào) | 調(diào)用鏈 |
---|---|
鏈路1 | 服務(wù)A-->服務(wù)D#Method1-->服務(wù)E |
鏈路2 | 服務(wù)B-->服務(wù)D#Method2-->服務(wù)F |
鏈路3 | 服務(wù)C-->服務(wù)D#Method2-->服務(wù)G |
鏈路1慢調(diào)用可能導(dǎo)致如下情況:
應(yīng)對(duì)措施:通過(guò)對(duì)服務(wù)D的MethodA1、MethodA2的線程數(shù)并發(fā)設(shè)置規(guī)則,超過(guò)閾值時(shí)將會(huì)觸發(fā)阻斷,不再向下游調(diào)用,避免不可用引發(fā)雪崩。
并發(fā)控制效果下圖中設(shè)置了調(diào)用方的并發(fā)線程數(shù)為10,通過(guò)每分鐘的查詢可以看出,線程數(shù)一直保持在10。
熱點(diǎn)數(shù)據(jù),比如:大促時(shí)的熱銷產(chǎn)品、秒殺類產(chǎn)品等。如下圖所示,如果不對(duì)熱點(diǎn)商品下單流量進(jìn)行管控,可能對(duì)其他商品造成擠壓;影響整個(gè)商品下單體驗(yàn)。
應(yīng)對(duì)措施:通過(guò)對(duì)熱點(diǎn)參數(shù)測(cè)速,配置流控規(guī)則,超過(guò)閾值時(shí)觸發(fā)流控。例如:通過(guò)對(duì)入?yún)a(chǎn)品ID進(jìn)行測(cè)速,超過(guò)設(shè)置的閾值時(shí),觸發(fā)流控,避免對(duì)其過(guò)度擠占資源。
上面的現(xiàn)象中,無(wú)論是服務(wù)不穩(wěn)定、還是被擠占、或者被過(guò)載調(diào)用。除了通過(guò)上述的防護(hù)措施外,可以對(duì)服務(wù)進(jìn)行等級(jí)劃分并分組。
如下圖所示:服務(wù)A和服務(wù)D為核心服務(wù)、服務(wù)B和服務(wù)C為非核心服務(wù)。通過(guò)將服務(wù)D進(jìn)行分組,分成了1組和2組。分組1只允許核心服務(wù)調(diào)用,分組2只允許非核心服務(wù)調(diào)用。
這樣做的好處:將流量進(jìn)行物理隔離,避免由于非核心業(yè)務(wù)流量對(duì)核心業(yè)務(wù)流量造成擠壓、保護(hù)核心鏈路穩(wěn)定性。
分組措施@1 通??梢愿鼡Q注冊(cè)中心路徑實(shí)現(xiàn),服務(wù)A和服務(wù)D(分組1)放在同一個(gè)注冊(cè)中心路徑(例如:soa-group1);服務(wù)B、服務(wù)C、服務(wù)D(分組2)放在另一個(gè)不同的注冊(cè)中心路徑(例如:soa-group2)。
分組措施@2通過(guò)對(duì)分組的服務(wù)節(jié)點(diǎn)打標(biāo)實(shí)現(xiàn),例如:服務(wù)D(分組1)節(jié)點(diǎn)被打標(biāo)為group1,服務(wù)D(分組2)節(jié)點(diǎn)被打標(biāo)為group2。在服務(wù)消費(fèi)方訂閱節(jié)點(diǎn)時(shí)根據(jù)不同的分組篩選節(jié)點(diǎn)調(diào)用。
以上是“FA1#微服務(wù)流控防護(hù)場(chǎng)景與應(yīng)對(duì)措施的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!