model

package
v1.0.1-rc1 Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2024 License: Apache-2.0 Imports: 13 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// Down
	Down api.Status = 0
	// Up
	Up      api.Status = 1
	Unknown api.Status = 2
)
View Source
const (
	ApiTypeREST api.ApiType = 0 + iota // support for 1.0
	ApiTypeGRPC
	ApiTypeDUBBO
	ApiTypeIstioGRPC
)
View Source
const (
	METHOD_UNSPECIFIED = 0 + iota // (DEFAULT)
	GET
	HEAD
	POST
	PUT
	DELETE
	CONNECT
	OPTIONS
	TRACE
)
View Source
const (
	REST_VALUE      = "REST"
	GRPC_VALUE      = "GRPC"
	DUBBO_VALUE     = "DUBBO"
	ISTIOGRPC_VALUE = "ISTIO"
)

Variables

View Source
var (
	StatusName = map[int32]string{
		0: "Down",
		1: "Up",
		2: "Unknown",
	}

	StatusValue = map[string]int32{
		"Down":    0,
		"Up":      1,
		"Unknown": 2,
	}

	ApiTypeName = map[int32]string{
		0: REST_VALUE,
		1: GRPC_VALUE,
		2: DUBBO_VALUE,
	}

	ApiTypeValue = map[string]int32{
		REST_VALUE:      0,
		GRPC_VALUE:      1,
		DUBBO_VALUE:     2,
		ISTIOGRPC_VALUE: 3,
	}
)
View Source
var (
	// DiscoveryTypeName
	DiscoveryTypeName = map[DiscoveryType]string{
		Static:      "Static",
		StrictDNS:   "StrictDNS",
		LogicalDns:  "LogicalDns",
		EDS:         "EDS",
		OriginalDst: "OriginalDst",
	}

	// DiscoveryTypeValue
	DiscoveryTypeValue = map[string]DiscoveryType{
		"Static":      Static,
		"StrictDNS":   StrictDNS,
		"LogicalDns":  LogicalDns,
		"EDS":         EDS,
		"OriginalDst": OriginalDst,
	}
)
View Source
var (
	// ProtocolTypeName enum seq to protocol type name
	ProtocolTypeName = map[int32]string{
		0: "HTTP",
		1: "TCP",
		2: "UDP",
		3: "HTTPS",
		4: "GRPC",
		5: "HTTP2",
		6: "TRIPLE",
	}

	// ProtocolTypeValue protocol type name to enum seq
	ProtocolTypeValue = map[string]int32{
		"HTTP":   0,
		"TCP":    1,
		"UDP":    2,
		"HTTPS":  3,
		"GRPC":   4,
		"HTTP2":  5,
		"TRIPLE": 6,
	}
)
View Source
var (
	MatcherTypeName = map[int32]string{
		0: "Exact",
		1: "Prefix",
		2: "Suffix",
		3: "Regex",
	}

	MatcherTypeValue = map[string]int32{
		"Exact":  0,
		"Prefix": 1,
		"Suffix": 2,
		"Regex":  3,
	}
)
View Source
var ConsistentHashInitMap = map[LbPolicyType]ConsistentHashInitFunc{}

ConsistentHashInitMap stores the Init functions for consistent hash load balancing

View Source
var LbPolicyTypeValue = map[string]LbPolicyType{
	"Rand":          LoadBalancerRand,
	"RoundRobin":    LoadBalancerRoundRobin,
	"RingHashing":   LoadBalancerRingHashing,
	"MaglevHashing": LoadBalancerMaglevHashing,
}
View Source
var RequestMethodName = map[int32]string{
	0: "METHOD_UNSPECIFIED",
	1: "GET",
	2: "HEAD",
	3: "POST",
	4: "PUT",
	5: "DELETE",
	6: "CONNECT",
	7: "OPTIONS",
	8: "TRACE",
}
View Source
var RequestMethodValue = map[string]int32{
	"METHOD_UNSPECIFIED": 0,
	"GET":                1,
	"HEAD":               2,
	"POST":               3,
	"PUT":                4,
	"DELETE":             5,
	"CONNECT":            6,
	"OPTIONS":            7,
	"TRACE":              8,
}

Functions

This section is empty.

Types

type APIMetaConfig

type APIMetaConfig struct {
	Address       string `yaml:"address" json:"address,omitempty"`
	APIConfigPath string `default:"/pixiu/config/api" yaml:"api_config_path" json:"api_config_path,omitempty" mapstructure:"api_config_path"`
}

