隔离机制
开始resilience4j-bulkhead的学习
介绍
Resilience4j提供了两种隔离的实现方式,可以限制并发执行的数量。
SemaphoreBulkhead使用了信号量FixedThreadPoolBulkhead使用了有界队列和固定大小线程池
SemaphoreBulkhead可以在各种线程和I/O模型上正常工作。与Hystrix不同,它不提供基于shadow的thread选项。由客户端来确保正确的线程池大小与隔离配置一致。
创建BulkheadRegistry
就像CircuitBreaker模块,这个模块提供了一个内存中的BulkheadRegistry,和一个ThreadPoolBulkheadRegistry,你可以使用它们管理(创建和检索)隔离实例。
BulkheadRegistry bulkheadRegistry = BulkheadRegistry.ofDefaults();
ThreadPoolBulkheadRegistry threadPoolBulkheadRegistry =
ThreadPoolBulkheadRegistry.ofDefaults();
创建和配置BulkHead
你可以提供一个自定义的全局BulkheadConfig,你可以使用BulkheadConfig建造者模式来创建自定义的全局BulkheadConfig,可以使用builder来配置下面的属性。
| 配置属性 | 默认值 | 描述 |
|---|---|---|
| maxConcurrentCalls | 25 | 隔离允许线程并发执行的最大数量 |
| maxWaitDuration | 0 | 当达到并发调用数量时,新的线程执行时将被阻塞,这个属性表示最长的等待时间。 |
//为Bulkhead创建自定义的配置
BulkheadConfig config = BulkheadConfig.custom()
.maxConcurrentCalls(150)
.maxWaitDuration(Duration.ofMillis(500))
.build();
// 使用自定义全局配置创建BulkheadRegistry
BulkheadRegistry registry = BulkheadRegistry.of(config);
// 使用默认的配置从registry中创建Bulkhead
Bulkhead bulkheadWithDefaultConfig = registry.bulkhead(

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



