confs

package
v0.0.0-...-9fd2f02 Latest Latest
Warning

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

Go to latest
Published: Mar 31, 2023 License: Apache-2.0 Imports: 5 Imported by: 6

Documentation

Index

Constants

View Source
const (
	PostgreSQL = "postgres"
	MySQL      = "mysql"
)

Variables

This section is empty.

Functions

func SetGlobalConfig

func SetGlobalConfig(gc GlobalConfig)

func SetSentinelConfig

func SetSentinelConfig(sc SentinelConfig)

func SetServerConfig

func SetServerConfig(sc ServerConfig)

Types

type ConsulConf

type ConsulConf struct {
	// ConsulAddr 服务配置中心路径
	ConsulAddr string `env:"CONSUL_ADDR" yaml:"consulAddr"`
	// ConfigNode 配置节点,越往后优先级越高
	ConfigNode []string `yaml:"configNode"`
	// RegisterTTL 注册时限
	RegisterTTL uint16 `env:"CONSUL_REGISTER_TTL" yaml:"registerTTL"`
	// RegisterInterval 注册间隔
	RegisterInterval uint16 `env:"CONSUL_REGISTER_INTERVAL" yaml:"registerInterval"`
}

type DBConfig

type DBConfig struct {
	// Enabled 是否启用redis,1是2否
	Enabled Enabled `yaml:"enabled"`
	// DBType
	DbType DBType `yaml:"dbType"`
	// 服务器地址
	Path string `yaml:"path"`
	//端口
	Port string `yaml:"port"`
	// 高级配置
	Config string `yaml:"config"`
	// 数据库名
	Dbname string `yaml:"dbName"`
	// 数据库用户名
	Username string `yaml:"username"`
	// 数据库密码
	Password string `yaml:"password"`
	// 空闲中的最大连接数
	MaxIdleConns int `yaml:"maxIdleConns"`
	// 打开到数据库的最大连接数
	MaxOpenConns int `yaml:"maxOpenConns"`
}

func (DBConfig) AllAaccordance

func (d DBConfig) AllAaccordance(d2 DBConfig) bool

AllAaccordance 完全一致

func (DBConfig) MainAaccordance

func (d DBConfig) MainAaccordance(d2 DBConfig) bool

MainAaccordance 主要配置一致

type DBType

type DBType string

type Enabled

type Enabled uint8

func (Enabled) Bool

func (e Enabled) Bool() bool

type FlowRule

type FlowRule struct {
	// TokenCalculateStrategy 当前流量控制器的Token计算策略。Direct表示直接使用字段 Threshold 作为阈值;WarmUp表示使用预热方式计算Token的阈值。
	TokenCalculateStrategy flow.TokenCalculateStrategy `yaml:"tokenCalculateStrategy"`
	// ControlBehavior 表示流量控制器的控制策略;Reject表示超过阈值直接拒绝,Throttling表示匀速排队。
	ControlBehavior flow.ControlBehavior `yaml:"controlBehavior"`
	// Threshold 表示流控阈值;如果字段 StatIntervalInMs 是1000(也就是1秒),那么Threshold就表示QPS,流量控制器也就会依据资源的QPS来做流控。
	Threshold float64 `yaml:"threshold"`
	// MaxQueueingTimeMs 匀速排队的最大等待时间,该字段仅仅对 Throttling ControlBehavior 生效;
	MaxQueueingTimeMs uint32 `yaml:"maxQueueingTimeMs"`
	// WarmUpPeriodSec 预热的时间长度,该字段仅仅对 WarmUp 的 TokenCalculateStrategy 生效;
	WarmUpPeriodSec uint32 `yaml:"warmUpPeriodSec"`
	// WarmUpColdFactor 预热的因子,默认是3,该值的设置会影响预热的速度,该字段仅仅对 WarmUp 的 TokenCalculateStrategy 生效;
	WarmUpColdFactor uint32 `yaml:"warmUpColdFactor"`
	// StatIntervalInMs 规则对应的流量控制器的独立统计结构的统计周期。如果 StatIntervalInMs 是1000,也就是统计QPS。
	StatIntervalInMs uint32 `yaml:"statIntervalInMs"`
}

FlowRule 无参限流配置

type GlobalConfig

type GlobalConfig struct {
	// RedisConfig redis配置
	RedisConfig RedisConfig `yaml:"redisConfig"`
	// JwtConfig jwt配置
	JwtConfig JwtConfig `yaml:"jwtConfig"`
	// OtelConfig 遥测体系配置
	OtelConfig OtelConfig `yaml:"otelConfig"`
	// NsqConfig NSQ消息队列监听
	NsqConfig NsqConfig `yaml:"nsqConfig"`
}

func GetGlobalConfig

func GetGlobalConfig() GlobalConfig

type GrpcConf

type GrpcConf struct {
	Port uint16 `env:"GRPC_PORT" yaml:"port"`
}

type HotspotRule

