兰考新闻网
当前位置:主页>社会新闻>
zookeeper之节点数据同步利器-缓存
来源:sowatchnet.com  阅读量:1457

前锋JAVA开发学院2019.9.9我要分享

众所周知,互联网从一开始就伴随着高并发问题。除了应用分治技术外,高并发解决方案还需要在内存,硬盘和数据库之间进行折衷。每个人都知道访问数据的优先级:内存磁盘数据库;这也催生了许多缓存系统,例如memcache,redis等;今天我们也说Zookeeper也是如此,拥有自己的缓存数据;

动物园管理员每个节点的分工不同,如下:

领导者节点-处理交易和非交易请求;

追随者节点-参与解决方案,转发交易请求;

观察者节点-主要用于分担系统负载,不参与解析;

那么这些节点如何同步数据,也就是Zookeeper在启动时可以多快地在节点之间同步数据以提供外部服务;

zkdatabase.java中有一个commitLog,用于存储已提交的事务消息记录,并最多存储500个此类记录;

在系统加载期间:

这里,从快照文件反序列化数据,然后从增量事务日志中加载一些大于快照文件的最大zxid的数据进行加载;请注意,此处传递了PlayBackListener,这意味着在加载侦听器之后将加载数据。加工工作;也就是说,初始化时存储在committedLog中的交易消息必须在增量交易日志中,而不是在快照文件中;我们看到onTxnLoaded在加载过程中被周期性地调用

onTxnLoaded的实例化函数如下:

实际上,它称为addCommittedProposal;

上面的本质是将事务消息封装为一个Request消息,然后将其存储在commitLog中,然后更新minCommittedLog和maxCommittedLog; commitLog存储的最大消息数为500;

公共静态最终int commitLogCount=500;

加载后,可以执行数据节点之间的选择过程和同步过程;

在系统运行期间:

Zookeeper责任链中的最后一个链接是FinalRequestProcessor,在处理后,它将确定是否是交易请求,如果是交易请求,则会将消息添加到commitedLog;

FinalRequestProcessor.java

如果(Request.isQuorum(request.type)){

zks.getZKDatabase.addCommittedProposal(请求);

}

坦率地说,在运行期间,事务消息请求也将存储在committedLog中,然后committedLog将在运行期间扮演非常重要的角色,即数据同步;下一节将讨论初始化期间的同步规则。

收款报告投诉

众所周知,互联网从一开始就伴随着高并发问题。除了应用分治技术外,高并发解决方案还需要在内存,硬盘和数据库之间进行折衷。每个人都知道访问数据的优先级:内存磁盘数据库;这也催生了许多缓存系统,例如memcache,redis等;今天我们也说Zookeeper也是如此,拥有自己的缓存数据;

动物园管理员每个节点的分工不同,如下:

领导者节点-处理交易和非交易请求;

追随者节点-参与解决方案,转发交易请求;

观察者节点-主要用于分担系统负载,不参与解析;

那么这些节点如何同步数据,也就是Zookeeper在启动时可以多快地在节点之间同步数据以提供外部服务;

zkdatabase.java中有一个commitLog,用于存储已提交的事务消息记录,并最多存储500个此类记录;

在系统加载期间:

这里,从快照文件反序列化数据,然后从增量事务日志中加载一些大于快照文件的最大zxid的数据进行加载;请注意,此处传递了PlayBackListener,这意味着在加载侦听器之后将加载数据。加工工作;也就是说,初始化时存储在committedLog中的交易消息必须在增量交易日志中,而不是在快照文件中;我们看到onTxnLoaded在加载过程中被周期性地调用

onTxnLoaded的实例化函数如下:

实际上,它称为addCommittedProposal;

上面的本质是将事务消息封装为一个Request消息,然后将其存储在commitLog中,然后更新minCommittedLog和maxCommittedLog; commitLog存储的最大消息数为500;

公共静态最终int commitLogCount=500;

加载后,可以执行数据节点之间的选择过程和同步过程;

在系统运行期间:

Zookeeper责任链中的最后一个链接是FinalRequestProcessor,在处理后,它将确定是否是交易请求,如果是交易请求,则会将消息添加到commitedLog;

FinalRequestProcessor.java

如果(Request.isQuorum(request.type)){

zks.getZKDatabase.addCommittedProposal(请求);

}

坦率地说,在运行期间,事务消息请求也将存储在committedLog中,然后committedLog将在运行期间扮演非常重要的角色,即数据同步;下一节将讨论初始化期间的同步规则。

友情链接:
兰考新闻网 版权所有© www.sowatchnet.com 技术支持:兰考新闻网 | 网站地图