1. Apache ZooKeeper快速课程入门
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快速课程入门的更多相关文章
- zookeeper快速入门
一.zookeeper简介 zookeeper 是apache旗下的hadoop子项目,它一个开源的,分布式的服务协调器.同样通过zookeeper可以实现服务间的同步与配置维护.通常情况下,在分布式 ...
- Zookeeper 快速入门(上)
来源:holynull, blog.leanote.com/post/holynull/Zookeeper 如有好文章投稿,请点击 → 这里了解详情 Zookeeper是Hadoop分布式调度服务,用 ...
- ZooKeeper学习总结 第一篇:ZooKeeper快速入门
1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...
- Apache Kafka 快速入门
概述 Apache Kafka是一个分布式发布-订阅消息系统和强大的队列,可以处理大量的数据,将消息从一个端点传递到另一个端点.Kafka适合离线和在线消息消费,Kafka消息保存在磁盘上,并在集群内 ...
- zookeeper 快速入门
分布式系统简介 在分布式系统中另一个需要解决的重要问题就是数据的复制.我们日常开发中,很多人会碰到一个问题:客户端C1更新了一个值K1由V1更新到V2.但是客户端C2无法立即读取到K的最新值.上面的例 ...
- springboot+dubbo基于zookeeper快速搭建一个demo
由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...
- 决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试
决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试 [TOC] Apache ZooKeeper 单机模式安装 创建hadoop用户&赋予sudo权限, ...
- ZooKeeper快速搭建
原文地址:http://nileader.blog.51cto.com/1381108/795230 下载PDF版本 本文是ZooKeeper的快速搭建,旨在帮助大家以最快的速度完成一个ZK集群的搭建 ...
- 3.Apache ZooKeeper数据模型
1. ZooKeeper自下向上的服务视图 Apache ZooKeeper是分布式应用程序的协调服务. 它旨在解决分布式应用程序中与组件协调相关的棘手问题. 它通过暴露一个简单而强大的接口来实现这一 ...
随机推荐
- 201521123098 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 1. Input Stream -- 数据提供者可从其中读数据输出流:Output Stream -- 数据接 ...
- JS中的DOM对象及JS对document对像的操作
DOM对象 windows:属性:opener(打开者) 方法:open().close(),setTimeout().setInterval()... location:属性:href 方法:rel ...
- 复用代码【SSH配置文件】
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...
- JVM 运行时数据区总结 栈 堆 堆大小配置总结
1. 程序计数器 线程私有 当前线程所执行的字节码的行号指示器 2. 虚拟机栈 线程私有 存:Java方法(局部变量表(基本数据类型).操作数栈.动态链栈.方法出口) StackOverflowErr ...
- 一种Webconfig自动化升级方法
1.方法功能 使用本方法,可以将开发环境最新版本的web.config结构与生产环境环境的config融合,而不用考虑两个config的版本差异值是多少.使用一种标记的方式,在开发环境webconfi ...
- MyBatis的俩种事务管理器的类型
JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置. 它依赖于从数据源得 到的连接来管理事务范围. MANAGED从来不回滚或提交一个连接而它会让 容器来管理事务的整个生命周期(比如 S ...
- webpack2进阶之多文件,DLL,以及webpack-merge
本需要对webpack已有一定的了解,如果你没接触过webpack或者刚刚接触webpack,可以考虑先看一下我的这篇教程. 入门教程 1.打包多文件 之前,当需要打包多个而文件时,我是这么写的: m ...
- Mysql配置文件my.cnf详细说明
[表名大小写配置] MySQL在Linux下数据库名.表名.列名.别名大小写规则: 1.数据库名与表名是严格区分大小写 2.表的别名是严格区分大小写 3.列名与列的别名在所有的情况下均是忽略大小 ...
- 实例说明MVC,MVP,MVVM架构
很早就知道有这三个概念,但是一直都不清楚是怎么回事,在网上搜索,都是泛泛而谈,没有具体例子,新手是看不懂的,直到找到这篇文章,我对这三个架构有了更清楚的了解. 从一个简单的例子去研究这三个架构. 注意 ...
- 移植Linux-3.4.2内核到S3C2440
一.BootLoader引导内核过程 1.Bootloader的工作 1.1.将内核读入内存 2.2.保存内核启动参数到指定位置,内核启动时去这个位置解析参数 3.3. ...