zookeeper学习总结(一)

背景知识

该部分主要介绍什么是分布式系统以及分布式系统存在哪些问题
随着互联网技术的发展,导致大型网站需要的计算能力和存储能力越来越高,网站架构逐渐从集中式转变为分布式
1.什么是分布式
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
一个标准的分布式系统应该具有以下几个主要特点:
分布性:分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。
透明性:系统资源被所有计算机共享,每台计算机的用户可以访问系统中的所有资源。
同一性:系统中的若干台计算机可以互相协作来完成一个共同的任务。
通信性:系统中任意两台计算机都可以通过通信来交换信息

如何把一个集中式系统改造成分布式系统?
集中式系统容易发生单点故障:单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或网络的瘫痪。
改造的本质就是拆分+连接,这也是分布式系统的本质
1)将你的整个项目视为一个系统(不管它多复杂)
2)将整个系统分割为一系列的Process(进程),每个Process完成一定的功能。
3)将这些Process分散到不同的机器上。分散后,选择若干中通信协议把他们连接起来,当执行某项操作时按照拆分的系统有序的执行。
为什么使用分布式?
1)为了性能扩展系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力
2)为了增强可靠性:软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度
分布式存在的问题?
虽然分布式拥有可以提供更强的计算、存储能力,避免单点故障等优点。但由于采用分布式部署的方式,就经常会出现网络故障等问题,并且如何在分布式系统中保证数据的一致性和可用性也是一个比较关键的问题。

分布式与集群的区别:
1)分布式是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
2)集群是指在多台不同的服务器中部署相同的应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。

ZooKeeper概述

在上面的背景知识介绍里可以知道分布式是大势所趋,但是分布式本身也存在着数据一致性与可用性的问题。有没有什么系统或者组件帮组我们解决一致性与可用性的问题呢?zookeeper出现了------分布式服务协调组件。

什么是zookeeper
zooKeeper是一个开放源码的分布式服务协同组件,是一个高性能的分布式数据一致性解决方案。
它将一些复杂的、容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并提供一系列简单易用的接口给用户使用。

zookeeper提供了那些特性(zookeeper提供的一致性服务)
zookeeper解决的是分布式数据一致性问题,提供了顺序一致性、原子性、单一视图、可靠性、实时性等。
(zookeeper的一致性与可用性在CAP的时候在详细说说)
zookeeper从以下几点保证了数据的一致性
1)顺序一致性:来自任意特定客户端的更新都会按照其发送顺序被提交。比如一个客户端将Znode z的值更新为a,在之后的操作中,它又将z的值更新为b,则没有客户端能够在看到z的值时b之后再看到值 a
2)**原子性:每个更新要么成功,要么失败。**这意味着一个更新失败,则不会有客户端会看到这个更新的结果。
3)单一系统映像:一个客户端无论连接到那一台服务器,它看到的都是同样的系统视图。
这意味着,如果一个客户端在同一个会话中连接到一台新的服务器,它所看到的系统状态不会比在之前服务器上所看到的更旧。
当一台服务器出现故障,导致一个它的客户端需要尝试连接集合体中其他的服务器时,所有滞后于故障服务器的服务器都不会接受该连接请求,除非这些服务器赶上故障服务器。
4)持久性:一个更新一旦成功,其结果就会持久存在并且不会被撤销(日志文件和快照)这表明更新不会受服务器故障的影响。
5)实时性:在特定的一段时间内,客户端看到的系统需要被保证是实时的(在十几秒的时间里)。在此时间段内,任何系统的改变将被客户端看到,或者被客户端侦测到。

zookeeper工作过程
整个集群刚刚启动时,会进行Leader选举,当Leader确定以后,其他机器自动成为Follower,并和Leader建立长连接,用于数据同步和请求转发。
当由客户端机器的写请求落到follower机器上的时候,follower机器会把请求转发给Leader,由Leader处理该请求(发起投票),比如数据的写操作,在请求处理完之后再把数据同步给所有的follower
(工作过程后面深入介绍)

CAP理论
在分布式领域,有一个著名的理论——CAP理论。CAP理论的核心观点是任何软件系统都无法同时满足一致性、可用性以及分区容错性。
1)分区容错:大多数分布式系统都分布在多个子网络,每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如一台服务器在中国,一台在美国,这就是2个区,他们之间可能无法通信。
2)可用性:意思是只要收到用户的请求,服务器就必须给出回应
3)一致性:是指数据在多个副本之间是否能够保持数据一致的特性。
作为一个分布式系统,分区容错性是一个必须要考虑的关键点。一个分布式系统一旦丧失了分区容错性,也就表示放弃了扩展性。因为在分布式系统中,网络故障是经常出现的,一旦出现这种问题就导致整个系统不可用是绝对不能容忍的。所以大部分分布式系统都会在保证分区容错性的前提下在一致性和可用性之间做权衡。

zookeeper和CAP的关系

zookeeper是一个CP(一致性+分区容错性)的,即任何时刻对zookeeper的访问请求能够得到一致的数据结果,同时系统对网络分割具备容错性;但是它不能保证每次服务请求的可用性。

因为zookeeper是分布式协调服务,它的职责是保证数据(配置数据、状态数据)在其管辖下的所有服务之间保持同步、一致;所以zookeeper被设计成cp而不是ap特性的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值