自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

badly的博客

努力成就非凡

  • 博客(18)
  • 资源 (5)
  • 收藏
  • 关注

原创 手把手带你撸zookeeper源码系列目录

手把手带你撸zookeeper源码(前言) 手把手带你撸zookeeper源码(配置文件) 手把手带你撸zookeeper源码(如何启动一个zookeeper服务) 手把手带你撸zookeeper源码-从源码角度分析zookeeper启动时都做了什么? 手把手带你撸zookeeper源码-zookeeper启动(二) 手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的) ...

2020-08-01 22:45:29 607 1

原创 基于java socket来进行网络通信的小例子

在之前分析zookeeper源码的过程当中,有两个地方使用到了基于java socket进行通信的地方第一个地方是在集群启动时,集群节点之间会发起leader投票选举,此时zookeeper底层是基于java socket来进行网络通信的,感兴趣的小伙伴可以看手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)这篇文章第二个地方是当集群中新加入一个zk节点或者某个节点宕机恢复启动的时候,需要恢复数据,并且从leader中同步..

2020-08-27 06:12:01 310

原创 手把手带你撸zookeeper源码-客户端如何发送数据到zk集群服务端的

接上篇文章继续分析手把手带你撸zookeeper源码-zookeeper客户端如何和zk集群创建连接上篇文章我们分析到了org.apache.zookeeper.ClientCnxn.SendThread#primeConnection 这个方法里面的代码,我粘贴几行比较重要的代码如下// 创建链接请求的对象 ConnectRequest conReq = new ConnectRequest(0, lastZxid, sessionTimeout..

2020-08-26 22:50:53 512

原创 手把手带你撸zookeeper源码-zookeeper客户端如何和zk集群创建连接

上篇文章手把手带你撸zookeeper源码-zookeeper集群如何接收客户端的连接的分析了zk集群通过监听2181端口,通过NIO的方式来等待客户端的连接,这篇文章我们主要分析一下看看客户端如何去和zk集群创建连接的客户端的入口类是org.apache.zookeeper.ZooKeeper, 如果大家通过原生的代码使用zookeeper客户端和服务段建立连接的时候,就是首先需要实例化一个Zookeeper对象,然后传递zk集群的节点ip和端口号,设置超时时间,以及监听器public Zo..

2020-08-25 22:46:35 790

原创 手把手带你撸zookeeper源码-zookeeper集群如何接收客户端的连接的

截止到目前为止, zookeeper集群启动时如何进行leader选举以及正常启动、故障恢复时zookeeper如何去恢复内存数据, 如何去leader中同步数据,这两大点都已经分析完了,感兴趣的小伙伴可以去看一下之前的文章手把手带你撸zookeeper源码系列目录接下里该分析客户端连接集群的代码了,如: 客户端如何和客户端建立的连接、会话是如何创建的、zk集群如何去维护会话的、客户端的创建、删除、修改、查询等操作、持久化节点、临时节点、以及监听通知如何实现的、写请求如何转发到leader上然后lea.

2020-08-22 18:05:37 456

原创 记不住的四种位运算

运算表符号 描述 运算规则 & 与 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 | 或 1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0 ^ 异或 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0

2020-08-20 19:30:22 184

原创 深入java底层源码, 揭开ArrayList神秘面纱

一般情况下,当我们想用一个List集合时,首先想到的是ArrayList,其次就是LinkedList,但是我相信大部分小伙伴在项目中用到的ArrayList远比LinkedList,为什么呢?什么样的情况下优先选择ArrayList,什么样的情况下优先选择LinkedList? 哪种数据结构在什么样的条件下的性能更好?以及为什么在阿里开发规范中对集合要强调必须要初始化大小呢?还有为什么在并发情况下去remove数据的时候会出现ConcurrentModificationException呢?等等,我们将先

2020-08-19 07:23:49 171

原创 手把手带你撸zookeeper源码-zookeeper集群之间如何进行ping探活机制

上两篇文章手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(一)手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(二)已经详细的把zookeeper故障重启时如何恢复数据给详细的剖析完了,这篇文章我们继续剖析一下在leader和follower数据同步完成之后,leader还会继续做哪些事情,以及如何实现ping机制的在上篇文章讲到leader同步完数据之后,会发送一个UPTODATE的通知给follower,表示数据已经同步完毕,fo

2020-08-16 07:24:59 989 1

原创 手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(二)

上篇文章手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(一)分析了在zookeeper启动的时候从本地日志文件中如何恢复数据,先获取快照文件中的数据然后反序列化到内存中,接着再对日志文件进行增量逐条回放,本篇文章详细分析一下在启动的时候如何和leader建立连接,然后从leader中如何同步数据到本地内存的如果当前存在一个zookeeper集群,现在不管是对原有的zookeeper进行重启,还是新加入一台zookeeper节点,此时zookeeper要么是obse...

2020-08-15 18:10:49 991

原创 手把手带你撸zookeeper源码-zookeeper故障重启时如何恢复数据(一)