APIMetaConfig how to find api config, file or etcd etc.

type Adapter

type Adapter struct {
	ID      string                 `yaml:"id" json:"id"`
	Name    string                 `yaml:"name" json:"name"` // Name the adapter unique name
	Enabled string                 `yaml:"enabled" json:"enabled" default:"true"`
	Config  map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"` // Config adapter config
}

Adapter the adapter plugin for manage cluster or router

type Address

type Address struct {
	SocketAddress SocketAddress `yaml:"socket_address" json:"socket_address" mapstructure:"socket_address"`
	Name          string        `yaml:"name" json:"name" mapstructure:"name"`
}

Address the address

type ApiConfigSource

type ApiConfigSource struct {
	APIType        api.ApiType   `yaml:"omitempty" json:"omitempty"`
	APITypeStr     string        `yaml:"api_type" json:"api_type" mapstructure:"api_type"`
	ClusterName    []string      `yaml:"cluster_name" json:"cluster_name" mapstructure:"cluster_name"`
	RefreshDelay   string        `yaml:"refresh_delay" json:"refresh_delay" mapstructure:"refresh_delay"`
	RequestTimeout string        `yaml:"request_timeout" json:"request_timeout" mapstructure:"request_timeout"`
	GrpcServices   []GrpcService `yaml:"grpc_services" json:"grpc_services" mapstructure:"grpc_services"`
}

ApiConfigSource config the api info. compatible with envoy xDS API

	{
 "api_type": "...",
 "transport_api_version": "...",
 "cluster_names": [],
 "grpc_services": [],
 "refresh_delay": "{...}",
 "request_timeout": "{...}",
 "rate_limit_settings": "{...}",
 "set_node_on_first_message_only": "..."
	}

type Bootstrap

type Bootstrap struct {
	StaticResources  StaticResources   `yaml:"static_resources" json:"static_resources" mapstructure:"static_resources"`
	DynamicResources *DynamicResources `yaml:"dynamic_resources" json:"dynamic_resources" mapstructure:"dynamic_resources"`
	Metric           Metric            `yaml:"metric" json:"metric" mapstructure:"metric"`
	Node             *Node             `yaml:"node" json:"node" mapstructure:"node"`
	Trace            *TracerConfig     `yaml:"tracing" json:"tracing" mapstructure:"tracing"`
	Wasm             *WasmConfig       `yaml:"wasm" json:"wasm" mapstructure:"wasm"`
	Config           *ConfigCenter     `yaml:"config-center" json:"config-center" mapstructure:"config-center"`
	// Third party dependency
	Nacos *Nacos `yaml:"nacos" json:"nacos" mapstructure:"nacos"`
	Log   *Log   `yaml:"log" json:"log" mapstructure:"log"`
}

Bootstrap the door

func (*Bootstrap) ExistCluster

func (bs *Bootstrap) ExistCluster(name string) bool

ExistCluster

func (*Bootstrap) GetListeners

func (bs *Bootstrap) GetListeners() []*Listener

GetListeners

func (*Bootstrap) GetPprof

func (bs *Bootstrap) GetPprof() PprofConf

GetPprof

func (*Bootstrap) GetShutdownConfig

func (bs *Bootstrap) GetShutdownConfig() *ShutdownConfig

GetShutdownConfig

func (*Bootstrap) GetStaticListeners

func (bs *Bootstrap) GetStaticListeners() []*Listener

type ClusterConfig

type ClusterConfig struct {
	Name                 string              `yaml:"name" json:"name"` // Name the cluster unique name
	TypeStr              string              `yaml:"type" json:"type"` // Type the cluster discovery type string value
	Type                 DiscoveryType       `yaml:"-" json:"-"`       // Type the cluster discovery type
	EdsClusterConfig     EdsClusterConfig    `yaml:"eds_cluster_config" json:"eds_cluster_config" mapstructure:"eds_cluster_config"`
	LbStr                LbPolicyType        `yaml:"lb_policy" json:"lb_policy"`   // Lb the cluster select node used loadBalance policy
	ConsistentHash       ConsistentHash      `yaml:"consistent" json:"consistent"` // Consistent hash config info
	HealthChecks         []HealthCheckConfig `yaml:"health_checks" json:"health_checks"`
	Endpoints            []*Endpoint         `yaml:"endpoints" json:"endpoints"`
	PrePickEndpointIndex int
}

ClusterConfig a single upstream cluster

func (*ClusterConfig) CreateConsistentHash

func (c *ClusterConfig) CreateConsistentHash()

