zookeeper是一款分布式的、开源的协调系统,用于为分布式系统中提供配置、同步、命名、分组、协调服务,将应用从复杂的协调场景下解脱出来。zookeeper是由多个分布式节点组成的一个统一服务,整体架构如下图,
客户端只需要和一个zk节点建立连接,通过这个连接的节点读取已有的数据或者写入新的数据,zk服务端内部维护了类型于文件系统的目录树结构,不同于文件系统的是,zk中的节点既可以作为目录,同时也可以作为文件,zk中的节点简称为znode;
和文件系统对外提供open、close、seek、read、write操作接口一样,znode也对外提供了create、delete、set data、get data、exists、sync、ls等操作,每一个znode除了本身的数据信息外,还包括一些系统属性,如版本号、acl、创建时间等,
zk服务提供了如下保证
1. 操作的顺序性
2. 原子性:操作要么成功,要么失败,不存在部分成功的情况
3. 统一的系统镜像:客户端看到的结果一致而和其具体连接的节点无关
4. 数据可靠性
5. 客户端数据的最终一致性:最新的数据在未来一定的时间一定会推送到客户端
性能
可靠性(7台zk节点,30%比例的写请求)