一、zookeeper的应用场景【面试 知道】
1.1、注册中心
? 分布式应用中,通常需要有一套完整的命名规则,既能够产生唯一的名称又便于人识别和记住,通常情况下用树形的名称结构是一个理想的选择,树形的名称结构是一个有层次的目录结构。通过调用Zookeeper提供的创建节点的API,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。 ? 阿里巴巴集团开源的分布式服务框架Dubbo中使用ZooKeeper来作为其命名服务,维护全局的服务地址列表。
1.2、配置中心
? 数据发布/订阅即所谓的配置中心:发布者将数据发布到ZooKeeper一系列节点上面,订阅者进行数据订阅,当数据有变化时,可以及时得到数据的变化通知,达到动态获取数据的目的。
ZooKeeper 采用的是推拉结合的方式。
1、推: 服务端会推给注册了监控节点的客户端 Wathcer 事件通知
2、拉: 客户端获得通知后,然后主动到服务端拉取最新的数据
1.3、 分布式锁(面试)
? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
1.4、分布式队列(了解)
? 在传统的单进程编程中,我们使用队列来存储一些数据结构,用来在多线程之间共享或传递数据。分布式环境下,我们同样需要一个类似单进程队列的组件,用来实现跨进程、跨主机、跨网络的数据共享和数据传递,这就是我们的分布式队列。
1.5、负载均衡
? 负载均衡是通过负载均衡算法,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力。
上图中左侧为ZooKeeper集群,右侧上方为工作服务器,下面为客户端。每台工作服务器在启动时都会去ZooKeeper的servers节点下注册临时节点,每台客户端在启动时都会去servers节点下取得所有可用的工作服务器列表,并通过一定的负载均衡算法计算得出一台工作服务器,并与之建立网络连接
让分布式中服务被调用的次数相对就均匀
【小结】
Zookeeper: 分布式小文件存储系统,管理的是分布式中服务,树形层级目录结构
作用:
-
注册中心 房产中介 协调服务提供者与消费者 正常的调用 -
配置中心 分布式的所有应该都来中心读取配置,订阅,中心一旦修改,就会通知服务,服务就会去获取新的配置,所有应该都更新配置 -
分布式锁:多个应用在同一时刻只能有一个应用能访问资源。 zookeeper: 一旦获得资源,标记已使用( 创建临时节点数据),被标记了则订阅。释放(删除数据),订阅者就会收到通知,竞争资源 惊群效应问题 -
分布式队列:使用zookeeper有序节点数据,惊群-监听上一个 -
负载均衡: 多个应用被调用的次数相对平均
|