Commit 58dfacb 1 parent a2e344e commit 58dfacb Copy full SHA for 58dfacb
File tree 1 file changed +4
-4
lines changed
1 file changed +4
-4
lines changed Original file line number Diff line number Diff line change @@ -42,16 +42,16 @@ Hystrix 对每个外部依赖用一个单独的线程池,这样的话,如果
42
42
43
43
### 线程池机制的缺点
44
44
- 线程池机制最大的缺点就是增加了 CPU 的开销。<br >
45
- 除了 tomcat 本身的调用线程之外,还有 hystrix 自己管理的线程池。
45
+ 除了 tomcat 本身的调用线程之外,还有 Hystrix 自己管理的线程池。
46
46
47
47
- 每个 command 的执行都依托一个独立的线程,会进行排队,调度,还有上下文切换。
48
- - Hystrix 官方自己做了一个多线程异步带来的额外开销 ,通过对比多线程异步调用+同步调用得出,Netflix API 每天通过 Hystrix 执行 10 亿次调用,每个服务实例有 40 个以上的线程池,每个线程池有 10 个左右的线程。)最后发现说,用 Hystrix 的额外开销,就是给请求带来了 3ms 左右的延时,最多延时在 10ms 以内,相比于可用性和稳定性的提升,这是可以接受的。
48
+ - Hystrix 官方自己做了一个多线程异步带来的额外开销统计 ,通过对比多线程异步调用+同步调用得出,Netflix API 每天通过 Hystrix 执行 10 亿次调用,每个服务实例有 40 个以上的线程池,每个线程池有 10 个左右的线程。)最后发现说,用 Hystrix 的额外开销,就是给请求带来了 3ms 左右的延时,最多延时在 10ms 以内,相比于可用性和稳定性的提升,这是可以接受的。
49
49
50
50
我们可以用 Hystrix semaphore 技术来实现对某个依赖服务的并发访问量的限制,而不是通过线程池/队列的大小来限制流量。
51
51
52
- sempahore 技术可以用来限流和削峰,但是不能用来对调研延迟的服务进行 timeout 和隔离。
52
+ semaphore 技术可以用来限流和削峰,但是不能用来对调研延迟的服务进行 timeout 和隔离。
53
53
54
- ` execution.isolation.strategy ` 设置为 ` SEMAPHORE ` ,那么 Hystrix 就会用 semaphore 机制来替代线程池机制,来对依赖服务的访问进行限流。如果通过 semaphore 调用的时候,底层的网络调用延迟很严重,那么是无法 timeout 的,只能一直 block 住。一旦请求数量超过了 semephore 限定的数量之后,就会立即开启限流。
54
+ ` execution.isolation.strategy ` 设置为 ` SEMAPHORE ` ,那么 Hystrix 就会用 semaphore 机制来替代线程池机制,来对依赖服务的访问进行限流。如果通过 semaphore 调用的时候,底层的网络调用延迟很严重,那么是无法 timeout 的,只能一直 block 住。一旦请求数量超过了 semaphore 限定的数量之后,就会立即开启限流。
55
55
56
56
### 接口限流 Demo
57
57
假设一个线程池大小为 8,等待队列的大小为 10。timeout 时长我们设置长一些,20s。
You can’t perform that action at this time.
0 commit comments