深入浅出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
