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 ...
随机推荐
- BZOJ1059 ZJOI2007 矩阵游戏 【二分图匹配】
BZOJ1059 ZJOI2007 矩阵游戏 Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一 ...
- 关于Mybatis将查询结果中添加常量列并返回
引言 在使用mybatis的时候,查询一个集合返回给前台页面,在有的时候,我们会添加一个常量字段到对象或者集合中,来标识这个对象属于的类型等等情况,当前台进行再次请求的时候携带此变量进行请求. 但是: ...
- Xcode ARC需要什么版本的环境支持
Mac OS X v10.6 和 v10.7 (64位应用) 的Xcode 4.2以上版本支持ARC,iOS 4 和 iOS 5 下ARC都能工作,但Weak不支持Mac OS X v10.6 和 i ...
- Flask第四篇——第一个程序
看,是第一个程序,不是脚本哦~~ 把生成的模板上面加上编码,然后运行,看输出台: 上图中有 Running on http://127.0.0.1:5000/ 点击那个地址,就可以在浏览器看到代码运行 ...
- MySQL优化之表结构优化的5大建议
很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求殊不知,在N年前被奉为“圣经”的数据库设计 ...
- ckeditor使用教程
ckeditor 的官方网站是 http://ckeditor.com/ 一.使用方法: 1.在页面<head>中引入ckeditor核心文件ckeditor.js <script ...
- jenkins api 使用
1. java <dependency> <groupId>com.offbytwo.jenkins</groupId> <artifactId>je ...
- 基于C#的UDP协议的同步实现
一.摘要 总结基于C#的UDP协议的同步通信. 二.实验平台 Visual Studio 2010 三.实验原理 UDP传输协议同TCP传输协议的区别可查阅相关文档,此处不再赘述. 四.实例 4.1 ...
- 【常见Web应用安全问题】---4、Directory traversal
Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些. 常见Web应用安全问题安全性问题的列表: 1.跨站脚本攻击(CSS or XSS, Cross Si ...
- vs2015安装ORACLE的DbFirst
不说DbFirst好在哪里,它和ModelFirst,CodeFirst都各有各的好,由于对于已经存在的一个大型的业务库,使用EntityFramework的更倾向于DbFirst,因为好多同事已经习 ...