多活容災(zāi)MSHA(Multi-Site High Availability)是一個(gè)云原生的多活容災(zāi)架構(gòu)解決?案,同城流量封閉是指調(diào)用都在同一可用區(qū)內(nèi)進(jìn)行,減少和避免跨可用區(qū)調(diào)用帶來的響應(yīng)時(shí)間增長。本文通過一個(gè)電商業(yè)務(wù)案例,介紹如何進(jìn)行同城流量封閉的操作。
業(yè)務(wù)背景信息
本示例的電商業(yè)務(wù)包含以下應(yīng)用:
- frontend:入口Web應(yīng)用,負(fù)責(zé)和用戶交互。
- cartservice:購物車應(yīng)用。記錄用戶的購物車數(shù)據(jù),使用自建的Redis。
- productservice:商品應(yīng)用。提供商品、庫存服務(wù),使用RDS MySQL。
技術(shù)棧:
- SpringBoot。
- RPC框架:SpringCloud,注冊(cè)中心使用自建的Eureka。
案例背景
本示例電商業(yè)務(wù)在進(jìn)行了多可用區(qū)部署后,避免了在一個(gè)可用區(qū)部署的單點(diǎn)風(fēng)險(xiǎn)。也因此導(dǎo)致應(yīng)用間的RPC調(diào)用會(huì)出現(xiàn)跨可用區(qū)的情況。跨可用區(qū)的網(wǎng)絡(luò)傳輸帶來了RT的延遲,導(dǎo)致電商頁面加載和操作出現(xiàn)明顯的響應(yīng)慢和卡頓現(xiàn)象。為了保障用戶體驗(yàn),業(yè)務(wù)開始考慮如何減少、避免跨可用區(qū)調(diào)用來避免RT的猛增。
假設(shè)同地域的網(wǎng)絡(luò)雙向延遲約為5 ms,若一個(gè)調(diào)用鏈包含100次RPC調(diào)用,則最多可能出現(xiàn)100次跨可用區(qū)調(diào)用,最大RT延遲為500 ms(5 ms×100)。
同城多活架構(gòu)改造
同城多活架構(gòu)改造,請(qǐng)參見同城多活架構(gòu)實(shí)踐。
開啟單元格流量封閉策略
MSHA提供的同城多活架構(gòu)能力,除了容災(zāi)恢復(fù)(同城切流)能力外,還針對(duì)常見RPC框架(HSF、SpringCloud、Dubbo)提供了單元格流量封閉的能力。下面將電商業(yè)務(wù)的各個(gè)應(yīng)用,均配置和啟用閾值為20%的單元格流量封閉策略。
- 封閉策略開啟前,驗(yàn)證是否存在跨單元格(可用區(qū))的RPC調(diào)用。
- 封閉策略開啟后,驗(yàn)證是否存在跨單元格(可用區(qū))的RPC調(diào)用。