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

【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. 8个你可能不知道的令人震惊的 HTML 技巧

    程序员面试题库分享 1.前端面试题库 (面试必备)            推荐:★★★★★ 地址:前端面试题库 2.前端技术导航大全      推荐:★★★★★ 地址:前端技术导航大全 3.开发者颜色 ...

  2. Java基础——数组的初始化与赋值、循环遍历,Random随机数[大于等于0,小于所给值)

    package com.zhao.demo; public class Demo05 { //数组的静态初始化 /*public static void main(String[] args) { i ...

  3. linux格式化文件命令

    一些文件被windows打开后代码格式会被改变,使用一下命令来转换 sed -i 's/\r//' filename

  4. Python批量修改文件名中所包含指定关键字的文件

    1.去掉下图中各文件名中的'xx' 2.Python代码如下(仅供参考) import os, os.path, time def rename(file, keyword): #file: 需要修改 ...

  5. anaconda怎么将用户名路径切换为工作路径

  6. 关于css选择器的一点点记录

    <!-- 选择器:         #id..class.标签.>子代. 后代.+紧跟一个.~紧跟所有.:(效果)伪类 -->         <!-- 效果选择器常用属性: ...

  7. TypeScript系列 -> 遇到报错 Cannot find name ‘console‘. Do you need to change your target library?ging the ‘lib‘ compiler option

    学习ts遇到的报错 Cannot find name 'console'. Do you need to change your target library?ging the 'lib' compi ...

  8. C#访问MySQL(二):数据插入与修改(增改)

    前言: 前面说了数据库的连接查询,现在说数据库的增删改.这里引入一个数据库的实体类,就是将当前数据库的某一个表里面所有字段写成实体类,如下: 1.数据库的实体类: 需要项目里下载Chloe.dll和C ...

  9. 身为一个java开发人员对目前java开发的一些小小的认识

    为什么要学java? 第一要工作,第二想要高薪 首先身为java开发工作人员你的思想认知程度要搞,思想认知程度决定你的专业技能水平 JavaSE工程师     B/S 架构   ----    浏览器 ...

  10. java 操作PDF (spire.pdf)api

    https://www.e-iceblue.cn/pdf_java_image_shapes/replace-image-with-new-image-in-pdf-in-java.html mave ...