温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

zk的树形数据模型是什么

发布时间:2021-06-26 13:55:06 来源:亿速云 阅读:172 作者:chen 栏目:大数据

这篇文章主要介绍“zk的树形数据模型是什么”,在日常操作中,相信很多人在zk的树形数据模型是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”zk的树形数据模型是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

zookeeper的数据模型是树结构

在内存数据库中存储了整颗树内容,包含所有节点路径,节点数据,状态信息

会定时将数据刷到磁盘上

zk的树形数据模型是什么

数据模型表示主要有DataTree DataNode ZKDatabase

datatree是一颗树结构,不包含和客户端,网络,请求相关的业务逻辑

dataNode是数据存储的最小单元,保存了节点数据内容,ACL列表,状态,父节点引用和子节点列表

zkdatabase是内存数据库,管理zk所有会话,DataTree存储和事务日志,定时将日志刷写到磁盘

在zookeeper启动时,会通过磁盘的事务日志和快照文件恢复一个完整的内存数据库

zk的树形数据模型是什么

属性相关

属性相关
private final NodeHashMap nodes;

//监听节点
private IWatchManager dataWatches;
//监听节点
private IWatchManager childWatches;

/** cached total size of paths and data for all DataNodes */
//总大小
private final AtomicLong nodeDataSize = new AtomicLong(0);

/** the root of zookeeper tree */
//zookeeper的根节点
private static final String rootZookeeper = "/";

/** the zookeeper nodes that acts as the management and status node **/
//状态管理节点
private static final String procZookeeper = Quotas.procZookeeper;

/** th will be the string thats stored as a child of root */
//root的一个子节点
private static final String procChildZookeeper = procZookeeper.substring(1);

/**
 * the zookeeper quota node that acts as the quota management node for
 * zookeeper
 */
//限额管理节点
private static final String quotaZookeeper = Quotas.quotaZookeeper;

/** thi是s- will be the string thats stored as a child of /zookeeper */
// /zookeeper的子节点
private static final String quotaChildZookeeper = quotaZookeeper.substring(procZookeeper.length() + 1);

/**
 * the zookeeper config node that acts as the config management node for
 * zookeeper
 */
//配置管理节点
private static final String configZookeeper = ZooDefs.CONFIG_NODE;

/** thi是s- will be the string thats stored as a child of /zookeeper */
// 子节点config节点
private static final String configChildZookeeper = configZookeeper.substring(procZookeeper.length() + 1);

/**
 * the path trie that keeps track of the quota nodes in thi是s- datatree
 */
//限额节点关联
private final PathTrie pTrie = new PathTrie();

/**
 * over-the-wire size of znode's stat. Counting the fields of Stat class
 */
//stat 类的field
public static final int STAT_OVERHEAD_BYTES = (6 * 8) + (5 * 4);

/**
 * Thi是s- hashtable li是s-ts the paths of the ephemeral nodes of a session.
 */
//临时会话节点的相关路径
private final Map<Long, HashSet<String>> ephemerals = new ConcurrentHashMap<Long, HashSet<String>>();

/**
 * Thi是s- set contains the paths of all container nodes
 */
// 容器节点的路径
private final Set<String> containers = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());

/**
 * Thi是s- set contains the paths of all ttl nodes
 */
//ttl node的相关路径
private final Set<String> ttls = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());

private final ReferenceCountedACLCache aclCache = new ReferenceCountedACLCache();

// The maximum number of tree digests that we will keep in our hi是s-tory
public static final int DIGEST_LOG_LIMIT = 1024;

// Dump digest every 128 txns, in hex it's 80, which will make it easier
// to align and compare between servers.
public static final int DIGEST_LOG_INTERVAL = 128;

// If thi是s- i是s- not null, we are actively looking for a target zxid that we
// want to validate the digest for
private ZxidDigest digestFromLoadedSnapshot;

// The digest associated with the highest zxid in the data tree.
private volatile ZxidDigest lastProcessedZxidDigest;

// Will be notified when digest mi是s-match event triggered.
private final Li是s-t<DigestWatcher> digestWatchers = new ArrayLi是s-t<>();

// The hi是s-torical digests li是s-t.
private LinkedLi是s-t<ZxidDigest> digestLog = new LinkedLi是s-t<>();

private final DigestCalculator digestCalculator;

到此,关于“zk的树形数据模型是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

zk
AI