Tips
Tips做一个终身学习的人!
日拱一卒,功不唐捐。


在过去的几十年里,互联网改变了我们生活的方式。Internet上提供的服务通常由复杂的软件系统支持,这些系统跨越了大量的服务器,而且常常位于不同的地理位置上。这种系统被称为计算机科学术语中的分布式系统。为了正确和有效地运行这些大型系统,这些系统内部的过程应该彼此之间达成某种协议;本协议也称为分布式协调。构成分布式系统的组件所达成的协议包括分布式系统的总体目标或达成一些最终导致目标的子任务的协议。这并不像听起来那么简单,因为流程不仅要达成一致,而且要确定他们的对等组件所同意的内容。

虽然在一个大的分布式系统中协调任务和过程听起来很简单,但是当要以容错的方式正确地实现它们时,这是一个非常棘手的问题。Apache ZooKeeper是Apache软件基金会的一个项目,它旨在通过简单的api提供一组可靠的原语来解决分布式系统的设计和开发中的这些协调问题。

在本章中,我们将介绍下面的内容:
分布式系统是什么及其特点
为什么分布式系统中的协调是困难的
Apache ZooKeeper介绍
下载并安装Apache ZooKeeper
使用ZooKeeper shell连接到ZooKeeper
多节点 ZooKeeper集群配置

定义一个分布式系统

分布式系统被定义为一个由独立的计算实体组成的软件系统,由一个计算机网络连接在一起,它的组件相互通信并相互协调以实现一个共同的目标。电子邮件系统,如Gmail或Yahoo !邮件就是这样一个分布式系统的一个例子。另一个分布式系统的例子是一个多人在线游戏,玩家可以在不同的地理位置上玩。

为了确定分布式系统,以下是需要注意的关键特性:

  • 资源共享:这指的是在系统中使用资源的可能性,例如存储空间、计算能力、数据和来自任何地方的服务,等等。
  • 可扩展性:这是指从硬件和软件角度逐步扩展和改进系统的可能性
  • 并发性:这指的是系统能够同时被多个用户使用,以完成相同的任务或不同的任务。
  • 性能和可伸缩性:这确保系统的响应时间不会随着整体负载的增加而降低。
  • 容错:这确保了系统总是可用,即使某些组件失败或以降级模式运行。
  • 通过API的抽象:这确保系统的各个组件隐藏于最终用户,仅向他们提供最终服务。

要设计一个分布式系统是很困难的,当一个单独的计算实体的集合被程序化到一起时,它就更加困难了。设计师和开发人员经常做出一些假设,这些假设也被称为分布式计算的谬论。这些谬论的列表最初是由SUN 公司的工程师在研究网络文件系统Network File System(NFS)的初始设计时创造的。可以在以下表格中引用这些内容:

假设 现实
网络是可靠的 在现实中,由于系统内部错误或由于电源故障等外部因素,网络或组件之间的互连可能会失败。
零延迟 分布式系统的用户可以从全球任何地方连接到它,并且需要时间将数据从一个地方移动到另一个地方。网络的服务质量也影响应用程序的延迟。
带宽是无限的 网络带宽在最近已经改进了很多倍,但在世界范围内这并不是统一的。带宽取决于网络的类型(T1,LAN,WAN,移动网络,等等)。
网络是安全的 网络永远不安全。通常,系统面临拒绝服务攻击的可能,因为在他们的设计中没有认真考虑应用程序的安全方面的隐患。
拓扑结构不会改变 实际上,拓扑结构永远不是恒定。 组件随时间被移除/添加,系统应该能够容忍这种更改。
有一个管理员 分布式系统从不孤立地运行。它们与其他外部系统相互作用;这可能超出了管理的控制。
传输成本为零 这远不是真实的,因为到处都有成本,从建立网络到发送网络数据包到目的地。成本可以是CPU周期的形式,用来支付给网络服务提供商的实际美元。
网络是同质的 网络由大量不同的实体组成。因此,要使应用程序正确地运行,它需要与各种组件进行互操作,即网络、操作系统,甚至是实现语言。

分布式系统设计者必须设计出一套系统,以保持所有之前的要点。除此之外,解决的下一个棘手问题是让参与的计算实体,或者独立的程序,协调他们的活动。通常,开发人员和设计人员在实现这种协调逻辑时陷入困境;这导致系统设计不正确,效率低下。正是基于这个动机,Apache ZooKeeper被设计和开发出来,使得分布式协调非常可靠。

