360海量数据存储 zeppelin设计与实现
- MetaCmd Thread:Heartbeat Thread感知到元信息的更新后由MetaCmd Thread从Meta Server获取最新的元信息。通过元信息中的副本信息,MetaCmd Thread会负责修改和维护改Node Server与其他Node Server的Peer关系; 2,用户命令线程,包括Dispatch Thread及Worker Thread - Dispatch Thread:接受用的链接请求并将客户端链接交个某个Worker Thread线程处理; - Worker Thread:处理用户请求,写命令会先写Binlog,之后访问DB完成用户命令的执行。 3, 同步线程,包括服务于副本间数据同步功能的多个线程 - TrySync Thread: 负责发起主从同步请求。MetaCmd Thread修改副本状态后,TrySync Thread会一次对当前Node Server负责的所有需要建立主从关系的Partition的主Partition发送Sync命令,该Sync命令会首先获取本地的binlog位置作为当前主从同步的同步点; - Binlog Sender Thread:Partition的不同副本之间建立主从关系后会由Binlog Sender Thread读取并向从Parition的Binlog Receiver Thread 发送binlog项。这个过程通用户命令的执行异步进行,所以从的Partition可能会落后于主。同一个Sender会负责多个Partition; - Binlog Receiver Thread:接受Binlog Sender Thread发来的Binlog项,写Binlog并将写DB的操作分发给不同的Binlog BgWorker; - Binlog Receive BgWorker:接受Binlog Receiver Thread发来的请求,写DB完成操作。 4,后台工作线程,包括BGSave and DBSync Thread,Binlog Purge Thread - Binlog Purge Thread:为了减少对磁盘空间的占用,Binlog Purge Thread会定期删除过期的Binlog - BGSave and DBSync Thread:建立主从关系时,如果主Partition发现同步点已经落后于当前保留的最早的binlog,则需要进行全量同步。该线程会首先将整个数据内容dump一份并发送给对应从Partition。全同步过程利用Rsync实现。 4. 客户端请求 客户端需要访问针对某个业务Table进行操作时,会先向Meta Server请求改Table的元信息。之后每个访问请求,都会根据key计算出其所属于的Partition,通过元信息计算器Master所在的Node Server。直接请求改Node Server。 5. 故障检测及处理 Node Server定期向Meta Server发送PING消息,当节点宕机或者网络中断发生时。Meta Server会感知并修改其维护的元信息,并将元信息Epoch加一。元信息修改后,其他Node Server会从PING消息的回复中获得新Epoch,由于与本地记录不同,Node Server会由MetaCmd Thread向Meta Server 发送PULL消息主动拉去最新元信息。 元信息中记录各个Table中每个Partition所负责的Master Node Server及两个Slave Node Server。Node Server获得最新的元信息,并根据该信息修改自己维护的Partitions的主从角色,建立主从关系,提供服务。 (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |