山东大学软件工程应用与实践
文章平均质量分 58
azzin
这个作者很懒,什么都没留下…
展开
-
项目实训2022-3-17
添加僵尸管理器,获取僵尸在Zombie类添加代码 void Start() { GetGirdByVerticalNum(0); animator = GetComponentInChildren<Animator>(); ZombieManager.Instance.AddZombie(this); }ZombieManager类using System.Collections;using System原创 2022-03-17 12:30:00 · 96 阅读 · 0 评论 -
项目实训2022-3-15
子弹射出完成僵尸的攻击逻辑后,本次目的是完成豌豆射手子弹的的效果,以便后续实现僵尸的受击效果加入碰撞和刚体效果给子弹选择collider 2D和rigidbody 2D,同理僵尸也加入碰撞。实现子弹的旋转和移动public class Bullet : MonoBehaviour{ private Rigidbody2D rigidbody; // Start is called before the first frame update void Start()原创 2022-03-15 13:40:52 · 285 阅读 · 0 评论 -
Zab协议(4)-选举算法选举阶段源码解析(3)
2021SC@SDUSC目录背景介绍回顾源码分析背景介绍该部分是选举过程最核心的代码。正式选举过程中需要知道以下两个个名词。(2)zxid:服务器在运行时产生的数据id,zxid越大,表示数据越新。(3)epoch:选举的轮数,即逻辑时钟。随着选举的轮数增加回顾 while (running) { switch (getPeerState()) { case LOOKING:原创 2021-10-31 22:31:16 · 192 阅读 · 0 评论 -
Zab协议(12)-数据恢复后的源码分析
2021SC@SDUSC目录回顾源码分析总结回顾上次分析到了初始化一个leader对象,表示leader 节点的请求处理服务。源码分析开启线程用于接收 follower 的连接请求如果超过半数的节点 follower 发送了ack;此时说明过半的 follower 节点已经完成数据同步使用startZkServer()方法开启zookeeper void lead() throws IOException, InterruptedException { self.end原创 2021-12-22 22:19:24 · 1478 阅读 · 0 评论 -
Zab协议(11)-数据恢复阶段总结
2021SC@SDUSC目录什么是数据恢复什么时候会进入数据恢复模式数据恢复需要解决的问题流程什么是数据恢复当Leader出现故障或者重启时,所有节点都会使用崩溃恢复协议来使彼此达到一个一致的状态。什么时候会进入数据恢复模式1、当服务器刚刚启动时2、当leader出现网络中断,崩溃或者重启的情况3、当集群中已经不存在过半的服务器与Leader服务器保持正常通信。数据恢复需要解决的问题确保已经被leader提交的proposal必须最终被所有的follower服务器提交。确保没有被处理p原创 2021-12-18 18:51:14 · 266 阅读 · 0 评论 -
Zab协议(10)-选举算法阶段总结
2021SC@SDUSC目录选举同步广播选举最新的版本里的选举算法只有一个 ,即FastLeaderElection方法。选举:通过特定的选举算法选出leader,第一步:当系统刚启动时,3 个服务器当前投票均为第一轮投票。此时每个服务器都推选自己,并将选票信息广播出去。第二步:根据判断规则,先比较数据zxid,数据zxid大者胜出;其次再判断id, 大者胜出;然后再将自身最新的选举结果发送出去。第三步:选出的主节点计算得票数,如果超过集群中节点半数,则该节点被选举为leader同步Le原创 2021-12-12 22:03:06 · 1411 阅读 · 0 评论 -
Zab协议(9)-数据恢复源码分析(4)
2021SC@SDUSC目录回顾源码分析回顾上一篇分析到了 queuedPackets.add(new QuorumPacket(Leader.UPTODATE, -1, null, null));继续分析源码分析 while (true) { qp = new QuorumPacket(); ia.readRecord(qp, "packet"); long traceMa原创 2021-12-05 23:34:19 · 1787 阅读 · 0 评论 -
Zab协议(8)-数据恢复源码分析(3)
2021SC@SDUSC目录回顾源码分析回顾本次继续syncWithLeader的分析源码分析 ack.setZxid(ZxidUtils.makeZxid(newEpoch, 0)); writePacket(ack, true); sock.setSoTimeout(self.tickTime * self.syncLimit); zk.startup();follower发送给leader 一个ack原创 2021-11-28 22:00:17 · 1313 阅读 · 0 评论 -
Zab协议(7)-数据恢复源码解析(2)
2021SC@SDUSC目录回顾源码分析回顾前面分析完了zk的选举过程,但这些都是zk正常情况下运行的过程,这次分析一下zk出现故障时的数据恢复源码分析首先定位到Learner类,因为syncWithLeader方法的代码实在是太长,一步步分析。QuorumPacket ack = new QuorumPacket(Leader.ACK, 0, null, null); QuorumPacket qp = new QuorumPacket(); long newE原创 2021-11-21 22:02:50 · 905 阅读 · 0 评论 -
Zab协议(6)-数据恢复源码分析(1)
2021SC@SDUSC目录回顾源码分析回顾前面分析完了zk的选举过程,但这些都是zk正常情况下运行的过程,这次分析一下zk出现故障时的数据恢复源码分析loadDataBase方法是用来从本地文件中读取日志文件来恢复数据 private void loadDataBase() { File updating = new File(getTxnFactory().getSnapDir(), UPDATING_EP原创 2021-11-14 21:48:06 · 1901 阅读 · 0 评论 -
Zab协议(5)-选举算法选举阶段源码解析(4)
2021SC@SDUSC目录回顾源码分析回顾上一环节讲了一下选举过程中最核心代码的LOOKING状态,这篇文章分析一下选举过程中的网络通信。源码分析 case OBSERVING: try { LOG.info("OBSERVING"); setObserver(makeObserver(logFactory));原创 2021-11-07 22:09:46 · 1256 阅读 · 0 评论 -
Zab协议(3)-选举算法选举阶段源码解析(2)
2021SC@SDUSC目录回顾QuorumPeer介绍源码分析回顾上一节分析了投票阶段的数据传输和投票的一部分过程,其中经常用到QuorumPeer类,本节分析一下QuorumPeer代码QuorumPeer介绍该类zookeeper的Leader选举的启动类,负责创建选举算法,zk数据恢复,启动leader选举。源码分析 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; }首原创 2021-10-24 21:34:42 · 99 阅读 · 0 评论 -
Zab协议(2)-选举算法选举阶段源码解析(1)
2021SC@SDUSC目录选举阶段介绍回顾源代码分析总结选举阶段介绍分析源代码之前首先我们先了解一下选举的流程。本阶段是Zab的第一个阶段,每个节点在一开始都处于选举节点,只要有一个节点得到超过半数节点的票数,它就可以当选准 Leader,只有到达第三个阶段(也就是同步阶段),这个准 Leader 才会成为真正的 Leader。每个Server在广播自己的选票前,会将自己的投票箱(recvset)清空。该投票箱记录了所受到的选票。例如:Server_2 投票给 Server_3,Server_原创 2021-10-14 22:20:56 · 196 阅读 · 0 评论 -
Zab协议(1)-选举算法准备阶段源码解析
目录2021SC@SDUSCZab简介源码分析2021SC@SDUSCZab简介Zookeeper(后文简称zk) 是通过 Zab 协议来保证分布式事务的最终一致性。基于该协议,zk实现了一种主备模型(即Leader和Follower模型)的系统架构来保证集群中各个副本之间数据的一致性。leader 负责数据的读写,而follower只负责数据的读,如果follower遇到写操作,会提交到leader;Zab可大致分为四个阶段:选举:通过特定的选举算法选出leader,发现:leader与fol原创 2021-10-10 14:45:30 · 286 阅读 · 0 评论 -
ZooKeeper综述
目录2021SC@SDUSCZookeeper是什么Zookeeper的特性1.顺序一致性2.原子性3.单一视图4.可靠性5.实时性6.等待无关Zookeeper的应用场景配置管理命名服务集群管理分布式锁Zookeeper的局限性2021SC@SDUSCZookeeper是什么Zookeeper 是一个分布式的,开源的分布式应用程序协调服务可以实现配置管理,名字服务,提供分布式同步以及集群管理等功能。事实上,Zookeeper本质是一个分布式小文件存储系统Zookeeper的特性1.顺序一致性原创 2021-09-28 19:16:05 · 132 阅读 · 0 评论