viola

package module
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2023 License: MIT Imports: 22 Imported by: 0

README

viola

Build GitHub release (latest by date)

MIT Licence GitHub code size

Quality Gate Status

Reliability Rating Bugs

Security Rating Vulnerabilities

Maintainability Rating Technical Debt Code Smells

Lines of Code Coverage

HTTP容错代理服务.

使用 resilience4go 包装代理请求.

支持:

  • 舱壁隔离
  • 限时
  • 限速
  • 熔断
  • 重试
  • 缓存
  • 故障恢复

配置样例

请参考: config_help.toml

部署执行

  1. 下载最新的可执行文件压缩包并解压

    下载地址: viola release

$ tar -xvJf viola.[version].[os].[arch].tar.xz
  1. 新建/编辑配置文件, 启动运行
$ nohup ./viola.[version].[os].[arch].bin -configFile config.toml &

数据平面

端口号: 22915

控制平面

端口号: 22920

/config: 响应返回当前配置

/metrics: 响应返回Prometheus指标数据

/circuitbreaker/disable: 停用指定Endpoint的熔断器, 使用url-query或post-form参数endpoint=xxx指定Endpoint

/circuitbreaker/force-open: 强制开启指定Endpoint的熔断器, 使用url-query或post-form参数endpoint=xxx指定Endpoint

/circuitbreaker/close: 关闭指定Endpoint的熔断器, 使用url-query或post-form参数endpoint=xxx指定Endpoint

/circuitbreaker/state: 查询指定Endpoint的熔断器的当前状态, 使用url-query或post-form参数endpoint=xxx指定Endpoint

Documentation

Index

Constants

View Source
const DumpTopic = proxy.DumpTopic

Variables

View Source
var (
	RegisterRspFailedPredicate = resilience.RegisterRspFailedPredicate
	RegisterRspCachePredicate  = resilience.RegisterRspCachePredicate
	RegisterFallbackFunction   = resilience.RegisterFallbackFunction
)

Functions

func CircuitBreakerStateHandler added in v0.1.3

func CircuitBreakerStateHandler(dataPlane DataPlane) http.Handler

func CloseCircuitBreakerHandler added in v0.1.3

func CloseCircuitBreakerHandler(dataPlane DataPlane) http.Handler

func ConfigHandler added in v0.1.1

func ConfigHandler(dataPlane DataPlane) http.Handler

func DisableCircuitBreakerHandler added in v0.1.3

func DisableCircuitBreakerHandler(dataPlane DataPlane) http.Handler

func ForceOpenCircuitBreakerHandler added in v0.1.3

func ForceOpenCircuitBreakerHandler(dataPlane DataPlane) http.Handler

func MetricsHandler added in v0.1.1

func MetricsHandler(dataPlane DataPlane) http.Handler

func NewCtrlPlane added in v0.1.2

func NewCtrlPlane(dataPlane DataPlane) http.Handler

Types

type BulkheadConfig

type BulkheadConfig = resilience.BulkheadConfig

type CacheConfig

type CacheConfig = resilience.CacheConfig

type CircuitBreakerConfig

type CircuitBreakerConfig = resilience.CircuitBreakerConfig

type Config

type Config struct {
	Endpoint []EndpointConfig

	Defaults Defaults
}

func FormatConfig

func FormatConfig(config *Config) *Config

func LoadConfig

func LoadConfig(data string) (*Config, error)

type DataPlane

type DataPlane interface {
	http.Handler
	GetConfig() *Config
	SetConfig(*Config)

	GetRegisterer() prometheus.Registerer
	GetGatherer() prometheus.Gatherer
	SetRegistry(*prometheus.Registry)

	DisableCircuitBreaker(string) error
	ForceOpenCircuitBreaker(string) error
	CloseCircuitBreaker(string) error
	CircuitBreakerState(string) string
}

func NewDataPlane

func NewDataPlane(config *Config) DataPlane

type Defaults

type Defaults struct {
	Resilience ResilienceConfig
}

type DumpMessage added in v0.1.4

type DumpMessage = proxy.DumpMessage

type DumpType added in v0.1.4

type DumpType = proxy.DumpType

type EndpointConfig

type EndpointConfig struct {
	Name string

	Location            string
	StripLocationPrefix string

	TargetURL string

	DumpTarget string
	DumpSource string

	Resilience ResilienceConfig
}

type FallbackConfig

type FallbackConfig = resilience.FallbackConfig

type MessageType added in v0.1.4

type MessageType = proxy.MessageType

type RateLimiterConfig

type RateLimiterConfig = resilience.RateLimiterConfig

type ResilienceConfig

type ResilienceConfig struct {
	Bulkhead       BulkheadConfig
	TimeLimiter    TimeLimiterConfig
	RateLimiter    RateLimiterConfig
	CircuitBreaker CircuitBreakerConfig
	Retry          RetryConfig
	Cache          CacheConfig
	Fallback       FallbackConfig
}

type RetryConfig

type RetryConfig = resilience.RetryConfig

type TimeLimiterConfig

type TimeLimiterConfig = resilience.TimeLimiterConfig

Directories

Path Synopsis
cmd
internal
elf

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL