Documentation ¶
Overview ¶
Copyright 2022 SphereEx Authors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
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.
Index ¶
- Constants
- func GetDaemonConfig(ctx *gin.Context)
- func GetProxyConfig(ctx *gin.Context)
- func Handler() http.Handler
- type AdminConfig
- type AdminConfigBuilder
- type App
- type AppBuilder
- func (b *AppBuilder) Build() App
- func (b *AppBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *AppBuilder
- func (b *AppBuilder) SetQoSClaims(qcs []v1alpha1.QoSClaim) *AppBuilder
- func (b *AppBuilder) SetTrafficStrategies(tses []v1alpha1.TrafficStrategy) *AppBuilder
- func (b *AppBuilder) SetVirtualDatabase(vdb v1alpha1.VirtualDatabase) *AppBuilder
- type CircuitBreak
- type ConcurrencyControl
- type Config
- type DatabaseStrategy
- type DatabaseTableStrategy
- type Endpoint
- type GlobalConfig
- type MasterHighAvailablity
- type MySQLConfig
- type MySQLConfigBuilder
- type MySQLNode
- type NodeGroupConfig
- type NodeGroupConfigBuilder
- type NodeGroupMember
- type PisaDaemonConfig
- type PisaDaemonConfigBuilder
- type PisaProxyConfig
- type PisaProxyConfigBuilder
- func (b *PisaProxyConfigBuilder) Build() *PisaProxyConfig
- func (b *PisaProxyConfigBuilder) SetAdminConfigBuilder(builder *AdminConfigBuilder) *PisaProxyConfigBuilder
- func (b *PisaProxyConfigBuilder) SetMySQLConfigBuilder(builder *MySQLConfigBuilder) *PisaProxyConfigBuilder
- func (b *PisaProxyConfigBuilder) SetNodeGroupConfigBuilder(builder *NodeGroupConfigBuilder) *PisaProxyConfigBuilder
- func (b *PisaProxyConfigBuilder) SetProxyConfigBuilder(builder *ProxyConfigBuilder) *PisaProxyConfigBuilder
- type Plugin
- type Proxy
- type ProxyBuilder
- func (b *ProxyBuilder) Build() *Proxy
- func (b *ProxyBuilder) SetDataShards(shard v1alpha1.DataShard) *ProxyBuilder
- func (b *ProxyBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *ProxyBuilder
- func (b *ProxyBuilder) SetTrafficStrategy(ts v1alpha1.TrafficStrategy) *ProxyBuilder
- func (b *ProxyBuilder) SetVirtualDatabaseService(svc v1alpha1.VirtualDatabaseService) *ProxyBuilder
- type ProxyConfig
- type ProxyConfigBuilder
- type QoSClassKind
- type QoSGroup
- type ReadWriteDiscovery
- type ReadWriteSplitting
- type ReadWriteSplittingDynamic
- type ReadWriteSplittingRule
- type ReadWriteSplittingStatic
- type Service
- type ServiceBuilder
- func (b *ServiceBuilder) Build() Service
- func (b *ServiceBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *ServiceBuilder
- func (b *ServiceBuilder) SetQoSClaim(qc v1alpha1.QoSClaim) *ServiceBuilder
- func (b *ServiceBuilder) SetTrafficStrategy(ts v1alpha1.TrafficStrategy) *ServiceBuilder
- func (b *ServiceBuilder) SetVirtualDatabaseService(vsvc v1alpha1.VirtualDatabaseService) *ServiceBuilder
- type Sharding
- type SimpleLoadBalance
- type TableStrategy
Constants ¶
const ( ReadWriteSplittingRoleReadWrite = "readwrite" ReadWriteSplittingRoleRead = "read" DatabaseEndpointRoleKey = "database-mesh.io/role" DefaultLoadBalanceWeight = 1 )
const ( QoSClassKindGuaranteed = "guaranteed" QoSClassKindBurstable = "burstable" QoSClassKindBestEffort = "besteffort" )
Variables ¶
This section is empty.
Functions ¶
func GetDaemonConfig ¶
func GetProxyConfig ¶
Types ¶
type AdminConfig ¶
type AdminConfigBuilder ¶
type AdminConfigBuilder struct {
// contains filtered or unexported fields
}
func NewAdminConfigBuilder ¶
func NewAdminConfigBuilder() *AdminConfigBuilder
func (*AdminConfigBuilder) Build ¶
func (b *AdminConfigBuilder) Build() *AdminConfig
func (*AdminConfigBuilder) SetHost ¶
func (b *AdminConfigBuilder) SetHost(host string) *AdminConfigBuilder
func (*AdminConfigBuilder) SetLoglevel ¶
func (b *AdminConfigBuilder) SetLoglevel(loglevel string) *AdminConfigBuilder
Need to add loglevel to env ?
func (*AdminConfigBuilder) SetPort ¶
func (b *AdminConfigBuilder) SetPort(port uint32) *AdminConfigBuilder
type AppBuilder ¶
type AppBuilder struct { VirtualDatabase v1alpha1.VirtualDatabase TrafficStrategies []v1alpha1.TrafficStrategy DatabaseEndpoints []v1alpha1.DatabaseEndpoint QoSClaims []v1alpha1.QoSClaim }
func NewAppBuilder ¶
func NewAppBuilder() *AppBuilder
func (*AppBuilder) Build ¶
func (b *AppBuilder) Build() App
func (*AppBuilder) SetDatabaseEndpoints ¶
func (b *AppBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *AppBuilder
func (*AppBuilder) SetQoSClaims ¶
func (b *AppBuilder) SetQoSClaims(qcs []v1alpha1.QoSClaim) *AppBuilder
func (*AppBuilder) SetTrafficStrategies ¶
func (b *AppBuilder) SetTrafficStrategies(tses []v1alpha1.TrafficStrategy) *AppBuilder
func (*AppBuilder) SetVirtualDatabase ¶
func (b *AppBuilder) SetVirtualDatabase(vdb v1alpha1.VirtualDatabase) *AppBuilder
type CircuitBreak ¶
type CircuitBreak struct {
Regex []string `json:"regex"`
}
CircuitBreak works with regular expressions. SQL statements that conform to regular expressions will be denied.
type ConcurrencyControl ¶
type ConcurrencyControl struct { Regex []string `json:"regex"` Duration time.Duration `json:"duration"` MaxConcurrency int `json:"max_concurrency"` }
ConcurrencyControl The conversion used for json key is defined here for kubernetes/types.go MaxConcurrency key is maxConcurrency. We need to convert it to max_concurrency to fit the pisa-proxy's configuration format FIXME: A better way to convert
type DatabaseStrategy ¶
type DatabaseTableStrategy ¶
type DatabaseTableStrategy struct { TableStrategy DatabaseStrategy }
type GlobalConfig ¶
type MasterHighAvailablity ¶
type MasterHighAvailablity struct { Type string `json:"type"` User string `json:"user"` Password string `json:"password"` MonitorInterval uint64 `json:"monitor_period"` ConnectInterval uint64 `json:"connect_period"` ConnectTimeout uint64 `json:"connect_timeout"` ConnectMaxFailures uint64 `json:"connect_failure_threshold"` PingInterval uint64 `json:"ping_period"` PingTimeout uint64 `json:"ping_timeout"` PingMaxFailures uint64 `json:"ping_failure_threshold"` ReplicationLagInterval uint64 `json:"replication_lag_period"` ReplicationLagTimeout uint64 `json:"replication_lag_timeout"` ReplicationLagMaxFailures uint64 `json:"replication_lag_failure_threshold"` MaxReplicationLag uint64 `json:"max_replication_lag"` ReadOnlyInterval uint64 `json:"read_only_period"` ReadOnlyTimeout uint64 `json:"read_only_timeout"` ReadOnlyMaxFailures uint64 `json:"read_only_failure_threshold"` }
type MySQLConfig ¶
type MySQLConfig struct {
Nodes []MySQLNode `json:"node"`
}
type MySQLConfigBuilder ¶
type MySQLConfigBuilder struct { VirtualDatabaseService v1alpha1.VirtualDatabaseService TrafficStrategy v1alpha1.TrafficStrategy DatabaseEndpoints []v1alpha1.DatabaseEndpoint }
func NewMySQLConfigBuilder ¶
func NewMySQLConfigBuilder() *MySQLConfigBuilder
func (*MySQLConfigBuilder) Build ¶
func (b *MySQLConfigBuilder) Build() *MySQLConfig
func (*MySQLConfigBuilder) SetDatabaseEndpoints ¶
func (b *MySQLConfigBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *MySQLConfigBuilder
type MySQLNode ¶
type MySQLNode struct { Name string `json:"name"` Db string `json:"db"` User string `json:"user"` Password string `json:"password"` Host string `json:"host"` Port uint32 `json:"port"` Weight int `json:"weight"` Role string `json:"role"` }
Node describe mysql node
func BuildMySQLNodesFromDatabaseEndpoints ¶
func BuildMySQLNodesFromDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) []MySQLNode
type NodeGroupConfig ¶
type NodeGroupConfig struct {
Members []NodeGroupMember `json:"member"`
}
type NodeGroupConfigBuilder ¶
type NodeGroupConfigBuilder struct { DataShards v1alpha1.DataShard DatabaseEndpoints []v1alpha1.DatabaseEndpoint }
func NewNodeGroupConfigBuilder ¶
func NewNodeGroupConfigBuilder() *NodeGroupConfigBuilder
func (*NodeGroupConfigBuilder) Build ¶
func (b *NodeGroupConfigBuilder) Build() *NodeGroupConfig
func (*NodeGroupConfigBuilder) SetDataShards ¶
func (b *NodeGroupConfigBuilder) SetDataShards(ds v1alpha1.DataShard) *NodeGroupConfigBuilder
func (*NodeGroupConfigBuilder) SetDatabaseEndpoints ¶
func (b *NodeGroupConfigBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *NodeGroupConfigBuilder
type NodeGroupMember ¶
type PisaDaemonConfig ¶
type PisaDaemonConfig struct { // Global GlobalConfig `json:"global"` Apps []App `json:"app"` }
type PisaDaemonConfigBuilder ¶
type PisaDaemonConfigBuilder struct {
AppBuilders []*AppBuilder
}
func NewPisaDaemonConfigBuilder ¶
func NewPisaDaemonConfigBuilder() *PisaDaemonConfigBuilder
func (*PisaDaemonConfigBuilder) Build ¶
func (b *PisaDaemonConfigBuilder) Build() *PisaDaemonConfig
func (*PisaDaemonConfigBuilder) SetAppBuilders ¶
func (b *PisaDaemonConfigBuilder) SetAppBuilders(bs []*AppBuilder) *PisaDaemonConfigBuilder
type PisaProxyConfig ¶
type PisaProxyConfig struct { Admin AdminConfig `json:"admin"` MySQL MySQLConfig `json:"mysql"` Proxy ProxyConfig `json:"proxy"` NodeGroup NodeGroupConfig `json:"node_group,omitempty"` }
type PisaProxyConfigBuilder ¶
type PisaProxyConfigBuilder struct { AdminConfigBuilder *AdminConfigBuilder MySQLConfigBuilder *MySQLConfigBuilder ProxyConfigBuilder *ProxyConfigBuilder NodeGroupConfigBuilder *NodeGroupConfigBuilder }
func NewPisaProxyConfigBuilder ¶
func NewPisaProxyConfigBuilder() *PisaProxyConfigBuilder
func (*PisaProxyConfigBuilder) Build ¶
func (b *PisaProxyConfigBuilder) Build() *PisaProxyConfig
func (*PisaProxyConfigBuilder) SetAdminConfigBuilder ¶
func (b *PisaProxyConfigBuilder) SetAdminConfigBuilder(builder *AdminConfigBuilder) *PisaProxyConfigBuilder
func (*PisaProxyConfigBuilder) SetMySQLConfigBuilder ¶
func (b *PisaProxyConfigBuilder) SetMySQLConfigBuilder(builder *MySQLConfigBuilder) *PisaProxyConfigBuilder
func (*PisaProxyConfigBuilder) SetNodeGroupConfigBuilder ¶
func (b *PisaProxyConfigBuilder) SetNodeGroupConfigBuilder(builder *NodeGroupConfigBuilder) *PisaProxyConfigBuilder
func (*PisaProxyConfigBuilder) SetProxyConfigBuilder ¶
func (b *PisaProxyConfigBuilder) SetProxyConfigBuilder(builder *ProxyConfigBuilder) *PisaProxyConfigBuilder
type Plugin ¶
type Plugin struct { CircuitBreaks []CircuitBreak `json:"circuit_break,omitempty"` ConcurrencyControls []ConcurrencyControl `json:"concurrency_control,omitempty"` }
type Proxy ¶
type Proxy struct { BackendType string `json:"backend_type"` DB string `json:"db"` ListenAddr string `json:"listen_addr"` Name string `json:"name"` Password string `json:"password"` // TODO: should be refactored to a new pool configuration PoolSize uint32 `json:"pool_size,omitempty"` User string `json:"user"` SimpleLoadBalance *SimpleLoadBalance `json:"simple_loadbalance,omitempty"` ReadWriteSplitting *ReadWriteSplitting `json:"read_write_splitting,omitempty"` Plugin *Plugin `json:"plugin,omitempty"` ServerVersion string `json:"server_version,omitempty"` Sharding []Sharding `json:"sharding,omitempty"` }
type ProxyBuilder ¶
type ProxyBuilder struct { VirtualDatabaseService v1alpha1.VirtualDatabaseService TrafficStrategy v1alpha1.TrafficStrategy DatabaseEndpoints []v1alpha1.DatabaseEndpoint DataShard v1alpha1.DataShard }
func NewProxyBuilder ¶
func NewProxyBuilder() *ProxyBuilder
func (*ProxyBuilder) Build ¶
func (b *ProxyBuilder) Build() *Proxy
func (*ProxyBuilder) SetDataShards ¶
func (b *ProxyBuilder) SetDataShards(shard v1alpha1.DataShard) *ProxyBuilder
func (*ProxyBuilder) SetDatabaseEndpoints ¶
func (b *ProxyBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *ProxyBuilder
func (*ProxyBuilder) SetTrafficStrategy ¶
func (b *ProxyBuilder) SetTrafficStrategy(ts v1alpha1.TrafficStrategy) *ProxyBuilder
func (*ProxyBuilder) SetVirtualDatabaseService ¶
func (b *ProxyBuilder) SetVirtualDatabaseService(svc v1alpha1.VirtualDatabaseService) *ProxyBuilder
type ProxyConfig ¶
type ProxyConfig struct {
Config []Proxy `json:"config"`
}
type ProxyConfigBuilder ¶
type ProxyConfigBuilder struct {
ProxyBuilders []*ProxyBuilder
}
func NewProxyConfigBuilder ¶
func NewProxyConfigBuilder() *ProxyConfigBuilder
func (*ProxyConfigBuilder) Build ¶
func (b *ProxyConfigBuilder) Build() *ProxyConfig
func (*ProxyConfigBuilder) SetProxyBuilders ¶
func (b *ProxyConfigBuilder) SetProxyBuilders(builders []*ProxyBuilder) *ProxyConfigBuilder
type QoSClassKind ¶
type QoSClassKind string
type ReadWriteDiscovery ¶
type ReadWriteDiscovery struct {
*MasterHighAvailablity
}
type ReadWriteSplitting ¶
type ReadWriteSplitting struct { Static *ReadWriteSplittingStatic `json:"static,omitempty"` Dynamic *ReadWriteSplittingDynamic `json:"dynamic,omitempty"` }
type ReadWriteSplittingDynamic ¶
type ReadWriteSplittingDynamic struct { DefaultTarget string `json:"default_target"` Rules []ReadWriteSplittingRule `json:"rule"` Discovery ReadWriteDiscovery `json:"discovery"` }
type ReadWriteSplittingRule ¶
type ReadWriteSplittingStatic ¶
type ReadWriteSplittingStatic struct { DefaultTarget string `json:"default_target"` Rules []ReadWriteSplittingRule `json:"rule"` }
type ServiceBuilder ¶
type ServiceBuilder struct { VirtualDatabaseService v1alpha1.VirtualDatabaseService TrafficStrategy v1alpha1.TrafficStrategy QoSClaim v1alpha1.QoSClaim DatabaseEndpoints []v1alpha1.DatabaseEndpoint }
func NewServiceBuilder ¶
func NewServiceBuilder() *ServiceBuilder
func (*ServiceBuilder) Build ¶
func (b *ServiceBuilder) Build() Service
func (*ServiceBuilder) SetDatabaseEndpoints ¶
func (b *ServiceBuilder) SetDatabaseEndpoints(dbeps []v1alpha1.DatabaseEndpoint) *ServiceBuilder
func (*ServiceBuilder) SetQoSClaim ¶
func (b *ServiceBuilder) SetQoSClaim(qc v1alpha1.QoSClaim) *ServiceBuilder
func (*ServiceBuilder) SetTrafficStrategy ¶
func (b *ServiceBuilder) SetTrafficStrategy(ts v1alpha1.TrafficStrategy) *ServiceBuilder
func (*ServiceBuilder) SetVirtualDatabaseService ¶
func (b *ServiceBuilder) SetVirtualDatabaseService(vsvc v1alpha1.VirtualDatabaseService) *ServiceBuilder
type Sharding ¶
type Sharding struct { TableName string `json:"table_name"` ActualDatanodes []string `json:"actual_datanodes"` // BindingTables [][]string `json:"binding_tables"` // BroadcastTables []string `json:"broadcast_tables"` TableStrategy *TableStrategy `json:"table_strategy,omitempty"` DatabaseStrategy *DatabaseStrategy `json:"database_strategy,omitempty"` DatabaseTableStrategy *DatabaseTableStrategy `json:"database_table_strategy,omitempty"` }