CreateConsistentHash creates consistent hashing algorithms for Load Balance.

func (*ClusterConfig) GetEndpoint

func (c *ClusterConfig) GetEndpoint(mustHealth bool) []*Endpoint

type Config

type Config struct {
	Listeners      []*Listener      `yaml:"listeners" json:"listeners" mapstructure:"listeners"`
	Clusters       []*ClusterConfig `yaml:"clusters" json:"clusters" mapstructure:"clusters"`
	Adapters       []*Adapter       `yaml:"adapters" json:"adapters" mapstructure:"adapters"`
	ShutdownConfig *ShutdownConfig  `yaml:"shutdown_config" json:"shutdown_config" mapstructure:"shutdown_config"`
	PprofConf      PprofConf        `yaml:"pprofConf" json:"pprofConf" mapstructure:"pprofConf"`
}

type ConfigCenter

type ConfigCenter struct {
	Type   string `json:"type,omitempty" yaml:"type"`
	Enable string `json:"enable" yaml:"enable"`
}

type ConfigSource

type ConfigSource struct {
	Path            string          `yaml:"path" json:"path" mapstructure:"path"`
	ApiConfigSource ApiConfigSource `yaml:"api_config_source" json:"api_config_source" mapstructure:"api_config_source"`
}

ConfigSource todo remove un-used

type ConsistentHash

type ConsistentHash struct {
	ReplicaNum      int   `yaml:"replica_num" json:"replica_num"`
	MaxVnodeNum     int32 `yaml:"max_vnode_num" json:"max_vnode_num"`
	MaglevTableSize int   `yaml:"maglev_table_size" json:"maglev_table_size"`
	Hash            LbConsistentHash
}

ConsistentHash methods include: RingHash, MaglevHash

type ConsistentHashInitFunc

type ConsistentHashInitFunc = func(ConsistentHash, []*Endpoint) LbConsistentHash

type CustomHealthCheck

type CustomHealthCheck struct {
	HealthCheckConfig
	Name   string
	Config interface{}
}

CustomHealthCheck

type DiscoveryType

type DiscoveryType int32

DiscoveryType

const (
	Static DiscoveryType = iota
	StrictDNS
	LogicalDns
	EDS
	OriginalDst
)

type DubboFilter

type DubboFilter struct {
	Name   string                 `yaml:"name" json:"name" mapstructure:"name"`
	Config map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"`
}

DubboFilter dubbo filter

type DubboProxyConnectionManagerConfig

type DubboProxyConnectionManagerConfig struct {
	RouteConfig  RouteConfiguration `yaml:"route_config" json:"route_config" mapstructure:"route_config"`
	DubboFilters []*DubboFilter     `yaml:"dubbo_filters" json:"dubbo_filters" mapstructure:"dubbo_filters"`
	TimeoutStr   string             `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
	Timeout      time.Duration      `yaml:"-" json:"-" mapstructure:"-"`
}

DubboProxyConnectionManagerConfig

type DynamicResources

type DynamicResources struct {
	LdsConfig *ApiConfigSource `yaml:"lds_config" json:"lds_config" mapstructure:"lds_config"`
	CdsConfig *ApiConfigSource `yaml:"cds_config" json:"cds_config" mapstructure:"cds_config"`
	AdsConfig *ApiConfigSource `yaml:"ads_config" json:"ads_config" mapstructure:"ads_config"`
}

DynamicResources config the dynamic resource source

	"lds_config": "{...}", # config lister load source
	"cds_config": "{...}", # config cluster load source
	"ads_config": "{...}"
 "ada_config": "{...}" # config adaptor load source

type EdsClusterConfig

type EdsClusterConfig struct {
	EdsConfig   ConfigSource `yaml:"eds_config" json:"eds_config" mapstructure:"eds_config"`
	ServiceName string       `yaml:"service_name" json:"service_name" mapstructure:"service_name"`
}

EdsClusterConfig todo remove un-used EdsClusterConfig

type EncoderConfig

type EncoderConfig struct {
	MessageKey       string `json:"messageKey" yaml:"messageKey"`
	LevelKey         string `json:"levelKey" yaml:"levelKey"`
	TimeKey          string `json:"timeKey" yaml:"timeKey"`
	NameKey          string `json:"nameKey" yaml:"nameKey"`
	CallerKey        string `json:"callerKey" yaml:"callerKey"`
	FunctionKey      string `json:"functionKey" yaml:"functionKey"`
	StacktraceKey    string `json:"stacktraceKey" yaml:"stacktraceKey"`
	SkipLineEnding   bool   `json:"skipLineEnding" yaml:"skipLineEnding"`
	LineEnding       string `json:"lineEnding" yaml:"lineEnding"`
	EncodeLevel      string `json:"levelEncoder" yaml:"levelEncoder"`
	EncodeTime       string `json:"timeEncoder" yaml:"timeEncoder"`
	EncodeDuration   string `json:"durationEncoder" yaml:"durationEncoder"`
	EncodeCaller     string `json:"callerEncoder" yaml:"callerEncoder"`
	EncodeName       string `json:"nameEncoder" yaml:"nameEncoder"`
	ConsoleSeparator string `json:"consoleSeparator" yaml:"consoleSeparator"`
}

type Endpoint

type Endpoint struct {
	ID        string            `yaml:"ID" json:"ID"`                                                       // ID indicate one endpoint
	Name      string            `yaml:"name" json:"name"`                                                   // Name the cluster unique name
	Address   SocketAddress     `yaml:"socket_address" json:"socket_address" mapstructure:"socket_address"` // Address socket address
	Metadata  map[string]string `yaml:"meta" json:"meta"`                                                   // Metadata extra info such as label or other meta data
	UnHealthy bool
}

Endpoint

func (Endpoint) GetHost

func (e Endpoint) GetHost() string

type FilterChain

type FilterChain struct {
	Filters []NetworkFilter `yaml:"filters" json:"filters" mapstructure:"filters"`
}

FilterChain filter chain

type FilterChainMatch

type FilterChainMatch struct {
	Domains []string `yaml:"domains" json:"domains" mapstructure:"domains"`
}

FilterChainMatch

type GRPCConnectionManagerConfig

type GRPCConnectionManagerConfig struct {
	RouteConfig RouteConfiguration `yaml:"route_config" json:"route_config" mapstructure:"route_config"`
	TimeoutStr  string             `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
	Timeout     time.Duration      `yaml:"-" json:"-" mapstructure:"-"`
}

