为什么要引入zookeeper系统?这篇文章将说明几个引入zookeeper的原因,首先,先对zookeeper做一个简单的介绍。
zookeeper是hadoop下的一个子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括配置维护、名字服务、分布式同步、组服务等。支持集群复制,集群依赖ZAB(zookeeper atoimc broadcas)协议来保持分布式数据一致性。
 
ZAB(zookeeper atoimc broadcas)协议:
该协议可以被看作是Paxos协议(即一致性协议)的变体,主要包括两个阶段,leader election阶段和atoimc broadcas阶段。
 
集群中选举出一个leader,其他机器则成为follower,所有写操作交给leader,并通过broadcas将所有的更新通知给follower。当leader崩溃或者leader失去了大多数的follower时,需要重新选举出一个leader,让所有的服务器都恢复到正常的状态,当leader选举出来,且大多数服务器完成了和leader的状态同步后,此时leader election的过程就结束了,将进入atoimc broadcas阶段。 atoimc broadcas同步leader和follower之间的信息,保证leader和follower具有相同的系统状态。
 
下面是个人看文档理解的含义,有错请指出,谢谢
leader election:领导者 某种意义上master
atoimc broadcas:具有原子特性的广播 某种意义上的slave
 
为什么要使用zookeeper?
这个要从SOA说起,在分布式应用架构体系中对于业务逻辑复用的需求十分强烈,所以需要将能够复用的代码抽离出来封装成可共用的服务,减少重复建设工作。
通常,我们想要实现SOA一般需要有一个cusumer和provider,即消费者、提供者,消费者通过服务名称找到对应的通信地址,用于确认服务提供者身份,完成数据的交互,我们可以将这些服务配置在文件中。
那么在大型企业中,服务的数量会十分庞大,我们如果添加一个服务的话,那么就需求覆盖文件,把整个容器重启,波及影响太大,维护起来十分困难。如果不通过硬编码的方式定义怎么实现?
 
此时,需要一个能够动态注册服务和获取服务信息的地方,来统一管理服务,可称为服务配置中心。zookeeper不仅实现了对cusumer和provider的灵活管理,平滑过渡功能,而且还内置了负载均衡、主动通知等功能,使我们能够几乎实时的感应到服务的状态。
 
zookeeper包含持久节点和非持久节点,它不单单能够完成服务消费的过程,而且还可以用来实现分布式锁,具体实现我会在下一篇文章中贴出代码:http://www.cnblogs.com/renhongwei/p/8806840.html
 
 

为什么要引入zookeeper系统的更多相关文章

  1. Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理

    上篇[Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理],解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁 ...

  2. 【分布式】Zookeeper系统模型

    一.前言 前面已经讲解了Zookeeper的一些应用场景,但是并没有深入到Zookeeper内部进行分析,本篇将讲解其系统模型. 二.系统模型 2.1 数据模型 Zookeeper的数据节点称为ZNo ...

  3. Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理

    如今的系统多不是孤军奋战,在多结点会话共享管理方面有着各自的解决办法,比如Session粘连,基于Web容器的各种处理等或者类似本文说的完全接管Web容器的Session管理,只是做法不尽相同. 而本 ...

  4. Finance财务软件(引入业务系统凭证专题)

    我们通过自定义存储过程从业务系统引入凭证 我们需要以下适配 1.设置业务系统数据库链接 2.在自定义模板中设置存储过程名称及入参,这里的功能键值必须为_InterfaceExec,保留字段作为存储过程 ...

  5. Zookeeper ----- 系统模型

    数据模型 Zookeeper的数据模型与文件系统非常相似,唯一不同的它的每个节点(ZNode)都可以存放数据,无论父节点还是子节点. 事务ID 即前面提到的ZXID.对每个事务请求,Zookeeper ...

  6. springboot中引入zookeeper,生成 配置类

    1.application.properties zookeeper.address=@mvn.zookeeper.address@ zookeeper.namespace=@mvn.zookeepe ...

  7. 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?

    转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...

  8. ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群

    前言:       前段时间自己参考网上的文章,梳理了一下基于分布式环境部署的业务系统在解决数据一致性问题上的方案,其中有一个方案是使用ZooKeeper,加之在大数据处理中,ZooKeeper确实起 ...

  9. ZooKeeper学习第七期--ZooKeeper一致性原理

    一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示. 图 1.1 ZooK ...

随机推荐

  1. java冒泡排序算法例子

    总结:运行显示数组下标越界说明,数组长度a.length.表示数组的长度,但索引值是要减一的.勿忘 package com.c2; //冒泡排序 //从小到大的顺序排列 public class MA ...

  2. xunsearch进阶使用

    目录 设置分页 设置排序 读取文档结果 搜索结果高亮处理 获取数量 获取热门搜索词 获取相关搜索词 设置分页 $search->setLimit(5); // 设置返回结果为前 5 条 $sea ...

  3. jQ版大图滚动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. jquery添加和删除多个同名的input输入框

    <script type="text/javascript"> function del(obj){ $(obj).parents("li").re ...

  5. Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

    转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...

  6. Linux系统设置Samba共享笔记

    # "不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接" C: 之前曾经与主机成功进行连接,连接断开后未将连接状态清除 $: net use */del /y # &q ...

  7. 语法错误 : 缺少“;”(在“*”的前面) 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

    sv2010编译的时候遇到错误: error C2143: 语法错误 : 缺少“;”(在“*”的前面) error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int ...

  8. S3C6410移植u-boot

    1.首先下载u-boot(ftp://ftp.denx.de/pub/u-boot) wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2 2 ...

  9. 详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化

    在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用. 1. ...

  10. [android] setOnTouchEvent 设置返回值为true 和 false的区别

    今天在做自定义的可选文本的 TextView 类时,用到了 View 类的 setOnTouchListener(OnTouchListener l)事件监听,在构造 OnTouchListener ...