0xTrustTryEP

Just do it, deeply...

Follow me on GitHub

Seata分布式事务框架设计

Feb 8, 2021 by Ravitn

引言 随着应用体量的增加,微服务作为上帝之手为超级单体打开了屏障;同时使用整个应用服务显得更加清晰。服务寄托于数据,如何解决分布式事务的ACID,成为分布式事务亟待解决的问题。比较有名的分布式事务规范有XA(2PC),TCC(3PC), SAGA, 基于BASE理论的本地事务表重试达到最终一致性解决方案;基于MQ的2PC+补偿机制(事务回查)解决方案。Seata 作为一款开源的分布式事务解...

Seata分布式事务AT模式初体验

Jan 19, 2021 by valuewithTime

引言 随着应用体量的增加,微服务作为上帝之手为超级单体打开了屏障;同时使用整个应用服务显得更加清晰。服务寄托于数据,如何解决分布式事务的ACID,成为分布式事务亟待解决的问题。比较有名的分布式事务规范有XA(2PC),TCC(3PC), SAGA, 基于BASE理论的本地事务表重试达到最终一致性解决方案;基于MQ的2PC+补偿机制(事务回查)解决方案。Seata 作为一款开源的分布式事务解决...

Zookeeper框架设计及源码解读

Jan 11, 2021 by valuewithTime

引言 从Hadoop的高可用环境,接触到Zookeeper。Zookeeper在高可用集群架构中扮演者重要的角色。除此之外,在微服务盛行的当前,Dubbo默认采用Zookeeper最为注册中心。TBSchedule使用它存储定时任务,控制任务的并发执行。同时Zookeeper作为Raft 一致性协议的经典之作,接下来我们将一探究竟。 目录 概要框架设计 源码分析 ...

Zookeeper框架设计及源码解读八(数据存储)

Jan 11, 2021 by valuewithTime

引言 针对跟随者,SendAckRequestProcessor处理器,针对非同步操作,回复ACK。 SyncRequestProcessor处理器从请求队列拉取请求,针对刷新队列不为空的情况,如果请求队列为空,则提交请求日志,并刷新到磁盘,否则根据日志计数器和快照计数器计算是否需要拍摄快照。 FollowerRequestProcessor处理器,从请求队列拉取请求,如果请求为同步请求,则...

Zookeeper框架设计及源码解读七(跟随者观察者消息处理器)

Jan 7, 2021 by valuewithTime

引言 观察者、跟随者、和领导者启动server,分别为,LeaderZooKeeperServer,FollowerZooKeeperServer,ObserverZooKeeperServer. Leader的消息处处理器链为LeaderRequestProcessor->PrepRequestProcessor->ProposalRequestProcessor->Co...

Zookeeper框架设计及源码解读六(Leader消息处理)

Jan 5, 2021 by valuewithTime

引言 跟随者,跟随领导者首先连接leader,注册follower状态,在leader连接的过程中,如果发现消息队列中有LEADERINFO请求,则响应leader然后同步leader,这部分逻辑和观察者一致,主要有同步leader日志快照,如果为TUNC命令,则截取事务日志。 跟随者处理消息包,如果为提议消息,则log请求,提交消息,则委托给commit处理器处理,如果为同步请求则从同步请...

Zookeeper框架设计及源码解读五(跟随者状态、领导者状态)

Dec 30, 2020 by valuewithTime

引言 观察者同步leader,首先从输入流中读取数据包,如果是快照同步,则从leader同步快照信息,并添加DataTree;如果是TUNC命令,则截取日志(观察者日志快于Leader),然后从磁盘中加载数据到内存数据树DataTree, 并添加committed交易日志到DataTree中。如果观察者节点没有启动,则启动ZookeeperServer(ObserverZooKeeperSe...

Zookeeper框架设计及源码解读四(观察者观察leader)

Dec 29, 2020 by valuewithTime

引言 peer状态有四种LOOKING, OBSERVING,FOLLOWING和LEADING几种状态;LOOKING为初态,Leader还没有选举成功,其他为终态。 当前QuorumPeer处于LOOKING提议投票阶段,启动一个ReadOnlyZooKeeperServer服务,并设置当前peer投票。 ReadOnlyZooKeeperServer内部的处理器链为ReadOnlyR...

Zookeeper框架设计及源码解读三(leader选举LOOKING阶段)

Dec 23, 2020 by valuewithTime

引言 启动peer选举策略实际启动的为fast leader 选举策略,如果peer状态为LOOKING, 创建投票(最后提交的日志id,时间戳,peerId)。 fast leader 选举策略启动时实际上启动了一个消息处理器Messenger。 消息处理器内部有一个发送消息工作线程WorkerSender,出列一个需要发送的消息,并把它放入管理器QuorumCnxManager的队列;...

Zookeeper框架设计及源码解读二(快速选举策略及选举消息的发送与接收)

Dec 22, 2020 by valuewithTime

引言 Zookeeper整体架构主要分为数据的存储,消息,leader选举和数据同步这几个模块。leader选举主要是在集群处于混沌的状态下,从集群peer的提议中选择集群的leader,其他为follower或observer,维护集群peer的统一视图,保证整个集群的数据一致性,如果在leader选举成功后,存在follower日志落后的情况,则将事务日志同步给follower。针对消息...