一、前言

在“网络是不可靠的”这一前提下,分布式系统开发需要解决如下四个问题:

  • 客户端如何访问众多服务?
     解决方案:服务聚合,使用API网关

  • 服务于服务之间如何通信?
     解决方案:
      同步通讯:HTTP(Apache http client)、 RPC(Dubbo、Apache Thrift、gRPC)
      异步通讯:消息队列(Kafka Rabbitmq Rockermq)

  • 众多服务,如何进行管理(实现高可用、高并发、高性能)?
     解决方案:服务治理,采用服务注册与发现,包括
      基于客户端的服务注册与发现:Apache Zookeeper
      基于服务端的服务注册于发现:Netflix Eureka

  • 服务挂了怎么办?
     解决方案:重试机制、服务熔断、服务降级、服务限流

目前流行的微服务架构解决方案:

  • Spring Boot + Spring Cloud
  • Spring Boot + Dubbo + Zookeeper

二、Zookeeper是什么?

2.1、Zookeeper简介

  ZooKeeper是一个开放源代码的分布式协调服务,由知名互联网公司雅虎创建,是Google Chubby的开源实现。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

2.2、Zookeeper本质

  分布式锁:在同一台JVM上使用多线程异步的方式实现对临界资源的访问,而在分布式系统中为了防止多个进程之间相互干扰,需要使用分布式协调技术。
  分布式协调技术:主要用来解决分布式环境当中多个进程之间的同步控制,保证各个进程有序的访问某些临界资源,防止造成“脏数据“。
  分布式协调技术的核心就是实现分布式锁。
  ZooKeeper是分布式协调服务,Zookeeper的本质就是分布式锁的实现框架

2.3、Zookeeper特性

  • 顺序一致性
      从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到ZooKeeper中去。
  • 原子性
      所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群所有机器都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。
  • 单一视图
      无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。
  • 可靠性
      一旦服务端成功地应用了事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了变更。
  • 实时性
      通常人们看到实时性的第一反应是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。这里需要注意的是,ZooKeeper仅仅保证了在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。

三、Zookeeper能干什么?

  Zookeeper典型应用场景包括:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁、分布式队列。

四、参考资料

参考书籍:从Paxos到Zookeeper:分布式一致性原理与实践

作者: DeepInThought
出处: https://www.cnblogs.com/DeepInThought
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/DeepInThought/p/11066919.html

【1】Zookeeper概述相关推荐

  1. Zookeeper概述、特点、数据模型

    Zookeeper 1.Zookeeper概述 Zookeeper是一个工具,可以实现集群中的分布式协调服务. 所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作. Zook ...

  2. ZooKeeper官方文档学习笔记01-zookeeper概述

    纠结了很久,我决定用官方文档学习 ZooKeeper概述 学习文档 学习计划 ZooKeeper:分布式应用程序的分布式协调服务 设计目标 数据模型和分层名称空间 节点和短命节点 有条件的更新和监视 ...

  3. 【hadoop生态之ZooKeeper】第一章Zookeeper概述【笔记+代码】

    一.Zookeeper概述 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目.Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软 ...

  4. zookeeper概述及下载 - 雨中散步撒哈拉

    一.zookeeper概述 1.4.1 统一命名服务 1.4.2 统一配置管理 1.4.3 统一集群管理 1.4.4 服务器动态上下线 1.4.5 软负载均衡 1.1 工作机制+ 1.2 特点 1.3 ...

  5. ZooKeeper概述

    1概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 2 特点 3 数据结构 4 应用场景 提供的服务包括: 统一命名服务 统一配置管理 统一集群管理 服务器节 ...

  6. ZooKeeper概述与原理

    1.ZooKeeper简介 ZooKeeper 是一个开源的分布式协调框架,它的定位是为分布式应用提供一致性服务,是整个大数据体系的管理员,它会封装好复杂易出错的关键服务,将高效.稳定.易用的服务提供 ...

  7. Zookeeper概述详细解释(Zookeeper3.6)

    本文的Zookeeper是3.6版本的 定义 Zookeeper是一个经典的分布式一致性解决方案,致力于为分布式应用提供一个高性能,高可用.且具有严格顺序访问控制能力的分布式协调存储服务. ZooKe ...

  8. 十四、Hadoop学习笔记————Zookeeper概述与基本概念

    顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...

  9. Zookeeper源码分析:集群模式启动概述

    参考资料 <<从PAXOS到ZOOKEEPER分布式一致性原理与实践>> zookeeper-3.0.0 Zookeeper概述 Zookeeper是一个分布式的,开放源码的分 ...

最新文章

  1. vue学习笔记(WebStorm安装)
  2. 新项目新工作空间新仓库新setting文件
  3. 真机iOS SDK升级后xcode不能进行真机调试 怎么办
  4. 系统下装软件_DCS系统的日常保养工作怎么做
  5. CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
  6. Python Numpy模块函数np.c_和np.r_学习使用
  7. android 高德地图放大缩小,手势交互-与地图交互-开发指南-Android 地图SDK | 高德地图API...
  8. 从软件测试转行做前端,转行软件测试或者前端开发有前途么?
  9. 倍赛BasicFinder SaaS数据标注工具解决6个实操问题
  10. java poi设置导出的excel带下拉
  11. python在excel中插入折线图_Python-使用XlsxWriter模块在Excel工作表中绘制折线图
  12. 文件恢复:Docrepair-MS Word文档修复软件
  13. Java处理多个List集合中对象数据合并处理数据后为同一个List集合对象
  14. 凤凰系统虚拟机装卡_凤凰系统安装教程|凤凰虚拟机2.0(Phoenix OS)下载v3.6.1可重启版...
  15. 记录下配置腾讯云服务器的过程
  16. minecraft_适用于Linux的Minecraft故事模式,Alienware的Steam机器以及更多开放式游戏新闻
  17. 数据库应用——MySQL数据管理
  18. python可以不对变量初始化_Python 可以不对变量如 a 初始化就可在表达式如 b=a+1 中使用该变量。...
  19. python制作课程表_怎么使用循环做出一个课程表?
  20. word 2010 插入脚注 导致同页中的双栏换行

热门文章

  1. python利器能下载库吗_python利器
  2. mysql mycat docker_docker-mycat-mysql
  3. 修改mysql数据库默认字符集_MySQL数据库之修改mysql默认字符集的两种方法详细解析...
  4. android 屏幕长宽,怎么获取手机屏幕长宽
  5. 给服务器mongodb设置权限_认识 MongoDB
  6. html树形结构_数据结构-线性表.md
  7. linux network io,Linux network I/O
  8. android 组件大小,Android编程获取组件尺寸大小的方法
  9. 怎么查看raid0或者raid5_海康监控磁盘阵列怎么配置?一文了解清楚
  10. java不重复的随机数_Javascript获取不重复的随机数值