chore: build site with vitepress

This commit is contained in:
yanglbme
2025-04-13 18:44:18 +08:00
parent c6bd514016
commit 5d354f0dcd
91 changed files with 3185 additions and 3374 deletions

View File

@@ -1,4 +1,4 @@
## Hystrix 隔离策略细粒度控制
# Hystrix 隔离策略细粒度控制
Hystrix 实现资源隔离,有两种策略:
@@ -7,7 +7,7 @@ Hystrix 实现资源隔离,有两种策略:
对资源隔离这一块东西,其实可以做一定细粒度的一些控制。
### execution.isolation.strategy
## execution.isolation.strategy
指定了 HystrixCommand.run() 的资源隔离策略:`THREAD` or `SEMAPHORE`,一种基于线程池,一种基于信号量。
@@ -29,7 +29,7 @@ HystrixCommandProperties.Setter().withExecutionIsolationStrategy(ExecutionIsolat
而使用信号量的场景,通常是针对超大并发量的场景下,每个服务实例每秒都几百的 `QPS`,那么此时你用线程池的话,线程一般不会太多,可能撑不住那么高的并发,如果要撑住,可能要耗费大量的线程资源,那么就是用信号量,来进行限流保护。一般用信号量常见于那种基于纯内存的一些业务逻辑服务,而不涉及到任何网络访问请求。
### command key & command group
## command key & command group
我们使用线程池隔离,要怎么对**依赖服务**、**依赖服务接口**、**线程池**三者做划分呢?
@@ -47,7 +47,7 @@ public CommandHelloWorld(String name) {
command group 是一个非常重要的概念,默认情况下,就是通过 command group 来定义一个线程池的,而且还会通过 command group 来聚合一些监控和报警信息。同一个 command group 中的请求,都会进入同一个线程池中。
### command thread pool
## command thread pool
ThreadPoolKey 代表了一个 HystrixThreadPool用来进行统一监控、统计、缓存。默认的 ThreadPoolKey 就是 command group 的名称。每个 command 都会跟它的 ThreadPoolKey 对应的 ThreadPool 绑定在一起。
@@ -64,7 +64,7 @@ public CommandHelloWorld(String name) {
}
```
### command key & command group & command thread pool
## command key & command group & command thread pool
**command key** ,代表了一类 command一般来说代表了下游依赖服务的某个接口。
@@ -84,7 +84,7 @@ command key -> 自己的 thread pool key
说白点,就是说如果你的 command key 要用自己的线程池,可以定义自己的 thread pool key就 ok 了。
### coreSize
## coreSize
设置线程池的大小,默认是 10。一般来说用这个默认的 10 个线程大小就够了。
@@ -92,7 +92,7 @@ command key -> 自己的 thread pool key
HystrixThreadPoolProperties.Setter().withCoreSize(int value);
```
### queueSizeRejectionThreshold
## queueSizeRejectionThreshold
如果说线程池中的 10 个线程都在工作中,没有空闲的线程来做其它的事情,此时再有请求过来,会先进入队列积压。如果说队列积压满了,再有请求过来,就直接 reject拒绝请求执行 fallback 降级的逻辑,快速返回。
@@ -104,7 +104,7 @@ HystrixThreadPoolProperties.Setter().withCoreSize(int value);
HystrixThreadPoolProperties.Setter().withQueueSizeRejectionThreshold(int value);
```
### execution.isolation.semaphore.maxConcurrentRequests
## execution.isolation.semaphore.maxConcurrentRequests
设置使用 SEMAPHORE 隔离策略的时候允许访问的最大并发量,超过这个最大并发量,请求直接被 reject。