zookeeper入门学习
1、基本概念
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Zookeeper是高性能、高可用的分布式协调框架,采用了自定义的ZAB(Zookeeper Atomic Broadcast)事务一致性协议,在高并发分布式系统环境中保证事务一致性。ZK采用类似Linux操作系统文件目录结构管理节点,节点数据常驻内存,避免磁盘I/O影响性能,并提供对用户透明的持久化功能保证数据安全。ZK适用于小量数据、高性能、高并发的应用场景。
2、zk提供的服务
(1)命名服务
服务提供方在zk上创建一个临时的node,且该node是全局唯一的。服务消费方通过读取zk上的临时Node节点获取到服务提供方提供的信息,进而就可以调用服务提供者提供的服务。实例:阿里的dubbo就是采用zk作为注册中心。
(2)发布订阅服务
发布订阅模型,即配置中心,可将应用可配置项发布到ZK上,供订阅者动态获取配置,同一集群使用同一套配置,实现配置集中、动态管理,避免修改配置后重启应用服务。
(3)负载均衡
在分布式系统中,在一个集群中的由多台服务器提供服务。为了使每一台服务器负载更加均衡,需要根据服务负载的情况进行请求分发的框架。而ZK就是这样的,可以动态的注册和发现服务,是服务更透明。
(4)分布协调/通知
(5)分布式锁
zk具有事务强一致性
锁服务分为独占锁和时序锁
独占锁:多个服务器同时在ZK上创建一个节点,创建成功者即获取锁成功。
原理:
zk中分布式锁的思想是,创建一个锁节点/locknode/guid-lock,集群中每台服务器都在该节点下写入有序的子节点,节点列表中第一个节点对应的服务器被认为是拿到分布式锁,可以进行计算任务,计算任务结束后,删除该服务器对应的节点,下一个服务器写入的节点排到了第一位,可以进行计算任务,如此往复,每台机器写入的节点排在列表中第一位的时候,就被认为是拿到分布式锁。
(6)分布式队列服务
分布式队列分为两种:
先进先出队列FIFO,与分布式时序锁的使用原理一致。
控制队列元素数量,等待队列中成员数量到达指定值之后,方可开始执行下一步处理操作。
内容来自:http://newliferen.github.io/2015/07/24/ZooKeeper%E5%85%A5%E9%97%A8/
zookeeper入门学习的更多相关文章
- 学习Zookeeper之第1章Zookeeper入门
第 1 章 Zookeeper入门 1.1 概述 1.2 特点 1.3 数据结构 1.4 应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 1.5 下载地址 第 1 章 ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- Hadoop入门学习笔记总结系列文章导航
一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...
- [转帖]Zookeeper入门看这篇就够了
Zookeeper入门看这篇就够了 https://my.oschina.net/u/3796575/blog/1845035 Zookeeper是什么 官方文档上这么解释zookeeper,它是一个 ...
- vue入门学习(基础篇)
vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- PyQt4入门学习笔记(三)
# PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...
- PyQt4入门学习笔记(一)
PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...
随机推荐
- 基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>
上篇博客给大家介绍了基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串.list集合(MVC5)<一>, 其中的两种方式都显得有些冗余.接着上篇博客继续 ...
- 《我是一只IT小小鸟》读书笔记
大一进来的第一个学期 我对我所读的软件工程专业感到迷茫与不知.就这么昏昏沉沉的度过了一个学期,第二个学期一开始,在上第一节新增加的“大学生创业与指导”课程充满了好奇,在课上老师推荐的一本书<我是 ...
- 集合框架(JCF/Java Collection Framework)
集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...
- 初识Linux-2
1,rm leo/a*可以将leo文件夹中带有a的所有的文件都删除,rm-r leo/a*可以将文件夹中含有a的文件和文件夹都全部删除 2,ls -l -d dc/*2表示遇到含有2的目录时不进入目录 ...
- Java操作redis简单示例
第一:安装Redis 首先我们要安装Redis,就像我们操作数据库一样,在操作之前肯定要先创建好数据库的环境. Redis的下载可以百度一下,或者打开下面的下载链接: https:/ ...
- python2 与 python3 urllib的互相对应关系
urllib Python2 name Python3 nameurllib.urlopen() Deprecated. See urllib.request.urlopen() which mirr ...
- mysql coalesce函数
COALESCE函数从值列表中返回第一个非NULL的值,当遇到NULL值时将其替换为0. coalesce(str1,str2....); e.g. 需要在表中查出所有比'WARD'提成(COMM ...
- Linear Algebra Lecture5 note
Section 2.7 PA=LU and Section 3.1 Vector Spaces and Subspaces Transpose(转置) example: 特殊情况,对称 ...
- js问题
1.原型链问题 1.js中万物皆对象,但对象也分为普通对象和函数对象,Object,Function都是js自带的函数对象,凡是通过 new Function() 创建的对象都是函数对象,其他的都是普 ...
- Dubbo框架
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...