Documentation
¶
Index ¶
- type Config
- type Engine
- func (e *Engine) Close() error
- func (e *Engine) Config() Config
- func (e *Engine) Delete(ctx context.Context, req *regattapb.DeleteRangeRequest) (*regattapb.DeleteRangeResponse, error)
- func (e *Engine) IterateRange(ctx context.Context, req *regattapb.RangeRequest) (iter.Seq[*regattapb.RangeResponse], error)
- func (e *Engine) MemberList(ctx context.Context, r *regattapb.MemberListRequest) (*regattapb.MemberListResponse, error)
- func (e *Engine) Put(ctx context.Context, req *regattapb.PutRequest) (*regattapb.PutResponse, error)
- func (e *Engine) Range(ctx context.Context, req *regattapb.RangeRequest) (*regattapb.RangeResponse, error)
- func (e *Engine) Start() error
- func (e *Engine) Status(ctx context.Context, r *regattapb.StatusRequest) (*regattapb.StatusResponse, error)
- func (e *Engine) Txn(ctx context.Context, req *regattapb.TxnRequest) (*regattapb.TxnResponse, error)
- func (e *Engine) WaitUntilReady(ctx context.Context) error
- type GossipConfig
- type IndexNotificationQueue
- func (q *IndexNotificationQueue) Add(ctx context.Context, table string, revision uint64) <-chan error
- func (q *IndexNotificationQueue) Close() error
- func (q *IndexNotificationQueue) Len(table string) int
- func (q *IndexNotificationQueue) Notify(table string, revision uint64)
- func (q *IndexNotificationQueue) Run()
- type MetaConfig
- type TableConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// ClientAddress is the public address of the Regatta host used for client requests.
ClientAddress string
// NodeID is a non-zero value used to identify a node within a Raft cluster.
NodeID uint64
// InitialMembers is a map of both meta and table clusters initial members.
InitialMembers map[uint64]string
// WALDir is the directory used for storing the WAL of Raft entries. It is
// recommended to use low latency storage such as NVME SSD with power loss
// protection to store such WAL data. WAL will be stored in
// NodeHostDir if it is set to the zero value.
WALDir string
// NodeHostDir is where everything else is stored.
NodeHostDir string
// RTTMillisecond defines the average Round Trip Time (RTT) in milliseconds
// between two NodeHost instances. Such a RTT interval is internally used as
// a logical clock tick. Raft heartbeat and election intervals are both
// defined in terms of such logical clock ticks (RTT intervals).
// Note that RTTMillisecond is the combined delays between two NodeHost
// instances including all delays caused by network transmission, delays
// caused by NodeHost queuing and processing. As an example, when fully
// loaded, the average Rround Trip Time between two of our NodeHost instances
// used for benchmarking purposes is up to 500 microseconds when the ping time
// between them is 100 microseconds. Set RTTMillisecond to 1 when it is less
// than 1 million in your environment.
RTTMillisecond uint64
// RaftAddress is a DNS name:port or IP:port address used by the transport
// module for exchanging Raft messages, snapshots and metadata between
// NodeHost instances. It should be set to the public address that can be
// accessed from remote NodeHost instances.
//
// When the NodeHostConfig.ListenAddress field is empty, NodeHost listens on
// RaftAddress for incoming Raft messages. When hostname or domain name is
// used, it will be resolved to IPv4 addresses first and Dragonboat listens
// to all resolved IPv4 addresses.
//
// By default, the RaftAddress value is not allowed to change between NodeHost
// restarts. AddressByNodeHostID should be set to true when the RaftAddress
// value might change after restart.
RaftAddress string
// ListenAddress is an optional field in the hostname:port or IP:port address
// form used by the transport module to listen on for Raft message and
// snapshots. When the ListenAddress field is not set, the transport module
// listens on RaftAddress. If 0.0.0.0 is specified as the IP of the
// ListenAddress, Dragonboat listens to the specified port on all network
// interfaces. When hostname or domain name is used, it will be resolved to
// IPv4 addresses first and Dragonboat listens to all resolved IPv4 addresses.
ListenAddress string
// EnableMetrics determines whether health metrics in Prometheus format should
// be enabled.
EnableMetrics bool
// MaxSendQueueSize is the maximum size in bytes of each send queue.
// Once the maximum size is reached, further replication messages will be
// dropped to restrict memory usage. When set to 0, it means the send queue
// size is unlimited.
MaxSendQueueSize uint64
// MaxReceiveQueueSize is the maximum size in bytes of each receive queue.
// Once the maximum size is reached, further replication messages will be
// dropped to restrict memory usage. When set to 0, it means the queue size
// is unlimited.
MaxReceiveQueueSize uint64
// NotifyCommit specifies whether clients should be notified when their
// regular proposals and config change requests are committed. By default,
// commits are not notified, clients are only notified when their proposals
// are both committed and applied.
NotifyCommit bool
// Gossip is a configuration for memberlist cluster discovery.
Gossip GossipConfig
// Table is a configuration for table OnDisk state machines.
Table TableConfig
// Meta is a configuration for metadata inmemory state machine.
Meta MetaConfig
// FS is the filesystem to use for log store, useful for testing,
// uses the real vfs.Default if nil.
FS vfs.FS
// Logger implementation for storage.
Log *zap.SugaredLogger
}
type Engine ¶
type Engine struct {
*raft.NodeHost
*table.Manager
LogReader logreader.Interface
Cluster *cluster.Cluster
// contains filtered or unexported fields
}
func (*Engine) Delete ¶
func (e *Engine) Delete(ctx context.Context, req *regattapb.DeleteRangeRequest) (*regattapb.DeleteRangeResponse, error)
func (*Engine) IterateRange ¶
func (e *Engine) IterateRange(ctx context.Context, req *regattapb.RangeRequest) (iter.Seq[*regattapb.RangeResponse], error)
func (*Engine) MemberList ¶
func (e *Engine) MemberList(ctx context.Context, r *regattapb.MemberListRequest) (*regattapb.MemberListResponse, error)
func (*Engine) Put ¶
func (e *Engine) Put(ctx context.Context, req *regattapb.PutRequest) (*regattapb.PutResponse, error)
func (*Engine) Range ¶
func (e *Engine) Range(ctx context.Context, req *regattapb.RangeRequest) (*regattapb.RangeResponse, error)
func (*Engine) Status ¶
func (e *Engine) Status(ctx context.Context, r *regattapb.StatusRequest) (*regattapb.StatusResponse, error)
func (*Engine) Txn ¶
func (e *Engine) Txn(ctx context.Context, req *regattapb.TxnRequest) (*regattapb.TxnResponse, error)
type GossipConfig ¶
type IndexNotificationQueue ¶
type IndexNotificationQueue struct {
// contains filtered or unexported fields
}
func NewNotificationQueue ¶
func NewNotificationQueue() *IndexNotificationQueue
func (*IndexNotificationQueue) Close ¶
func (q *IndexNotificationQueue) Close() error
func (*IndexNotificationQueue) Len ¶
func (q *IndexNotificationQueue) Len(table string) int
func (*IndexNotificationQueue) Notify ¶
func (q *IndexNotificationQueue) Notify(table string, revision uint64)
func (*IndexNotificationQueue) Run ¶
func (q *IndexNotificationQueue) Run()
type MetaConfig ¶
type MetaConfig table.MetaConfig
type TableConfig ¶
type TableConfig table.TableConfig
Click to show internal directories.
Click to hide internal directories.