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(HystrixCommandorHystrixObservableCommand)的执行声明周期。基于此,我们可以嵌入一些行为、日志、覆盖返回、上报线程状态等。