Documentation ¶
Overview ¶
Package cluster contains: 1. an etcd server 2. an etcd client
The cluster only provide interface to maintain the etcd members(join/drop), but not data access. The client is delegated to the api layer to access data from/to the cluster.
Index ¶
- Constants
- type Cluster
- type EtcdStatus
- type Layout
- func (l *Layout) ClusterNameKey() string
- func (l *Layout) ConfigObjectKey(name string) string
- func (l *Layout) ConfigObjectPrefix() string
- func (l *Layout) ConfigVersion() string
- func (l *Layout) Lease() string
- func (l *Layout) OtherLease(memberName string) string
- func (l *Layout) OtherStatusMemberKey(memberName string) string
- func (l *Layout) StatusMemberKey() string
- func (l *Layout) StatusMemberPrefix() string
- func (l *Layout) StatusObjectKey(name string) string
- func (l *Layout) StatusObjectPrefix(name string) string
- func (l *Layout) StatusObjectsPrefix() string
- func (l *Layout) WasmCodeEvent() string
- type MemberStatus
- type Mutex
- type Syncer
- func (s *Syncer) Close()
- func (s *Syncer) Sync(key string) (<-chan *string, error)
- func (s *Syncer) SyncPrefix(prefix string) (<-chan map[string]string, error)
- func (s *Syncer) SyncRaw(key string) (<-chan *mvccpb.KeyValue, error)
- func (s *Syncer) SyncRawPrefix(prefix string) (<-chan map[string]*mvccpb.KeyValue, error)
- type Watcher
Constants ¶
const ( // HeartbeatInterval is the interval for heartbeat. HeartbeatInterval = 5 * time.Second )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cluster ¶
type Cluster interface { Layout() *Layout Get(key string) (*string, error) GetPrefix(prefix string) (map[string]string, error) GetRaw(key string) (*mvccpb.KeyValue, error) GetRawPrefix(prefix string) (map[string]*mvccpb.KeyValue, error) Put(key, value string) error PutUnderLease(key, value string) error PutAndDelete(map[string]*string) error PutAndDeleteUnderLease(map[string]*string) error Delete(key string) error DeletePrefix(prefix string) error Watcher() (Watcher, error) Syncer(pullInterval time.Duration) (*Syncer, error) Mutex(name string) (Mutex, error) CloseServer(wg *sync.WaitGroup) StartServer() (chan struct{}, chan struct{}, error) Close(wg *sync.WaitGroup) PurgeMember(member string) error }
Cluster is the open cluster interface.
type EtcdStatus ¶
type EtcdStatus struct { ID string `yaml:"id"` StartTime string `yaml:"startTime"` State string `yaml:"state"` }
EtcdStatus is the etcd status, and extracts fields from server.Server.SelfStats.
type Layout ¶
type Layout struct {
// contains filtered or unexported fields
}
Layout represents storage tree layout.
func (*Layout) ClusterNameKey ¶
ClusterNameKey returns the key of the cluster name.
func (*Layout) ConfigObjectKey ¶
ConfigObjectKey returns the key of object config.
func (*Layout) ConfigObjectPrefix ¶
ConfigObjectPrefix returns the prefix of object config.
func (*Layout) ConfigVersion ¶
ConfigVersion returns the key of config version.
func (*Layout) OtherLease ¶
OtherLease returns the key of the given member lease.
func (*Layout) OtherStatusMemberKey ¶
OtherStatusMemberKey returns the key of given member status.
func (*Layout) StatusMemberKey ¶
StatusMemberKey returns the key of own member status.
func (*Layout) StatusMemberPrefix ¶
StatusMemberPrefix returns the prefix of member status.
func (*Layout) StatusObjectKey ¶
StatusObjectKey returns the key of object status.
func (*Layout) StatusObjectPrefix ¶
StatusObjectPrefix returns the prefix of object status.
func (*Layout) StatusObjectsPrefix ¶
StatusObjectsPrefix returns the prefix of objects status.
func (*Layout) WasmCodeEvent ¶ added in v1.1.0
WasmCodeEvent returns the key of wasm code event
type MemberStatus ¶
type MemberStatus struct { Options option.Options `yaml:"options"` // RFC3339 format LastHeartbeatTime string `yaml:"lastHeartbeatTime"` LastDefragTime string `yaml:"lastDefragTime,omitempty"` // Etcd is non-nil only it is a writer. Etcd *EtcdStatus `yaml:"etcd,omitempty"` }
MemberStatus is the member status.
type Syncer ¶
type Syncer struct {
// contains filtered or unexported fields
}
Syncer syncs data from Etcd, it uses an Etcd watcher to receive update. The syncer keeps a full copy of data, and keeps apply changes onto it when an update event is received from the watcher, and then send out the full data copy. The syncer also pulls full data from Etcd at a configurable pull interval, this is to ensure data consistency, as Etcd watcher may be cancelled if it cannot catch up with the key-value store.
func (*Syncer) SyncPrefix ¶
SyncPrefix syncs Etcd keys' values with the same prefix through the returned channel.
type Watcher ¶
type Watcher interface { Watch(key string) (<-chan *string, error) WatchPrefix(prefix string) (<-chan map[string]*string, error) WatchRaw(key string) (<-chan *clientv3.Event, error) WatchRawPrefix(prefix string) (<-chan map[string]*clientv3.Event, error) Close() }
Watcher wraps etcd watcher.