zookeeper的典型应用场景:
zookeeper应用场景主要包括:发布/订阅、负载均衡、命名服务、分布式协调/通知(注册功能)、集群管理、master选举、分布式锁、分布式消息队列。
zk实现数据发布/订阅服务:
发布/订阅通常有两种模式:push/poll的方式为客户端提供服务。主要应用于分布式中,配置文件的全局通知、更新。
配置获取-》配置更新。在机器启动过程中,zookeeper的客户端会获取到其他客户端配置文件的改变。zk客户端通过向zk注册一个watcher监听,监听到客户端配置文件改变时,通知其他客户端信息改变。-》在系统运行过程中,当客户端系统配置文件改变时,zk通知其他注册的客户端,客户端在收到变更通知后,更新获取的数据。
zk的负载均衡:
负载均衡主要有硬件负载均衡和软件负载均衡,通过负载均衡达到计算机集群cpu、内存、网络连接、I/O进行资源配置。zookeeper主要通过软件进行负载均衡,zookeeper通过域名配置的功能,为IP配置相应的域名。
命名服务:
通过统一为服务器集群配置命名,主要通过类似linux的树形文件系统统一命名。
分布式协调服务:
在分布式系统中,通过引入分布式系统协调者来控制整个分布式应用的运行,比如分布式任务的执行、分布式机器的协调工作。一般的做法是通过多个client在一个watcher上注册(dubbo使用zk的注册功能。),当client上数据发生变化时,所有watcher的订阅者会收到相应的数据变化通知。
Master选举:
分布式锁:
zk通过分布式锁控制客户端对于共享资源的访问,当访问共享资源时,需要分布式锁保证资源的一致性。
分布式队列:
淘宝的rocketMQ。