type HotspotRule struct {
	// MetricType 流控指标类型,支持两种:请求数和并发数
	MetricType hotspot.MetricType `yaml:"metricType"`
	// ControlBehavior 流控的效果,仅在请求数模式下有效。支持两种:快速失败和匀速+排队模式
	ControlBehavior hotspot.ControlBehavior `yaml:"controlBehavior"`
	// ParamIndex 热点参数的索引,对应 WithArgs(args ...any) 中的参数索引位置,从 0 开始
	ParamIndex int `yaml:"paramIndex"`
	// ParamKey 参数键
	ParamKey string `yaml:"paramKey"`
	// Threshold 限流阈值(针对每个热点参数)
	Threshold int64 `yaml:"threshold"`
	// MaxQueueingTimeMs 最大排队等待时长(仅在匀速排队模式 + QPS 下生效)
	MaxQueueingTimeMs int64 `yaml:"maxQueueingTimeMs"`
	// BurstCount 静默值(仅在快速失败模式 + QPS 下生效)
	BurstCount int64 `yaml:"burstCount"`
	// DurationInSec 统计结构填充新的 token 的时间间隔 (仅在请求数(QPS)流控模式下生效)
	DurationInSec int64 `yaml:"durationInSec"`
	// ParamsMaxCapacity 统计结构的容量最大值(Top N)
	ParamsMaxCapacity int64 `yaml:"paramsMaxCapacity"`
	// SpecificItems 特定参数的特殊阈值配置,可以针对指定的参数值单独设置限流阈值,不受前面 Threshold 阈值的限制。
	SpecificItems map[any]int64 `yaml:"specificItems"`
}

HotspotRule 热点参数限流配置

type HttpConf

type HttpConf struct {
	Port uint16 `env:"HTTP_PORT" yaml:"port"`
}

type JwtConfig

type JwtConfig struct {
	// SigningKey 签名密钥
	SigningKey string `env:"JWT_SIGNING_KEY" yaml:"signingKey"`
	// ExpiresTime 过期时限,单位秒
	ExpiresTime uint64 `env:"JWT_EXPIRES_TIME" yaml:"expiresTime"`
}

JwtConfig jwt配置

type LogConf

type LogConf struct {
	// Level 日志级别
	Level string `env:"LOG_LEVEL" yaml:"level"`
	// Director 输出文件夹
	Director string `env:"LOG_DIRECTOR" yaml:"director"`
	// MaxAge 最大天数
	MaxAge uint8 `env:"LOG_MAX_AGE" yaml:"maxAge"`
	// LogInConsole 是否输出到控制台
	LogInConsole Enabled `env:"LOG_IN_CONSOLE" yaml:"logInConsole"`
}

func (*LogConf) TransportLevel

func (z *LogConf) TransportLevel() zapcore.Level

type NsqConfig

type NsqConfig struct {
	// Enabled 是否开启NSQ消息队列,1是2否
	Enabled Enabled `env:"NSQ_ENABLED" yaml:"enabled"`
	// ProducerAddr 用于生产者使用的nsqd服务地址
	ProducerAddr string `env:"NSQ_NSQD_ADDR" yaml:"producerAddr"`
	// ConsumerAddr 用于消费者使用的nsqlookupd服务地址
	ConsumerAddr string `env:"NSQ_LOOKUPD_ADDR" yaml:"consumerAddr"`
}

NsqConfig NSQ消息队列配置

type OtelConfig

type OtelConfig struct {
	// Enabled 是否启用遥测体系,1是2否
	Enabled Enabled `env:"OTEL_ENABLED" yaml:"enabled"`
	// CollectorGrpcEndpoint collector端口
	CollectorGrpcEndpoint string `env:"OTEL_COLLECTOR_ENDPOINT" yaml:"collectorGrpcEndpoint"`
}

OtelConfig 遥测体系配置

type RedisConfig

type RedisConfig struct {
	// Enabled 是否启用redis,1是2否
	Enabled Enabled `env:"REDIS_ENABLED" yaml:"enabled"`
	// Addr redis域名地址
	Addr string `env:"REDIS_ADDR" yaml:"addr"`
	// Password redis密码
	Password string `env:"REDIS_POSSWORD" yaml:"password"`
	// DB redis子库
	DB uint8 `env:"REDIS_DB" yaml:"db"`
}

RedisConfig redis配置

type RuleStrategy

type RuleStrategy struct {
	// FlowRules限流配置
	FlowRules []FlowRule `yaml:"currentLimitRules"`
	// HotspotRules 热点限流配置
	HotspotRules []HotspotRule `yaml:"hotspotRules"`
}

type SentinelConfig

type SentinelConfig struct {
	// Enabled 是否开启熔断限流,1是2否
	Enabled Enabled `yaml:"enabled"`
	// SvcRuleStrategy 服务全局熔断限流策略
	SvcRuleStrategy RuleStrategy `yaml:"svcRuleStrategy"`
	// ApisRuleStrategys 接口级熔断限流策略
	ApisRuleStrategys map[string]RuleStrategy `yaml:"apisRuleStrategys"`
}

func GetSentinelConfig

func GetSentinelConfig() SentinelConfig

type ServerConfig

type ServerConfig struct {
	// SvcConf 服务配置
	SvcConf SvcConf `yaml:"svcConf"`
	// ConsulConf consul配置
	ConsulConf ConsulConf `yaml:"consulConf"`
	// LogConf 日志配置
	LogConf LogConf `yaml:"logConf"`
}

func GetServerConfig

func GetServerConfig() ServerConfig

type SvcConf

type SvcConf struct {
	// SvcMode 服务模式,1正式2测试
	SvcMode SvcMode `env:"SVC_MODE" yaml:"svcMode"`
	// SvcName 服务部署名
	SvcName string `env:"SVC_NAME" yaml:"svcName"`
	// SvcNum 服务实例序号
	SvcNum uint8 `env:"SVC_NUM" yaml:"svcNum"`
	// SvcVersion 服务版本号
	SvcVersion string `env:"SVC_VERSION" yaml:"svcVersion"`
	// Http 配置
	Http HttpConf `yaml:"http"`
	// Grpc 配置
	Grpc GrpcConf `yaml:"grpc"`
}

type SvcMode

type SvcMode uint8
const (
	Release SvcMode = 1 + iota
	Debug
)

func (SvcMode) Uint8

func (m SvcMode) Uint8() uint8

Jump to

Keyboard shortcuts

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