Documentation ¶
Index ¶
- Constants
- Variables
- func InitActiveRecord(opts ...Option)
- func ReinitActiveRecord(opts ...Option)
- func WithShard(masters []OptionInterface, replicas []OptionInterface) clusterOption
- type ActiveRecord
- type Cluster
- type ConfigCacherInterface
- type ConfigInterface
- type ConnectionCacherInterface
- type ConnectionInterface
- type DefaultConfig
- func (dc *DefaultConfig) GetBool(ctx context.Context, confPath string, dfl ...bool) bool
- func (dc *DefaultConfig) GetBoolIfExists(ctx context.Context, confPath string) (value bool, ok bool)
- func (dc *DefaultConfig) GetDuration(ctx context.Context, confPath string, dfl ...time.Duration) time.Duration
- func (dc *DefaultConfig) GetDurationIfExists(ctx context.Context, confPath string) (time.Duration, bool)
- func (dc *DefaultConfig) GetInt(ctx context.Context, confPath string, dfl ...int) int
- func (dc *DefaultConfig) GetIntIfExists(ctx context.Context, confPath string) (int, bool)
- func (dc *DefaultConfig) GetLastUpdateTime() time.Time
- func (dc *DefaultConfig) GetString(ctx context.Context, confPath string, dfl ...string) string
- func (dc *DefaultConfig) GetStringIfExists(ctx context.Context, confPath string) (string, bool)
- func (dc *DefaultConfig) GetStrings(ctx context.Context, confPath string, dfl []string) []string
- func (dc *DefaultConfig) GetStruct(ctx context.Context, confPath string, valuePtr interface{}) (bool, error)
- type DefaultConfigCacher
- type DefaultLogger
- func (l *DefaultLogger) CollectQueries(ctx context.Context, f func() (MockerLogger, error))
- func (l *DefaultLogger) Debug(ctx context.Context, args ...interface{})
- func (l *DefaultLogger) Error(ctx context.Context, args ...interface{})
- func (l *DefaultLogger) Fatal(ctx context.Context, args ...interface{})
- func (l *DefaultLogger) Info(ctx context.Context, args ...interface{})
- func (l *DefaultLogger) Panic(ctx context.Context, args ...interface{})
- func (l *DefaultLogger) SetLogLevel(level uint32)
- func (l *DefaultLogger) SetLoggerValueToContext(ctx context.Context, val ValueLogPrefix) context.Context
- func (l *DefaultLogger) Trace(ctx context.Context, args ...interface{})
- func (l *DefaultLogger) Warn(ctx context.Context, args ...interface{})
- type DefaultNoopMetric
- type DefaultNoopMetricCount
- type DefaultNoopMetricTimer
- type IprotoLogger
- type Limiter
- type LoggerInterface
- type MapGlobParam
- type MetricErrorCountInterface
- type MetricInterface
- type MetricStatCountInterface
- type MetricTimerInterface
- type MockerLogger
- type Option
- type OptionInterface
- type SelectorLimiter
- type SerializerInterface
- type ServerModeType
- type Shard
- type ShardInstance
- type ShardInstanceConfig
- type ShardInstanceType
- type ValueLogPrefix
Constants ¶
const ( PanicLoggerLevel uint32 = iota FatalLoggerLevel ErrorLoggerLevel WarnLoggerLevel InfoLoggerLevel DebugLoggerLevel TraceLoggerLevel )
const (
ContextLogprefix ctxKey = iota
)
const (
ValueContextErrorField = "context"
)
Variables ¶
var ErrNoData = errors.New("no data")
Functions ¶
func InitActiveRecord ¶
func InitActiveRecord(opts ...Option)
func ReinitActiveRecord ¶
func ReinitActiveRecord(opts ...Option)
func WithShard ¶
func WithShard(masters []OptionInterface, replicas []OptionInterface) clusterOption
Types ¶
type ActiveRecord ¶
type ActiveRecord struct {
// contains filtered or unexported fields
}
func GetInstance ¶
func GetInstance() *ActiveRecord
type Cluster ¶
type Cluster []Shard
Тип описывающий кластер. Сейчас кластер - это набор шардов.
func GetClusterInfoFromCfg ¶
func GetClusterInfoFromCfg(ctx context.Context, path string, globs MapGlobParam, optionCreator func(ShardInstanceConfig) (OptionInterface, error)) (Cluster, error)
Констркуктор позволяющий проинициализировать кластер их конфигурации. На вход передаётся путь в конфиге, значения по умолчанию, и ссылка на функцию, которая создаёт структуру опций и считает контрольную сумму, для того, что бы следить за их изменением в онлайне.
func NewClusterInfo ¶
func NewClusterInfo(opts ...clusterOption) Cluster
Конструктор который позволяет проинициализировать новый кластер. В опциях передаются все шарды, сколько шардов, столько и опций. Используется в случаях, когда информация по кластеру прописана непосредственно в декларации модели, а не в конфиге. Так же используется при тестировании.
type ConfigCacherInterface ¶
type ConfigCacherInterface interface {
Get(ctx context.Context, path string, glob MapGlobParam, optionCreator func(ShardInstanceConfig) (OptionInterface, error)) (Cluster, error)
}
func ConfigCacher ¶
func ConfigCacher() ConfigCacherInterface
type ConfigInterface ¶
type ConfigInterface interface { GetBool(ctx context.Context, confPath string, dfl ...bool) bool GetBoolIfExists(ctx context.Context, confPath string) (value bool, ok bool) GetInt(ctx context.Context, confPath string, dfl ...int) int GetIntIfExists(ctx context.Context, confPath string) (int, bool) GetDuration(ctx context.Context, confPath string, dfl ...time.Duration) time.Duration GetDurationIfExists(ctx context.Context, confPath string) (time.Duration, bool) GetString(ctx context.Context, confPath string, dfl ...string) string GetStringIfExists(ctx context.Context, confPath string) (string, bool) GetStrings(ctx context.Context, confPath string, dfl []string) []string GetStruct(ctx context.Context, confPath string, valuePtr interface{}) (bool, error) GetLastUpdateTime() time.Time }
func Config ¶
func Config() ConfigInterface
type ConnectionCacherInterface ¶
type ConnectionCacherInterface interface { Add(shard ShardInstance, connector func(interface{}) (ConnectionInterface, error)) (ConnectionInterface, error) GetOrAdd(shard ShardInstance, connector func(interface{}) (ConnectionInterface, error)) (ConnectionInterface, error) Get(shard ShardInstance) ConnectionInterface CloseConnection(context.Context) }
func ConnectionCacher ¶
func ConnectionCacher() ConnectionCacherInterface
type ConnectionInterface ¶
type ConnectionInterface interface { Close() Done() <-chan struct{} }
type DefaultConfig ¶
type DefaultConfig struct {
// contains filtered or unexported fields
}
func NewDefaultConfig ¶
func NewDefaultConfig() *DefaultConfig
func NewDefaultConfigFromMap ¶
func NewDefaultConfigFromMap(cfg map[string]interface{}) *DefaultConfig
func (*DefaultConfig) GetBoolIfExists ¶
func (*DefaultConfig) GetDuration ¶
func (*DefaultConfig) GetDurationIfExists ¶
func (*DefaultConfig) GetIntIfExists ¶
func (*DefaultConfig) GetLastUpdateTime ¶
func (dc *DefaultConfig) GetLastUpdateTime() time.Time
func (*DefaultConfig) GetStringIfExists ¶
func (*DefaultConfig) GetStrings ¶
type DefaultConfigCacher ¶
type DefaultConfigCacher struct {
// contains filtered or unexported fields
}
Структура для кеширования полученных конфигураций. Инвалидация происходит посредством сравнения updateTime сданной труктуры и самого конфига. Используется для шаринга конфигов между можелями если они используют одну и ту же конфигурацию для подключений
func (*DefaultConfigCacher) Get ¶
func (cc *DefaultConfigCacher) Get(ctx context.Context, path string, globs MapGlobParam, optionCreator func(ShardInstanceConfig) (OptionInterface, error)) (Cluster, error)
Получение конфигурации. Если есть в кеше и он еще валидный, то конфигурация берётся из кешаб если в кеше нет, то достаём из конфига и кешируем.
type DefaultLogger ¶
type DefaultLogger struct { Fields ValueLogPrefix // contains filtered or unexported fields }
func NewLogger ¶
func NewLogger() *DefaultLogger
func (*DefaultLogger) CollectQueries ¶
func (l *DefaultLogger) CollectQueries(ctx context.Context, f func() (MockerLogger, error))
func (*DefaultLogger) Debug ¶
func (l *DefaultLogger) Debug(ctx context.Context, args ...interface{})
func (*DefaultLogger) Error ¶
func (l *DefaultLogger) Error(ctx context.Context, args ...interface{})
func (*DefaultLogger) Fatal ¶
func (l *DefaultLogger) Fatal(ctx context.Context, args ...interface{})
func (*DefaultLogger) Info ¶
func (l *DefaultLogger) Info(ctx context.Context, args ...interface{})
func (*DefaultLogger) Panic ¶
func (l *DefaultLogger) Panic(ctx context.Context, args ...interface{})
func (*DefaultLogger) SetLogLevel ¶
func (l *DefaultLogger) SetLogLevel(level uint32)
func (*DefaultLogger) SetLoggerValueToContext ¶
func (l *DefaultLogger) SetLoggerValueToContext(ctx context.Context, val ValueLogPrefix) context.Context
func (*DefaultLogger) Trace ¶
func (l *DefaultLogger) Trace(ctx context.Context, args ...interface{})
func (*DefaultLogger) Warn ¶
func (l *DefaultLogger) Warn(ctx context.Context, args ...interface{})
type DefaultNoopMetric ¶
type DefaultNoopMetric struct{}
func NewDefaultNoopMetric ¶
func NewDefaultNoopMetric() *DefaultNoopMetric
func (*DefaultNoopMetric) ErrorCount ¶
func (*DefaultNoopMetric) ErrorCount(storage, entity string) MetricStatCountInterface
func (*DefaultNoopMetric) StatCount ¶
func (*DefaultNoopMetric) StatCount(storage, entity string) MetricStatCountInterface
func (*DefaultNoopMetric) Timer ¶
func (*DefaultNoopMetric) Timer(storage, entity string) MetricTimerInterface
type DefaultNoopMetricCount ¶
type DefaultNoopMetricCount struct{}
type DefaultNoopMetricTimer ¶
type DefaultNoopMetricTimer struct{}
type IprotoLogger ¶
type IprotoLogger struct{}
type Limiter ¶
type Limiter struct {
// contains filtered or unexported fields
}
func EmptyLimiter ¶
func EmptyLimiter() Limiter
func NewLimitOffset ¶
func NewLimiter ¶
func NewThreshold ¶
func (Limiter) FullfillWarn ¶
type LoggerInterface ¶
type LoggerInterface interface { SetLoggerValueToContext(ctx context.Context, addVal ValueLogPrefix) context.Context SetLogLevel(level uint32) Fatal(ctx context.Context, args ...interface{}) Error(ctx context.Context, args ...interface{}) Warn(ctx context.Context, args ...interface{}) Info(ctx context.Context, args ...interface{}) Debug(ctx context.Context, args ...interface{}) Trace(ctx context.Context, args ...interface{}) CollectQueries(ctx context.Context, f func() (MockerLogger, error)) }
func Logger ¶
func Logger() LoggerInterface
type MapGlobParam ¶
Тип используемый для передачи набора значений по умолчанию для параметров
type MetricInterface ¶
type MetricInterface interface { StatCount(storage, entity string) MetricStatCountInterface ErrorCount(storage, entity string) MetricStatCountInterface Timer(storage, entity string) MetricTimerInterface }
func Metric ¶
func Metric() MetricInterface
type MetricTimerInterface ¶
type MockerLogger ¶
type MockerLogger struct { // Название моккера MockerName string // Вызовы моккера для создания списка моков Mockers string // Получение списка фикстур для моков FixturesSelector string // Название пакета для которого необходимо добавить моки ResultName string // Результат возвращаемый селектором Results any }
Структура используемая для сбора статистики по запросам
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
func WithConfig ¶
func WithConfig(config ConfigInterface) Option
func WithLogger ¶
func WithLogger(logger LoggerInterface) Option
func WithMetrics ¶
func WithMetrics(metric MetricInterface) Option
type OptionInterface ¶
Интерфейс которому должен соответствовать билдер опций подключения к конретному инстансу
type SelectorLimiter ¶
type SerializerInterface ¶
type ServerModeType ¶
type ServerModeType uint8
Тип и константы для определения режима работы конкретного инстанса.
const ( ModeMaster ServerModeType = iota ModeReplica )
type Shard ¶
type Shard struct { Masters []ShardInstance Replicas []ShardInstance // contains filtered or unexported fields }
Структура описывающая конкретный шард. Каждый шард может состоять из набора мастеров и реплик
func (*Shard) NextMaster ¶
func (s *Shard) NextMaster() ShardInstance
Функция выбирающая следующий инстанс мастера в конкретном шарде
func (*Shard) NextReplica ¶
func (s *Shard) NextReplica() ShardInstance
Инстанс выбирающий конкретный инстанс реплики в конкретном шарде
type ShardInstance ¶
type ShardInstance struct { ParamsID string Config ShardInstanceConfig Options interface{} }
Структура описывающая инстанс в кластере
type ShardInstanceConfig ¶
type ShardInstanceConfig struct { Timeout time.Duration Mode ServerModeType PoolSize int Addr string }
Структура используется для описания конфигурации конктретного инстанса
type ShardInstanceType ¶
type ShardInstanceType uint8
Тип и константы для выбора инстанса в шарде
const ( MasterInstanceType ShardInstanceType = iota // Любой из описанных мастеров. По умолчанию используется для rw запросов ReplicaInstanceType // Любой из описанных реплик ReplicaOrMasterInstanceType // Любая реплика если есть, если нет то любой мастер. По умолчанию используется при селекте )
type ValueLogPrefix ¶
type ValueLogPrefix map[string]interface{}