ZooKeeper 学习笔记(一)
第一章 ZooKeeper的基本概念
一、介绍
在过去,每个应用一般都是在单个机子(单处理器)上运行,现在这一状况已经发生了巨大的变化。在大数据和云计算的世界里,应用程序已经被分成多个独立的模块在不同的服务器上提供服务。
但是这种方式的转变,使得协调这些独立模块的行为比写一个单一程序在单节点上运行要困难的多。这很容易让程序员陷入在协调逻辑的陷阱中,而忽略了本身程序的逻辑性。
ZooKeeper使得应用开发人员主要集中关注他们应用的逻辑,而不是关注独立模块间的协调。它受文件系统API的启发,暴露出一个简单的API接口,允许开发人员实现共同的协作任务。例如选取一个master服务节点来管理组成员和管理元数据。ZooKeeper是一个应用程序库,主要有C和Java两种实现方式。ZooKeeper通过服务节点的组合使得服务可以出现故障和增加吞吐量。
当我们设计一个应用程序(该程序需要用到ZooKeeper)时,最明智的做法是把应用数据从控制数据或协调数据中分离出来。举个例子,一个web邮箱服务的用户,他们关注的是邮箱的邮件内容(谁发送的,主题等),但是他们不会去关注哪个服务节点正在处理该特定的邮箱服务请求。邮箱的邮件内容是应用数据,而邮件的处理请求和服务节点的映射却不是,他们可以被ZooKeepter管理。
二、ZooKeeper的使命
试图解释ZooKeeper能为我们做什么就好像试图解释螺丝刀能为我们做什么一样。一个非常基本的运用中,我们可以通过螺丝刀开转动和拧拽螺丝钉,但是这样并不能显示出该螺丝刀的强大。它可使得我们能够组装家具和电子设备,并在某些情况下可以把照片挂到墙上去。通过给一些像这样的例子,我们可以感觉出螺丝刀可以为我们做什么,但肯定不是彻底的。
对于ZooKeepter能为我们做什么也是一样的,它能为分布式系统协调任务。协调任务一般涉及到多个进程。这样的一个任务的目的可以是合作或者调节。合作意味着进程需要一起做些事情,使得其他进程得到进展。例如,一个master-worker结构,worker告知master我现在空闲可以工作了,随后master分配任务给worker。争用不同的是:它是指其中两个进程不能同时取得进展的情况下,因此必须等待其他。比如master-worker这个例子,我们只需要一个单一的master,那么多个进程之间就会产生竞争。那么多进程间就需要实现互斥(mutual exclusion)。我们通常可以认为取得主控权的任务是获取一个锁:即获得主动权的进程具有了行使主人(master)的权利。
如果你有多线程编程的经历,你将会意识到这里有许多简单的问题。事实上,运行在同一机子上的进程和扩计算机的进程概念上是没有什么区别的。同步原语在多线程的上下文中有效,并且在分布式系统中它仍然有效。虽然有一些消息传递算法实现了同步原语,它通常更容易依靠提供一些特殊排序熟悉的共享存储,如ZooKeeper。协调不总是像领导人选举和锁的同步原语形式出现。配置元数据通常被用来处理进程间传递。例如,在一个,master-worker系统中,worker需要知道任务已经赋予给他们,并且这些信息必须可用即使master崩溃。
然我们来看些例子,ZooKeeper已经在一些地方得到很好的运用。
Apache Hbase ,Apache Kaka,Apache Solr,Yahoo!Fetching Service、Facebook Messages。
当编程用到Zookeeper时,开发人员设计应用程序作为链接ZooKeeper服务的客户端。并通过ZooKeeper的API调用连接。
ZooKeeper 学习笔记(一)的更多相关文章
- ZooKeeper 学习笔记
ZooKeeper学习笔记 1. zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...
- ZooKeeper学习笔记(二)——内部原理
zookeeper学习笔记(二)--内部原理 1. zookeeper的节点的类型 总的来说可以分为持久型和短暂型,主要区别如下: 持久:客户端与服务器端断开连接的以后,创建的节点不会被删除: 持久化 ...
- ZooKeeper学习笔记(一)——概述
zookeeper学习笔记(一)--概述 1. 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目.zookeeper从设计模式的角度来理解:是一个基于观察者设计 ...
- Zookeeper学习笔记(中)
Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...
- Zookeeper学习笔记(上)
Zookeeper学习笔记 本篇主要是一些基本的介绍和API的使用介绍, 有些只是记录了知识点,而没有完全在笔记中详细解释, 需要自行查找资料补充相关概念 主要参考了课程中的内容: Zookeeper ...
- ZooKeeper学习笔记一:集群搭建
作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- ZooKeeper学习笔记二:API基本使用
Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...
- ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁
作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...
- Zookeeper学习笔记(下)
这是ZK学习笔记的下篇, 主要希望可以分享一些 ZK 的应用以及其应用原理 我本人的学习告一段落, 不过还遗留了一些ZK相关的任务开发和性能测试的任务, 留待以后完成之后再通过其他文章来进行分享了 Z ...
随机推荐
- PCA最小平方误差理论推导
PCA最小平方误差理论推导 PCA求解其实是寻找最佳投影方向,即多个方向的标准正交基构成一个超平面. 理论思想:在高维空间中,我们实际上是要找到一个d维超平面,使得数据点到这个超平面的距离平方和最小 ...
- python笔记-13 mysql与sqlalchemy
一.RDBMS relational database management system 关系型数据库引入 1.数据库的意义 更有效和合理的存储读取数据的一种方式 关系模型基础上的数据库 -> ...
- Java 合并.wav 文件
package org.lib.speech.test;import java.io.*; import java.util.*;import javax.sound.sampled.AudioFil ...
- python面试题(十)
Python中基本数据结构的操作 元组 列表 字典 集合 定义 新增 更改 删除 2.请尽可能列举python列表的成员方法,并给出一下列表操作的答案: (1)a=[1, 2, 3, 4, 5], a ...
- CentOS 中安装NFS
NFS(network file system)网络文件系统,类似Windows中的文件夹共享,如下有三台机器A, B, C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A, ...
- python+anaconda+pycharm工具包安装
更新额外包 $ conda update conda 更新pip python -m pip install --upgrade pip 更新所有 conda update --all 安装ffmpe ...
- 6.Python使用Pandas小案例
1.使用以下命令引入Pandas和xlrd,引入成功后在pycharm的setting导入即可使用(pip3是由于个人python版本为3.6)==在dos命令行输入以下信息 pip3 install ...
- OpenVPN 部署
https://blog.frognew.com/2017/09/installing-openvpn.html#21-%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96 为了方 ...
- 引用 LPSTR、LPCSTR、LPTSTR、LPCTSTR、LPWSTR及LPCWSTR的意义及区别
1.ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式.ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节. 2.Unicode:用两个字节表示一个字符 ...
- 2DAY初识python
一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...