avatar
文章
78
标签
32
分类
25
主页
归档
标签
分类
关于我
flyingzc's blog
主页
归档
标签
分类
关于我

flyingzc's blog

Zookeeper事务日志,快照
发表于2019-05-07|Zookeeper
ZKDataBase结构ZKDataBase(zk内存数据库) – sessionWithTimeouts(zk所有会话 会话超时时间记录器) – DataTree存储 – 事务日志 ZKDatabase会定时向磁盘dump快照数据,在zk启动时通过磁盘上的事务日志 和 快照文件 恢复 一个完整的内存数据库 事务日志dataLogDir 文件大小都是64MB 文件名 log.xxxxxx为事务id : zxid, 且 为写入该事务文件第一条事务记录的zxid. zxid由两部分组成: 高32位 为 当前leader周期(epoch), 低32位 为 真正的操作序列号. LogFormatter 可以查看该文件 事务日志操作 滚动日志FileTxnLog.rollLog()将当前日志文件 滚动为新文件.其实就是将 logStream置为null,那么要写入日志时就会新创建一个日志文件用于写入. 写事务日志FileTxnLog.append(TxnHeader hdr, Record txn) 若logStream == null,...
Zookeeper应用
发表于2019-05-07|Zookeeper
dubbo中zk的应用123456789在zk中创建的节点路径dubbo com.alibaba.demo.DemoService [服务名,service] configurators consumers [类型,type,生产者消费者] ... providers ... [url] routers 其中接口(service)下会有四个子节点providers, consumers, routers, configurators 其中dubbo、接口、providers都是持久化节点,只有url是临时节点。当会话消失(服务器断开与zookeeper的连接),对应的临时节点会被删除。 dubbo-registry-zookeeper模块中, ZookeeperRegistry 类继承自 FailbackRegistry.构造方法中通过...
Zookeeper Processor
发表于2019-03-08|Zookeeper
processors PrepRequestProcessor通常是请求处理链的第一个处理器.识别客户端请求是否是事务请求.对于事务请求,做预处理,诸如 创建请求事务头,事务体,会话检查,ACL检查 和 版本检查 等. ProposalRequestProcessorleader 服务器的事务投票处理器,也是 leader 服务器事务处理流程的发起者.对于 非事务请求,它会直接将请求流转到 CommitProcessor 处理器,不再做其他处理.对于 事务请求,除了将请求交给CommitProcessor处理器外,还会根据请求类型创建对应的 Proposal 提议,并 发给所有 Follower 来发起一次集群内的事务投票.它还会将事务请求交给 SyncRequestProcessor 进行事务日志的记录. SyncRequestProcessor事务日志记录处理器,将事务请求记录到事务日志文件中,同时还会触发zk进行数据快照.发送Sync请求的处理器.将请求记录到磁盘.它批量处理有效执行io的请求.在将日志同步到磁盘之前,请求不会传递到下一个...
Zookeeper选举流程
发表于2019-02-18|Zookeeper
leader选举相关线程QuorumCnxManager : 管理者,包含发送 和 接收 队列.持有 listener. QuorumCnxManager.Listener : 监听 并 建立 server 之间的连接. FastLeaderElection.Messenger.SendWorker消息生产者.循环 从发送队列 queueSendMap 中取消息(出队)并发送出去.并将该消息存入 lastMessageSent 中. FastLeaderElection.Messenger.RecvWorker消息消费者.循环 接收线程从底层 Socket 收到报文后放到 recvQueue 队列中,等待 Messenger 调用 pollRecvQueue 方法获取消息. leader选举流程启动时选举选举算法的创建之前先创建 QuorumCnxManager,它通过 TCP 协议来进行 leader...
Zookeeper启动流程
发表于2019-01-18|Zookeeper
zk启动流程 启动类为 QuorumPeerMain 解析 zoo.cfg 配置 创建并启动 DatadirCleanupManager 用于清理过期 snapshot 和 txnlog. 创建 QuorumPeer 实例并启动该线程,用于完成选举. 根据 snapshot 和 txnlog 恢复 内存数据库 ZKDatabase. 12345678910111213141516171819202122232425262728293031323334353637383940- QuorumPeerMain.main()- 1.创建QuorumPeerMain对象- 2.初始化 运行 main.initializeAndRun(args) - 0.创建QuorumPeerConfig对象 - 1.通过QuorumPeerConfig.parse(),解析配置文件 - 读取zoo.cfg配置到Properties中 - parseProperties()解析Properties配置到QuorumPeerConfig对象中 -...
Zookeeper环境搭建
发表于2019-01-17|Zookeeper
zk idea 代码阅读环境搭建采用最新的 zookeeper release 版本 3.4.13zk发行版下载地址 从 github 上 clone 该版本的代码. 1. ant 构建 zkbuild.xml 搜索 ant-eclipse-1.0.bin.tar.bz2, 1290行修改 12<get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"dest="${src.dir}/java/ant-eclipse-1.0.bin.tar.bz2" usetimestamp="false" /> 执行 ant eclipse 2. idea 导入这个 eclipse 项目即可File -> New -> import project from exist source -> 选eclipse 将...
Zookeeper数据同步流程
发表于2019-01-17|Zookeeper
zk选举完后数据同步流程Leader为每个Follower/observer都建立一个TCP长连接. LearnerHandler,即learner服务器的管理者,负责follower/observer服务器和leader服务器之间的一系列网络通信.包括数据同步,请求转发和Proposal提议的投票等. leader.lead();->leader 从磁盘中恢复数据和session列表Leader zk.loadData();->Leader 启动监听线程 LearnerCnxAcceptor, 等待新的followers的连接请求->follower 连接leaderFollower follower.followLeader();->LearnerCnxAcceptor 监听到follower的socket请求,为每个 follower 创建单独的 LearnerHandler 线程用于交互.->follower 发送 FOLLOWERINFO 包 给leader,包括新的zxid​和 sidFollower...
Java 线程池实现原理
发表于2019-01-01|Concurrent
Java 线程池实现原理提交任务流程提交任务 submit() 流程。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748491.newTaskFor() 将任务包装成 FutureTask2.execute(task)交给executor执行任务 执行任务 1.若当前线程数少于核心线程数,则直接创建并添加一个 worker 来执行任务. 创建成功直接返回,否则往下走 addWorker()方法 创建一个新的线程,并把当前任务 command 作为这个线程的第一个任务 addWorker() 一.循环CAS操作,将线程池中的线程数+1 0.外层循环 1.获取当前线程状态 2.若当线程池处于 SHUTDOWN 的时候,不允许提交任务,但是已有的任务继续执行.返回false ...
1…78
avatar
flyingzc
不积跬步无以至千里
不积小流无以成江海
文章
78
标签
32
分类
25
Follow Me
公告
FlyingZC's Blog
最新文章
LinkedIn Coral SQL 翻译实现原理2025-04-09
LinkedIn Coral 编译&SQL翻译使用2025-03-07
H2 Database 事务隔离性实现原理2024-11-12
H2 Database Select 语句执行流程2024-10-24
H2 Database 事务 Rollback 流程实现原理2024-10-16
分类
  • ADB1
  • AI1
  • Concurrent2
  • Coral2
  • Data Structure1
  • Docker1
  • Dubbo7
  • H29
标签
Otter SpringBoot Narayana Redis ShardingSphere Coral spring ADB springboot SQL-Parse Zookeeper Tool Dubbo Ubuntu Spring Hotspot Concurrent MySQL Data Structure Docker Android Ubuntu Desktop Percolator Database git Transaction Tomcat H2 Omid Termux Paddle Linux
归档
  • 四月 2025 1
  • 三月 2025 1
  • 十一月 2024 1
  • 十月 2024 4
  • 九月 2024 2
  • 八月 2024 2
  • 七月 2024 5
  • 六月 2024 2
网站信息
文章数目 :
78
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2020 - 2025 By flyingzc