GRPCConnectionManagerConfig

type GrpcHealthCheck

type GrpcHealthCheck struct {
	HealthCheckConfig
	ServiceName string
	Authority   string
}

GrpcHealthCheck

type GrpcService

type GrpcService struct {
	Timeout         string        `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
	InitialMetadata []HeaderValue `yaml:"initial_metadata" json:"initial_metadata" mapstructure:"initial_metadata"`
}

GrpcService define grpc service context

type HTTPFilter

type HTTPFilter struct {
	Name   string                 `yaml:"name" json:"name" mapstructure:"name"`
	Config map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"`
}

HTTPFilter http filter

type HeaderMatcher

type HeaderMatcher struct {
	Name   string   `yaml:"name" json:"name" mapstructure:"name"`
	Values []string `yaml:"values" json:"values" mapstructure:"values"`
	Regex  bool     `yaml:"regex" json:"regex" mapstructure:"regex"`
	// contains filtered or unexported fields
}

HeaderMatcher include Name header key, Values header value, Regex regex value

func (*HeaderMatcher) MatchValues

func (hm *HeaderMatcher) MatchValues(dst string) bool

MatchValues match values in header, including regex type

func (*HeaderMatcher) SetValueRegex

func (hm *HeaderMatcher) SetValueRegex(regex string) error

SetValueRegex compile the regex, disable regex if it failed

type HeaderValue

type HeaderValue struct {
	Key   string `yaml:"key" json:"key" mapstructure:"key"`
	Value string `yaml:"value" json:"value" mapstructure:"value"`
}

HeaderValue

type HeaderValueOption

type HeaderValueOption struct {
	Header []HeaderValue `yaml:"header" json:"header" mapstructure:"header"`
	Append []bool        `yaml:"append" json:"append" mapstructure:"append"`
}

HeaderValueOption

type HealthCheckConfig

type HealthCheckConfig struct {
	Protocol            string                 `json:"protocol,omitempty"`
	TimeoutConfig       string                 `json:"timeout,omitempty"`
	IntervalConfig      string                 `json:"interval,omitempty"`
	InitialDelaySeconds string                 `json:"initial_delay_seconds,omitempty"`
	HealthyThreshold    uint32                 `json:"healthy_threshold,omitempty"`
	UnhealthyThreshold  uint32                 `json:"unhealthy_threshold,omitempty"`
	ServiceName         string                 `json:"service_name,omitempty"`
	SessionConfig       map[string]interface{} `json:"check_config,omitempty"`
	CommonCallbacks     []string               `json:"common_callbacks,omitempty"`
}

