分布式存储同步
2017-03-18 22:38:47 0 举报
分布式存储同步是一种在多个节点之间复制和同步数据的技术,以确保数据的一致性和可用性。它通过将数据分割成多个块,并将这些块分布在不同的物理位置上来实现。当一个节点上的文件被修改时,该变化会被立即传播到其他所有节点上,从而保持数据的实时同步。这种技术可以提供更高的性能、可靠性和容错能力,适用于需要处理大量数据的企业级应用。常见的分布式存储同步方案包括分布式文件系统(如Hadoop HDFS)、对象存储服务(如Amazon S3)以及云存储平台(如Google Cloud Storage)。
作者其他创作
大纲/内容
nextProcessor.processRequest
循环清空队列queuedRequests.poll() {如果是写请求或者是写请求后的读:pendingRequests.computeIfAbsent加到以sessionid为key的列表中 }
ProposalRequestProcessor
YES
远程log
保存同步时间syncAt
结束
syncProcessor.processRequest
LeaderRequestProcessor
NO
死循环:queuedRequests.take()
接收command
server查询update_at > ${syncAt}的数据返回
写zklog(硬盘)
初始化:initialize()
commitedRequests.add(req)
AckRequestProcessor
按时间戳归并
更新本地profile,执行相应操作
参数校验
用户读
用户写
实时同步
zks.getLeader().propose(req)给Follower发Proposal
请求同步
server端profile的更新时间戳比本地新?
Leader.processAck()
客户端A
获取成功?
CommitProcessor
死循环:submittedRequests.take()
客户端修改配置,同步到server
SyncRequestProcessor
next.processRequest(request)
ToBeAppliedProcessor
queuedRequests.add(request)
将server返回的数据更新到本地
用户更新配置更新时间为updateAt
submittedRequests.add(req)
rc = applyRequest(request);写到内存
Leader.tryToCommit():检查达到quorums没,达到了就可以commit了发消息让follower commit再自己commit
cnxn.sendResponse() 返回响应
Server
FinalRequestProcessor
本地存储
执行相应操作
初始化:super.start(),死循环执行下面过程
推送command告知客户端更新
PrepRequestProcessor
写空了缓存后,nextProcessor.processRequests()
本地log
循环清空队列:commitedRequests {processWrite(request)nextProcessor.processRequest }
合并的全局存储
server返回成功?
需要更新?(data不空)
客户端调用getProfile()获取server配置
所有客户端A、B、C、D........
server更新数据库
收藏
0 条评论
回复 删除
下一页