zookeeper
文章平均质量分 90
个人渣记录仅为自己搜索用
不盈利,只为分享,转载.
找到的原版url的,尽量会贴原版url.
如有版权侵犯,请留言删除.
展开
-
zookeeper 问题
1. client 连接 flower 和 连接 leader 时如何返回respone2. commit是同步的么3. leader先commit 还是 follower先commit原创 2016-04-01 17:08:10 · 480 阅读 · 0 评论 -
查看zookeeper等源码学到的封装类.
1.zookeeper: DatagramSocket类: ,自动bind 含checkSum的io类.原创 2016-11-02 21:55:41 · 559 阅读 · 0 评论 -
redis 实现 curator 分布式锁
pom 依赖dependency> groupId>org.apache.curatorgroupId> artifactId>curator-examplesartifactId> version>${curator-version}version>dependency>分布式锁: 利用了 1. temp 节点,2.和childNode原创 2017-05-11 21:35:39 · 554 阅读 · 0 评论 -
zookeeper 操作 顺序性如何保证
zookeeper 顺序性如何保证?zk读写操作特点: 所有执行都是推送,异步但顺序.1. 对Leader而言 因为和集群其他节点都是单长连接通道交互的.中间通过队列缓存. 二者都是顺序性的.所以所有请求也是顺序性的. NOTE By Phil: 我之前一开始的设想是,所有的消息都必须要有其前置消息id,这样能保证数据的顺序性校验. Leader是单机能实现. m原创 2016-12-20 10:58:12 · 2802 阅读 · 0 评论 -
zookeeper两个经典问题-带着问题看源码
1. 机器1,机器2,机器3. 机器3是Leader. 机器3接受到a,b,c消息. 机器2接受到a的proposal和commit. 没有收到b的消息. 当收到c的proposal和commit时会怎么办? 数据是否错乱?2. zk数据同步是拉取还是推送?3.机器1,2,机器3机器3是Leader. 机器2断开了. 机器2重新选举,连接到Leader上原创 2016-12-19 21:51:42 · 942 阅读 · 0 评论 -
选举完毕之后的数据同步.
Observer:1. 关键是最终leader会发布一个 Leader.UPTODATE break outerLoop;2. 处理相关Leader.proposal和Leader.commit.两种的TXN. /** * This message type is sent by a leader to propose a mutation. */public final static原创 2016-12-07 21:05:16 · 543 阅读 · 0 评论 -
zookeeper 分布式带来的不同开发设计点
zk之间的节点有各种状态,各种状态后才能进行相应的数据操作.而且节点之间的交互都是自动流转的. 不能像司机,乘客一样通过人的智能, 发现页面变更后, 去操作流转.但是又不能阻塞别人的操作, 所以技术实现上利用了 1. 数据队列 2. 状态协议直接通过io阻塞 (也可以通过 队列实现)ping通过队列,所以新加入的follower在没有同步之前,不会收到ping的原创 2016-12-19 18:35:47 · 323 阅读 · 0 评论 -
zk的心跳检测及误区.
心跳检测: ping属于主动心跳,其他操作也属于心跳.ping流程: 1. 新加入的follower在没有同步之前,Leader就可以发送ping信息. 属于数据交互 2. 异步发送 3. 异步获取ping数据.通过LearnHandler.synced()判断,最终通过 tickOfNextAckDeadline = leader.self.tic原创 2016-12-19 18:51:12 · 6317 阅读 · 1 评论 -
zookeeper 读写过程
1.找到入口类. 通过DataTree.createNode 找到对应的入口类.找到很多 processor进一步找到ZooKeeperServer.submitRequest.再进一步call hierechary的 Processor的责任链: CommitProcessor. 实现的实现注入的地方在flower,leader,observerServer的setupReque原创 2016-12-07 21:56:07 · 4021 阅读 · 0 评论 -
LearnerSyncRequest
1. OpCode.sync 这个含义是 持久化到磁盘. 会调用这个LearnerSyncRequest ,最终会调用flower的先执行 syncProcessor.processRequest(request);{flush有两个条件,超过个数,或者没有后来者. },再执行SendAckRequestProcessorLearnerSyncRequest的new 当且仅当客户端执行sy原创 2016-12-16 02:33:23 · 426 阅读 · 0 评论 -
原子文件操作 ,不错的思路.AtomicFileOutputStream
每次变更. 先新增一个temp文件. close时,再将文件替换. 确保只有一个线程在更改.public AtomicFileOutputStream(File f) throws FileNotFoundException { // Code unfortunately must be duplicated below since we can't assign //原创 2016-12-07 23:11:31 · 1402 阅读 · 0 评论 -
zookeeper边界通信入口属性,类,目录-选举时
1.流程: 选举流程: 了解算法.2.边界: 外部通信边界(含客户端和服务端): 1. 1.1 QuorumCnxManager.toSend(Long, ByteBuffer) (org.apache.zookeeper.server.quorum)里生成一个客户端连接. sock.connect(self.getVi原创 2016-12-07 19:26:23 · 556 阅读 · 0 评论 -
zookeeper 选举后,各机器之间交互边界类:
主文章: http://blog.csdn.net/fei33423/article/details/53013333 1. 选举后,各机器之间交互: 1. learner: 连接到leader learner.connectToLeader. leaderIs = BinaryInputAr原创 2016-12-07 19:42:45 · 476 阅读 · 0 评论 -
zookeeper中的自动交互引发的思考
在zk数据同步过程中.leader和follower之间需要互相交互并确认对方. 选举之后的数据同步. 这个类似打车软件中乘客和司机交互. 只不过一个人发起,一个是自动化的.测试如果期望自动化测试打车软件,也需要通过技术来实现.zk的方案,利用socket input的本身阻塞机制.阻塞获取流数据.等待对方的操作和返回.打车软件由于中间通过原创 2016-12-13 23:42:07 · 437 阅读 · 0 评论 -
zookeeper eclipse mac系统环境搭建之路 (idea) 3.4.9版本号
1.首先你要会java,有过java eclipse编码经验. 2.安装java 和 ant ,然后命令行里能执行java 和 ant3. 之前一直用maven,对ant不熟悉. 去入门了下ant4. 执行ant bin-package5. ant eclipse遇到的问题如果遇到无法执行 ivy 的. 需要下载ivy-2.4.0.jar放到ant/bin/原创 2016-11-29 15:07:45 · 910 阅读 · 0 评论 -
zookeeper入口单测类相关流程. 通过debug反向搜索代码,和调用链路.
1.启动流程,观察info日志.2.stat查询. 也没有查到对应日志, debug后全局搜索 返回字符串 "This ZooKeeper instance is not currently serving requests"[只能靠debug才能获取这些信息了] 才找到对应的堆栈 和类 StatCommand .原创 2016-11-29 22:12:59 · 436 阅读 · 0 评论 -
分布式数据一致性算法paxos解析及几个问题,收敛(含参考文献)
paxos分布式算法的几个问题.关键字,选举投票.1.为什么要有两阶段提交?2.怎么证明当咨询者知道半数的人认可某观点后,就可以认为该观点就是最终观点,不会被后面的人改变?答案:1. 为什么要有两阶段提交? 提交提案的人和决定者分开时. 可能有新的提案者会冒出来. 那么他需要先问下决定者是不是已经有观点了. 当超过半数都是同一个观点时他就不需原创 2016-08-22 11:36:08 · 2325 阅读 · 1 评论