TL--3--zookeeper--4

羊群效应的优化,监听的是状态。

-------------------------------------------------------------

源码:

TL--3--zookeeper--4

zookeeper内部是NIO,内部是netty的。

内存数据是保存到硬盘,重启再加载进来。

用快照文件和日志文件。

会话管理器。定时扫描会话看是不是过期了。

-------------------------------------------------------------------------

初始化对外服务:

NIO的工厂类。循环监听事件节点是什么状态。

两个端口号:一个是数据同步 一个是选举

启动服务:

TL--3--zookeeper--4

开启服务对外的netty或者nio服务:

TL--3--zookeeper--4

-----------------

netty启动:

TL--3--zookeeper--4

看下pipline是如何初始化的。

好熟悉的代码

TL--3--zookeeper--4

TL--3--zookeeper--4

所有的连接进来的时候都会进入到这个方法的。点进去追踪:

创建连接,相同客户端的连接放在一起。

读取数据channelRead。

我们可以用ls /模拟下。

-----

快照和事务日志的存储:

事务日志是实时保存的,快照是时间点所有的数据。

TL--3--zookeeper--4

快照是固定大小的,倍数扩容的。

日志和快照是看启动时候日志id谁大用谁的。

写10万次日志文件就写到快照文件的。再新建日志文件。

快照拿最新的用zxid比较,最大的,然后拿日志的,和快照的zxid比较。

流程:

DataTree:

TL--3--zookeeper--4

数据都保存在了concurrenthashmap里面了。

任何数据变更导致zxid的增加。

 

相关文章:

  • 2021-08-03
  • 2021-06-07
  • 2022-01-22
  • 2022-02-21
  • 2021-09-30
  • 2022-12-23
  • 2021-11-03
  • 2021-06-21
猜你喜欢
  • 2021-09-05
  • 2022-12-23
  • 2021-06-23
  • 2022-02-21
  • 2021-10-12
  • 2021-08-04
  • 2021-07-22
相关资源
相似解决方案