HealthCheck

type Http

type Http struct {
	Name   string      `yaml:"name"`
	Config interface{} `yaml:"config"`
}

Tracing

type HttpConfig

type HttpConfig struct {
	IdleTimeoutStr  string `yaml:"idle_timeout" json:"idle_timeout" mapstructure:"idle_timeout"`
	ReadTimeoutStr  string `json:"read_timeout,omitempty" yaml:"read_timeout,omitempty" mapstructure:"read_timeout"`
	WriteTimeoutStr string `json:"write_timeout,omitempty" yaml:"write_timeout,omitempty" mapstructure:"write_timeout"`
	MaxHeaderBytes  int    `json:"max_header_bytes,omitempty" yaml:"max_header_bytes,omitempty" mapstructure:"max_header_bytes"`
}

HttpConfig the http config

func MapInStruct

func MapInStruct(cfg interface{}) *HttpConfig

type HttpConnectionManagerConfig

type HttpConnectionManagerConfig struct {
	RouteConfig       RouteConfiguration `yaml:"route_config" json:"route_config" mapstructure:"route_config"`
	HTTPFilters       []*HTTPFilter      `yaml:"http_filters" json:"http_filters" mapstructure:"http_filters"`
	ServerName        string             `yaml:"server_name" json:"server_name" mapstructure:"server_name"`
	IdleTimeoutStr    string             `yaml:"idle_timeout" json:"idle_timeout" mapstructure:"idle_timeout"`
	GenerateRequestID bool               `yaml:"generate_request_id" json:"generate_request_id" mapstructure:"generate_request_id"`
	TimeoutStr        string             `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
	Timeout           time.Duration      `yaml:"-" json:"-" mapstructure:"-"`
}

HttpConnectionManagerConfig

type HttpHealthCheck

type HttpHealthCheck struct {
	HealthCheckConfig
	Host             string
	Path             string
	UseHttp2         bool
	ExpectedStatuses int64
}

HttpHealthCheck

type LbConsistentHash

type LbConsistentHash interface {
	Hash(key string) uint32
	Add(host string)
	Get(key string) (string, error)
	GetHash(key uint32) (string, error)
	Remove(host string) bool
}

LbConsistentHash supports consistent hash load balancing

type LbPolicy

type LbPolicy interface {
	GenerateHash() string
}

type LbPolicyType

type LbPolicyType string

LbPolicyType the load balance policy enum

const (
	LoadBalancerRand          LbPolicyType = "Rand"
	LoadBalancerRoundRobin    LbPolicyType = "RoundRobin"
	LoadBalancerRingHashing   LbPolicyType = "RingHashing"
	LoadBalancerMaglevHashing LbPolicyType = "MaglevHashing"
)

type Listener

type Listener struct {
	Name        string       `yaml:"name" json:"name" mapstructure:"name"`
	Address     Address      `yaml:"address" json:"address" mapstructure:"address"`
	ProtocolStr string       `default:"http" yaml:"protocol_type" json:"protocol_type" mapstructure:"protocol_type"`
	Protocol    ProtocolType `default:"http" yaml:"omitempty" json:"omitempty"`
	FilterChain FilterChain  `yaml:"filter_chains" json:"filter_chains" mapstructure:"filter_chains"`
	Config      interface{}  `yaml:"config" json:"config" mapstructure:"config"`
}

Listener is a server, listener a port

type Log

type Log struct {
	Level             string                 `json:"level" yaml:"level"`
	Development       bool                   `json:"development" yaml:"development"`
	DisableCaller     bool                   `json:"disableCaller" yaml:"disableCaller"`
	DisableStacktrace bool                   `json:"disableStacktrace" yaml:"disableStacktrace"`
	Sampling          SamplingConfig         `json:"sampling" yaml:"sampling"`
	Encoding          string                 `json:"encoding" yaml:"encoding"`
	EncoderConfig     EncoderConfig          `json:"encoderConfig" yaml:"encoderConfig"`
	OutputPaths       []string               `json:"outputPaths" yaml:"outputPaths"`
	ErrorOutputPaths  []string               `json:"errorOutputPaths" yaml:"errorOutputPaths"`
	InitialFields     map[string]interface{} `json:"initialFields" yaml:"initialFields"`
}

func (*Log) Build

func (l *Log) Build() *zap.Config

type MatcherType

type MatcherType int32

MatcherType matcher type

const (
	Exact MatcherType = 0 + iota
	Prefix
	Suffix
	Regex
)

type Metadata

type Metadata struct {
	Info map[string]MetadataValue
}

type MetadataValue

type MetadataValue interface{}

type Metric

type Metric struct {
	Enable         bool `yaml:"enable" json:"enable"`
	PrometheusPort int  `yaml:"prometheus_port" json:"prometheus_port"`
}

Metirc config for otel metric.

type Nacos

type Nacos struct {
	ServerConfigs []*NacosServerConfig `yaml:"server_configs" json:"server-configs" mapstructure:"server_configs"`
	ClientConfig  *NacosClientConfig   `yaml:"client-config" json:"client-config" mapstructure:"client_config"`
	DataId        string               `yaml:"data-id" json:"data-id" mapstructure:"data_id" default:"pixiu.yaml"`
	Group         string               `yaml:"group" json:"group" mapstructure:"group" default:"DEFAULT_GROUP"`
}

type NacosClientConfig

type NacosClientConfig struct {
	TimeoutMs            uint64 `json:"timeout_ms,omitempty" yaml:"timeout_ms" mapstructure:"timeout_ms"`                                        // timeout for requesting Nacos server, default value is 10000ms
	ListenInterval       uint64 `json:"listen_interval,omitempty" yaml:"listen_interval" mapstructure:"listen_interval"`                         // Deprecated
	BeatInterval         int64  `json:"beat_interval,omitempty" yaml:"beat_interval" mapstructure:"beat_interval"`                               // the time interval for sending beat to server,default value is 5000ms
	NamespaceId          string `json:"namespace_id,omitempty" yaml:"namespace_id" mapstructure:"namespace_id"`                                  // the namespaceId of Nacos.When namespace is public, fill in the blank string here.
	AppName              string `json:"app_name,omitempty" yaml:"app_name" mapstructure:"app_name"`                                              // the appName
	Endpoint             string `json:"endpoint,omitempty" yaml:"endpoint" mapstructure:"endpoint"`                                              // the endpoint for get Nacos server addresses
	RegionId             string `json:"region_id,omitempty" yaml:"region_id" mapstructure:"region_id"`                                           // the regionId for kms
	AccessKey            string `json:"access_key,omitempty" yaml:"access_key" mapstructure:"access_key"`                                        // the AccessKey for kms
	SecretKey            string `json:"secret_key,omitempty" yaml:"secret_key" mapstructure:"secret_key"`                                        // the SecretKey for kms
	OpenKMS              bool   `json:"open_kms,omitempty" yaml:"open_kms" mapstructure:"open_kms"`                                              // it's to open kms,default is false. https://help.aliyun.com/product/28933.html
	CacheDir             string `json:"cache_dir,omitempty" yaml:"cache_dir" mapstructure:"cache_dir" default:"/tmp/nacos/cache"`                // the directory for persist nacos service info,default value is current path
	UpdateThreadNum      int    `json:"update_thread_num,omitempty" yaml:"update_thread_num" mapstructure:"update_thread_num"`                   // the number of gorutine for update nacos service info,default value is 20
	NotLoadCacheAtStart  bool   `json:"not_load_cache_at_start,omitempty" yaml:"not_load_cache_at_start" mapstructure:"not_load_cache_at_start"` // not to load persistent nacos service info in CacheDir at start time
	UpdateCacheWhenEmpty bool   `json:"update_cache_when_empty,omitempty" yaml:"update_cache_when_empty" mapstructure:"update_cache_when_empty"` // update cache when get empty service instance from server
	Username             string `json:"username,omitempty" yaml:"username" mapstructure:"username"`                                              // the username for nacos auth
	Password             string `json:"password,omitempty" yaml:"password" mapstructure:"password"`                                              // the password for nacos auth
	LogDir               string `json:"log_dir,omitempty" yaml:"log_dir" mapstructure:"log_dir" default:"/tmp/nacos/log"`                        // the directory for log, default is current path
	LogLevel             string `json:"log_level,omitempty" yaml:"log_level" mapstructure:"log_level"`                                           // the level of log, it's must be debug,info,warn,error, default value is info
	//LogSampling          *ClientLogSamplingConfig // the sampling config of log
	ContextPath string `json:"context_path,omitempty" yaml:"context_path" mapstructure:"context_path"` // the nacos server contextpath

}

type NacosServerConfig

type NacosServerConfig struct {
	IpAddr      string `json:"ip_addr,omitempty" yaml:"ip_addr" mapstructure:"ip_addr"`
	Port        uint64 `json:"port,omitempty" yaml:"port" mapstructure:"port"`
	Scheme      string `json:"scheme" yaml:"scheme" mapstructure:"scheme"`
	ContextPath string `json:"contextPath" yaml:"contextPath" mapstructure:"contextPath"`
}

type NetworkFilter

type NetworkFilter struct {
	Name   string                 `yaml:"name" json:"name" mapstructure:"name"`       // Name filter name unique
	Config map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"` // Config filter config
}

