Zookeeper概念

一、单机与分布式
1.单机架构,一个系统业务量很小的时候所有代码都放在一个项目就行了,将这个项目部署在一台服务器上,整个项目所有的服务都由这台服务器提供。
缺点:

  • 服务性能存在瓶颈
  • 不可伸缩性
  • 代码量庞大,系统臃肿,牵一发而动全身
  • 单点故障问题

2.分布式架构,就是将一个完整的系统,按照业务功能拆分城一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,他们之间通过RPC方式通信。
优势:

  • 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试、系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
  • 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。
  • 服务的复用性更高。比如,当我们将用户系统作为独立的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

分布式,即将一套系统拆分成不同子系统部署在不同的服务器上。
集群,即部署多个相同的子系统在不同的服务器上。
二、分布式的CAP定理
Consistency(一致性)
Availability(可用性)
Partition tolerance(分区容错性)
分区容错无法避免,一致性和可用性二选一。即只能选择CP或AP。
分区容错性:大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区。分区容错,即区间通信可能失败。

一致性,即服务器一写操作后,向服务器二发送需要保持一致的信息(同步),此时服务器二不能读、写操作,同步后方可读写操作。

可用性,即服务器一在写操作时,服务器二也可以读写操作,即会导致不同用户拿到的数据可能会不一致。

即一致性会牺牲可用性;可用性会牺牲一致性;俩者只能二选一。

选择场景:
一致性:一般是涉及到重要的数据,比如钱、商品数量、商品价格。
可用性:网页的更新不是也别强调一致性,短期内,一些用户拿到老版本,另一些用户拿到新版本,问题不大。
三、Zookeeper的概念
多个节点协同问题:
a.每天的定时任务由哪个节点来执行?
b.RPC调用时的服务发现?
c.如何保证并发请求的幂等
如果靠节点自身进行协调这是非常不可靠的,性能上也不可取。必须由一个独立的服务做协调工作,它必须可靠,而且保证性能。

1.Zookeeper是一个开放源代码的分布式协调服务。Zookeeper的设计目标是将哪些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
2.应用场景

  • 数据发布/订阅:

    数据发布/订阅的一个常见的场景是配置中心,发布者把数据发布到ZooKeeper的一个或一系列的节点上,供订阅者进行数据订阅,达到动态获取数据的目的。

    ZooKeeper采用的是推拉结合的方式。
    a.推:服务端会推给注册了监控节点的客户端Watcher事件通知。
    b.拉:客户端获得通知后,然后Z互动到服务端拉取最新的数据。
    即服务端推Wathcer事件给监听节点的客户端,客户端再去服务端拉数据。

  • 负载均衡:
    负载均衡是一种手段,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力。

  • 命名服务,即提供名称的服务。

    功能:
    a.提供类JNDI功能,可以把系统中各种服务的名称、地址以及目录信息存放在ZooKeeper,需要的时候去ZooKeeper中读取
    b.制作分布式的序列号生成器
    JNDI(Java Naming and Directory Interface,Java命名和目录接口)

  • 分布式协调/通知:

    分布式协调/通知服务是分布式系统中不可缺少的一个环节,是将不同的分布式组件有机结合起来的关键所在。对于一个在多台机器上部署运行的应用而言,通常需要一个协调者(Coordinator)来控制整个系统的运行流程。

ZooKeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架。
3.基本概念
集群角色:
通常在分布式系统中,构成一个集群的每一台机器都有自己的角色,最典型的集群模式就是Master/Slave模式(主备模式)。在这种模式中,我们把能够处理所有写操作的机器成为Master机器,把所有通过异步复制方式获取最新数据,并提供读服务的机器成为Slave机器。
ZooKeeper没有沿用MasterSlave概念,而是引入了Leader、Follower和Observer三种角色。

数据节点(znode):
节点通常来说是指组成集群的每一台机器。
ZooKeeper的节点分为俩类

  • 第一类同样是指构成集群的机器,我们称之为机器节点
  • 第二类则是指数据模型中的数据单元,我们称之为数据节点-ZNode

ZooKeeper将所有数据存储在内存中,数据模型是一颗树。

Watcher监听机制
watcher(事件监听器),是ZooKeeper中的一个很重要的特性。
ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper服务端会将事件通知到感兴趣的客户端上去,该机制是ZooKeeper实现分布式协调服务的重要特性。

ACL权限控制
ZooKeeper采用ACL(Access Control Lists)策略来进行权限控制,类似于UNIX文件系统的权限控制。ZooKeeper定义了如下5种权限。
CREATE:创建子节点的权限
READ:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限
DELETE:删除子节点的权限
ADMIN:设置节点ACL的权限
其中create和delete权限是针对子节点的权限控制。

总结:
1.单机跟分布式就是将单机的内容拆分成分布式;即按照业务成多个独立的子系统。
CAP定理,即一致性、可用性、分区容错性。CP或AP只能选一个,即选择一致性则会牺牲可用性,选择可用性则会牺牲一致性。分区容错性就是解决系统之间通过RPC通信可能会失败。而一致性和可用性就是用不用读写锁的问题。
2.Zookeeper是一个开放源代码的分布式协调服务,Zookeeper的设计目标是将哪些复杂且容易出错的分布式一致性服务封装起来给用户使用。有4种应用场景,即数据发布/订阅,负载均衡,命名服务,分布式协调/通知。ZooKeeper的节点分为机器节点和数据节点,数据模型是一颗树;Watcher监听机制;ACL权限控制,即create,read,write,delete,admin5种权限。
3.就是说ZooKeeper是一个分布式服务的一个协调者,主要处理分布式一致性服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值