Documentation ¶
Overview ¶
Package dtable implements highly available, distributed in-memory key/value datastore.
DTable is built on top of dendrite for key distribution and high availability, replication and failover. It exposes Query interface for Get() and Set() operations.
It hooks on dendrite as a TransportHook and uses ZeroMQ for communication between remote nodes. All messages between the nodes are serialized with protocol buffers.
Index ¶
- Constants
- type DTable
- func (dt *DTable) Decode(data []byte) (*dendrite.ChordMsg, error)
- func (dt *DTable) DumpStr()
- func (dt *DTable) EmitEvent(ctx *dendrite.EventCtx)
- func (dt *DTable) Logf(level LogLevel, format string, v ...interface{})
- func (dt *DTable) Logln(level LogLevel, v ...interface{})
- func (dt *DTable) NewQuery() Query
- type KVItem
- type LogLevel
- type PBDTableClearReplica
- func (m *PBDTableClearReplica) GetDemoted() bool
- func (m *PBDTableClearReplica) GetDest() *dendrite.PBProtoVnode
- func (m *PBDTableClearReplica) GetKeyHash() []byte
- func (m *PBDTableClearReplica) GetOrigin() *dendrite.PBProtoVnode
- func (*PBDTableClearReplica) ProtoMessage()
- func (m *PBDTableClearReplica) Reset()
- func (m *PBDTableClearReplica) String() string
- type PBDTableDemotedItem
- func (m *PBDTableDemotedItem) GetDest() *dendrite.PBProtoVnode
- func (m *PBDTableDemotedItem) GetItem() *PBDTableItem
- func (m *PBDTableDemotedItem) GetOrigin() *dendrite.PBProtoVnode
- func (*PBDTableDemotedItem) ProtoMessage()
- func (m *PBDTableDemotedItem) Reset()
- func (m *PBDTableDemotedItem) String() string
- type PBDTableGetItem
- type PBDTableItem
- func (m *PBDTableItem) GetCommited() bool
- func (m *PBDTableItem) GetFound() bool
- func (m *PBDTableItem) GetKey() []byte
- func (m *PBDTableItem) GetKeyHash() []byte
- func (m *PBDTableItem) GetOrigin() *dendrite.PBProtoVnode
- func (m *PBDTableItem) GetReplicaInfo() *PBDTableReplicaInfo
- func (m *PBDTableItem) GetTimestamp() int64
- func (m *PBDTableItem) GetVal() []byte
- func (*PBDTableItem) ProtoMessage()
- func (m *PBDTableItem) Reset()
- func (m *PBDTableItem) String() string
- type PBDTableMultiItemResponse
- type PBDTablePromoteKey
- func (m *PBDTablePromoteKey) GetDest() *dendrite.PBProtoVnode
- func (m *PBDTablePromoteKey) GetItem() *PBDTableItem
- func (m *PBDTablePromoteKey) GetOrigin() *dendrite.PBProtoVnode
- func (*PBDTablePromoteKey) ProtoMessage()
- func (m *PBDTablePromoteKey) Reset()
- func (m *PBDTablePromoteKey) String() string
- type PBDTableReplicaInfo
- func (m *PBDTableReplicaInfo) GetDepth() int32
- func (m *PBDTableReplicaInfo) GetMaster() *dendrite.PBProtoVnode
- func (m *PBDTableReplicaInfo) GetOrphanVnodes() []*dendrite.PBProtoVnode
- func (m *PBDTableReplicaInfo) GetState() int32
- func (m *PBDTableReplicaInfo) GetVnodes() []*dendrite.PBProtoVnode
- func (*PBDTableReplicaInfo) ProtoMessage()
- func (m *PBDTableReplicaInfo) Reset()
- func (m *PBDTableReplicaInfo) String() string
- type PBDTableResponse
- type PBDTableSetItem
- func (m *PBDTableSetItem) GetDemoting() bool
- func (m *PBDTableSetItem) GetDest() *dendrite.PBProtoVnode
- func (m *PBDTableSetItem) GetItem() *PBDTableItem
- func (m *PBDTableSetItem) GetMinAcks() int32
- func (m *PBDTableSetItem) GetOrigin() *dendrite.PBProtoVnode
- func (*PBDTableSetItem) ProtoMessage()
- func (m *PBDTableSetItem) Reset()
- func (m *PBDTableSetItem) String() string
- type PBDTableSetMultiItem
- func (m *PBDTableSetMultiItem) GetDest() *dendrite.PBProtoVnode
- func (m *PBDTableSetMultiItem) GetItems() []*PBDTableItem
- func (m *PBDTableSetMultiItem) GetOrigin() *dendrite.PBProtoVnode
- func (*PBDTableSetMultiItem) ProtoMessage()
- func (m *PBDTableSetMultiItem) Reset()
- func (m *PBDTableSetMultiItem) String() string
- type PBDTableSetReplicaInfo
- func (m *PBDTableSetReplicaInfo) GetDest() *dendrite.PBProtoVnode
- func (m *PBDTableSetReplicaInfo) GetKeyHash() []byte
- func (m *PBDTableSetReplicaInfo) GetOrigin() *dendrite.PBProtoVnode
- func (m *PBDTableSetReplicaInfo) GetReplicaInfo() *PBDTableReplicaInfo
- func (*PBDTableSetReplicaInfo) ProtoMessage()
- func (m *PBDTableSetReplicaInfo) Reset()
- func (m *PBDTableSetReplicaInfo) String() string
- type PBDTableStatus
- type Query
Constants ¶
const ( PbDtableStatus dendrite.MsgType = 0x20 // status request to see if remote dtable is initialized PbDtableResponse dendrite.MsgType = 0x21 // generic response PbDtableItem dendrite.MsgType = 0x22 // single item response PbDtableMultiItemResponse dendrite.MsgType = 0x23 // response with multiple items PbDtableGetItem dendrite.MsgType = 0x24 // getItem request PbDtableSetItem dendrite.MsgType = 0x25 // setItem request PbDtableSetMultiItem dendrite.MsgType = 0x26 // setMultiItem request PbDtableClearReplica dendrite.MsgType = 0x27 // clearReplica request PbDtableSetReplica dendrite.MsgType = 0x28 // setReplica request PbDtableSetReplicaInfo dendrite.MsgType = 0x29 // setReplicaInfo request PbDtablePromoteKey dendrite.MsgType = 0x30 // promote remote vnode for given key )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DTable ¶
type DTable struct {
// contains filtered or unexported fields
}
DTable is main dtable struct.
func Init ¶
Init initializes dtable and registers with dendrite as a TransportHook and DelegateHook.
func (*DTable) DumpStr ¶
func (dt *DTable) DumpStr()
DumpStr dumps dtable keys per vnode on stdout. Mostly used for debugging.
type PBDTableClearReplica ¶
type PBDTableClearReplica struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` KeyHash []byte `protobuf:"bytes,2,req,name=keyHash" json:"keyHash,omitempty"` Demoted *bool `protobuf:"varint,3,req,name=demoted" json:"demoted,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,4,opt,name=origin" json:"origin,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableClearReplica is a request message used to remove replicated item from remote vnode.
func (*PBDTableClearReplica) GetDemoted ¶
func (m *PBDTableClearReplica) GetDemoted() bool
func (*PBDTableClearReplica) GetDest ¶
func (m *PBDTableClearReplica) GetDest() *dendrite.PBProtoVnode
func (*PBDTableClearReplica) GetKeyHash ¶
func (m *PBDTableClearReplica) GetKeyHash() []byte
func (*PBDTableClearReplica) GetOrigin ¶
func (m *PBDTableClearReplica) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableClearReplica) ProtoMessage ¶
func (*PBDTableClearReplica) ProtoMessage()
func (*PBDTableClearReplica) Reset ¶
func (m *PBDTableClearReplica) Reset()
func (*PBDTableClearReplica) String ¶
func (m *PBDTableClearReplica) String() string
type PBDTableDemotedItem ¶
type PBDTableDemotedItem struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` Item *PBDTableItem `protobuf:"bytes,2,req,name=item" json:"item,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,3,opt,name=origin" json:"origin,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableDemotedItem message represents demotedItem's structure.
func (*PBDTableDemotedItem) GetDest ¶
func (m *PBDTableDemotedItem) GetDest() *dendrite.PBProtoVnode
func (*PBDTableDemotedItem) GetItem ¶
func (m *PBDTableDemotedItem) GetItem() *PBDTableItem
func (*PBDTableDemotedItem) GetOrigin ¶
func (m *PBDTableDemotedItem) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableDemotedItem) ProtoMessage ¶
func (*PBDTableDemotedItem) ProtoMessage()
func (*PBDTableDemotedItem) Reset ¶
func (m *PBDTableDemotedItem) Reset()
func (*PBDTableDemotedItem) String ¶
func (m *PBDTableDemotedItem) String() string
type PBDTableGetItem ¶
type PBDTableGetItem struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` KeyHash []byte `protobuf:"bytes,2,req,name=keyHash" json:"keyHash,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,3,opt,name=origin" json:"origin,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableGetItem is a request message used to get an item from remote vnode.
func (*PBDTableGetItem) GetDest ¶
func (m *PBDTableGetItem) GetDest() *dendrite.PBProtoVnode
func (*PBDTableGetItem) GetKeyHash ¶
func (m *PBDTableGetItem) GetKeyHash() []byte
func (*PBDTableGetItem) GetOrigin ¶
func (m *PBDTableGetItem) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableGetItem) ProtoMessage ¶
func (*PBDTableGetItem) ProtoMessage()
func (*PBDTableGetItem) Reset ¶
func (m *PBDTableGetItem) Reset()
func (*PBDTableGetItem) String ¶
func (m *PBDTableGetItem) String() string
type PBDTableItem ¶
type PBDTableItem struct { Key []byte `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` Val []byte `protobuf:"bytes,2,opt,name=val" json:"val,omitempty"` Timestamp *int64 `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"` Commited *bool `protobuf:"varint,4,opt,name=commited" json:"commited,omitempty"` KeyHash []byte `protobuf:"bytes,5,opt,name=keyHash" json:"keyHash,omitempty"` ReplicaInfo *PBDTableReplicaInfo `protobuf:"bytes,6,opt,name=replicaInfo" json:"replicaInfo,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,7,opt,name=origin" json:"origin,omitempty"` Found *bool `protobuf:"varint,8,opt,name=found" json:"found,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableItem message represents kvItem's structure.
func (*PBDTableItem) GetCommited ¶
func (m *PBDTableItem) GetCommited() bool
func (*PBDTableItem) GetFound ¶
func (m *PBDTableItem) GetFound() bool
func (*PBDTableItem) GetKey ¶
func (m *PBDTableItem) GetKey() []byte
func (*PBDTableItem) GetKeyHash ¶
func (m *PBDTableItem) GetKeyHash() []byte
func (*PBDTableItem) GetOrigin ¶
func (m *PBDTableItem) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableItem) GetReplicaInfo ¶
func (m *PBDTableItem) GetReplicaInfo() *PBDTableReplicaInfo
func (*PBDTableItem) GetTimestamp ¶
func (m *PBDTableItem) GetTimestamp() int64
func (*PBDTableItem) GetVal ¶
func (m *PBDTableItem) GetVal() []byte
func (*PBDTableItem) ProtoMessage ¶
func (*PBDTableItem) ProtoMessage()
func (*PBDTableItem) Reset ¶
func (m *PBDTableItem) Reset()
func (*PBDTableItem) String ¶
func (m *PBDTableItem) String() string
type PBDTableMultiItemResponse ¶
type PBDTableMultiItemResponse struct { Origin *dendrite.PBProtoVnode `protobuf:"bytes,1,opt,name=origin" json:"origin,omitempty"` Items []*PBDTableItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableMultiItemResponse is a response message used to send multiple kvItems to the caller.
func (*PBDTableMultiItemResponse) GetItems ¶
func (m *PBDTableMultiItemResponse) GetItems() []*PBDTableItem
func (*PBDTableMultiItemResponse) GetOrigin ¶
func (m *PBDTableMultiItemResponse) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableMultiItemResponse) ProtoMessage ¶
func (*PBDTableMultiItemResponse) ProtoMessage()
func (*PBDTableMultiItemResponse) Reset ¶
func (m *PBDTableMultiItemResponse) Reset()
func (*PBDTableMultiItemResponse) String ¶
func (m *PBDTableMultiItemResponse) String() string
type PBDTablePromoteKey ¶
type PBDTablePromoteKey struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` Item *PBDTableItem `protobuf:"bytes,2,req,name=item" json:"item,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,3,opt,name=origin" json:"origin,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTablePromoteKey is a request message used to request a promotion of a key on the remote vnode.
func (*PBDTablePromoteKey) GetDest ¶
func (m *PBDTablePromoteKey) GetDest() *dendrite.PBProtoVnode
func (*PBDTablePromoteKey) GetItem ¶
func (m *PBDTablePromoteKey) GetItem() *PBDTableItem
func (*PBDTablePromoteKey) GetOrigin ¶
func (m *PBDTablePromoteKey) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTablePromoteKey) ProtoMessage ¶
func (*PBDTablePromoteKey) ProtoMessage()
func (*PBDTablePromoteKey) Reset ¶
func (m *PBDTablePromoteKey) Reset()
func (*PBDTablePromoteKey) String ¶
func (m *PBDTablePromoteKey) String() string
type PBDTableReplicaInfo ¶
type PBDTableReplicaInfo struct { Master *dendrite.PBProtoVnode `protobuf:"bytes,1,opt,name=master" json:"master,omitempty"` Vnodes []*dendrite.PBProtoVnode `protobuf:"bytes,2,rep,name=vnodes" json:"vnodes,omitempty"` OrphanVnodes []*dendrite.PBProtoVnode `protobuf:"bytes,3,rep,name=orphanVnodes" json:"orphanVnodes,omitempty"` State *int32 `protobuf:"varint,4,opt,name=state" json:"state,omitempty"` Depth *int32 `protobuf:"varint,5,opt,name=depth" json:"depth,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableReplicaInfo message represents kvItem's replicaInfo structure.
func (*PBDTableReplicaInfo) GetDepth ¶
func (m *PBDTableReplicaInfo) GetDepth() int32
func (*PBDTableReplicaInfo) GetMaster ¶
func (m *PBDTableReplicaInfo) GetMaster() *dendrite.PBProtoVnode
func (*PBDTableReplicaInfo) GetOrphanVnodes ¶
func (m *PBDTableReplicaInfo) GetOrphanVnodes() []*dendrite.PBProtoVnode
func (*PBDTableReplicaInfo) GetState ¶
func (m *PBDTableReplicaInfo) GetState() int32
func (*PBDTableReplicaInfo) GetVnodes ¶
func (m *PBDTableReplicaInfo) GetVnodes() []*dendrite.PBProtoVnode
func (*PBDTableReplicaInfo) ProtoMessage ¶
func (*PBDTableReplicaInfo) ProtoMessage()
func (*PBDTableReplicaInfo) Reset ¶
func (m *PBDTableReplicaInfo) Reset()
func (*PBDTableReplicaInfo) String ¶
func (m *PBDTableReplicaInfo) String() string
type PBDTableResponse ¶
type PBDTableResponse struct { Ok *bool `protobuf:"varint,1,req,name=ok" json:"ok,omitempty"` Error *string `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableResponse is a generic response structure with error indication.
func (*PBDTableResponse) GetError ¶
func (m *PBDTableResponse) GetError() string
func (*PBDTableResponse) GetOk ¶
func (m *PBDTableResponse) GetOk() bool
func (*PBDTableResponse) ProtoMessage ¶
func (*PBDTableResponse) ProtoMessage()
func (*PBDTableResponse) Reset ¶
func (m *PBDTableResponse) Reset()
func (*PBDTableResponse) String ¶
func (m *PBDTableResponse) String() string
type PBDTableSetItem ¶
type PBDTableSetItem struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` Item *PBDTableItem `protobuf:"bytes,2,req,name=item" json:"item,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,3,opt,name=origin" json:"origin,omitempty"` Demoting *bool `protobuf:"varint,4,opt,name=demoting" json:"demoting,omitempty"` MinAcks *int32 `protobuf:"varint,5,opt,name=minAcks" json:"minAcks,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableSetItem is a request message used to set an item to remote vnode.
func (*PBDTableSetItem) GetDemoting ¶
func (m *PBDTableSetItem) GetDemoting() bool
func (*PBDTableSetItem) GetDest ¶
func (m *PBDTableSetItem) GetDest() *dendrite.PBProtoVnode
func (*PBDTableSetItem) GetItem ¶
func (m *PBDTableSetItem) GetItem() *PBDTableItem
func (*PBDTableSetItem) GetMinAcks ¶
func (m *PBDTableSetItem) GetMinAcks() int32
func (*PBDTableSetItem) GetOrigin ¶
func (m *PBDTableSetItem) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableSetItem) ProtoMessage ¶
func (*PBDTableSetItem) ProtoMessage()
func (*PBDTableSetItem) Reset ¶
func (m *PBDTableSetItem) Reset()
func (*PBDTableSetItem) String ¶
func (m *PBDTableSetItem) String() string
type PBDTableSetMultiItem ¶
type PBDTableSetMultiItem struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,2,opt,name=origin" json:"origin,omitempty"` Items []*PBDTableItem `protobuf:"bytes,3,rep,name=items" json:"items,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableSetMultiItem is a request message used to set multiple items on remote vnode.
func (*PBDTableSetMultiItem) GetDest ¶
func (m *PBDTableSetMultiItem) GetDest() *dendrite.PBProtoVnode
func (*PBDTableSetMultiItem) GetItems ¶
func (m *PBDTableSetMultiItem) GetItems() []*PBDTableItem
func (*PBDTableSetMultiItem) GetOrigin ¶
func (m *PBDTableSetMultiItem) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableSetMultiItem) ProtoMessage ¶
func (*PBDTableSetMultiItem) ProtoMessage()
func (*PBDTableSetMultiItem) Reset ¶
func (m *PBDTableSetMultiItem) Reset()
func (*PBDTableSetMultiItem) String ¶
func (m *PBDTableSetMultiItem) String() string
type PBDTableSetReplicaInfo ¶
type PBDTableSetReplicaInfo struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` KeyHash []byte `protobuf:"bytes,2,req,name=keyHash" json:"keyHash,omitempty"` ReplicaInfo *PBDTableReplicaInfo `protobuf:"bytes,3,req,name=replicaInfo" json:"replicaInfo,omitempty"` Origin *dendrite.PBProtoVnode `protobuf:"bytes,4,opt,name=origin" json:"origin,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableSetReplicaInfo is a request message used to update metadata for replicated item on remote vnode.
func (*PBDTableSetReplicaInfo) GetDest ¶
func (m *PBDTableSetReplicaInfo) GetDest() *dendrite.PBProtoVnode
func (*PBDTableSetReplicaInfo) GetKeyHash ¶
func (m *PBDTableSetReplicaInfo) GetKeyHash() []byte
func (*PBDTableSetReplicaInfo) GetOrigin ¶
func (m *PBDTableSetReplicaInfo) GetOrigin() *dendrite.PBProtoVnode
func (*PBDTableSetReplicaInfo) GetReplicaInfo ¶
func (m *PBDTableSetReplicaInfo) GetReplicaInfo() *PBDTableReplicaInfo
func (*PBDTableSetReplicaInfo) ProtoMessage ¶
func (*PBDTableSetReplicaInfo) ProtoMessage()
func (*PBDTableSetReplicaInfo) Reset ¶
func (m *PBDTableSetReplicaInfo) Reset()
func (*PBDTableSetReplicaInfo) String ¶
func (m *PBDTableSetReplicaInfo) String() string
type PBDTableStatus ¶
type PBDTableStatus struct { Dest *dendrite.PBProtoVnode `protobuf:"bytes,1,req,name=dest" json:"dest,omitempty"` XXX_unrecognized []byte `json:"-"` }
PBDTableStatus is a message to request the status of remote vnode.
func (*PBDTableStatus) GetDest ¶
func (m *PBDTableStatus) GetDest() *dendrite.PBProtoVnode
func (*PBDTableStatus) ProtoMessage ¶
func (*PBDTableStatus) ProtoMessage()
func (*PBDTableStatus) Reset ¶
func (m *PBDTableStatus) Reset()
func (*PBDTableStatus) String ¶
func (m *PBDTableStatus) String() string