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