Documentation ¶
Index ¶
- Constants
- Variables
- func Warn(clusterID, msg string)
- func WarnBySpecialKey(key, msg string)
- type AdminTaskManager
- type Cluster
- type ClusterView
- type DataNode
- type DataPartition
- type DataPartitionMap
- type DataReplica
- type FileCrc
- type FileInCore
- type FileMetadata
- type IDAllocator
- type LeaderInfo
- type MetaNode
- type MetaPartition
- type MetaReplica
- type MetadataFsm
- func (mf *MetadataFsm) Apply(command []byte, index uint64) (resp interface{}, err error)
- func (mf *MetadataFsm) ApplyMemberChange(confChange *proto.ConfChange, index uint64) (interface{}, error)
- func (mf *MetadataFsm) ApplySnapshot(peers []proto.Peer, iterator proto.SnapIterator) (err error)
- func (mf *MetadataFsm) Del(key interface{}) (interface{}, error)
- func (mf *MetadataFsm) Get(key interface{}) (interface{}, error)
- func (mf *MetadataFsm) HandleFatalEvent(err *raft.FatalError)
- func (mf *MetadataFsm) HandleLeaderChange(leader uint64)
- func (mf *MetadataFsm) Put(key, val interface{}) (interface{}, error)
- func (mf *MetadataFsm) Snapshot() (proto.Snapshot, error)
- type MetadataSnapshot
- type Node
- type NodeView
- type Rack
- type RackView
- type RaftCmd
- type Server
- type SortedWeightedNodes
- type TopologyView
- type Vol
- type VolStatView
Constants ¶
const ( // the maximum number of tasks that can be handled each time MaxTaskNum = 30 TaskWorkerInterval = time.Microsecond * time.Duration(200) )
const
const ( LRUCacheSize = 3 << 30 WriteBufferSize = 4 * util.MB )
const ( StatPeriod = time.Minute * time.Duration(1) MetricDataNodesUsedGB = "dataNodes_used_GB" MetricDataNodesTotalGB = "dataNodes_total_GB" MetricDataNodesIncreasedGB = "dataNodes_increased_GB" MetricMetaNodesUsedGB = "metaNodes_used_GB" MetricMetaNodesTotalGB = "metaNodes_total_GB" MetricMetaNodesIncreasedGB = "metaNodes_increased_GB" MetricDataNodesCount = "dataNodes_count" MetricMetaNodesCount = "metaNodes_count" MetricVolCount = "vol_count" MetricVolTotalGB = "vol_total_GB" MetricVolUsedGB = "vol_used_GB" MetricVolUsageGB = "vol_usage_ratio" )
metrics
const ( ClusterName = "clusterName" ID = "id" IP = "ip" Port = "port" LogLevel = "logLevel" WalDir = "walDir" StoreDir = "storeDir" GroupID = 1 ModuleName = "master" CfgRetainLogs = "retainLogs" DefaultRetainLogs = 20000 )
configuration keys
const (
EmptyCrcValue uint32 = 4045511210
)
const (
NumberOfDataPartitionsToLoad = "NumberOfDataPartitionsToLoad"
)
config key
Variables ¶
var AddrDatabase = make(map[uint64]string)
AddrDatabase is a map that stores the address of a given host (e.g., the leader)
Functions ¶
func WarnBySpecialKey ¶
func WarnBySpecialKey(key, msg string)
WarnBySpecialKey provides warnings when exits
Types ¶
type AdminTaskManager ¶
type AdminTaskManager struct { TaskMap map[string]*proto.AdminTask sync.RWMutex // contains filtered or unexported fields }
AdminTaskManager sends administration commands to the metaNode or dataNode.
func (*AdminTaskManager) AddTask ¶
func (sender *AdminTaskManager) AddTask(t *proto.AdminTask)
AddTask adds a new task to the task map.
func (*AdminTaskManager) DelTask ¶
func (sender *AdminTaskManager) DelTask(t *proto.AdminTask)
DelTask deletes the to-be-deleted tasks.
type Cluster ¶
type Cluster struct { Name string BadDataPartitionIds *sync.Map DisableAutoAllocate bool // contains filtered or unexported fields }
Cluster stores all the cluster-level information.
type ClusterView ¶
type ClusterView struct { Name string LeaderAddr string DisableAutoAlloc bool MetaNodeThreshold float32 Applied uint64 MaxDataPartitionID uint64 MaxMetaNodeID uint64 MaxMetaPartitionID uint64 DataNodeStatInfo *nodeStatInfo MetaNodeStatInfo *nodeStatInfo VolStatInfo []*volStatInfo BadPartitionIDs []badPartitionView MetaNodes []NodeView DataNodes []NodeView }
ClusterView provides the view of a cluster.
type DataNode ¶
type DataNode struct { Total uint64 `json:"TotalWeight"` Used uint64 `json:"UsedWeight"` AvailableSpace uint64 ID uint64 RackName string `json:"Rack"` Addr string ReportTime time.Time sync.RWMutex UsageRatio float64 // used / total space SelectedTimes uint64 // number times that this datanode has been selected as the location for a data partition. Carry float64 // carry is a factor used in cacluate the node's weight TaskManager *AdminTaskManager DataPartitionCount uint32 NodeSetID uint64 // contains filtered or unexported fields }
DataNode stores all the information about a data node
func (*DataNode) SelectNodeForWrite ¶
func (dataNode *DataNode) SelectNodeForWrite()
SelectNodeForWrite implements "SelectNodeForWrite" in the Node interface
type DataPartition ¶
type DataPartition struct { PartitionID uint64 LastLoadedTime int64 ReplicaNum uint8 Status int8 Replicas []*DataReplica Hosts []string // host addresses Peers []proto.Peer sync.RWMutex MissingNodes map[string]int64 // key: address of the missing node, value: when the node is missing VolName string VolID uint64 FileInCoreMap map[string]*FileInCore FilesWithMissingReplica map[string]int64 // key: file name, value: last time when a missing replica is found // contains filtered or unexported fields }
DataPartition represents the structure of storing the file contents.
type DataPartitionMap ¶
DataPartitionMap stores all the data partitionMap
type DataReplica ¶
type DataReplica struct { Addr string ReportTime int64 FileCount uint32 Status int8 HasLoadResponse bool // if there is any response when loading Total uint64 `json:"TotalSize"` Used uint64 `json:"UsedSize"` IsLeader bool NeedsToCompare bool DiskPath string // contains filtered or unexported fields }
DataReplica represents the replica of a data partition
type FileCrc ¶
type FileCrc struct {
// contains filtered or unexported fields
}
FileCrc defines the crc of a file
type FileInCore ¶
type FileInCore struct { Name string LastModify int64 MetadataArray []*FileMetadata }
FileInCore define file in data partition
type FileMetadata ¶
type FileMetadata struct { Crc uint32 LocAddr string Size uint32 // contains filtered or unexported fields }
FileMetadata defines the file metadata on a dataNode
func (*FileMetadata) String ¶
func (fm *FileMetadata) String() (msg string)
type IDAllocator ¶
type IDAllocator struct {
// contains filtered or unexported fields
}
IDAllocator generates and allocates ids
type LeaderInfo ¶
type LeaderInfo struct {
// contains filtered or unexported fields
}
LeaderInfo represents the leader's information
type MetaNode ¶
type MetaNode struct { ID uint64 Addr string IsActive bool Sender *AdminTaskManager RackName string `json:"Rack"` MaxMemAvailWeight uint64 `json:"MaxMemAvailWeight"` Total uint64 `json:"TotalWeight"` Used uint64 `json:"UsedWeight"` Ratio float64 SelectCount uint64 Carry float64 Threshold float32 ReportTime time.Time MetaPartitionCount int NodeSetID uint64 sync.RWMutex // contains filtered or unexported fields }
MetaNode defines the structure of a meta node
func (*MetaNode) SelectNodeForWrite ¶
func (metaNode *MetaNode) SelectNodeForWrite()
SelectNodeForWrite implements the Node interface
type MetaPartition ¶
type MetaPartition struct { PartitionID uint64 Start uint64 End uint64 MaxNodeID uint64 Replicas []*MetaReplica ReplicaNum uint8 Status int8 Hosts []string Peers []proto.Peer MissNodes map[string]int64 LoadResponse []*proto.MetaPartitionLoadResponse sync.RWMutex // contains filtered or unexported fields }
MetaPartition defines the structure of a meta partition
type MetaReplica ¶
type MetaReplica struct { Addr string ReportTime int64 Status int8 // unavailable, readOnly, readWrite IsLeader bool // contains filtered or unexported fields }
MetaReplica defines the replica of a meta partition
type MetadataFsm ¶
type MetadataFsm struct {
// contains filtered or unexported fields
}
MetadataFsm represents the finite state machine of a metadata partition
func (*MetadataFsm) Apply ¶
func (mf *MetadataFsm) Apply(command []byte, index uint64) (resp interface{}, err error)
Apply implements the interface of raft.StateMachine
func (*MetadataFsm) ApplyMemberChange ¶
func (mf *MetadataFsm) ApplyMemberChange(confChange *proto.ConfChange, index uint64) (interface{}, error)
ApplyMemberChange implements the interface of raft.StateMachine
func (*MetadataFsm) ApplySnapshot ¶
func (mf *MetadataFsm) ApplySnapshot(peers []proto.Peer, iterator proto.SnapIterator) (err error)
ApplySnapshot implements the interface of raft.StateMachine
func (*MetadataFsm) Del ¶
func (mf *MetadataFsm) Del(key interface{}) (interface{}, error)
Del implements the interface of raft.StateMachine
func (*MetadataFsm) Get ¶
func (mf *MetadataFsm) Get(key interface{}) (interface{}, error)
Get implements the interface of raft.StateMachine
func (*MetadataFsm) HandleFatalEvent ¶
func (mf *MetadataFsm) HandleFatalEvent(err *raft.FatalError)
HandleFatalEvent implements the interface of raft.StateMachine
func (*MetadataFsm) HandleLeaderChange ¶
func (mf *MetadataFsm) HandleLeaderChange(leader uint64)
HandleLeaderChange implements the interface of raft.StateMachine
func (*MetadataFsm) Put ¶
func (mf *MetadataFsm) Put(key, val interface{}) (interface{}, error)
Put implements the interface of raft.StateMachine
type MetadataSnapshot ¶
type MetadataSnapshot struct {
// contains filtered or unexported fields
}
MetadataSnapshot represents the snapshot of a meta partition
func (*MetadataSnapshot) ApplyIndex ¶
func (ms *MetadataSnapshot) ApplyIndex() uint64
ApplyIndex implements the Snapshot interface
func (*MetadataSnapshot) Close ¶
func (ms *MetadataSnapshot) Close()
Close implements the Snapshot interface
func (*MetadataSnapshot) Next ¶
func (ms *MetadataSnapshot) Next() (data []byte, err error)
Next implements the Snapshot interface
type Node ¶
type Node interface { SetCarry(carry float64) SelectNodeForWrite() }
Node defines an interface that needs to be implemented by weightedNode
type RaftCmd ¶
RaftCmd defines the Raft commands.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server represents the server in a cluster
type SortedWeightedNodes ¶
type SortedWeightedNodes []*weightedNode
SortedWeightedNodes defines an array sorted by carry
func (SortedWeightedNodes) Len ¶
func (nodes SortedWeightedNodes) Len() int
func (SortedWeightedNodes) Less ¶
func (nodes SortedWeightedNodes) Less(i, j int) bool
func (SortedWeightedNodes) Swap ¶
func (nodes SortedWeightedNodes) Swap(i, j int)
type TopologyView ¶
type TopologyView struct {
NodeSet map[uint64]*nodeSetView
}
TopologyView provides the view of the topology view of the cluster
Source Files ¶
- admin_task_manager.go
- api_service.go
- cluster.go
- cluster_stat.go
- cluster_task.go
- config.go
- const.go
- data_node.go
- data_partition.go
- data_partition_check.go
- data_partition_map.go
- data_replica.go
- disk_manager.go
- filecheck.go
- filecrc.go
- filemeta.go
- http_server.go
- id_allocator.go
- master_manager.go
- meta_node.go
- meta_partition.go
- meta_partition_manager.go
- metadata_fsm.go
- metadata_fsm_op.go
- metadata_snapshot.go
- monitor_metrics.go
- node_selector.go
- operate_util.go
- server.go
- topology.go
- vol.go