Zookeeper概述

转载https://www.w3cschool.cn/zookeeper/zookeeper_overview.html

zookeeper概述

zookeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。
zookeeper通过其简单的架构和api解决了这个问题。zookeeper允许开发人员专注于核心应用程序逻辑,而
不必担心应用程序的分布式特性。
zookeeper构架最初是在 yahoo! 上构建的,用于以简单而稳健的方式访问他们的应用程序。后来apache zookeeper
成为hadoop、hbase和其他分布式框架使用的有组织服务的标准。例如apache hbase使用zookeeper跟踪分布式数据的状态。

zookeeper是什么

apache zookeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步概念维护共享数据。zookeeper
本身是一个分布式应用程序,为写入分布式应用程序提供服务。
zookeeper提供的常用服务如下:
1、命名服务 按名称标识集群中的节点。类似于dns,但仅对于节点。
2、配置管理 加入节点的最近的和最新的系统配置信息。
3、集群管理 实时地在集群和节点状态中加入/离开节点。
4、选举算法 选举一个节点作为协调目的的leader。
5、锁定和同步服务 在修改数据的同时锁定数据。此机制可以帮助你在连接其他分布式应用程序(如apache hbase)时进行自动故障恢复。
6、高度可靠的数据注册表 即使在一个或几个节点关闭时也可以获得数据。
竞争条件和死锁使用故障安全同步方法进行处理,另一个主要缺点是数据的不一致性,zookeeper使用了原子性解析(一次数据更新要么成功,要么失败,不存在中间状态)。

分布式应用

分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。通常来说,
对于复杂而耗时的任务,非分布式应用(运行在单个系统中)需要几个小时才能完成,而分布式应用通过使用所有系统涉及的
计算能力可以在几分钟内完成。
通过将分布式应用配置为在更多的系统上运行,可以进一步减少完成任务的时间。分布式应用正在运行的一组系统称为集群,
而在集群中运行的每台机器称为节点。
分布式应用有两部分,Server服务器Client客户端应用程序。服务器应用程序实际上是分布式的,并具有通用接口,
以便客户端可以连接到集群中的任何服务器并获取相同的结果。客户端应用程序是与分布式应用进行交互的工具。
在这里插入图片描述

zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性的问题,如怎样避免同时操作同一数据
造成脏读的问题。zookeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以
对树中的节点进行有效管理。从而来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据
的集群管理。诸如:统一命名服务(dubbo)、分布式配置管理(solr的配置集中管理)、分布式消息队列(sub/pub)、分布式锁、分布式协调等功能。

zookeeper架构图

在这里插入图片描述

Leader:zookeeper集群工作的核心。事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内部各个服务的调度者。对于create,setdata,delete等有写操作的请求,则需要统一转发给leader处理,leader需要决定编号、执行操作,这个过程称为一个事务。
Follower:处理客户端非事务(读操作)请求,转发事务请求给Leader,参与集群leader选举投票2n-1台。针对访问量比较大的zookeeper集群,还可以增加observer观察者角色。
Observer
观察者角色,观察zookeeper集群的最新状态变化,并将这些状态同步过来,其对于非事务请求可以进行独立处理;对于事务处理,则会转发给leader服务器处理,不会参与任何形式的投票。只提供服务,通常用于在不影响集群事务处理能力的前提下提供集群的非事务处理能力。这样可以增加并发的请求。

zookeeper当中的主从与主备

主从:主节点少,从节点多,主节点分配任务,从节点具体执行任务。
主备:主节点与备份节点,主要用于解决我们主机节点挂掉以后,如何选出来一个新的主节点的问题,保证我们的主节点不会宕机。
很多时候,主从与主备没有太明明显的分界线,很多时候都是一起出现。

zookeeper特性

1、一致性:每个server保存一份相同的数据副本,client无论连接到哪个server,展示的数据都是一致的。
2、可靠性:如果消被其中一台服务器接受,那么将被所有的服务器接受。
3、顺序性:包括全局有序和偏序两种。全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有server上消息a在消息b前被发布,偏序是指如果一个消息b在消息a后被同一个发送者发布,a必须将排在b前面。
4、数据更新原子性:一次数据更新要么成功,要么失败,不存在中间状态。
5、实时性:zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。

分布式应用的优点

1、可靠性:单个或几个系统的故障不会使整个系统出现故障。
2、可扩展性:可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。
3、透明性:隐藏系统的复杂性,并将其显示为单个实体/应用程序。

分布式应用的挑战

1、竞争条件:两个或多个机器尝试执行特定任务,实际上只需要要任意给定时间由单个机器完成。如共享资源只能在
任意给定时间有单个机器修改。
2、死锁:两个或多个操作等待彼此无限期完成。
3、不一致:数据的部分失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值