深入浅出Hystrix GO源码 --- 什么是Hystrix
在软件工程领域,为保证服务的可用性和稳定性,提出了很多解决方案,包括但不限于:限流、熔断、降级和容灾等。本文介绍的Hystrix-go就是一种基于lib库方式实现服务的熔断降级方案。
—
引用官方库的定义:
-
Hystrix发展历史
-
Hystrix设计的目的
-
防止故障在复杂的分布式系统中扩散。 -
快速失败、快速恢复。 -
提供失败回调功能,在必要时实现功能降级。 -
提供准实时的监控、报警和操作能力。
02
—
Hystrix-go主要结构
—
注:这些参数具体是怎么使用的将在后面章节讲解源码部分详细介绍。
—
Hystrix-go GitHub项目的目录结构
├── LICENSE
├── README.md
├── Vagrantfile
├── hystrix
│ ├── rolling
│ ├── metric_collector
│ ├── circuit.go
│ ├── circuit_test.go
│ ├── doc.go
│ ├── eventstream.go
│ ├── eventstream_test.go
│ ├── hystrix.go
│ ├── hystrix_test.go
│ ├── logger.go
│ ├── metrics.go
│ ├── metrics_test.go
│ ├── pool.go
│ ├── pool_metrics.go
│ ├── pool_test.go
│ ├── settings.go
│ └── settings_test.go
├── loadtest
│ ├── README.md
│ └── service
├── plugins
│ ├── datadog_collector.go
│ ├── graphite_aggregator.go
│ ├── statsd_collector.go
│ └── statsd_collector_test.go
└── scripts
└── vagrant.sh
-
hystrix:核心功能实现 -
rolling:统计数据数据统计基本数据结构 -
metric_collector:统计数据控制
-
plugins:监控数据输出控制
后续会逐一分析Hystrix各个组件包的源码实现(令牌筒限流、统计数据采集、健康度判断能),敬请关注。
码字不易,且看且珍惜。
hystrix-go github doc
https://godoc.org/github.com/afex/hystrix-go
hystrix-go GitHub code
https://github.com/afex/hystrix-go