发布时间:2023-10-22 15:30
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。
Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper就负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
Zookeeper提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。它致力于为那些高吞吐的大型分布式系统提供一个高性能、高可用、且具有严格顺序访问控制能力的分布式协调服务。
特性
1)顺序一致性:从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到Zookeeper中;对于来自客户端的每个更新请求,Zookeeper都会分配一个全局唯一的递增ID(zxid),这个ID反映了所有事务请求的先后顺序。
2)原子性:所有事务请求的处理结果在整个集群中所有机器上都是一致的。
3)最终一致性:所有客户端看到的服务端数据模型都是一致的。
4)可靠性:一旦服务端成功应用了一个事务,则其引起的改变会一直保留,直到被另外一个事务所更改,如果消息被到一台服务器接受,那么它将被所有的服务器接受。
5)实时性:一旦一个事务被成功应用后,Zookeeper可以保证客户端立即可以读取到这个事务变更后的最新状态的数据。
6)等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。
由于Zookeeper的所有更新和删除都是基于事务的,所以其在读多写少的应用场景中有着很高的性能表现。
ZooKeeper将数据存全量储在内存中以保持高性能,并通过服务集群来实现高可用。
可结合下一题一起回答:
Zookeeper有什么作用?优缺点?有什么应用场景?