Documentation ¶
Index ¶
- Constants
- Variables
- func CompositeComputeRevision(revisions []string) (string, error)
- func ComputeRevisionBySlice(h hash.Hash, slice []string) (string, error)
- func LogLastMtime(lastMtimeLogged int64, lastMtime int64, prefix string) int64
- type BaseCache
- func (bc *BaseCache) Clear()
- func (bc *BaseCache) Close() error
- func (bc *BaseCache) DoCacheUpdate(name string, executor func() (map[string]time.Time, int64, error)) error
- func (bc *BaseCache) IsFirstUpdate() bool
- func (bc *BaseCache) LastFetchTime() time.Time
- func (bc *BaseCache) LastMtime(label string) time.Time
- func (bc *BaseCache) OriginLastFetchTime() time.Time
- func (bc *BaseCache) RefreshInterval() time.Duration
- func (bc *BaseCache) ResetLastFetchTime()
- func (bc *BaseCache) ResetLastMtime(label string)
- func (bc *BaseCache) Store() store.Store
- type BaseConfigArgs
- type Cache
- type CacheIndex
- type CacheManager
- type CircuitBreakerCache
- type ClientCache
- type ClientIterProc
- type ConfigEntry
- type ConfigFileArgs
- type ConfigFileCache
- type ConfigGroupArgs
- type ConfigGroupCache
- type ConfigReleaseArgs
- type FaultDetectCache
- type GrayCache
- type InstanceCache
- type InstanceIterProc
- type L5Cache
- type NamespaceCache
- type RateLimitCache
- type RateLimitIterProc
- type RateLimitRuleArgs
- type RouterRuleIterProc
- type RoutingArgs
- type RoutingConfigCache
- type ServiceArgs
- type ServiceCache
- type ServiceContractCache
- type ServiceIterProc
- type ServiceRevisionWorker
- type StrategyCache
- type UserCache
Constants ¶
const ( // NamespaceName cache name NamespaceName = "namespace" // ServiceName ServiceName = "service" // InstanceName instance name InstanceName = "instance" // L5Name l5 name L5Name = "l5" // RoutingConfigName router config name RoutingConfigName = "routingConfig" // RateLimitConfigName rate limit config name RateLimitConfigName = "rateLimitConfig" // CircuitBreakerName circuit breaker config name CircuitBreakerName = "circuitBreakerConfig" // FaultDetectRuleName fault detect config name FaultDetectRuleName = "faultDetectRule" // ConfigGroupCacheName config group config name ConfigGroupCacheName = "configGroup" // ConfigFileCacheName config file config name ConfigFileCacheName = "configFile" // ClientName client cache name ClientName = "client" // UsersName user data config name UsersName = "users" // StrategyRuleName strategy rule config name StrategyRuleName = "strategyRule" // ServiceContractName service contract config name ServiceContractName = "serviceContract" // GrayName gray config name GrayName = "gray" )
const (
AllMatched = "*"
)
Variables ¶
var ( // DefaultTimeDiff default time diff DefaultTimeDiff = -5 * time.Second )
Functions ¶
func CompositeComputeRevision ¶
CompositeComputeRevision 将多个 revision 合并计算为一个
func ComputeRevisionBySlice ¶
Types ¶
type BaseCache ¶
type BaseCache struct { CacheMgr CacheManager // contains filtered or unexported fields }
BaseCache 对于 Cache 中的一些 func 做统一实现,避免重复逻辑
func NewBaseCache ¶
func NewBaseCache(s store.Store, cacheMgr CacheManager) *BaseCache
func (*BaseCache) DoCacheUpdate ¶
func (bc *BaseCache) DoCacheUpdate(name string, executor func() (map[string]time.Time, int64, error)) error
update
func (*BaseCache) IsFirstUpdate ¶
func (*BaseCache) LastFetchTime ¶
func (*BaseCache) OriginLastFetchTime ¶
OriginLastFetchTime only for test
func (*BaseCache) RefreshInterval ¶ added in v1.18.0
func (*BaseCache) ResetLastFetchTime ¶
func (bc *BaseCache) ResetLastFetchTime()
func (*BaseCache) ResetLastMtime ¶
type BaseConfigArgs ¶
type Cache ¶
type Cache interface { // Initialize Initialize(c map[string]interface{}) error // Update . Update() error // Clear . Clear() error // Name . Name() string // Close . Close() error }
Cache 缓存接口
type CacheIndex ¶
type CacheIndex int
const ( // CacheNamespace int = iota // CacheBusiness CacheService CacheIndex = iota CacheInstance CacheRoutingConfig CacheCL5 CacheRateLimit CacheCircuitBreaker CacheUser CacheAuthStrategy CacheNamespace CacheClient CacheConfigFile CacheFaultDetector CacheConfigGroup CacheServiceContract CacheGray CacheLast )
type CacheManager ¶
type CacheManager interface { // GetCacher GetCacher(cacheIndex CacheIndex) Cache // RegisterCacher RegisterCacher(cacheIndex CacheIndex, item Cache) // OpenResourceCache OpenResourceCache(entries ...ConfigEntry) error // Service 获取Service缓存信息 Service() ServiceCache // Instance 获取Instance缓存信息 Instance() InstanceCache // RoutingConfig 获取路由配置的缓存信息 RoutingConfig() RoutingConfigCache // CL5 获取l5缓存信息 CL5() L5Cache // RateLimit 获取限流规则缓存信息 RateLimit() RateLimitCache // CircuitBreaker 获取熔断规则缓存信息 CircuitBreaker() CircuitBreakerCache // FaultDetector 获取探测规则缓存信息 FaultDetector() FaultDetectCache // ServiceContract 获取服务契约缓存 ServiceContract() ServiceContractCache // User Get user information cache information User() UserCache // AuthStrategy Get authentication cache information AuthStrategy() StrategyCache // Namespace Get namespace cache information Namespace() NamespaceCache // Client Get client cache information Client() ClientCache // ConfigFile get config file cache information ConfigFile() ConfigFileCache // ConfigGroup get config group cache information ConfigGroup() ConfigGroupCache // Gray get Gray cache information Gray() GrayCache }
CacheManager
type CircuitBreakerCache ¶
type CircuitBreakerCache interface { Cache // GetCircuitBreakerConfig 根据ServiceID获取熔断配置 GetCircuitBreakerConfig(svcName string, namespace string) *model.ServiceWithCircuitBreakerRules }
CircuitBreakerCache circuitBreaker配置的cache接口
type ClientCache ¶
type ClientCache interface { Cache // GetClient get client GetClient(id string) *model.Client // IteratorClients 迭代 IteratorClients(iterProc ClientIterProc) // GetClientsByFilter Query client information GetClientsByFilter(filters map[string]string, offset, limit uint32) (uint32, []*model.Client, error) }
ClientCache 客户端的 Cache 接口
type ClientIterProc ¶
ClientIterProc client iter proc func
type ConfigEntry ¶ added in v1.18.0
ConfigEntry 单个缓存资源配置
type ConfigFileArgs ¶
type ConfigFileArgs struct { BaseConfigArgs FileName string Metadata map[string]string }
type ConfigFileCache ¶
type ConfigFileCache interface { Cache // GetActiveRelease GetGroupActiveReleases(namespace, group string) ([]*model.ConfigFileRelease, string) // GetActiveRelease GetActiveRelease(namespace, group, fileName string) *model.ConfigFileRelease // GetActiveGrayRelease GetActiveGrayRelease(namespace, group, fileName string) *model.ConfigFileRelease // GetRelease GetRelease(key model.ConfigFileReleaseKey) *model.ConfigFileRelease // QueryReleases QueryReleases(args *ConfigReleaseArgs) (uint32, []*model.SimpleConfigFileRelease, error) }
ConfigFileCache file cache
type ConfigGroupArgs ¶
type ConfigGroupArgs struct { Namespace string Name string Business string Department string Metadata map[string]string Offset uint32 Limit uint32 // OrderField Sort field OrderField string // OrderType Sorting rules OrderType string }
ConfigGroupArgs
type ConfigGroupCache ¶
type ConfigGroupCache interface { Cache // GetGroupByName GetGroupByName(namespace, name string) *model.ConfigFileGroup // GetGroupByID GetGroupByID(id uint64) *model.ConfigFileGroup // ListGroups ListGroups(namespace string) ([]*model.ConfigFileGroup, string) // Query Query(args *ConfigGroupArgs) (uint32, []*model.ConfigFileGroup, error) }
ConfigGroupCache file cache
type ConfigReleaseArgs ¶
type FaultDetectCache ¶
type FaultDetectCache interface { Cache // GetFaultDetectConfig 根据ServiceID获取探测配置 GetFaultDetectConfig(svcName string, namespace string) *model.ServiceWithFaultDetectRules }
FaultDetectCache fault detect rule cache service
type GrayCache ¶ added in v1.18.0
type GrayCache interface { Cache GetGrayRule(name string) []*apimodel.ClientLabel // HitGrayRule . HitGrayRule(name string, labels map[string]string) bool }
GrayCache 灰度 Cache 接口
type InstanceCache ¶
type InstanceCache interface { // Cache 公共缓存接口 Cache // GetInstance 根据实例ID获取实例数据 GetInstance(instanceID string) *model.Instance // GetInstancesByServiceID 根据服务名获取实例,先查找服务名对应的服务ID,再找实例列表 GetInstancesByServiceID(serviceID string) []*model.Instance // GetInstances 根据服务名获取实例,先查找服务名对应的服务ID,再找实例列表 GetInstances(serviceID string) *model.ServiceInstances // IteratorInstances 迭代 IteratorInstances(iterProc InstanceIterProc) error // IteratorInstancesWithService 根据服务ID进行迭代 IteratorInstancesWithService(serviceID string, iterProc InstanceIterProc) error // GetInstancesCount 获取instance的个数 GetInstancesCount() int // GetInstancesCountByServiceID 根据服务ID获取实例数 GetInstancesCountByServiceID(serviceID string) model.InstanceCount // GetServicePorts 根据服务ID获取端口号 GetServicePorts(serviceID string) []*model.ServicePort // GetInstanceLabels Get the label of all instances under a service GetInstanceLabels(serviceID string) *apiservice.InstanceLabels // QueryInstances query instance for OSS QueryInstances(filter, metaFilter map[string]string, offset, limit uint32) (uint32, []*model.Instance, error) // DiscoverServiceInstances 服务发现获取实例 DiscoverServiceInstances(serviceID string, onlyHealthy bool) []*model.Instance }
InstanceCache 实例相关的缓存接口
type InstanceIterProc ¶
InstanceIterProc instance iter proc func
type L5Cache ¶
type L5Cache interface { Cache // GetRouteByIP 根据IP获取访问关系 GetRouteByIP(ip uint32) []*model.Route // CheckRouteExisted 检查IP对应的SID是否存在访问关系 CheckRouteExisted(ip uint32, modID uint32, cmdID uint32) bool // GetPolicy 获取有状态路由信息policy GetPolicy(modID uint32) *model.Policy // GetSection 获取有状态路由信息policy GetSection(modeID uint32) []*model.Section // GetIPConfig 获取IpConfig GetIPConfig(ip uint32) *model.IPConfig }
L5Cache L5的cache接口
type NamespaceCache ¶
type NamespaceCache interface { Cache // GetNamespace get target namespace by id GetNamespace(id string) *model.Namespace // GetNamespacesByName list all namespace by name GetNamespacesByName(names []string) []*model.Namespace // GetNamespaceList list all namespace GetNamespaceList() []*model.Namespace // GetVisibleNamespaces list target namespace can visible other namespaces GetVisibleNamespaces(namespace string) []*model.Namespace }
NamespaceCache 命名空间的 Cache 接口
type RateLimitCache ¶
type RateLimitCache interface { Cache // IteratorRateLimit 遍历所有的限流规则 IteratorRateLimit(rateLimitIterProc RateLimitIterProc) // GetRateLimitRules 根据serviceID获取限流数据 GetRateLimitRules(serviceKey model.ServiceKey) ([]*model.RateLimit, string) // QueryRateLimitRules QueryRateLimitRules(args RateLimitRuleArgs) (uint32, []*model.RateLimit, error) // GetRateLimitsCount 获取限流规则总数 GetRateLimitsCount() int }
RateLimitCache rateLimit的cache接口
type RateLimitIterProc ¶
RateLimitIterProc rate limit iter func
type RateLimitRuleArgs ¶
type RateLimitRuleArgs struct { // Filter extend filter params Filter map[string]string // ID route rule id ID string // Name route rule name Name string // Service service name Service string // Namespace namesapce Namespace string // Disable *bool Disable *bool // Offset Offset uint32 // Limit Limit uint32 // OrderField Sort field OrderField string // OrderType Sorting rules OrderType string }
RateLimitRuleArgs ratelimit rules query parameters
type RouterRuleIterProc ¶
type RouterRuleIterProc func(key string, value *model.ExtendRouterConfig)
RouterRuleIterProc Method definition of routing rules
type RoutingArgs ¶
type RoutingArgs struct { // Filter extend filter params Filter map[string]string // ID route rule id ID string // Name route rule name Name string // Service service name Service string // Namespace namesapce Namespace string // SourceService source service name SourceService string // SourceNamespace source service namespace SourceNamespace string // DestinationService destination service name DestinationService string // DestinationNamespace destination service namespace DestinationNamespace string // Enable Enable *bool // Offset Offset uint32 // Limit Limit uint32 // OrderField Sort field OrderField string // OrderType Sorting rules OrderType string }
RoutingArgs Routing rules query parameters
type RoutingConfigCache ¶
type RoutingConfigCache interface { Cache // GetRouterConfig Obtain routing configuration based on serviceid GetRouterConfig(id, service, namespace string) (*apitraffic.Routing, error) // GetRouterConfig Obtain routing configuration based on serviceid GetRouterConfigV2(id, service, namespace string) (*apitraffic.Routing, error) // GetRoutingConfigCount Get the total number of routing configuration cache GetRoutingConfigCount() int // QueryRoutingConfigsV2 Query Route Configuration List QueryRoutingConfigsV2(args *RoutingArgs) (uint32, []*model.ExtendRouterConfig, error) // ListRouterRule list all router rule ListRouterRule(service, namespace string) []*model.ExtendRouterConfig // IsConvertFromV1 Whether the current routing rules are converted from the V1 rule IsConvertFromV1(id string) (string, bool) // IteratorRouterRule iterator router rule IteratorRouterRule(iterProc RouterRuleIterProc) }
RoutingConfigCache Cache interface configured by routing
type ServiceArgs ¶
type ServiceArgs struct { // Filter 普通服务字段条件 Filter map[string]string // Metadata 元数据条件 Metadata map[string]string // SvcIds 是否按照服务的ID进行等值查询 SvcIds map[string]struct{} // WildName 是否进行名字的模糊匹配 WildName bool // WildBusiness 是否进行业务的模糊匹配 WildBusiness bool // WildNamespace 是否进行命名空间的模糊匹配 WildNamespace bool // Namespace 条件中的命名空间 Namespace string // Name 条件中的服务名 Name string // EmptyCondition 是否是空条件,即只需要从所有服务或者某个命名空间下面的服务,进行不需要匹配的遍历,返回前面的服务即可 EmptyCondition bool }
ServiceArgs 服务查询条件
type ServiceCache ¶
type ServiceCache interface { Cache // GetNamespaceCntInfo Return to the service statistics according to the namespace, // the count statistics and health instance statistics GetNamespaceCntInfo(namespace string) model.NamespaceServiceCount // GetAllNamespaces Return all namespaces GetAllNamespaces() []string // GetServiceByID According to ID query service information GetServiceByID(id string) *model.Service // GetServiceByName Inquiry service information according to service name GetServiceByName(name string, namespace string) *model.Service // IteratorServices Iterative Cache Service Information IteratorServices(iterProc ServiceIterProc) error // CleanNamespace Clear the cache of NameSpace CleanNamespace(namespace string) // GetServicesCount Get the number of services in the cache GetServicesCount() int // GetServiceByCl5Name Get the corresponding SID according to CL5name GetServiceByCl5Name(cl5Name string) *model.Service // GetServicesByFilter Serving the service filtering in the cache through Filter GetServicesByFilter(serviceFilters *ServiceArgs, instanceFilters *store.InstanceArgs, offset, limit uint32) (uint32, []*model.EnhancedService, error) // ListServices get service list and revision by namespace ListServices(ns string) (string, []*model.Service) // ListAllServices get all service and revision ListAllServices() (string, []*model.Service) // ListServiceAlias list service link alias list ListServiceAlias(namespace, name string) []*model.Service // GetAliasFor get alias reference service info GetAliasFor(name string, namespace string) *model.Service // GetRevisionWorker . GetRevisionWorker() ServiceRevisionWorker // GetVisibleServicesInOtherNamespace get same service in other namespace and it's visible GetVisibleServicesInOtherNamespace(name string, namespace string) []*model.Service }
ServiceCache 服务数据缓存接口
type ServiceContractCache ¶ added in v1.18.0
type ServiceContractCache interface { Cache // Query . Query(filter map[string]string, offset, limit uint32) ([]*model.EnrichServiceContract, uint32, error) // ListVersions . ListVersions(service, namespace string) []*model.EnrichServiceContract // Get . Get(req *model.ServiceContract) *model.EnrichServiceContract }
ServiceContractCache .
type ServiceIterProc ¶
ServiceIterProc 迭代回调函数
type ServiceRevisionWorker ¶
type ServiceRevisionWorker interface { // Notify Notify(serviceID string, valid bool) // GetServiceRevisionCount GetServiceRevisionCount() int // GetServiceInstanceRevision GetServiceInstanceRevision(serviceID string) string }
ServiceRevisionWorker
type StrategyCache ¶
type StrategyCache interface { Cache // GetStrategyDetailsByUID GetStrategyDetailsByUID(uid string) []*model.StrategyDetail // GetStrategyDetailsByGroupID returns all strategy details of a group. GetStrategyDetailsByGroupID(groupId string) []*model.StrategyDetail // IsResourceLinkStrategy 该资源是否关联了鉴权策略 IsResourceLinkStrategy(resType apisecurity.ResourceType, resId string) bool // IsResourceEditable 判断该资源是否可以操作 IsResourceEditable(principal model.Principal, resType apisecurity.ResourceType, resId string) bool // ForceSync 强制同步鉴权策略到cache (串行) ForceSync() error }
StrategyCache is a cache for strategy rules.
type UserCache ¶
type UserCache interface { Cache // GetAdmin 获取管理员信息 GetAdmin() *model.User // GetUserByID GetUserByID(id string) *model.User // GetUserByName GetUserByName(name, ownerName string) *model.User // GetUserGroup GetGroup(id string) *model.UserGroupDetail // IsUserInGroup 判断 userid 是否在对应的 group 中 IsUserInGroup(userId, groupId string) bool // IsOwner IsOwner(id string) bool // GetUserLinkGroupIds GetUserLinkGroupIds(id string) []string }
UserCache User information cache