Documentation ¶
Index ¶
- Constants
- Variables
- func DecodeLV(r io.Reader, v encoding.BinaryUnmarshaler) error
- func DecodeTLV(r io.Reader, v encoding.BinaryUnmarshaler) (typ byte, err error)
- func EncodeLV(w io.Writer, v encoding.BinaryMarshaler) error
- func EncodeTLV(w io.Writer, typ byte, v encoding.BinaryMarshaler) error
- func NewBoundedPool(initialCap, maxCap int, timeout time.Duration, factory Factory) (pool.Pool, error)
- func ReadLV(r io.Reader) ([]byte, error)
- func ReadTLV(r io.Reader) (byte, []byte, error)
- func ReadType(r io.Reader) (byte, error)
- func WriteLV(w io.Writer, buf []byte) error
- func WriteTLV(w io.Writer, typ byte, buf []byte) error
- func WriteType(w io.Writer, typ byte) error
- type Balancer
- type Config
- type ConsistencyLevel
- type CreateIteratorRequest
- type CreateIteratorResponse
- type ExecuteStatementRequest
- func (r *ExecuteStatementRequest) Database() string
- func (r *ExecuteStatementRequest) MarshalBinary() ([]byte, error)
- func (r *ExecuteStatementRequest) SetDatabase(database string)
- func (r *ExecuteStatementRequest) SetStatement(statement string)
- func (r *ExecuteStatementRequest) Statement() string
- func (r *ExecuteStatementRequest) UnmarshalBinary(buf []byte) error
- type ExecuteStatementResponse
- func (w *ExecuteStatementResponse) Code() int
- func (w *ExecuteStatementResponse) MarshalBinary() ([]byte, error)
- func (w *ExecuteStatementResponse) Message() string
- func (w *ExecuteStatementResponse) SetCode(code int)
- func (w *ExecuteStatementResponse) SetMessage(message string)
- func (w *ExecuteStatementResponse) UnmarshalBinary(buf []byte) error
- type Factory
- type FieldDimensionsRequest
- type FieldDimensionsResponse
- type IntoWriteRequest
- type MetaClient
- type MetaExecutor
- type NodeDialer
- type PointsWriter
- type QueryExecutor
- type SeriesKeysRequest
- type SeriesKeysResponse
- type Service
- type ShardMapping
- type ShardWriter
- type TSDBStore
- type WritePointsRequest
- type WriteShardRequest
- func (w *WriteShardRequest) AddPoint(name string, value interface{}, timestamp time.Time, tags map[string]string)
- func (w *WriteShardRequest) AddPoints(points []models.Point)
- func (w *WriteShardRequest) Database() string
- func (w *WriteShardRequest) MarshalBinary() ([]byte, error)
- func (w *WriteShardRequest) Points() []models.Point
- func (w *WriteShardRequest) RetentionPolicy() string
- func (w *WriteShardRequest) SetDatabase(db string)
- func (w *WriteShardRequest) SetRetentionPolicy(rp string)
- func (w *WriteShardRequest) SetShardID(id uint64)
- func (w *WriteShardRequest) ShardID() uint64
- func (w *WriteShardRequest) UnmarshalBinary(buf []byte) error
- type WriteShardResponse
- func (w *WriteShardResponse) Code() int
- func (w *WriteShardResponse) MarshalBinary() ([]byte, error)
- func (w *WriteShardResponse) Message() string
- func (w *WriteShardResponse) SetCode(code int)
- func (w *WriteShardResponse) SetMessage(message string)
- func (w *WriteShardResponse) UnmarshalBinary(buf []byte) error
Constants ¶
const ( // DefaultWriteTimeout is the default timeout for a complete write to succeed. DefaultWriteTimeout = 5 * time.Second // DefaultShardWriterTimeout is the default timeout set on shard writers. DefaultShardWriterTimeout = 5 * time.Second // DefaultShardMapperTimeout is the default timeout set on shard mappers. DefaultShardMapperTimeout = 5 * time.Second // DefaultMaxRemoteWriteConnections is the maximum number of open connections // that will be available for remote writes to another host. DefaultMaxRemoteWriteConnections = 3 )
const MaxMessageSize = 1024 * 1024 * 1024 // 1GB
MaxMessageSize defines how large a message can be before we reject it
const MuxHeader = 2
MuxHeader is the header byte used in the TCP mux.
Variables ¶
var ( // ErrTimeout is returned when a write times out. ErrTimeout = errors.New("timeout") // ErrPartialWrite is returned when a write partially succeeds but does // not meet the requested consistency level. ErrPartialWrite = errors.New("partial write") // ErrWriteFailed is returned when no writes succeeded. ErrWriteFailed = errors.New("write failed") // ErrInvalidConsistencyLevel is returned when parsing the string version // of a consistency level. ErrInvalidConsistencyLevel = errors.New("invalid consistency level") )
Functions ¶
func DecodeLV ¶
func DecodeLV(r io.Reader, v encoding.BinaryUnmarshaler) error
DecodeLV reads the length-value record from r and unmarshals it into v.
func EncodeLV ¶
func EncodeLV(w io.Writer, v encoding.BinaryMarshaler) error
EncodeLV encodes v to a binary format and writes the length-value record to w.
func EncodeTLV ¶
EncodeTLV encodes v to a binary format and writes the record-length-value record to w.
func NewBoundedPool ¶
func NewBoundedPool(initialCap, maxCap int, timeout time.Duration, factory Factory) (pool.Pool, error)
NewBoundedPool returns a new pool based on buffered channels with an initial capacity, maximum capacity and timeout to wait for a connection from the pool. Factory is used when initial capacity is greater than zero to fill the pool. A zero initialCap doesn't fill the Pool until a new Get() is called. During a Get(), If there is no new connection available in the pool and total connections is less than the max, a new connection will be created via the Factory() method. Othewise, the call will block until a connection is available or the timeout is reached.
Types ¶
type Balancer ¶
type Balancer interface { // Next returns the next Node according to the balancing method // or nil if there are no nodes available Next() *meta.NodeInfo }
Balancer represents a load-balancing algorithm for a set of nodes
func NewNodeBalancer ¶
NewNodeBalancer create a shuffled, round-robin balancer so that multiple instances will return nodes in randomized order and each each returned node will be repeated in a cycle
type Config ¶
type Config struct { ForceRemoteShardMapping bool `toml:"force-remote-mapping"` WriteTimeout toml.Duration `toml:"write-timeout"` ShardWriterTimeout toml.Duration `toml:"shard-writer-timeout"` MaxRemoteWriteConnections int `toml:"max-remote-write-connections"` ShardMapperTimeout toml.Duration `toml:"shard-mapper-timeout"` }
Config represents the configuration for the clustering service.
type ConsistencyLevel ¶
type ConsistencyLevel int
ConsistencyLevel represent a required replication criteria before a write can be returned as successful
const ( // ConsistencyLevelAny allows for hinted hand off, potentially no write happened yet ConsistencyLevelAny ConsistencyLevel = iota // ConsistencyLevelOne requires at least one data node acknowledged a write ConsistencyLevelOne // ConsistencyLevelQuorum requires a quorum of data nodes to acknowledge a write ConsistencyLevelQuorum // ConsistencyLevelAll requires all data nodes to acknowledge a write ConsistencyLevelAll )
func ParseConsistencyLevel ¶
func ParseConsistencyLevel(level string) (ConsistencyLevel, error)
ParseConsistencyLevel converts a consistency level string to the corresponding ConsistencyLevel const
type CreateIteratorRequest ¶
type CreateIteratorRequest struct { ShardIDs []uint64 Opt influxql.IteratorOptions }
CreateIteratorRequest represents a request to create a remote iterator.
func (*CreateIteratorRequest) MarshalBinary ¶
func (r *CreateIteratorRequest) MarshalBinary() ([]byte, error)
MarshalBinary encodes r to a binary format.
func (*CreateIteratorRequest) UnmarshalBinary ¶
func (r *CreateIteratorRequest) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes data into r.
type CreateIteratorResponse ¶
type CreateIteratorResponse struct {
Err error
}
CreateIteratorResponse represents a response from remote iterator creation.
func (*CreateIteratorResponse) MarshalBinary ¶
func (r *CreateIteratorResponse) MarshalBinary() ([]byte, error)
MarshalBinary encodes r to a binary format.
func (*CreateIteratorResponse) UnmarshalBinary ¶
func (r *CreateIteratorResponse) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes data into r.
type ExecuteStatementRequest ¶
type ExecuteStatementRequest struct {
// contains filtered or unexported fields
}
ExecuteStatementRequest represents the a request to execute a statement on a node.
func (*ExecuteStatementRequest) Database ¶
func (r *ExecuteStatementRequest) Database() string
Database returns the database name.
func (*ExecuteStatementRequest) MarshalBinary ¶
func (r *ExecuteStatementRequest) MarshalBinary() ([]byte, error)
MarshalBinary encodes the object to a binary format.
func (*ExecuteStatementRequest) SetDatabase ¶
func (r *ExecuteStatementRequest) SetDatabase(database string)
SetDatabase sets the database name.
func (*ExecuteStatementRequest) SetStatement ¶
func (r *ExecuteStatementRequest) SetStatement(statement string)
SetStatement sets the InfluxQL statement.
func (*ExecuteStatementRequest) Statement ¶
func (r *ExecuteStatementRequest) Statement() string
Statement returns the InfluxQL statement.
func (*ExecuteStatementRequest) UnmarshalBinary ¶
func (r *ExecuteStatementRequest) UnmarshalBinary(buf []byte) error
UnmarshalBinary populates ExecuteStatementRequest from a binary format.
type ExecuteStatementResponse ¶
type ExecuteStatementResponse struct {
// contains filtered or unexported fields
}
ExecuteStatementResponse represents the response returned from a remote ExecuteStatementRequest call.
func (*ExecuteStatementResponse) Code ¶
func (w *ExecuteStatementResponse) Code() int
Code returns the response code.
func (*ExecuteStatementResponse) MarshalBinary ¶
func (w *ExecuteStatementResponse) MarshalBinary() ([]byte, error)
MarshalBinary encodes the object to a binary format.
func (*ExecuteStatementResponse) Message ¶
func (w *ExecuteStatementResponse) Message() string
Message returns the repsonse message.
func (*ExecuteStatementResponse) SetCode ¶
func (w *ExecuteStatementResponse) SetCode(code int)
SetCode sets the Code
func (*ExecuteStatementResponse) SetMessage ¶
func (w *ExecuteStatementResponse) SetMessage(message string)
SetMessage sets the Message
func (*ExecuteStatementResponse) UnmarshalBinary ¶
func (w *ExecuteStatementResponse) UnmarshalBinary(buf []byte) error
UnmarshalBinary populates ExecuteStatementResponse from a binary format.
type FieldDimensionsRequest ¶
FieldDimensionsRequest represents a request to retrieve unique fields & dimensions.
func (*FieldDimensionsRequest) MarshalBinary ¶
func (r *FieldDimensionsRequest) MarshalBinary() ([]byte, error)
MarshalBinary encodes r to a binary format.
func (*FieldDimensionsRequest) UnmarshalBinary ¶
func (r *FieldDimensionsRequest) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes data into r.
type FieldDimensionsResponse ¶
type FieldDimensionsResponse struct { Fields map[string]struct{} Dimensions map[string]struct{} Err error }
FieldDimensionsResponse represents a response from remote iterator creation.
func (*FieldDimensionsResponse) MarshalBinary ¶
func (r *FieldDimensionsResponse) MarshalBinary() ([]byte, error)
MarshalBinary encodes r to a binary format.
func (*FieldDimensionsResponse) UnmarshalBinary ¶
func (r *FieldDimensionsResponse) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes data into r.
type IntoWriteRequest ¶
IntoWriteRequest is a partial copy of cluster.WriteRequest
type MetaClient ¶
type MetaClient interface { CreateContinuousQuery(database, name, query string) error CreateDatabase(name string) (*meta.DatabaseInfo, error) CreateDatabaseWithRetentionPolicy(name string, rpi *meta.RetentionPolicyInfo) (*meta.DatabaseInfo, error) CreateRetentionPolicy(database string, rpi *meta.RetentionPolicyInfo) (*meta.RetentionPolicyInfo, error) CreateSubscription(database, rp, name, mode string, destinations []string) error CreateUser(name, password string, admin bool) (*meta.UserInfo, error) Database(name string) (*meta.DatabaseInfo, error) Databases() ([]meta.DatabaseInfo, error) DataNode(id uint64) (*meta.NodeInfo, error) DataNodes() ([]meta.NodeInfo, error) DeleteDataNode(id uint64) error DeleteMetaNode(id uint64) error DropContinuousQuery(database, name string) error DropDatabase(name string) error DropRetentionPolicy(database, name string) error DropSubscription(database, rp, name string) error DropUser(name string) error MetaNodes() ([]meta.NodeInfo, error) RetentionPolicy(database, name string) (rpi *meta.RetentionPolicyInfo, err error) SetAdminPrivilege(username string, admin bool) error SetDefaultRetentionPolicy(database, name string) error SetPrivilege(username, database string, p influxql.Privilege) error ShardsByTimeRange(sources influxql.Sources, tmin, tmax time.Time) (a []meta.ShardInfo, err error) UpdateRetentionPolicy(database, name string, rpu *meta.RetentionPolicyUpdate) error UpdateUser(name, password string) error UserPrivilege(username, database string) (*influxql.Privilege, error) UserPrivileges(username string) (map[string]influxql.Privilege, error) Users() []meta.UserInfo }
MetaClient is an interface for accessing meta data.
type MetaExecutor ¶
type MetaExecutor struct { Logger *log.Logger Node *influxdb.Node MetaClient interface { DataNode(id uint64) (ni *meta.NodeInfo, err error) DataNodes() ([]meta.NodeInfo, error) } // contains filtered or unexported fields }
MetaExecutor executes meta queries on all data nodes.
func NewMetaExecutor ¶
func NewMetaExecutor() *MetaExecutor
NewMetaExecutor returns a new initialized *MetaExecutor.
func (*MetaExecutor) ExecuteStatement ¶
func (m *MetaExecutor) ExecuteStatement(stmt influxql.Statement, database string) error
ExecuteStatement executes a single InfluxQL statement on all nodes in the cluster concurrently.
type NodeDialer ¶
type NodeDialer struct { MetaClient MetaClient Timeout time.Duration }
NodeDialer dials connections to a given node.
type PointsWriter ¶
type PointsWriter struct { WriteTimeout time.Duration Logger *log.Logger Node *influxdb.Node MetaClient interface { Database(name string) (di *meta.DatabaseInfo, err error) RetentionPolicy(database, policy string) (*meta.RetentionPolicyInfo, error) CreateShardGroup(database, policy string, timestamp time.Time) (*meta.ShardGroupInfo, error) ShardOwner(shardID uint64) (string, string, *meta.ShardGroupInfo) } TSDBStore interface { CreateShard(database, retentionPolicy string, shardID uint64) error WriteToShard(shardID uint64, points []models.Point) error } ShardWriter interface { WriteShard(shardID, ownerID uint64, points []models.Point) error } HintedHandoff interface { WriteShard(shardID, ownerID uint64, points []models.Point) error } Subscriber interface { Points() chan<- *WritePointsRequest } // contains filtered or unexported fields }
PointsWriter handles writes across multiple local and remote data nodes.
func NewPointsWriter ¶
func NewPointsWriter() *PointsWriter
NewPointsWriter returns a new instance of PointsWriter for a node.
func (*PointsWriter) Close ¶
func (w *PointsWriter) Close() error
Close closes the communication channel with the point writer
func (*PointsWriter) MapShards ¶
func (w *PointsWriter) MapShards(wp *WritePointsRequest) (*ShardMapping, error)
MapShards maps the points contained in wp to a ShardMapping. If a point maps to a shard group or shard that does not currently exist, it will be created before returning the mapping.
func (*PointsWriter) Open ¶
func (w *PointsWriter) Open() error
Open opens the communication channel with the point writer
func (*PointsWriter) WritePoints ¶
func (w *PointsWriter) WritePoints(p *WritePointsRequest) error
WritePoints writes across multiple local and remote data nodes according the consistency level.
func (*PointsWriter) WritePointsInto ¶
func (w *PointsWriter) WritePointsInto(p *IntoWriteRequest) error
WritePointsInto is a copy of WritePoints that uses a tsdb structure instead of a cluster structure for information. This is to avoid a circular dependency
type QueryExecutor ¶
type QueryExecutor struct { // Reference to local node. Node *influxdb.Node MetaClient MetaClient // TSDB storage for local node. TSDBStore TSDBStore // Holds monitoring data for SHOW STATS and SHOW DIAGNOSTICS. Monitor *monitor.Monitor // Used for rewriting points back into system for SELECT INTO statements. PointsWriter *PointsWriter // Used for executing meta statements on all data nodes. MetaExecutor *MetaExecutor // Remote execution timeout Timeout time.Duration // Output of all logging. // Defaults to discarding all log output. LogOutput io.Writer // contains filtered or unexported fields }
A QueryExecutor is responsible for processing a influxql.Query and executing all of the statements within, on nodes in a cluster.
func NewQueryExecutor ¶
func NewQueryExecutor() *QueryExecutor
NewQueryExecutor returns a new instance of QueryExecutor.
func (*QueryExecutor) ExecuteQuery ¶
func (e *QueryExecutor) ExecuteQuery(query *influxql.Query, database string, chunkSize int, closing chan struct{}) <-chan *influxql.Result
ExecuteQuery executes each statement within a query.
type SeriesKeysRequest ¶
type SeriesKeysRequest struct { ShardIDs []uint64 Opt influxql.IteratorOptions }
SeriesKeysRequest represents a request to retrieve a list of series keys.
func (*SeriesKeysRequest) MarshalBinary ¶
func (r *SeriesKeysRequest) MarshalBinary() ([]byte, error)
MarshalBinary encodes r to a binary format.
func (*SeriesKeysRequest) UnmarshalBinary ¶
func (r *SeriesKeysRequest) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes data into r.
type SeriesKeysResponse ¶
type SeriesKeysResponse struct { SeriesList influxql.SeriesList Err error }
SeriesKeysResponse represents a response from retrieving series keys.
func (*SeriesKeysResponse) MarshalBinary ¶
func (r *SeriesKeysResponse) MarshalBinary() ([]byte, error)
MarshalBinary encodes r to a binary format.
func (*SeriesKeysResponse) UnmarshalBinary ¶
func (r *SeriesKeysResponse) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes data into r.
type Service ¶
type Service struct { Listener net.Listener MetaClient interface { ShardOwner(shardID uint64) (string, string, *meta.ShardGroupInfo) } TSDBStore TSDBStore Logger *log.Logger // contains filtered or unexported fields }
Service processes data received over raw TCP connections.
type ShardMapping ¶
type ShardMapping struct { Points map[uint64][]models.Point // The points associated with a shard ID Shards map[uint64]*meta.ShardInfo // The shards that have been mapped, keyed by shard ID }
ShardMapping contains a mapping of a shards to a points.
func NewShardMapping ¶
func NewShardMapping() *ShardMapping
NewShardMapping creates an empty ShardMapping
type ShardWriter ¶
type ShardWriter struct { MetaClient interface { DataNode(id uint64) (ni *meta.NodeInfo, err error) ShardOwner(shardID uint64) (database, policy string, sgi *meta.ShardGroupInfo) } // contains filtered or unexported fields }
ShardWriter writes a set of points to a shard.
func NewShardWriter ¶
func NewShardWriter(timeout time.Duration, maxConnections int) *ShardWriter
NewShardWriter returns a new instance of ShardWriter.
func (*ShardWriter) WriteShard ¶
func (w *ShardWriter) WriteShard(shardID, ownerID uint64, points []models.Point) error
WriteShard writes time series points to a shard
type TSDBStore ¶
type TSDBStore interface { CreateShard(database, policy string, shardID uint64) error WriteToShard(shardID uint64, points []models.Point) error DeleteDatabase(name string) error DeleteMeasurement(database, name string) error DeleteRetentionPolicy(database, name string) error DeleteSeries(database string, sources []influxql.Source, condition influxql.Expr) error ExecuteShowFieldKeysStatement(stmt *influxql.ShowFieldKeysStatement, database string) (models.Rows, error) ExecuteShowSeriesStatement(stmt *influxql.ShowSeriesStatement, database string) (models.Rows, error) ExecuteShowTagValuesStatement(stmt *influxql.ShowTagValuesStatement, database string) (models.Rows, error) ExpandSources(sources influxql.Sources) (influxql.Sources, error) ShardIteratorCreator(id uint64) influxql.IteratorCreator }
TSDBStore is an interface for accessing the time series data store.
type WritePointsRequest ¶
type WritePointsRequest struct { Database string RetentionPolicy string ConsistencyLevel ConsistencyLevel Points []models.Point }
WritePointsRequest represents a request to write point data to the cluster
type WriteShardRequest ¶
type WriteShardRequest struct {
// contains filtered or unexported fields
}
WriteShardRequest represents the a request to write a slice of points to a shard
func (*WriteShardRequest) AddPoint ¶
func (w *WriteShardRequest) AddPoint(name string, value interface{}, timestamp time.Time, tags map[string]string)
AddPoint adds a new time series point
func (*WriteShardRequest) AddPoints ¶
func (w *WriteShardRequest) AddPoints(points []models.Point)
AddPoints adds a new time series point
func (*WriteShardRequest) Database ¶
func (w *WriteShardRequest) Database() string
func (*WriteShardRequest) MarshalBinary ¶
func (w *WriteShardRequest) MarshalBinary() ([]byte, error)
MarshalBinary encodes the object to a binary format.
func (*WriteShardRequest) Points ¶
func (w *WriteShardRequest) Points() []models.Point
Points returns the time series Points
func (*WriteShardRequest) RetentionPolicy ¶
func (w *WriteShardRequest) RetentionPolicy() string
func (*WriteShardRequest) SetDatabase ¶
func (w *WriteShardRequest) SetDatabase(db string)
func (*WriteShardRequest) SetRetentionPolicy ¶
func (w *WriteShardRequest) SetRetentionPolicy(rp string)
func (*WriteShardRequest) SetShardID ¶
func (w *WriteShardRequest) SetShardID(id uint64)
SetShardID sets the ShardID
func (*WriteShardRequest) ShardID ¶
func (w *WriteShardRequest) ShardID() uint64
ShardID gets the ShardID
func (*WriteShardRequest) UnmarshalBinary ¶
func (w *WriteShardRequest) UnmarshalBinary(buf []byte) error
UnmarshalBinary populates WritePointRequest from a binary format.
type WriteShardResponse ¶
type WriteShardResponse struct {
// contains filtered or unexported fields
}
WriteShardResponse represents the response returned from a remote WriteShardRequest call
func (*WriteShardResponse) MarshalBinary ¶
func (w *WriteShardResponse) MarshalBinary() ([]byte, error)
MarshalBinary encodes the object to a binary format.
func (*WriteShardResponse) Message ¶
func (w *WriteShardResponse) Message() string
Message returns the Message
func (*WriteShardResponse) SetCode ¶
func (w *WriteShardResponse) SetCode(code int)
SetCode sets the Code
func (*WriteShardResponse) SetMessage ¶
func (w *WriteShardResponse) SetMessage(message string)
SetMessage sets the Message
func (*WriteShardResponse) UnmarshalBinary ¶
func (w *WriteShardResponse) UnmarshalBinary(buf []byte) error
UnmarshalBinary populates WritePointRequest from a binary format.