zookeeper总结.docxVIP

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
zookeeper总结

一、 基础篇 1. 分布式理论 ? 集中式系统:由一台或多台计算机组成中心节点,数据集中存储于这个中心节点中。 ? 分布式系统:是一个硬件或软件组件分布在不通的网络计算机上,彼此之间仅仅是通过消息传递进行通信和协调的系统 ? 为了对外提供高可用服务,避免单点故障,方便水平扩展,就产生从集中式到分布式的转变需求,但是分布式系统会出现以下问题,而这几个问题又相互影响,比如网络问题和并发问题会导致数据不一致 ? 网络问题 分布式系统一大特点是通过消息传递进行通信和协调就不可避免网络问题,网络问题包括网络延迟、脑裂(split-brain)、网络不可达(unreachable) 单机内存访问延时在纳秒级,而网络通信需要0.1-1ms,如果经过过多网络设备会延时更多,丢包和延迟非常普遍 当网络发生异常,不管是硬件或者软件,都有可能发生网络分区,俗称脑裂(split-brain),比如5台服务器,2台可以互相通信,另外3台可以互相通信,而这前2台和后3台之间无法通信,就形成两个小规模集群,这两个小集群很有可能分布在不同机架上或者在不同的数据中心 由于网络异常,更会普遍发生的情况是数据传输超时或者建立连接超时,此时消息发送端并不知道消息是否成功发送 ? 数据一致性 为了保证高可用,数据会多副本分布在不同服务器上,当提供服务的副本挂了以后,需要将服务切换至其它副本,副本之间的数据需要保证完整性和一致性 ? 并发问题缺乏全局时钟 分布式系统的多个节点在同一时刻并发操作共享的资源;在分布式系统中,很难定义两个事件谁先谁后,原因就是因为分布式系统缺乏一个全局时钟序列控制 ? 数据一致性 一致性有以下几种等级 ? 强一致性:任何client在写入的数据,都能在之后被人任何client既完整又一致的看到,不会出现看到旧数据,也不会看到不一致的数据。 ? 弱一致性:写入数据成功后,并不能保证立即可以看到读入的值,能保证在某个时间级别达到一致性,如果能保证在一定时间内(比如zk是保证任何存活的节点在syncLimit*ticktime时间范围内达到数据一致)达到数据一致,就叫做最终一致性 如果细分,弱一致性分为会话一致性和用户一致性,zookeeper可以保证会话一致性和用户一致性(client重连时会拿最后一次zxid去验证,如果新连的server存在zxid那么就建立会话) ? ACID 在传统单机数据库中,我们能很容易实现满足ACID特性的事务处理系统 事务具有以下特性,A--原子性,C--一致性,I-隔离性(read uncommitted,read committed,repeatable read,serializable) D---持久性 ? 分布式事务 典型的分布式事务场景:一个跨银行的转账操作涉及调用两个异地银行服务,其中一个是本地银行提供的取款服务,另一个则是目标银行提供的存款服务,两个操作必须都成功要么都失败。 ? 我所理解的CAP理论 CAP原文(摘自wiki): CAP定理(CAP theorem),又被称作布鲁尔定理(Brewers theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:[1][2] 一致性(Consistency)(等同于所有节点访问同一份最新的数据副本) 可用性(Availability)(对数据更新具备高可用性) 容忍网络分区(Partition tolerance)(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择[3]。) 由于CAP理论是2000年提出的,每项定义很模糊,我所理解的CAP理论如下: ? 一致性C:操作总是能读取到之前完成的写操作结果; ? 可用性A:读写操作总是能够在很短的时间内返回,即使某台机器发生了故障,也能够 通过其它副本正常执行,而不需要等到机器重启或者机器上的服务分配给其它机器以后才能成功; ? 分区可容忍性P:无法做到机器宕机,机房停电或者出现机房之间网络故障等异常情况的容错; 以上三点不能同时满足, 目前满足CA的数据库系统有:mysql,postgres,因为是单机的无法满足P,单机访问也不存在数据不一致和长时间无法响应的问题(在无法容忍机器宕机、网络异常等情况) 满足AP的:Cassandra(基于gossip协议达到最终一致性),zookeeper 满足CP的:Mongodb(可以设置写请求被所有节点响应后才返回) 因为为了对外可靠的服务避免宕机及网络故障,那么我们必须保证P,要能容忍分区出错(包括宕机、网络异常),那么就需要在A可用性和C强一致性进行取舍,假如我们保证强一致性,每次写操作就要将数据同步到其它所有节点,要么每次读操作读到所有节点,取最新的

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档