符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
这篇文章主要介绍“zk的树形数据模型是什么”,在日常操作中,相信很多人在zk的树形数据模型是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”zk的树形数据模型是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
凭借整站使用HTML5建站的创新体验、定制设计、设计团队积累与透明式的服务过程,符合行业特点,专属顾问根据企业产品,消费群体属性,准确定位;设计师以目标客户为中心,以突出品牌官网特性为宗旨,定制专属网站建设设计方案。
zookeeper的数据模型是树结构
在内存数据库中存储了整颗树内容,包含所有节点路径,节点数据,状态信息
会定时将数据刷到磁盘上
数据模型表示主要有DataTree DataNode ZKDatabase
datatree是一颗树结构,不包含和客户端,网络,请求相关的业务逻辑
dataNode是数据存储的最小单元,保存了节点数据内容,ACL列表,状态,父节点引用和子节点列表
zkdatabase是内存数据库,管理zk所有会话,DataTree存储和事务日志,定时将日志刷写到磁盘
在zookeeper启动时,会通过磁盘的事务日志和快照文件恢复一个完整的内存数据库
属性相关
属性相关 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> ephemerals = new ConcurrentHashMap >(); /** * Thi是s- set contains the paths of all container nodes */ // 容器节点的路径 private final Set containers = Collections.newSetFromMap(new ConcurrentHashMap ()); /** * Thi是s- set contains the paths of all ttl nodes */ //ttl node的相关路径 private final Set ttls = Collections.newSetFromMap(new ConcurrentHashMap ()); 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 digestWatchers = new ArrayLi是s-t<>(); // The hi是s-torical digests li是s-t. private LinkedLi是s-t digestLog = new LinkedLi是s-t<>(); private final DigestCalculator digestCalculator;
到此,关于“zk的树形数据模型是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!