xframe/vendor/github.com/polarismesh/polaris-go/pkg/config/api.go

541 lines
19 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Tencent is pleased to support the open source community by making polaris-go available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package config
import (
"time"
"github.com/polarismesh/polaris-go/pkg/model"
)
// PluginConfig 插件配置对象.
type PluginConfig interface {
// GetPluginConfig 获取plugin.<name>下的插件配置将map[string]interface形式的配置marshal进value中
GetPluginConfig(pluginName string) BaseConfig
// SetPluginConfig 设置插件配置将value的内容unmarshal为map[string]interface{}形式
SetPluginConfig(plugName string, value BaseConfig) error
}
// GlobalConfig 全局配置对象.
type GlobalConfig interface {
BaseConfig
// GetSystem .
GetSystem() SystemConfig
// GetAPI global.api前缀开头的所有配置项
GetAPI() APIConfig
// GetServerConnector global.serverConnector前缀开头的所有配置项
GetServerConnector() ServerConnectorConfig
// GetStatReporter global.statReporter前缀开头的所有配置项
GetStatReporter() StatReporterConfig
// GetLocation global.location前缀开头的所有配置项
GetLocation() LocationConfig
}
// ConsumerConfig consumer config object.
type ConsumerConfig interface {
BaseConfig
// GetLocalCache get local cache config
GetLocalCache() LocalCacheConfig
// GetServiceRouter get service router config
GetServiceRouter() ServiceRouterConfig
// GetLoadbalancer get load balancer config
GetLoadbalancer() LoadbalancerConfig
// GetCircuitBreaker get circuit breaker config
GetCircuitBreaker() CircuitBreakerConfig
// GetHealthCheck get health check config
GetHealthCheck() HealthCheckConfig
// GetServiceSpecific 服务独立配置
GetServiceSpecific(namespace string, service string) ServiceSpecificConfig
}
// ProviderConfig 被调端配置对象.
type ProviderConfig interface {
BaseConfig
// GetRateLimit 获取限流配置
GetRateLimit() RateLimitConfig
// GetMinRegisterInterval get minimum interval between two register operation
GetMinRegisterInterval() time.Duration
}
// ConfigFileConfig 配置中心的配置.
type ConfigFileConfig interface {
BaseConfig
// IsEnable 是否启用配置中心
IsEnable() bool
// GetConfigConnectorConfig 配置文件连接器
GetConfigConnectorConfig() ConfigConnectorConfig
// GetConfigFilterConfig 配置文件加密器
GetConfigFilterConfig() ConfigFilterConfig
// GetPropertiesValueCacheSize 值缓存的最大数量
GetPropertiesValueCacheSize() int32
// GetPropertiesValueExpireTime 缓存的过期时间,默认为 60s
GetPropertiesValueExpireTime() int64
// GetLocalCache .
GetLocalCache() ConfigLocalCacheConfig
}
// RateLimitConfig 限流相关配置.
type RateLimitConfig interface {
BaseConfig
PluginConfig
// IsEnable 是否启用限流能力
IsEnable() bool
// SetEnable 设置是否启用限流能力
SetEnable(bool)
// GetMaxWindowSize 获取最大限流窗口数量
GetMaxWindowSize() int
// SetMaxWindowSize 设置最大限流窗口数量
SetMaxWindowSize(maxSize int)
// GetPurgeInterval 获取超时淘汰周期
GetPurgeInterval() time.Duration
// SetPurgeInterval 设置超时淘汰周期
SetPurgeInterval(time.Duration)
// GetLimiterService 获取限流服务
GetLimiterService() string
// SetLimiterService 设置限流服务
SetLimiterService(value string)
// SetLimiterNamespace 设置限流命名空间
SetLimiterNamespace(value string)
// GetLimiterNamespace 获取限流命名空间
GetLimiterNamespace() string
}
// SystemConfig 系统配置信息.
type SystemConfig interface {
BaseConfig
// GetMode global.systemConfig.mode
// SDK运行模式agent还是noagent
GetMode() model.RunMode
// SetMode 设置SDK运行模式
SetMode(model.RunMode)
// GetDiscoverCluster global.systemConfig.discoverCluster
// 服务发现集群
GetDiscoverCluster() ServerClusterConfig
// GetHealthCheckCluster global.systemConfig.healthCheckCluster
// 健康检查集群
GetHealthCheckCluster() ServerClusterConfig
// GetMonitorCluster global.systemConfig.monitorCluster
// 监控上报集群
GetMonitorCluster() ServerClusterConfig
// GetVariable global.systemConfig.variables
// 获取一个路由环境变量
GetVariable(key string) (string, bool)
// SetVariable global.systemConfig.variables
// 设置一个路由环境变量
SetVariable(key, value string)
// UnsetVariable 取消一个路由环境变量
UnsetVariable(key string)
}
// ServerClusterConfig 单个系统服务集群.
type ServerClusterConfig interface {
BaseConfig
// GetNamespace 获取命名空间
GetNamespace() string
// SetNamespace 设置命名空间
SetNamespace(string)
// GetService 获取服务名
GetService() string
// SetService 设置服务名
SetService(string)
// GetRefreshInterval 系统服务的刷新间隔
GetRefreshInterval() time.Duration
// SetRefreshInterval 设置系统服务的刷新间隔
SetRefreshInterval(time.Duration)
}
// APIConfig api相关的配置对象.
type APIConfig interface {
BaseConfig
// GetTimeout global.api.timeout
// 默认调用超时时间
GetTimeout() time.Duration
// SetTimeout 设置默认调用超时时间
SetTimeout(time.Duration)
// GetBindIntf global.api.bindIf
// 默认客户端绑定的网卡地址
GetBindIntf() string
// SetBindIntf 设置默认客户端绑定的网卡地址
SetBindIntf(string)
// GetBindIP global.api.bindIP
// 默认客户端绑定的IP地址
GetBindIP() string
// SetBindIP 设置默认客户端绑定的IP地址
SetBindIP(string)
// GetReportInterval global.api.reportInterval
// 默认客户端定时上报周期
GetReportInterval() time.Duration
// SetReportInterval 设置默认客户端定时上报周期
SetReportInterval(time.Duration)
// GetMaxRetryTimes global.api.maxRetryTimes
// api调用最多重试时间
GetMaxRetryTimes() int
// SetMaxRetryTimes 设置api调用最多重试时间
SetMaxRetryTimes(int)
// GetRetryInterval global.api.retryInterval
// api调用重试时间
GetRetryInterval() time.Duration
// SetRetryInterval 设置api调用重试时间
SetRetryInterval(time.Duration)
}
// StatReporterConfig 统计上报配置.
type StatReporterConfig interface {
BaseConfig
PluginConfig
// IsEnable 是否启用上报
IsEnable() bool
// SetEnable 设置是否启用上报
SetEnable(bool)
// GetChain 统计上报器插件链
GetChain() []string
// SetChain 设置统计上报器插件链
SetChain([]string)
}
// LocationConfig SDK获取自身当前地理位置配置.
type LocationConfig interface {
BaseConfig
// GetProvider 获取地理位置的提供者插件名称
GetProviders() []*LocationProviderConfigImpl
GetProvider(typ string) *LocationProviderConfigImpl
}
// ServerConnectorConfig 与名字服务服务端的连接配置.
type ServerConnectorConfig interface {
BaseConfig
PluginConfig
// GetAddresses global.serverConnector.addresses
// 远端server地址格式为<host>:<port>
GetAddresses() []string
// SetAddresses 设置远端server地址格式为<host>:<port>
SetAddresses([]string)
// GetProtocol global.serverConnector.protocol
// 与server对接的协议
GetProtocol() string
// SetProtocol 设置与server对接的协议
SetProtocol(string)
// GetConnectTimeout global.serverConnector.connectTimeout
// 与server的连接超时时间
GetConnectTimeout() time.Duration
// SetConnectTimeout 设置与server的连接超时时间
SetConnectTimeout(time.Duration)
// GetMessageTimeout global.registry.messageTimeout
// 远程请求超时时间
GetMessageTimeout() time.Duration
// SetMessageTimeout 设置远程请求超时时间
SetMessageTimeout(time.Duration)
// GetRequestQueueSize global.serverConnector.clientRequestQueueSize
// 新请求的队列BUFFER容量
GetRequestQueueSize() int32
// SetRequestQueueSize 设置新请求的队列BUFFER容量
SetRequestQueueSize(int32)
// GetServerSwitchInterval global.serverConnector.serverSwitchInterval
// server的切换时延
GetServerSwitchInterval() time.Duration
// SetServerSwitchInterval 设置server的切换时延
SetServerSwitchInterval(time.Duration)
// GetReconnectInterval 获取一次连接失败后,到下一次重连的间隔时间
GetReconnectInterval() time.Duration
// SetReconnectInterval 设置重试连接的间隔时间
SetReconnectInterval(time.Duration)
// GetConnectionIdleTimeout global.serverConnector.connectionIdleTimeout
// 连接会被释放的空闲的时长
GetConnectionIdleTimeout() time.Duration
// SetConnectionIdleTimeout 设置连接会被释放的空闲的时长
SetConnectionIdleTimeout(time.Duration)
}
// LocalCacheConfig 本地缓存相关配置项.
type LocalCacheConfig interface {
BaseConfig
PluginConfig
// GetServiceExpireTime consumer.localCache.service.expireTime,
// 服务的超时淘汰时间
GetServiceExpireTime() time.Duration
// SetServiceExpireTime 设置服务的超时淘汰时间
SetServiceExpireTime(time.Duration)
// GetServiceRefreshInterval consumer.localCache.service.refreshInterval
// 服务的定期刷新时间
GetServiceRefreshInterval() time.Duration
// SetServiceRefreshInterval 设置服务的定期刷新时间
SetServiceRefreshInterval(time.Duration)
// IsPersistEnable consumer.localCache.persistEnable
// 是否启用本地缓存
IsPersistEnable() bool
// SetPersistEnable 设置是否启用本地缓存
SetPersistEnable(enable bool)
// GetPersistDir consumer.localCache.persistDir
// 本地缓存持久化路径
GetPersistDir() string
// SetPersistDir 设置本地缓存持久化路径
SetPersistDir(string)
// GetType consumer.localCache.type
// 本地缓存类型默认default可修改成具体的缓存插件名
GetType() string
// SetType 设置本地缓存类型
SetType(string)
// GetPersistMaxWriteRetry consumer.localCache.persistMaxWriteRetry
// 缓存最大写重试次数
GetPersistMaxWriteRetry() int
// SetPersistMaxWriteRetry 设置缓存最大写重试次数
SetPersistMaxWriteRetry(int)
// GetPersistMaxReadRetry consumer.localCache.persistMaxReadRetry
// 缓存最大读重试次数
GetPersistMaxReadRetry() int
// SetPersistMaxReadRetry 设置缓存最大读重试次数
SetPersistMaxReadRetry(int)
// GetPersistRetryInterval consumer.localCache.persistRetryInterval
// 缓存持久化重试间隔
GetPersistRetryInterval() time.Duration
// SetPersistRetryInterval 设置缓存持久化重试间隔
SetPersistRetryInterval(time.Duration)
// GetPersistAvailableInterval 获取缓存文件有效时间
GetPersistAvailableInterval() time.Duration
// SetPersistAvailableInterval 设置缓存文件有效时间
SetPersistAvailableInterval(interval time.Duration)
// GetStartUseFileCache 获取是否可以直接使用缓存标签
GetStartUseFileCache() bool
// SetStartUseFileCache 设置是否可以直接使用缓存
SetStartUseFileCache(useCacheFile bool)
// SetPushEmptyProtection 设置推空保护开关
SetPushEmptyProtection(pushEmptyProtection bool)
// GetPushEmptyProtection 获取推空保护开关
GetPushEmptyProtection() bool
}
// NearbyConfig 就近路由配置.
type NearbyConfig interface {
BaseConfig
// SetMatchLevel 设置匹配级别consumer.serviceRouter.plugin.nearbyBasedRouter.matchLevel
SetMatchLevel(level string)
// GetMatchLevel 获取匹配级别consumer.serviceRouter.plugin.nearbyBasedRouter.matchLevel
GetMatchLevel() string
// SetLowestMatchLevel .
// Deprecated: 设置可以降级的最低匹配级别, 已废弃请使用SetMaxMatchLevel
SetLowestMatchLevel(level string)
// GetLowestMatchLevel .
// Deprecated: 获取可以降级的最低匹配级别,已废弃请使用GetMaxMatchLevel
GetLowestMatchLevel() string
// SetMaxMatchLevel 设置可以降级的最低匹配级别,consumer.serviceRouter.plugin.nearbyBasedRouter.maxMatchLevel
SetMaxMatchLevel(level string)
// GetMaxMatchLevel 获取可以降级的最低匹配级别,consumer.serviceRouter.plugin.nearbyBasedRouter.maxMatchLevel
GetMaxMatchLevel() string
// SetStrictNearby 设置是否进行严格就近,consumer.serviceRouter.plugin.nearbyBasedRouter.strictNearby
SetStrictNearby(s bool)
// IsStrictNearby 获取是否进行严格就近,consumer.serviceRouter.plugin.nearbyBasedRouter.strictNearby
IsStrictNearby() bool
// IsEnableDegradeByUnhealthyPercent 是否开启根据不健康实例比例进行降级就近匹配,
// consumer.serviceRouter.plugin.nearbyBasedRouter.enableDegradeByUnhealthyPercent
IsEnableDegradeByUnhealthyPercent() bool
// SetEnableDegradeByUnhealthyPercent 设置是否开启根据不健康实例比例进行降级就近匹配
// consumer.serviceRouter.plugin.nearbyBasedRouter.enableDegradeByUnhealthyPercent
SetEnableDegradeByUnhealthyPercent(e bool)
// GetUnhealthyPercentToDegrade 获取触发降级匹配的不健康实例比例,
// consumer.serviceRouter.plugin.nearbyBasedRouter.unhealthyPercentToDegrade
GetUnhealthyPercentToDegrade() int
// SetUnhealthyPercentToDegrade 设置触发降级匹配的不健康实例比例,consumer.serviceRouter.plugin.nearbyBasedRouter.unhealthyPercentToDegrade
SetUnhealthyPercentToDegrade(u int)
}
// ServiceRouterConfig 服务路由相关配置项.
type ServiceRouterConfig interface {
BaseConfig
PluginConfig
// GetChain consumer.serviceRouter.chain
// 路由责任链配置
GetChain() []string
// GetChain consumer.serviceRouter.afterChain
// 路由责任链后置路由配置
GetAfterChain() []string
// SetChain 设置路由责任链配置
SetChain([]string)
// GetPercentOfMinInstances 获取PercentOfMinInstances参数
GetPercentOfMinInstances() float64
// SetPercentOfMinInstances 设置PercentOfMinInstances参数
SetPercentOfMinInstances(float64)
// IsEnableRecoverAll 是否启用全死全活机制
IsEnableRecoverAll() bool
// SetEnableRecoverAll 设置启用全死全活机制
SetEnableRecoverAll(bool)
// GetNearbyConfig 获取就近路由配置
GetNearbyConfig() NearbyConfig
}
// LoadbalancerConfig 负载均衡相关配置项.
type LoadbalancerConfig interface {
BaseConfig
PluginConfig
// GetType 负载均衡类型
GetType() string
// SetType 设置负载均衡类型
SetType(string)
}
// CircuitBreakerConfig 熔断相关的配置项.
type CircuitBreakerConfig interface {
BaseConfig
PluginConfig
// IsEnable 是否启用熔断
IsEnable() bool
// SetEnable 设置是否启用熔断
SetEnable(bool)
// GetChain 熔断器插件链
GetChain() []string
// SetChain 设置熔断器插件链
SetChain([]string)
// GetCheckPeriod 熔断器定时检测时间
GetCheckPeriod() time.Duration
// SetCheckPeriod 设置熔断器定时检测时间
SetCheckPeriod(time.Duration)
// GetSleepWindow 获取熔断周期
GetSleepWindow() time.Duration
// SetSleepWindow 设置熔断周期
SetSleepWindow(interval time.Duration)
// GetRequestCountAfterHalfOpen 获取半开状态后最多分配多少个探测请求
GetRequestCountAfterHalfOpen() int
// SetRequestCountAfterHalfOpen 设置半开状态后最多分配多少个探测请求
SetRequestCountAfterHalfOpen(count int)
// GetSuccessCountAfterHalfOpen 获取半开状态后多少个成功请求则恢复
GetSuccessCountAfterHalfOpen() int
// SetSuccessCountAfterHalfOpen 设置半开状态后多少个成功请求则恢复
SetSuccessCountAfterHalfOpen(count int)
// GetRecoverWindow 获取半开后的恢复周期,按周期来进行半开放量的统计
GetRecoverWindow() time.Duration
// SetRecoverWindow 设置半开后的恢复周期,按周期来进行半开放量的统计
SetRecoverWindow(value time.Duration)
// GetRecoverNumBuckets 半开后请求数统计滑桶数量
GetRecoverNumBuckets() int
// SetRecoverNumBuckets 设置半开后请求数统计滑桶数量
SetRecoverNumBuckets(value int)
// GetErrorCountConfig 连续错误数熔断配置
GetErrorCountConfig() ErrorCountConfig
// GetErrorRateConfig 错误率熔断配置
GetErrorRateConfig() ErrorRateConfig
}
// Configuration 全量配置对象.
type Configuration interface {
BaseConfig
// GetGlobal global前缀开头的所有配置项
GetGlobal() GlobalConfig
// GetConsumer consumer前缀开头的所有配置项
GetConsumer() ConsumerConfig
// GetProvider provider前缀开头的所有配置项
GetProvider() ProviderConfig
// GetConfigFile config前缀开头的所有配置项
GetConfigFile() ConfigFileConfig
}
// When when to active health check.
type When string
const (
// HealthCheckNever never active health check.
HealthCheckNever When = "never"
// HealthCheckAlways always active health check.
HealthCheckAlways = "always"
// HealthCheckOnRecover active health check when instance has fail.
HealthCheckOnRecover = "on_recover"
)
// HealthCheckConfig active health check config.
type HealthCheckConfig interface {
BaseConfig
PluginConfig
// GetWhen get when to active health check
GetWhen() When
// SetWhen set when to active health check
SetWhen(When)
// GetInterval get health check interval
GetInterval() time.Duration
// SetInterval set health check interval
SetInterval(duration time.Duration)
// GetTimeout get health check max timeout
GetTimeout() time.Duration
// SetTimeout set health check max timeout
SetTimeout(duration time.Duration)
// GetConcurrency get concurrency to execute the health check jobs
GetConcurrency() int
// SetConcurrency set concurrency to execute the health check jobs
SetConcurrency(int)
// GetChain get health checking chain
GetChain() []string
// SetChain set health checking chain
SetChain([]string)
}
// ServiceSpecificConfig 配置.
type ServiceSpecificConfig interface {
BaseConfig
GetServiceCircuitBreaker() CircuitBreakerConfig
GetServiceRouter() ServiceRouterConfig
}
type ConfigLocalCacheConfig interface {
BaseConfig
// IsPersistEnable consumer.localCache.persistEnable
// 是否启用本地缓存
IsPersistEnable() bool
// SetPersistEnable 设置是否启用本地缓存
SetPersistEnable(enable bool)
// GetPersistDir consumer.localCache.persistDir
// 本地缓存持久化路径
GetPersistDir() string
// SetPersistDir 设置本地缓存持久化路径
SetPersistDir(string)
// GetPersistMaxWriteRetry consumer.localCache.persistMaxWriteRetry
// 缓存最大写重试次数
GetPersistMaxWriteRetry() int
// SetPersistMaxWriteRetry 设置缓存最大写重试次数
SetPersistMaxWriteRetry(int)
// GetPersistMaxReadRetry consumer.localCache.persistMaxReadRetry
// 缓存最大读重试次数
GetPersistMaxReadRetry() int
// SetPersistMaxReadRetry 设置缓存最大读重试次数
SetPersistMaxReadRetry(int)
// GetPersistRetryInterval consumer.localCache.persistRetryInterval
// 缓存持久化重试间隔
GetPersistRetryInterval() time.Duration
// SetPersistRetryInterval 设置缓存持久化重试间隔
SetPersistRetryInterval(time.Duration)
// SetFallbackToLocalCache .
SetFallbackToLocalCache(enable bool)
// IsFallbackToLocalCache .
IsFallbackToLocalCache() bool
}
// ConfigConnectorConfig 配置中心连接相关的配置.
type ConfigConnectorConfig interface {
ServerConnectorConfig
// GetConnectorType 后端服务器类型,默认是 polaris
GetConnectorType() string
}
// ConfigFilterConfig 配置中心加密相关配置
type ConfigFilterConfig interface {
BaseConfig
PluginConfig
IsEnable() bool
GetChain() []string
}