api

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2021 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 3 more Imports: 21 Imported by: 92

README

Polaris Go API方法使用

配置API

配置初始化
//使用默认配置对象来初始化配置,连接默认的北极星埋点域名
cfg := api.NewConfiguration()
修改北极星后端集群名
//先初始化配置
cfg := api.NewConfiguration()
//修改发现server集群名
cfg.GetGlobal().GetSystem().GetDiscoverCluster().SetService("polaris-server")
//修改心跳server集群名
cfg.GetGlobal().GetSystem().GetHealthCheckCluster().SetService("healthcheck")
//修改监控server集群名
cfg.GetGlobal().GetSystem().GetHealthCheckCluster().SetService("polaris.monitor")
修改北极星日志路径

假如需要修改北极星的日志打印目录,可以按照以下方式进行修改

if err := api.SetLoggersDir("/tmp/polaris/log"); nil != err {
   //do error handle
}
修改北极星日志级别

假如需要修改北极星的日志打印级别,可以按照以下方式进行修改

if err := api.SetLoggersLevel(api.InfoLog); nil != err {
    //do error handle
}

日志级别支持NoneLog, TraceLog, DebugLog, InfoLog, WarnLog, ErrorLog, FatalLog,设置成NoneLog,则不打印任何日志

同时修改北极星日志路径及日志级别

polaris-go启动后,默认会在程序运行的当前目录创建polaris/log目录,用于存放运行过程中的日志。因此用户需要保证当前目录有写权限 假如需要修改北极星的日志打印目录以及日志级别,可以按照以下方式进行修改

if err := api.ConfigLoggers("/tmp/polaris/log", api.InfoLog); nil != err {
    //do error handle
}

Documentation

Index

Constants

View Source
const (
	//权重随机负载均衡策略
	LBPolicyWeightedRandom = config.DefaultLoadBalancerWR
	//权重一致性hash负载均衡策略
	LBPolicyRingHash = config.DefaultLoadBalancerRingHash
	//Maglev算法的一致性hash负载均衡策略
	LBPolicyMaglev = config.DefaultLoadBalancerMaglev
	//L5一致性Hash兼容算法,保证和L5产生相同的结果
	LBPolicyL5CST = config.DefaultLoadBalancerL5CST
)
View Source
const (
	//调用成功
	RetSuccess = model.RetSuccess
	//调用失败
	RetFail = model.RetFail
)
View Source
const (
	MeshVirtualService  = model.MeshVirtualService
	MeshServiceEntry    = model.MeshServiceEntry
	MeshDestinationRule = model.MeshDestinationRule
	MeshEnvoyFilter     = model.MeshEnvoyFilter
	MeshGateway         = model.MeshGateway
)

网格类型

View Source
const (
	QuotaResultOk      = model.QuotaResultOk
	QuotaResultLimited = model.QuotaResultLimited
)
View Source
const (
	//跟踪级别
	TraceLog = log.TraceLog
	//调试级别
	DebugLog = log.DebugLog
	//一般日志级别
	InfoLog = log.InfoLog
	//警告日志级别
	WarnLog = log.WarnLog
	//错误日志级别
	ErrorLog = log.ErrorLog
	//致命级别
	FatalLog = log.FatalLog
	//当要禁止日志的时候,可以设置此级别
	NoneLog = log.NoneLog
)

日志级别

View Source
const (
	DefaultBaseLogLevel = log.DefaultBaseLogLevel
	//默认统计日志级别
	DefaultStatLogLevel = log.DefaultStatLogLevel
	//默认探测日志级别
	DefaultDetectLogLevel = log.DefaultDetectLogLevel
	//默认统计上报日志级别
	DefaultStatReportLogLevel = log.DefaultStatReportLogLevel
	//默认网络交互日志级别
	DefaultNetworkLogLevel = log.DefaultNetworkLogLevel
)
View Source
const (
	EventInstance = model.EventInstance
)

Variables

