seaweedfs源码阅读记录2
来源:互联网 发布:韩国文化产业数据 编辑:程序博客网 时间:2024/05/12 16:54
master启动过程
使用pycharm , 入口为weed.go, 根据参数调用command文件夹下的文件.
opology 核心模块,主要包括 【DataCenter, Rack, DataNode】 三层拓扑结构,
参考文章: weed-fs 源码解读
type Sequencer interface { NextFileId(count uint64) (uint64, uint64) SetMax(uint64) Peek() uint64}
topology中包含Sequencer , sequence 负责FileID的全局有序生成
type Topology struct { NodeImpl //指向NodeImpl对象,即Topology和node相互指向 collectionMap *util.ConcurrentReadMap pulse int64 volumeSizeLimit uint64 Sequence sequence.Sequencer chanDeadDataNodes chan *DataNode chanRecoveredDataNodes chan *DataNode chanFullVolumes chan storage.VolumeInfo configuration *Configuration RaftServer raft.Server}
NodeImpl结构
type NodeImpl struct { id NodeId volumeCount int activeVolumeCount int maxVolumeCount int parent Node sync.RWMutex // lock children children map[NodeId]Node maxVolumeId storage.VolumeId //for rack, data center, topology nodeType string value interface{} //指向Topology对象,即Topology和node相互指向}
DataNode数据结构
go
type DataNode struct {
NodeImpl
volumes map[storage.VolumeId]storage.VolumeInfo
Ip string
Port int
PublicUrl string
LastSeen int64 // unix time in seconds
Dead bool
}
go
type VolumeInfo struct {
Id VolumeId
Size uint64
ReplicaPlacement *ReplicaPlacement
Ttl *TTL
Collection string
Version Version
FileCount int
DeleteCount int
DeletedByteCount uint64
ReadOnly bool
}
通过RaftServer的raft协议,完成多个weedmaster间投票选leader的事情,
当启动多个ServerMaster时,它们之间会进行通信,通过raft协议选举出一个Leader,对所有的master进行管理。
weed-fs中,通过使用raftServer完成上述选举过程;而raftServer则是用到了第三方资源,即goRaft(参照http://ayende.com/blog/165858/reviewing-go-raft-part-i)。 go
type RaftServer struct {
peers []string // initial peers to join with
raftServer raft.Server //使用goraft //type Server interface 包含实现raft的方法
dataDir string
httpAddr string
router *mux.Router
topo *topology.Topology
}
- seaweedfs源码阅读记录2
- seaweedfs源码阅读记录1
- seaweedfs源码阅读记录3-raft协议理解
- seaweedfs源码阅读记录9-生成fid过程
- seaweedfs源码阅读4-volume启动过程
- seaweedfs源码阅读5-文件PUT过程
- seaweedfs源码阅读6-文件存储格式
- seaweedfs源码阅读7-文件存储过程
- seaweedfs源码阅读8-GET&HEAD获取文件过程
- GiraphV1.2源码阅读记录
- 分布式存储Seaweedfs源码分析
- SeaweedFS
- fatcache源码阅读记录
- zepto 源码阅读记录
- 分布式文件存储Seaweedfs源码剖析
- java源码阅读记录1
- 应该阅读的源码记录
- java LinkedList源码阅读记录
- FreeRTOS实验_独立看门狗监视多线程
- seaweedfs源码阅读记录1
- 向反编译出来的smali实现中添加日志
- tomcat的server.xml详解
- houdini节点ray的一点改进(原理
- seaweedfs源码阅读记录2
- Factor Combinations
- InputStream 转 String三种方式
- seaweedfs源码阅读记录3-raft协议理解
- python爬取廖雪峰的python3教程
- javascript之Dom编程艺术四
- javascript this指代,new的含义以及prototype,原型链
- seaweedfs源码阅读4-volume启动过程
- VisualStudio2017集成GitHub