1. Apache ZooKeeper快速课程入门的更多相关文章

  1. zookeeper快速入门

    一.zookeeper简介 zookeeper 是apache旗下的hadoop子项目,它一个开源的,分布式的服务协调器.同样通过zookeeper可以实现服务间的同步与配置维护.通常情况下,在分布式 ...

  2. Zookeeper 快速入门(上)

    来源:holynull, blog.leanote.com/post/holynull/Zookeeper 如有好文章投稿,请点击 → 这里了解详情 Zookeeper是Hadoop分布式调度服务,用 ...

  3. ZooKeeper学习总结 第一篇:ZooKeeper快速入门

    1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...

  4. Apache Kafka 快速入门

    概述 Apache Kafka是一个分布式发布-订阅消息系统和强大的队列,可以处理大量的数据,将消息从一个端点传递到另一个端点.Kafka适合离线和在线消息消费,Kafka消息保存在磁盘上,并在集群内 ...

  5. zookeeper 快速入门

    分布式系统简介 在分布式系统中另一个需要解决的重要问题就是数据的复制.我们日常开发中,很多人会碰到一个问题:客户端C1更新了一个值K1由V1更新到V2.但是客户端C2无法立即读取到K的最新值.上面的例 ...

  6. springboot+dubbo基于zookeeper快速搭建一个demo

    由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...

  7. 决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试

    决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试 [TOC] Apache ZooKeeper 单机模式安装 创建hadoop用户&赋予sudo权限, ...

  8. ZooKeeper快速搭建

    原文地址:http://nileader.blog.51cto.com/1381108/795230 下载PDF版本 本文是ZooKeeper的快速搭建,旨在帮助大家以最快的速度完成一个ZK集群的搭建 ...

  9. 3.Apache ZooKeeper数据模型

    1. ZooKeeper自下向上的服务视图 Apache ZooKeeper是分布式应用程序的协调服务. 它旨在解决分布式应用程序中与组件协调相关的棘手问题. 它通过暴露一个简单而强大的接口来实现这一 ...

随机推荐

  1. 201521123109《java程序设计》第二周学习总结

    1. 本周学习总结 (1)学习了字符串String的类型,使用Arrays对数组的处理及其相关的应用 (2)学会使用码云 (3)了解了对象与封装 (4)学会查询Java API文件 2. 书面作业 ( ...

  2. 201521123036 《Java程序设计》第1周学习总结

    本周学习总结 本周的课是Java的入门.了解了Java的发展过程,运用平台,可跨平台的便利性.懂得jdk,jre,jvm的概念及区别.熟悉Java开发工具,掌握java程序的编译执行的详细过程. 书面 ...

  3. 201521123003《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  4. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  5. java通过JDBC链接SQLServer2012【转载!!!超详细】

    http://blog.csdn.net/stewen_001/article/details/19553173/

  6. C语言编译过程及数据类型

    写在前面 C语言可以称得上是高级语言中的低级语言,接下来一段时间,我会写一下文章关于c语言,把它的神秘面纱一 一揭开.下面主要是c语言的C语言编译过程及数据类型 源文件编译过程 为了使计算机能执行高级 ...

  7. Codeforces Round #436 (Div. 2) C. Bus

    http://codeforces.com/contest/864/problem/C 题意: 坐标轴上有x = 0和 x = a两点,汽车从0到a之后掉头返回,从a到0之后又掉头驶向a...从0到a ...

  8. Excel的实用函数

    在介绍Excel函数前先说明两个概念:公式和函数. 公式:由用户自行设计对工作表进行计算和处理的计算式,以等号"="开始,其内部可以包括函数.引用.运算符和常量. 函数:即是预先定 ...

  9. c++builder中 扩展c++的关键字 : _published _automated Get/Set指令 _fastcall

    C++Builder为C++增加了许多关键字,以适应其快速应用开发(RAD)环境.包括关键字和Get/Set指令. 1._published类似publich权限范围,_published像publi ...

  10. 【转】Spark Streaming和Kafka整合开发指南

    基于Receivers的方法 这个方法使用了Receivers来接收数据.Receivers的实现使用到Kafka高层次的消费者API.对于所有的Receivers,接收到的数据将会保存在Spark ...