上一篇 <<<緩存策略匯總
下一篇 >>>服務(wù)的隔離、降級(jí)和熔斷
1.RPC與本地調(diào)用的區(qū)別
RPC遠(yuǎn)程調(diào)用,一般是跨平臺(tái)、采用http協(xié)議,因?yàn)閔ttp協(xié)議底層使用socket技術(shù),只要你的語言支持socket技術(shù),就可以相互進(jìn)行通訊。
比如:java語言開發(fā)的接口,使用http協(xié)議,如此以來C#語言可以調(diào)用。
本地調(diào)用:只支持java語言與java語言開發(fā),使用虛擬機(jī)和虛擬機(jī)之間的通訊,RMI。
2.雪崩效應(yīng)產(chǎn)生的原因
默認(rèn)情況下只有一個(gè)線程池維護(hù)所有的服務(wù)接口,如果大量的請(qǐng)求訪問同一個(gè)接口,達(dá)到tomcat線程池默認(rèn)極限,可能會(huì)導(dǎo)致其他服務(wù)無法訪問。

3.雪崩效應(yīng)的解決思路
服務(wù)器在高并發(fā)下會(huì)產(chǎn)生雪崩效應(yīng),為了解決此可以,主要可以從三方面解決
a、緩存:提升系統(tǒng)訪問速度和增大系統(tǒng)能處理的容量,可謂是抗高并發(fā)流量的核心。
b、服務(wù)隔離、熔斷、降級(jí)等,當(dāng)服務(wù)出問題或者影響到核心流程的性能則需要暫時(shí)屏蔽掉,待高峰或者問題解決后再打開;
隔離:讓各服務(wù)使用獨(dú)立的線程池,互不影響。
熔斷:當(dāng)服務(wù)達(dá)到最大的承受極限直接拒絕訪問,使用服務(wù)降級(jí)。
降級(jí):用戶一直等待時(shí),給客戶端一個(gè)友好的錯(cuò)誤提示。
c、限流:不能使用緩存或降級(jí)時(shí)的解決方案,比如稀缺資源(秒殺、搶購)、寫服務(wù)(如評(píng)論、下單)、頻繁的復(fù)雜查詢(評(píng)論的最后幾頁)。
Hystrix是一個(gè)微服務(wù)關(guān)于服務(wù)保護(hù)的框架,是Netflix開源的一款針對(duì)分布式系統(tǒng)的延遲和容錯(cuò)解決框架,目的是用來隔離分布式服務(wù)故障。
限流和服務(wù)保護(hù)都需要和服務(wù)降級(jí)共同使用。
白話文理解:
服務(wù)保護(hù):當(dāng)服務(wù)產(chǎn)生堆積的時(shí)候,對(duì)服務(wù)實(shí)現(xiàn)保護(hù)功能
服務(wù)隔離:保證每個(gè)服務(wù)互不影響,使用信號(hào)量或線程池方式
服務(wù)降級(jí):當(dāng)服務(wù)不可用的時(shí)候,不會(huì)被等待,直接給客戶端一個(gè)友好提示
服務(wù)熔斷:當(dāng)服務(wù)器達(dá)到最大的承受能力后,直接決絕訪問服務(wù),采用服務(wù)降級(jí)返回友好提示。
推薦閱讀:
<<<高并發(fā)架構(gòu)的整體思路
<<<一個(gè)網(wǎng)站訪問慢的真正原因
<<<高并發(fā)情況下,接口的代碼會(huì)存在哪些問題
<<<壓縮靜態(tài)資源減少帶寬傳輸?shù)姆绞?/a>
<<<動(dòng)靜分離架構(gòu)模式
<<<緩存策略匯總
<<<服務(wù)的隔離、降級(jí)和熔斷
<<<服務(wù)限流之計(jì)數(shù)器方式
<<<服務(wù)限流之滑動(dòng)窗口計(jì)數(shù)
<<<服務(wù)限流之令牌桶算法
<<<服務(wù)限流之漏桶算法
<<<漏桶算法和令牌桶算法的區(qū)別
<<<自定義封裝限流算法
<<<應(yīng)用級(jí)限流
<<<接入層限流