Znode:
1、Znode既是路径(目录)也是信息(文件)
2、Znode有两种分类:一分为临时节点(会话生命周期)和永久节点;二分为普通节点和顺序节点
Watch:
1、监听与通知机制,可以在节点上监听其本身(增、删、改)或其子节点(增、删)事件
2、代码上通过exist、getData、getChildren注册监听,通过create、delete、setData可以触发通知
一致性机制:
1、Single System Image,数据会被同步到所有节点,客户端可以连接任一节点,获取数据。数据同步到各个节点肯定需要一点时间,是最终一致性,所以对于类似转账的业务,不应直接去查,而应注册监听等待通知,才能保证数据一致性
2、Sequential Consistency,同时写同一条记录问题,Leader-Follower机制,写请求都会路由到Leader,每个写请求都会加一个数字标签表明事务顺序,写请求按照顺序执行(异步的分布式系统实现同步的效果)
应用:
Zookeeper最常用的定位是分布式协调服务,协调是一个比较宽泛的概念,按照官方文档它其实可以有很多应用场景
统一命名空间 Name Service
配置管理
集群管理 Group Membership – 检测成员状态即集群节点状态
集群管理 Election – 集群选举
分布式锁
*分布式队列 – 生产者消费者队列
*Barriers (篱笆墙) - A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a computation.
*Two-phased Commit两阶段提交,通常用于分布式事务
*BookKeeper – 分布式日志流存储
这些应用的实现原理都是用上面的znode和watch机制,如集群选举,各个节点对应临时顺序节点,顺序最小的为主;分布式锁原理一模一样,顺序最小的节点获取到锁。