NetworkFilter core struct, filter is extend by user

type Node

type Node struct {
	Cluster string `yaml:"cluster" json:"cluster" mapstructure:"cluster"`
	Id      string `yaml:"id" json:"id" mapstructure:"id"`
}

Node node info for dynamic identifier

type PprofConf

type PprofConf struct {
	Enable  bool    `yaml:"enable" json:"enable" mapstructure:"enable" default:"false"`
	Address Address `yaml:"address" json:"address" mapstructure:"address"`
}

type ProtocolType

type ProtocolType int32

ProtocolType protocol type enum

const (
	ProtocolTypeHTTP ProtocolType = 0 + iota // support for 1.0
	ProtocolTypeTCP
	ProtocolTypeUDP
	ProtocolTypeHTTPS
	ProtocolTypeGRPC
	ProtocolTypeHTTP2
	ProtocolTypeTriple
)

type Registry

type Registry struct {
	Protocol     string `default:"zookeeper" yaml:"protocol" json:"protocol"`
	Timeout      string `yaml:"timeout" json:"timeout"`
	Address      string `yaml:"address" json:"address"`
	Username     string `yaml:"username" json:"username"`
	Password     string `yaml:"password" json:"password"`
	Group        string `default:"DEFAULT_GROUP"  yaml:"group" json:"group"`
	Namespace    string `yaml:"namespace" json:"namespace"`
	RegistryType string `default:"interface" yaml:"registry_type" json:"registry_type"` // "application", "interface"
}