在之前的文章手把手带你撸zookeeper源码-zookeeper中follower启动的时候会做什么?有分析过一部分follower启动时会调用syncWithLeader(zxid)方法, 此时方法会从leader中同步数据,但是回过头来看,感觉分析的不够深入,所以准备单独拉取出来一篇文章,来分析一下当follower启动时如何恢复数据的其实当一个zookeeper进程启动加入现有集群时,会有以下几种情况:1、当前zookeeper是新增的服务器, 然后作为observer角色加入集群...

2020-08-13 22:31:23 1544

原创 Java基础面试题看过来

2020-08-09 22:38:07 120

原创 手把手带你撸zookeeper源码-zookeeper的sessionId生成策略和follower调用链初始化

继上篇文章手把手带你撸zookeeper源码-zookeeper中follower启动的时候会做什么?,分析到了follower启动之后和leader建立了链接,并且把自己本地最新的zxid发送给leader,然后leader根据follower发送过来的zxid来判断如何把最新的数据同步给follower今天继续分析Learner.syncWithLeader()方法中的代码, 首先我们来看下面的一行代码zk.createSessionTracker();看字面意思是创建会话跟踪器,..

2020-08-09 12:07:36 650

原创 手把手带你撸zookeeper源码-zookeeper中follower启动的时候会做什么?

上篇文章手把手带你撸zookeeper源码-zookeeper通信序列化协议,简单说了一下zookeeper的jute序列化通信协议,写了一个简单的demo,以及如何避免粘包和拆包的,也顺带写了一点有关dubbo的序列化协议和如何自己自定义序列化协议回到上上篇文章手把手带你撸zookeeper源码-zookeeper确定好角色后会做什么?主要分析了zookeer中leader启动的时候都会做些什么事,分析到了leader启动的时候会对server.x=zk1:2888:3888,中的2888端...

2020-08-08 11:17:22 3343

原创 手把手带你撸zookeeper源码-zookeeper通信序列化协议

上篇文章分析到了zookeeper集群之间通信时用到了jute序列化协议,本篇文章来简单了解jute如何序列化和反序列化以及如何解决粘包拆包的问题的今天上网看了一下查了一下zookeeper jute,其实网上也有很多这方面的资料,我就简单的写了一个demo先来展示一下,最后给大家一点自己如何自定义传输协议,如何解决粘包拆包的问题...

2020-08-05 22:31:23 317

原创 手把手带你撸zookeeper源码-zookeeper确定好角色后会做什么?

接上文手把手带你撸zookeeper源码-zookeeper启动(五)leader选举投票归档-确认当前zk服务的角色上篇文章主要分析了leader选举的最终阶段,根据zk集群的相互投票之后,进行投票归档,然后判断某个zk获得投票数是否大于集群数量的一半,如果未超过一半,则继续下一轮的投票选举,如果有某个zk有超过一半的选票,则leader确定,然后其他zk服务则为follower或者observer不知道大家有没有搭建过三台zk的集群,如果你是按照myid从小到大依次启动三台服务器,一般情况下都.

2020-08-03 23:14:56 3473

原创 手把手带你撸zookeeper源码-zookeeper启动(五)leader选举投票归档-确认当前zk服务的角色

接上文手把手带你撸zookeeper源码-zookeeper启动(四)leader选举投票发送以及响应本篇文章主要来看看当每个zk接收到其他服务器发送过来的投票之后,接下来会怎么处理 //投票归档 recvset.put(n.sid, new Vote(n.leader, n.zxid, n.electionEpoch, n.peerEpoch)); if (termPredicate(rec..

2020-08-02 16:12:59 1341

原创 手把手带你撸zookeeper源码-zookeeper启动(四)leader选举投票发送以及响应

上篇文章手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)写了zookeeper集群之间如何基于socket建立的连接,连接建立完毕之后,接下来就是开始发送投票和接收投票,然后对投票结果进行整理,最终选定哪台服务器是leader,哪个是follower本篇文章我们接着看一下投票数据是如何发送出去的,以及如何接收到其他zk服务器发送过来的投票数据结合上篇文章所讲,我们知道,QuorumCnxManager.toSend()...

2020-08-02 06:26:02 553

原创 手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)

接上文手把手带你撸zookeeper源码-zookeeper启动(二)结合上两篇文章写的zookeeper启动时,都干了些什么,画了一张图,把涉及到的组件都在图中给展示出来,大家可以参考一下在这个图片中把之前写的源码中的所有组件都给包括了,以及每个组件是做什么用的,接下来我们会一步步的去梳理整个zookeeper源码,也会把这张图给进一步完善,最终形成一个完整的zookeeper架构原理图的上篇文章最后,我们知道调用到QuorumPeer.start方法中,在这个方法中做了好几件事,..

2020-08-01 17:37:08 647 1

zookeeper学习图谱

zookeeper学习知识点, 脑图

2018-04-22

供应链金融精华

了解供应链金融的发展,以及供应链金融的未来。。。。

2018-02-05

格鲁夫给经理人的第一课

如何从技术开发到技术经理,如何学会管理自己的团队。

2018-02-05

傻瓜oracle100问

oracle的基础知识 小问题,大解答 从基础看起,对后面的知识很有帮助哦

2013-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除