Ⅰ 對於微服務的容錯性設計,常見的有哪幾種策略
對於微服務的容錯性設伏旦計,常見的有以下四種策略:
1、隔離:
線程池隔離。線程池隔離就是通過Java的線程池進行隔離,B服務調用C服務給予固定的腔首線程數量比如12個線程,如果此時C服務宕機了就算大量的請求過來,調用C服務的介面只會佔用12個線程不會佔用其他工作線程資源,因此B服務就不會出現級聯故障。
信號量隔離。隔離信號量隔離是使用Semaphore來實現的,當拿不到信號量的時候直接拒接因此不會出現超時佔用其他工作缺圓擾線程的情況。
2、熔斷:
當下游的服務因為某種原因突然變得不可用或響應過慢,上游服務為了保證自己整體服務的可用性,不再繼續調用目標服務,直接返回,快速釋放資源。如果目標服務情況好轉則恢復調用。
3、降級:
降級是指當自身服務壓力增大時,系統將某些不重要的業務或介面的功能降低,可以只提供部分功能,也可以完全停止所有不重要的功能。
4、限流:
限流,就是限制最大流量。系統能提供的最大並發有限,同時來的請求又太多,就需要限流。
漏桶演算法。漏桶演算法的思路,一個固定容量的漏桶,按照常量固定速率流出水滴。如果桶是空的,則不需流出水滴。可以以任意速率流入水滴到漏桶。如果流入水滴超出了桶的容量,則流入的水滴溢出了(被丟棄),而漏桶容量是不變的。