132 lines
5.4 KiB
Go
132 lines
5.4 KiB
Go
|
/**
|
|||
|
* 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 model
|
|||
|
|
|||
|
import (
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
// NotifyTrigger 通知开关,标识本次需要获取哪些资源
|
|||
|
type NotifyTrigger struct {
|
|||
|
EnableDstInstances bool
|
|||
|
EnableDstRoute bool
|
|||
|
EnableSrcRoute bool
|
|||
|
EnableDstRateLimit bool
|
|||
|
EnableServices bool
|
|||
|
}
|
|||
|
|
|||
|
// Clear 清理缓存信息
|
|||
|
func (n *NotifyTrigger) Clear() {
|
|||
|
n.EnableDstInstances = false
|
|||
|
n.EnableDstRoute = false
|
|||
|
n.EnableSrcRoute = false
|
|||
|
n.EnableDstRateLimit = false
|
|||
|
n.EnableServices = false
|
|||
|
}
|
|||
|
|
|||
|
// ControlParam 单次查询的控制参数
|
|||
|
type ControlParam struct {
|
|||
|
Timeout time.Duration
|
|||
|
MaxRetry int
|
|||
|
RetryInterval time.Duration
|
|||
|
}
|
|||
|
|
|||
|
// CacheValueQuery 缓存查询请求对象
|
|||
|
type CacheValueQuery interface {
|
|||
|
// GetDstService 获取目标服务
|
|||
|
GetDstService() *ServiceKey
|
|||
|
// GetSrcService 获取源服务
|
|||
|
GetSrcService() *ServiceKey
|
|||
|
// GetNotifierTrigger 获取缓存查询触发器
|
|||
|
GetNotifierTrigger() *NotifyTrigger
|
|||
|
// SetDstInstances 设置目标服务实例
|
|||
|
SetDstInstances(instances ServiceInstances)
|
|||
|
// SetDstRoute 设置目标服务路由规则
|
|||
|
SetDstRoute(rule ServiceRule)
|
|||
|
// SetDstRateLimit 设置目标服务限流规则
|
|||
|
SetDstRateLimit(rule ServiceRule)
|
|||
|
// SetSrcRoute 设置源服务路由规则
|
|||
|
SetSrcRoute(rule ServiceRule)
|
|||
|
// GetControlParam 获取API调用控制参数
|
|||
|
GetControlParam() *ControlParam
|
|||
|
// GetCallResult 获取API调用统计
|
|||
|
GetCallResult() *APICallResult
|
|||
|
// SetServices 设置服务列表
|
|||
|
SetServices(mc Services)
|
|||
|
}
|
|||
|
|
|||
|
// Engine 编排调度引擎,API相关逻辑在这里执行
|
|||
|
type Engine interface {
|
|||
|
// Destroy 销毁流程引擎
|
|||
|
Destroy() error
|
|||
|
// SyncGetResources 同步加载资源,可通过配置参数指定一次同时加载多个资源
|
|||
|
SyncGetResources(req CacheValueQuery) error
|
|||
|
// SyncGetOneInstance 同步获取负载均衡后的服务实例
|
|||
|
SyncGetOneInstance(req *GetOneInstanceRequest) (*OneInstanceResponse, error)
|
|||
|
// SyncGetInstances 同步获取批量服务实例
|
|||
|
SyncGetInstances(req *GetInstancesRequest) (*InstancesResponse, error)
|
|||
|
// SyncGetAllInstances 同步获取全量服务实例
|
|||
|
SyncGetAllInstances(req *GetAllInstancesRequest) (*InstancesResponse, error)
|
|||
|
// SyncRegisterV2 同步进行服务注册,并且会自动进行心跳上报动作
|
|||
|
SyncRegisterV2(Instance *InstanceRegisterRequest) (*InstanceRegisterResponse, error)
|
|||
|
// SyncRegister 同步进行服务注册
|
|||
|
SyncRegister(instance *InstanceRegisterRequest) (*InstanceRegisterResponse, error)
|
|||
|
// SyncDeregister 同步进行服务反注册
|
|||
|
SyncDeregister(instance *InstanceDeRegisterRequest) error
|
|||
|
// SyncHeartbeat 同步进行心跳上报
|
|||
|
SyncHeartbeat(instance *InstanceHeartbeatRequest) error
|
|||
|
// SyncUpdateServiceCallResult 上报调用结果信息
|
|||
|
SyncUpdateServiceCallResult(result *ServiceCallResult) error
|
|||
|
// SyncReportStat 上报实例统计信息
|
|||
|
SyncReportStat(typ MetricType, stat InstanceGauge) error
|
|||
|
// SyncGetServiceRule 同步获取服务规则
|
|||
|
SyncGetServiceRule(
|
|||
|
eventType EventType, req *GetServiceRuleRequest) (*ServiceRuleResponse, error)
|
|||
|
// SyncGetServices 同步获取批量服务
|
|||
|
SyncGetServices(
|
|||
|
eventType EventType, req *GetServicesRequest) (*ServicesResponse, error)
|
|||
|
// AsyncGetQuota 同步获取配额信息
|
|||
|
AsyncGetQuota(request *QuotaRequestImpl) (*QuotaFutureImpl, error)
|
|||
|
// ScheduleTask 启动定时任务
|
|||
|
ScheduleTask(task *PeriodicTask) (chan<- *PriorityTask, TaskValues)
|
|||
|
// WatchService 监听服务的change
|
|||
|
WatchService(request *WatchServiceRequest) (*WatchServiceResponse, error)
|
|||
|
// GetContext 获取上下文
|
|||
|
GetContext() ValueContext
|
|||
|
// InitCalleeService 所需的被调初始化
|
|||
|
InitCalleeService(req *InitCalleeServiceRequest) error
|
|||
|
// SyncGetConfigFile 同步获取配置文件
|
|||
|
SyncGetConfigFile(namespace, fileGroup, fileName string) (ConfigFile, error)
|
|||
|
// SyncGetConfigGroup 同步获取配置文件
|
|||
|
SyncGetConfigGroup(namespace, fileGroup string) (ConfigFileGroup, error)
|
|||
|
// SyncCreateConfigFile 同步创建配置文件
|
|||
|
SyncCreateConfigFile(namespace, fileGroup, fileName, content string) error
|
|||
|
// SyncUpdateConfigFile 同步更新配置文件
|
|||
|
SyncUpdateConfigFile(namespace, fileGroup, fileName, content string) error
|
|||
|
// SyncPublishConfigFile 同步发布配置文件
|
|||
|
SyncPublishConfigFile(namespace, fileGroup, fileName string) error
|
|||
|
// ProcessRouters 执行路由链过滤,返回经过路由后的实例列表
|
|||
|
ProcessRouters(req *ProcessRoutersRequest) (*InstancesResponse, error)
|
|||
|
// ProcessLoadBalance 执行负载均衡策略,返回负载均衡后的实例
|
|||
|
ProcessLoadBalance(req *ProcessLoadBalanceRequest) (*OneInstanceResponse, error)
|
|||
|
// WatchAllInstances 监听实例变更事件
|
|||
|
WatchAllInstances(request *WatchAllInstancesRequest) (*WatchAllInstancesResponse, error)
|
|||
|
// WatchAllServices 监听服务列表变更事件
|
|||
|
WatchAllServices(request *WatchAllServicesRequest) (*WatchAllServicesResponse, error)
|
|||
|
}
|