zookeeper(一)zookeeper解决分布式与一致性

   ZooKeeper是一个典型的分布式数据一致性解决方案。ZooKeeper是分布式协调服务,它的职责是保证数据(配置数据,状态数据)在服务之间保持同步、一致。

(一)分布式架构

   分布式系统是硬件或者软件组件分布在不同的网络上计算机上,彼此之间只能通过消息传递进行通讯和协调的系统。

  • 单一应用架构

   当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。

  • 垂直应用架构

   当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

  • 分布式服务架构

   当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架是关键。

   互联网架构演进

  • 单节点集中式服务
  • 应用服务和数据服务
  • 使用缓存改善性能
  • 使用应用服务器集群
  • 数据库读写分离
  • 反向代理和CDN加速
  • 分布式文件系统和分布式数据库
  • 使用NoSQL和搜索引擎
  • 业务拆分
  • 分布式服务

分布式的问题

1:通信异常
   即时分布式各节点之间的网络通信能够正常进行,其延时也会远远大于单机操作。单机内存访问的延迟在纳秒数量级,而一次网络通信的演示在0.1-1ms左右,巨大的延时差别,也会影响消息的收发过程,因此消息丢失和消失延时非常普遍。

2:网络分区
   当网络发生异常,导致分布式系统中部分节点之间网络延时不断增大,最终导致组成分布式系统的所有节点中只有部分节点之间能够进行正常通行,而另一些节点则不能——我们将这个现象称为网络分区,俗称“脑裂”。

3:节点故障
   节点故障是分布式系统中场景的一个问题,指组成分布式系统的服务器节点出现宕机或者僵死现象。

4:三态
   分布式环境中,网络会出现各种问题,因此分布式系统的每一次请求与响应,存在特有的“三态”概念,即成功、失败与超时。在单机系统中,应用程序一次调用后,能够得到一个非常明确的回应:成功或者失败。而分布式系统中,由于网络是不可靠的,网络通信能够接受到成功或者失败的响应,但当网络出现异常时,就会出现超时现象。出现超时现象,网络通信的发起方无法确定当前的请求是否被成功处理。

(二)关于一致性

   对于一个高访问量、高并发的互联网分布式系统来说,如果我们期望实现一套严格满足ACID特性的分布式事务,很可能出现的情况就是在系统的可用性和严格一致性之间出现冲突。因为当我们要求分布式系统具有严格一致性时,很可能就需要牺牲掉系统的可用性。但是,可用性优势一个不允许我们讨价还价的系统属性,对于一致性,则更加是所有消费者对于一个软件系统的刚需。因此,在可用性和一致性之间永远无法存在一个两全其美的方案,于是出现了诸如CAP和BASE这样的分布式系统经典理论。

CAP理论

   分布式系统的CAP理论首先把分布式系统中的三个特性进行了如下归纳:

一致性(C):在分布式系统中的所有数据备份,在同一时刻是否所有节点访问同一份最新的数据

可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。

分区容忍性(P):在网络故障发生的情况下,系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
在这里插入图片描述

CAP权衡

CAP理论中根据倾向的不同:

CA – 放弃P:将所有数据都放在一个分布式节点上。这同时放弃了系统的可扩展性。单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大(ACID)

AP – 放弃C:这里的放弃一致性是指放弃数据强一致性,而保留数据的最终一致性。系统无法实时保持数据的一致,但承诺在一个限定的时间窗口内,数据最终能够达到一致的状态。
满足可用性,分区容忍性的系统,通常可能对一致性要求低一些(BASE)

CP – 放弃A:一旦系统遇到故障时,受影响的服务器需要等待一段时间,在恢复期间无法对外提供正常的服务。满足一致性,分区容忍性的系统,通常性能不是特别高。

   对于多数大型互联网应用的场景,主机众多、部署分散,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性即保证P和A,舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到造成用户流程的严重程度。

   对于涉及到钱财这样不能有一丝让步的场景,C必须保证。网络发生故障宁可停止服务,这是保证CA,舍弃P。貌似这几年国内银行业发生了不下10起事故,但影响面不大,报到也不多,广大群众知道的少。还有一种是保证CP,舍弃A。例如网络故障事只读不写。

BASE理论

   BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。

1:基本可用
   指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用,但不等价于不可用。比如:搜索引擎0.5秒返回查询结果,但由于故障,2秒响应查询结果;网页访问过大时,部分用户提供降级服务等。

2:软状态
   软状态是指允许系统存在中间状态,并且该中间状态不会影响系统整体可用性。即允许系统在不同节点间副本同步的时候存在延时。

3:最终一致性
   系统中的所有数据副本经过一定时间后,最终能够达到一致的状态,不需要实时保证系统数据的强一致性。`最终一致性是弱一致性的一种特殊情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值