Registry remote registry where dubbo apis are registered. Here comes a problem, dubbo protocol proxy does not use the same registry as pixiu, so any modification to the config, should apply to both `pkg/client/dubbo/dubbo.go` and `pkg\adapter\dubboregistry\registry`

type RemoteConfig

type RemoteConfig struct {
	Protocol string `yaml:"protocol" json:"protocol" default:"zookeeper"`
	Timeout  string `yaml:"timeout" json:"timeout" default:"10s"`
	Address  string `yaml:"address" json:"address"`
	Username string `yaml:"username" json:"username"`
	Password string `yaml:"password" json:"password"`
	Group    string `yaml:"group" json:"group"`
	Root     string `yaml:"root" json:"root" default:"/services"`
}

RemoteConfig remote server info which offer server discovery or k/v or distribution function

type RequestMethod

type RequestMethod int32

type RouteAction

type RouteAction struct {
	Cluster                     string `yaml:"cluster" json:"cluster" mapstructure:"cluster"`
	ClusterNotFoundResponseCode int    `yaml:"cluster_not_found_response_code" json:"cluster_not_found_response_code" mapstructure:"cluster_not_found_response_code"`
}

RouteAction match route should do

type RouteConfiguration

type RouteConfiguration struct {
	RouteTrie trie.Trie `yaml:"-" json:"-" mapstructure:"-"`
	Routes    []*Router `yaml:"routes" json:"routes" mapstructure:"routes"`
	Dynamic   bool      `yaml:"dynamic" json:"dynamic" mapstructure:"dynamic"`
}

RouteConfiguration

func (*RouteConfiguration) Route

func (rc *RouteConfiguration) Route(req *stdHttp.Request) (*RouteAction, error)

func (*RouteConfiguration) RouteByPathAndMethod

func (rc *RouteConfiguration) RouteByPathAndMethod(path, method string) (*RouteAction, error)

type Router

type Router struct {
	ID    string      `yaml:"id" json:"id" mapstructure:"id"`
	Match RouterMatch `yaml:"match" json:"match" mapstructure:"match"`
	Route RouteAction `yaml:"route" json:"route" mapstructure:"route"`
}

Router struct

func (*Router) String

func (r *Router) String() string

type RouterMatch

type RouterMatch struct {
	Prefix string `yaml:"prefix" json:"prefix" mapstructure:"prefix"`
	Path   string `yaml:"path" json:"path" mapstructure:"path"`
	// Regex   string          `yaml:"regex" json:"regex" mapstructure:"regex"` TODO: next version
	Methods []string        `yaml:"methods" json:"methods" mapstructure:"methods"`
	Headers []HeaderMatcher `yaml:"headers,omitempty" json:"headers,omitempty" mapstructure:"headers"`
}

