Hystrix插件
- Event Notifier : 可以自定义事件通知器,用于报警和统计信息
- Metrics Publisher : 用于收集测量数据,并开启一个后台线程处理这些计量数据,比如持久化(Servo)
- Properties Strategy : 用于控制系统中的属性定义
- Concurrency Strategy : 并发策略,在Hystrix中,
ThreadLocal
,Callable
,Runnable
,ThreadPoolExecutor
、BlockingQueue
是起实现线程隔离的基础。Hystrix已经实现了这些工具,并且开箱即用。但是在很大场景下,客户想要嵌入个性化的实现或者装饰行为,此时,可以实现HystrixConcurrencyStrategy
,并覆盖一下方法:- 比如在
getThreadPool()
andgetBlockingQueue()
方法中嵌入Log,或者记录Metrics; wrapCallable()
允许我们去装饰每个被Hystrix执行的Callable
,比如可以通过其来传递ThreadLocal
中的数据;不用担心 Trace链被打断,2333- 方法
getRequestVariable()
希望返回HystrixRequestVariable<T>
的实现类,其可以做到在一个请求的所有线程中共享上下文信息HystrixRequestContext
等
- 比如在
- Command Execution Hook :
HystrixCommandExecutionHook
的实现可以获取是命令HystrixInvokable
(HystrixCommand
orHystrixObservableCommand
)的执行声明周期。基于此,我们可以嵌入一些行为、日志、覆盖返回、上报线程状态等。