View Source
var (
	//通过以默认域名为埋点server的默认配置创建ConsumerAPI
	NewConsumerAPI = newConsumerAPI
	//NewConsumerAPIByFile 通过配置文件创建SDK ConsumerAPI对象
	NewConsumerAPIByFile = newConsumerAPIByFile
	//NewConsumerAPIByFile 通过配置对象创建SDK ConsumerAPI对象
	NewConsumerAPIByConfig = newConsumerAPIByConfig
	//NewConsumerAPIByContext 通过上下文创建SDK ConsumerAPI对象
	NewConsumerAPIByContext = newConsumerAPIByContext
	//从系统默认配置文件中创建ConsumerAPI
	NewConsumerAPIByDefaultConfigFile = newConsumerAPIByDefaultConfigFile
	//创建上报对象
	NewServiceCallResult = newServiceCallResult
)
View Source
var (
	//通过以默认域名为埋点server的默认配置创建LimitAPI
	NewLimitAPI = newLimitAPI
	//通过配置对象创建LimitAPI
	NewLimitAPIByConfig = newLimitAPIByConfig
	//通过sdkContext创建LimitAPI
	NewLimitAPIByContext = newLimitAPIByContext
	//通过配置文件创建SDK LimitAPI对象
	NewLimitAPIByFile = newLimitAPIByFile
)
View Source
var (
	//通过以默认域名为埋点server的默认配置创建ProviderAPI
	NewProviderAPI = newProviderAPI
	//NewProviderAPIByFile 通过配置文件创建SDK ProviderAPI对象
	NewProviderAPIByFile = newProviderAPIByFile
	//NewProviderAPIByConfig 通过配置对象创建SDK ProviderAPI对象
	NewProviderAPIByConfig = newProviderAPIByConfig
	//NewProviderAPIByContext 通过上下文创建SDK ProviderAPI对象
	NewProviderAPIByContext = newProviderAPIByContext
	//NewProviderAPIByDefaultConfigFile 通过系统默认配置文件创建ProviderAPI
	NewProviderAPIByDefaultConfigFile = newProviderAPIByDefaultConfigFile
)

Functions

func ConfigBaseLogger

func ConfigBaseLogger(logDir string, logLevel int) error

配置基础日志对象

func ConfigDetectLogger

func ConfigDetectLogger(logDir string, logLevel int) error

配置探测日志对象

func ConfigLoggers

func ConfigLoggers(logDir string, logLevel int) error

全局配置日志对象

func ConfigNetworkLogger

func ConfigNetworkLogger(logDir string, logLevel int) error

配置网络交互日志对象

func ConfigStatLogger

func ConfigStatLogger(logDir string, logLevel int) error

配置统计日志对象

func ConfigStatReportLogger

func ConfigStatReportLogger(logDir string, logLevel int) error

配置统计上报日志对象

func NewConfiguration

func NewConfiguration() config.Configuration

创建默认配置

func SetBaseLogger

func SetBaseLogger(logger Logger)

设置基础日志对象

func SetDetectLogger

func SetDetectLogger(logger Logger)

设置探测日志对象

func SetLoggersDir

func SetLoggersDir(logDir string) error

设置日志的目录,会创建新的具有默认打印级别的logger

func SetLoggersLevel

func SetLoggersLevel(loglevel int) error

设置所有日志级别

func SetStatLogger

func SetStatLogger(logger Logger)

设置统计日志对象

func SetStatReportLogger

func SetStatReportLogger(logger Logger)

设置统计上报日志对象

Types

type ConsumerAPI

type ConsumerAPI interface {
	SDKOwner
	// 同步获取单个服务
	GetOneInstance(req *GetOneInstanceRequest) (*model.OneInstanceResponse, error)
	// 同步获取可用的服务列表
	GetInstances(req *GetInstancesRequest) (*model.InstancesResponse, error)
	// 同步获取完整的服务列表
	GetAllInstances(req *GetAllInstancesRequest) (*model.InstancesResponse, error)
	// 同步获取服务路由规则
	GetRouteRule(req *GetServiceRuleRequest) (*model.ServiceRuleResponse, error)
	// 上报服务调用结果
	UpdateServiceCallResult(req *ServiceCallResult) error
	//销毁API,销毁后无法再进行调用
	Destroy()
	//订阅服务消息
	WatchService(req *WatchServiceRequest) (*model.WatchServiceResponse, error)
	// 同步获取网格规则
	GetMeshConfig(req *GetMeshConfigRequest) (*model.MeshConfigResponse, error)
	// 同步获取网格
	GetMesh(req *GetMeshRequest) (*model.MeshResponse, error)
	// 根据业务同步获取批量服务
	GetServicesByBusiness(req *GetServicesRequest) (*model.ServicesResponse, error)
	//初始化服务运行中需要的被调服务
	InitCalleeService(req *InitCalleeServiceRequest) error
}

ConsumerAPI 主调端API方法

type GetAllInstancesRequest

type GetAllInstancesRequest struct {
	model.GetAllInstancesRequest
}

GetAllInstancesRequest 获取服务下所有实例的请求对象

type GetInstancesRequest

type GetInstancesRequest struct {
	model.GetInstancesRequest
}

GetInstancesRequest 获取多个服务的请求对象

type GetMeshConfigRequest

type GetMeshConfigRequest struct {
	model.GetMeshConfigRequest
}

获取网格规则请求

type GetMeshRequest

type GetMeshRequest struct {
	model.GetMeshRequest
}

获取网格规则请求

type GetOneInstanceRequest

type GetOneInstanceRequest struct {
	model.GetOneInstanceRequest
}

GetOneInstanceRequest 获取单个服务的请求对象

type GetServiceRuleRequest

type GetServiceRuleRequest struct {
	model.GetServiceRuleRequest
}

