hystrix隔离策略对比
生活随笔
收集整理的這篇文章主要介紹了
hystrix隔离策略对比
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
hystrix隔離策略
zuul的隔離實(shí)現(xiàn)是基于hystrix實(shí)現(xiàn)的,hystrix支持線程池隔離和信號量的隔離
# 信號量隔離:
- it executes on the calling thread and concurrent requests are limited by the semaphore count --引自官網(wǎng)
- 單每次調(diào)用線程,當(dāng)前請求通過技術(shù)信號量進(jìn)行限制,當(dāng)信號量大于了最大請求數(shù)(maxConcurrentRequest)時(shí)候,觸發(fā)限制,調(diào)用fallback接口快速返回。
此處可能出現(xiàn)的問題在于:信號量的調(diào)用是同步的,也就是說,每次調(diào)用都會(huì)阻塞調(diào)用方的線程,一直到結(jié)果返回,這樣就導(dǎo)致了無法對訪問做超時(shí)(只能依靠調(diào)用協(xié)議超時(shí),無法主動(dòng)釋放)
- 官網(wǎng)對信號量隔離的描述:
- Generally the only time you should use semaphore isolation for HystrixCommands is when the call is so high volume (hundreds per second, per instance) that the overhead of separate threads is too high; this typically only applies to non-network calls.
- 兩點(diǎn):
- 隔離的粒度太細(xì),數(shù)百個(gè)實(shí)例需要隔離,此時(shí)用線程池做隔離開銷過大
- 通常這種都是非網(wǎng)絡(luò)調(diào)用的情況下
# 線程池隔離
- it executes on a separate thread and concurrent requests are limited by the number of threads in the thread-pool -引自官網(wǎng)
通過每次都開啟一個(gè)單獨(dú)線程運(yùn)行,他的隔離是通過線程池,即每個(gè)隔離粒度都是線程池,互不干擾。
- Commands executed in threads have an extra layer of protection against latencies beyond what network timeouts can offer.
線程池隔離方式,等于多了一層保護(hù)措施,可以通過hystryx直接設(shè)置超時(shí)時(shí)間,超時(shí)后直接返回
對比表格‘:
| 線程池隔離 | 支持,可以直接返回 | 支持,當(dāng)線程池達(dá)到maxsize后,再請求會(huì)出發(fā)fallback熔斷 | 每個(gè)服務(wù)單獨(dú)用線程池 | 可以是異步,也可以是同步。看調(diào)用的方法 | 消耗大,大量線程的上下文切花,容易造成機(jī)器負(fù)載過高 |
| 信號量隔離 | 不支持,如果阻塞,只能通過調(diào)用協(xié)議比如socket超時(shí)返回 | 支持,當(dāng)信號量達(dá)到maxConcurrentRequests后,再請求會(huì)觸發(fā)fallback熔斷 | 通過信號量計(jì)數(shù)器 | 同步調(diào)用,不支持異步 | 消耗小,只是一個(gè)計(jì)數(shù)器 |
- zuul網(wǎng)關(guān)如果使用線程池隔離是屬于異步調(diào)用,其實(shí)查看源碼如下:
調(diào)用的是hystrix command 的excute方法,hytrix的官網(wǎng)原文說明如下:
- execute() — blocks, then returns the single response received from the dependency (or throws an exception in case of an error)
execute是一個(gè)阻塞方法,也就是說,如果不合理的設(shè)置線程池的大小,和超時(shí)時(shí)間,還是有可能把zuul的線程消耗完。從而失去對服務(wù)的保護(hù)作用
總結(jié)
以上是生活随笔為你收集整理的hystrix隔离策略对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调理脾胃会减肥么
- 下一篇: Hystrix在网关Zuul使用中遇到问