分布式彈力設計的目的
保證服務的彈力,從兩個方面體現(xiàn)蝶防,一是出現(xiàn)故障時能夠自恢復,另一方面是在無法自愈的情況下明吩,將范圍控制在最小间学。
為了這個目標,彈力設計從以下三個方面考慮。
1 服務冗余菱鸥,一方面是提升服務的總吞吐能力宗兼,另一方面也避免單點問題。
為了實現(xiàn)冗余的服務氮采,主要使用的組件有
負載均衡殷绍,nginx haproxy
動態(tài)路由,
服務發(fā)現(xiàn),如何發(fā)現(xiàn)服務鹊漠,一般與服務注冊一起
健康檢查
2 服務解耦
目的主到,增加吞吐量,出現(xiàn)故障可以隔離在小范圍內(nèi)躯概。它主要的技術有
異步通信登钥,三種異步通信的模型,請求響應娶靡,發(fā)布訂閱牧牢,消息中間件。異步通信會涉及到姿锭,失敗是做業(yè)務補償塔鳍。
用戶分片,多租戶
業(yè)務分片呻此,這其中有有個自包含的概念轮纫,獨立的服務不依賴于外部,有自己的數(shù)據(jù)庫和應用焚鲜。
工作流掌唾,通過工作流將整個業(yè)務流程串聯(lián)起來,方便進行業(yè)務補償忿磅,業(yè)務重試糯彬,
3 服務容錯
熔斷,通過三種狀態(tài)來控制熔斷狀態(tài)
降級贝乎,降低一致性情连,簡化流程,緩存讀數(shù)據(jù)览效。
限流,計數(shù)器算法虫几,隊列玩法锤灿,漏斗算法,令牌桶算法
重試 當調(diào)用超時辆脸,或者特殊的業(yè)務異车#可進行重試,但要注意冪等啡氢。