GetServiceRuleRequest 获取服务规则请求

type GetServicesRequest

type GetServicesRequest struct {
	model.GetServicesRequest
}

获取批量服务请求

type InitCalleeServiceRequest

type InitCalleeServiceRequest struct {
	model.InitCalleeServiceRequest
}

type InstanceDeRegisterRequest

type InstanceDeRegisterRequest struct {
	model.InstanceDeRegisterRequest
}

InstanceDeRegisterRequest 反注册服务请求

type InstanceHeartbeatRequest

type InstanceHeartbeatRequest struct {
	model.InstanceHeartbeatRequest
}

InstanceHeartbeatRequest 心跳上报请求

type InstanceRegisterRequest

type InstanceRegisterRequest struct {
	model.InstanceRegisterRequest
}

InstanceRegisterRequest 注册服务请求

type InstanceRequest

type InstanceRequest struct {
	//服务标识
	model.ServiceKey
	//实例ID
	InstanceId string

	IP   string
	Port uint16
}

实例请求

func (InstanceRequest) Validate

func (g InstanceRequest) Validate() error

校验实例请求对象

type LimitAPI

type LimitAPI interface {
	SDKOwner
	// 获取限流配额,一次接口只获取一个配额
	GetQuota(request QuotaRequest) (QuotaFuture, error)
	//销毁API,销毁后无法再进行调用
	Destroy()
}

限流相关的API相关接口

type Logger

type Logger log.Logger

别名类

func GetBaseLogger

func GetBaseLogger() Logger

获取基础日志对象

func GetDetectLogger

func GetDetectLogger() Logger

获取探测日志对象

func GetStatLogger

func GetStatLogger() Logger

获取统计日志对象

func GetStatReportLogger

func GetStatReportLogger() Logger

获取统计上报日志对象

type ProviderAPI

type ProviderAPI interface {
	SDKOwner
	// 同步注册服务,服务注册成功后会填充instance中的InstanceID字段
	// 用户可保持该instance对象用于反注册和心跳上报
	Register(instance *InstanceRegisterRequest) (*model.InstanceRegisterResponse, error)
	// 同步反注册服务
	Deregister(instance *InstanceDeRegisterRequest) error
	// 心跳上报
	Heartbeat(instance *InstanceHeartbeatRequest) error
	//销毁API,销毁后无法再进行调用
	Destroy()
}

ProviderAPI CL5服务端API的主接口

type QuotaFuture

type QuotaFuture interface {
	//标识分配是否结束
	Done() <-chan struct{}
	//获取分配结果
	Get() *model.QuotaResponse
	//释放资源,仅用于并发数限流的场景
	Release()
}

实时/延时分配future

type QuotaRequest

type QuotaRequest interface {
	//设置命名空间
	SetNamespace(string)
	//设置服务名
	SetService(string)
	//设置集群名
	SetCluster(string)
	//设置业务标签信息
	SetLabels(map[string]string)
	//设置单次请求超时时间
	SetTimeout(timeout time.Duration)
	//设置最大重试次数
	SetRetryCount(retryCount int)
}

配额查询请求

func NewQuotaRequest

func NewQuotaRequest() QuotaRequest

创建配额查询请求

type SDKContext

type SDKContext interface {
	/**
	 * @brief 销毁SDK上下文
	 */
	Destroy()
	/**
	 * @brief SDK上下文是否已经销毁
	 */
	IsDestroyed() bool
	/**
	 * @brief 获取全局配置信息
	 */
	GetConfig() config.Configuration
	/**
	 * @brief 获取插件列表
	 */
	GetPlugins() plugin.Manager
	/**
	 * @brief 获取执行引擎
	 */
	GetEngine() model.Engine

	/**
	 * @brief 获取值上下文
	 */
	GetValueContext() model.ValueContext
}

*

  • @brief SDK配置对象,每个API实例都会挂载一个context,包含:
  • 插件实例列表
  • 配置实例
  • 执行流程引擎,包括定时器等

func InitContextByConfig

func InitContextByConfig(cfg config.Configuration) (SDKContext, error)

InitContextByStream 通过配置对象新建上下文

func InitContextByFile

func InitContextByFile(path string) (SDKContext, error)

InitContextByFile 通过配置文件新建服务消费者配置

func InitContextByStream

func InitContextByStream(buf []byte) (SDKContext, error)

InitContextByStream 通过YAML流新建服务消费者配置

type SDKOwner

type SDKOwner interface {
	//获取SDK上下文
	SDKContext() SDKContext
}

获取SDK上下文接口

type ServiceCallResult

type ServiceCallResult struct {
	model.ServiceCallResult
}

ServiceCallResult 服务调用结果

type WatchServiceRequest

type WatchServiceRequest struct {
	model.WatchServiceRequest
}

WatchService req

Jump to

Keyboard shortcuts

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