RouterMatch

func NewRouterMatchPrefix

func NewRouterMatchPrefix(name string) RouterMatch

func (*RouterMatch) MatchHeader

func (rm *RouterMatch) MatchHeader(req *stdHttp.Request) bool

MatchHeader used when there's only headers to match

type Sampler

type Sampler struct {
	Type  string  `yaml:"type" json:"type" mapstructure:"type"`
	Param float64 `yaml:"param" json:"param" mapstructure:"param"`
}

Sampler policy

type SamplingConfig

type SamplingConfig struct {
	Initial    int                                           `json:"initial" yaml:"initial"`
	Thereafter int                                           `json:"thereafter" yaml:"thereafter"`
	Hook       func(zapcore.Entry, zapcore.SamplingDecision) `json:"-" yaml:"-"`
}

type ShutdownConfig

type ShutdownConfig struct {
	Timeout      string `default:"0s" yaml:"timeout" json:"timeout,omitempty"`
	StepTimeout  string `default:"0s" yaml:"step_timeout" json:"step_timeout,omitempty"`
	RejectPolicy string `default:"immediacy" yaml:"reject_policy" json:"reject_policy,omitempty"`
}

ShutdownConfig how to shutdown server.

func (*ShutdownConfig) GetTimeout

func (sdc *ShutdownConfig) GetTimeout() time.Duration

GetTimeoutOfShutdown

type SocketAddress

type SocketAddress struct {
	Address      string   `default:"0.0.0.0" yaml:"address" json:"address" mapstructure:"address"`
	Port         int      `default:"8881" yaml:"port" json:"port" mapstructure:"port"`
	ResolverName string   `yaml:"resolver_name" json:"resolver_name" mapstructure:"resolver_name"`
	Domains      []string `yaml:"domains" json:"domains" mapstructure:"domains"`
	CertsDir     string   `yaml:"certs_dir" json:"certs_dir" mapstructure:"certs_dir"`
}

SocketAddress specify either a logical or physical address and port, which are used to tell server where to bind/listen, connect to upstream and find management servers

func (SocketAddress) GetAddress

func (a SocketAddress) GetAddress() string

type StaticResources

type StaticResources struct {
	Listeners      []*Listener      `yaml:"listeners" json:"listeners" mapstructure:"listeners"`
	Clusters       []*ClusterConfig `yaml:"clusters" json:"clusters" mapstructure:"clusters"`
	Adapters       []*Adapter       `yaml:"adapters" json:"adapters" mapstructure:"adapters"`
	ShutdownConfig *ShutdownConfig  `yaml:"shutdown_config" json:"shutdown_config" mapstructure:"shutdown_config"`
	PprofConf      PprofConf        `yaml:"pprofConf" json:"pprofConf" mapstructure:"pprofConf"`
}

StaticResources

type StringMatcher

type StringMatcher struct {
	Matcher MatcherType
}

StringMatcher matcher string

func (*StringMatcher) Match

func (sm *StringMatcher) Match() (bool, error)

Match

type TimeoutConfig

type TimeoutConfig struct {
	ConnectTimeoutStr string `default:"5s" yaml:"connect_timeout" json:"connect_timeout,omitempty"` // ConnectTimeout timeout for connect to cluster node
	RequestTimeoutStr string `default:"10s" yaml:"request_timeout" json:"request_timeout,omitempty"`
}

TimeoutConfig the config of ConnectTimeout and RequestTimeout

type TracerConfig

type TracerConfig struct {
	Name        string                 `yaml:"name" json:"name" mapstructure:"name"`
	ServiceName string                 `yaml:"serviceName" json:"serviceName" mapstructure:"serviceName"`
	Sampler     Sampler                `yaml:"sampler" json:"sampler" mapstructure:"sampler"`
	Config      map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"`
}

TracerConfig inclueds detail information about the exporter

type Tracing

type Tracing struct {
	Http Http   `yaml:"http" json:"http,omitempty"`
	URL  string `yaml:"url" json:"url,omitempty"`
	Type string `yaml:"type" json:"type,omitempty"`
}

Tracing

type WasmConfig

type WasmConfig struct {
	Services []WasmService `yaml:"services" json:"services" mapstructure:"services"`
}

WasmConfig contains all services' config.

type WasmService

type WasmService struct {
	Name   string                 `yaml:"name" json:"name" mapstructure:"name"`
	Config map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"`
}

WasmService includes all information about the specific application.

Jump to

Keyboard shortcuts

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