【常见的分布式架构场景面临的问题】
一般在主从架构中,主节点进程负责跟踪从节点的状态和任务的有效性,并分配任务到从节点。而这种架构中必须要解决的几个问题是,主节点崩溃、从节点崩溃、通信故障。
主节点崩溃:
如果主节点真的崩溃,那么需要有备选节点来接管这个主节点的工作,这里要怎么转移主节点崩溃之前的状态数据?如果主节点由于高负载或者网络延迟造成通信长时间未响应,导致从节点误以为这个主节点崩溃了,重新选出一个新的主节点,而此时旧的主节点又恢复了通信,一套系统里有多个主节点(脑裂),要怎么处理?
从节点失效:
主节点给从节点派发了任务,从节点完成任务后向主节点反馈完成的消息。但如果从节点任务过程中崩溃,那么该如何保证事务?

【Zookeeper是做什么的】
在分布式系统中协同多个任务,一个协作任务指的是一个包含多个进程的任务。这个协作任务,可以是为了协作也可以是为了管理竞争。对于在一台机器上的多个进程进行协同,与多个机器的多个进程的协同区别不大。在ZK之前也有很多系统采用分布式锁管理器或者分布式数据库来实现协作,Zookeeper为开发人员提供了一种新的选择。

当开发人员使用ZK进行开发时,开发人员设计的应用往往可以看成一组连接到ZK服务器的客户端,通过ZK提供的api连接到ZK服务器进行相应操作。ZK的客户端api功能包括:
保证强一致性、有序性和持久性;
实现通用的同步能力;
分布式环境下的并发处理机制

ZK用于管理协同的关键数据,不适合存储海量数据,最佳实践是将应用数据与协同数据分开处理,应用数据应用处理,协同数据交由ZK处理。ZK提供了一组核心操作,可以实现很多常见分布式应用的任务,对于实现什么样的协同任务,由开发人员决定。
分布式系统中的通信一般有两种选择,一种是直接进行网络通信,一种是读写某些共享存储。ZK使用后者,即共享存储模型来实现应用的协作与同步。

消息延迟、处理器性能带来的消息延迟、时钟偏移带来的错误这三个问题是分布式系统比较关心的关键问题。ZK简化了这些问题的处理。

《Zookeeper分布式过程协同技术详解》之简介-分布式与Zookeeper简介的更多相关文章

  1. ZooKeeper分布式过程协同技术详解1——ZooKeeper的概念和基础

    简介 分布式系统和应用,不仅能提供更强的计算能力,还能为我们提供更好的容灾性和扩展性. ZooKeeper是Google的Chubby项目的开源实现,它曾经作为Hadoop的子项目,在大数据领域得到广 ...

  2. ZooKeeper分布式过程协同技术详解2——了解ZooKeeper

    这个服务如何实现这些协作方面的原语? ZooKeeper基础

  3. Zookeeper分布式过程协同技术 - 部署及设置

    Zookeeper分布式过程协同技术 -  部署及设置 Zookeeper支持单机模式.伪集群模式.集群模式三种部署方式.演示部署环境为CentOS.jdk版本为1.8.Zookeeper版本为3.4 ...

  4. Zookeeper分布式过程协同技术 - 概念及基础

    Zookeeper分布式过程协同技术 - 概念及基础 Zookeeper是什么? Zookeeper是一种分布式过程协同技术,其所提供的客户端API功能强大,其中包括: 保障强一致性.有序性和持久性. ...

  5. Zookeeper分布式过程协同技术 - 群首选举

    Zookeeper分布式过程协同技术 - 群首选举 群首概念 群首为集群中服务器选择出来的一个服务器,并被集群认可.设置群首目的在与对客户端所发起的状态变更请求进行排序,包括:create.setDa ...

  6. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

  7. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  8. 详解Twitter开源分布式自增ID算法snowflake(附演算验证过程)

    详解Twitter开源分布式自增ID算法snowflake,附演算验证过程 2017年01月22日 14:44:40 url: http://blog.csdn.net/li396864285/art ...

  9. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  10. CDN技术详解及实现原理

    CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精 ...

随机推荐

  1. element-ui的自定义表头

    自定义表头 需求:之前在做一个项目的时候,原型图要求表头文字需要额外解释就会在文字后面标注 1,2作为上标 html中提供了<sup></sup>和<sub>< ...

  2. JavaScript判断是否包含中文字符

    一. <script language="javascript"> function funcChina(){ var obj = document.form1.txt ...

  3. 打开part文件夹

    1 #include <uf.h> 2 #include <uf_ui.h> 3 #include <uf_part.h> 4 #include <atlst ...

  4. ubuntu ssh远程访问出现Permission denied(publickey,password)解决方法

    windows上安装SSH服务设置–>应用–>可选功能–>添加功能–>安装 OpenSSH服务器 和 OpenSSH客户端在左下角搜索栏输入服务,将相关SSH服务设置为自动(延 ...

  5. 1.2 C语言--函数与数组

    函数 函数的定义 返回值类型函数名(类型形参名[,--]){ 函数体 } 除了没有访问修饰符外,基本等同于java的函数. 良好的程序设计风格要求即使没有返回值,也要使用return;作为最后一条语句 ...

  6. c++学习8 动态空间申请

    一 动态分配内存的概述 在数组一幕中,介绍过数组的长度是事先预定好的,在整个程序中固定不变.但是在实际的编程过程中,往往会发生这种情况:我们并不清楚到底需要多少数目的空间,而且无法事先预定,所以对了应 ...

  7. daimayuan第二课(1.二叉树的遍历,2.二叉树的最近公共祖先,3.二叉搜索树)

    二叉树的最近公共祖先: 1:概念:就是两个节点在这棵树上深度最大的公共的祖先节点. 换句话说,就是两个点在这棵树上距离最近的公共祖先节点. 2:因为是基础课,所以tarjan和倍增lca就留到中级课再 ...

  8. js 复制链接内容

    <script type="text/javascript">//复制活动地址 function shareUrl(id) { var url = 'http://H5 ...

  9. Python+Django(3)——创建主页

    打开项目主文件夹learning_log中的文件urls.py: from django.contrib import admin from django.urls import path,re_pa ...

  10. PHP实现斐波那契数列(递归 + 非递归)实现

    非递归写法:function fbnq($n){ //传入数列中数字的个数    if($n <= 0){        return 0;    }    $array[1] = $array ...