2.14日学习打卡----初学Zookeeper(一)

2024-02-17 19:28

本文主要是介绍2.14日学习打卡----初学Zookeeper(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2.14日学习打卡

目录:

  • 2.14日学习打卡
  • Zookeeper概念
    • 一. 集中式到分布式
      • 单机架构
      • 集群架构
      • 什么是分布式
      • 三者区别
    • 二. CAP定理
      • 分区容错性
      • 一致性
      • 可用性
      • 一致性和可用性的矛盾
      • 一致性和可用性如何选择
    • 三. 什么是Zookeeper
      • 分布式架构
      • Zookeeper从何而来
      • Zookeeper介绍
    • 四. 应用场景
      • 数据发布/订阅
      • 负载均衡
      • 分布式协调/通知
    • 五. 为什么选择Zookeeper
    • 六. 基本概念
      • 集群角色
      • 数据节点(znode)
      • Watcher监听机制
      • ACL权限控制

Zookeeper概念

一. 集中式到分布式

在这里插入图片描述

单机架构

一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上,整个项目所有的服务都由这台服务器提供。
在这里插入图片描述

缺点

  • 服务性能存在瓶颈
  • 不可伸缩性
  • 代码量庞大,系统臃肿,牵一发动全身
  • 单点故障问题

集群架构

单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个集群。
在这里插入图片描述

集群存在的问题:
当你的业务发展到一定程度的时候,你会发现一个问题无论怎
么增加节点,貌似整个集群性能的提升效果并不明显了。这时
候,你就需要使用分布式架构了。

什么是分布式

在这里插入图片描述
分布式架构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

分布式的优势:

  1. 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
  2. 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。
  3. 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发

三者区别

在这里插入图片描述

总结:
将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式),然后部署多个相同的子系统在不同的服务器上(这叫集群)。
集群:多个人在一起作同样的事 。
分布式 :多个人在一起作不同的事 。

二. CAP定理

在这里插入图片描述
分布式系统正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

分布式系统的三个指标

  • Consistency(一致性)
  • Availability (可用性)
  • Partition tolerance (分区容错性)

它们的第一个字母分别是 C、A、P。

这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

分区容错性

大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信

结论:
分区容错无法避免,因此可以认为 CAP 的 P 总是成立。CAP 定
理告诉我们,剩下的 C 和 A 无法同时做到。

一致性

写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1。
在这里插入图片描述
接下来,用户的读操作就会得到 v1。这就叫一致性。
在这里插入图片描述
问题是,用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了。
在这里插入图片描述
为了让 G2 也能变为 v1,就要在 G1 写操作的时候,让 G1 向 G2 发送一条消息,要求 G2 也改成 v1。
在这里插入图片描述

可用性

只要收到用户的请求,服务器就必须给出回应。
在这里插入图片描述

解释:
用户可以选择向 G1 或 G2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。

一致性和可用性的矛盾

在这里插入图片描述

解释:
如果保证 G2 的一致性,那么 G1 必须在写操作时,锁定 G2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,G2 不能读写,没有可用性不。

一致性和可用性如何选择

  • 一致性
    特别是涉及到重要的数据,就比如钱,商品数量,商品价格。
  • 可用性
    网页的更新不是特别强调一致性,短时期内,一些用户拿到老版本,另一些用户拿到新版本,问题不会特别大。

三. 什么是Zookeeper

在这里插入图片描述

分布式架构

在这里插入图片描述

多个节点协同问题

  1. 每天的定时任务由谁哪个节点来执行?
  2. RPC调用时的服务发现?
  3. 如何保证并发请求的幂等

这些问题可以统一归纳为多节点协调问题,如果靠节点自身进
行协调这是非常不可靠的,性能上也不可取。必须由一个独立
的服务做协调工作,它必须可靠,而且保证性能。

一个应用程序,涉及多个进程协作时,`业务逻辑代码中混杂有大量复杂的进程协作逻辑。
在这里插入图片描述

上述多进程协作逻辑,有 2 个特点

  • 处理复杂
  • 处理逻辑可重用

因此,考虑将多进程协作的共性问题拎出,作为基础设施,让 RD 更加专注业务逻辑开发,即:
在这里插入图片描述

Zookeeper从何而来

ZooKeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。

解决:
雅虎的开发人员就试图开发一个通用的无单点问题的分布式协
调框架,以便让开发人员将精力集中在处理业务逻辑上。

Zookeeper介绍

ZooKeeper是一个开放源代码的分布式协调服务。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
在这里插入图片描述

说明:
Zookeeper顾名思义就是动物园管理员。 因为Hadoop生态各个项目都是动物得图标。 所以很符合管理员得形象。

四. 应用场景

在这里插入图片描述

数据发布/订阅

数据发布/订阅的一个常见的场景是配置中心,发布者把数据发布到ZooKeeper 的一个或一系列的节点上,供订阅者进行数据订阅,达到动态获取数据 的目的。
在这里插入图片描述

ZooKeeper 采用的是推拉结合的方式。
: 服务端会推给注册了监控节点的客户端 Wathcer 事件通知
: 客户端获得通知后,然后主动到服务端拉取最新的数据

实现的思路

mysql.driverClassName=com.mysql.jdbc.Driver
dbJDBCUrl=jdbc:mysql://127.0.0.1/runzhlliu
username=root
password=123456

具体流程:

  1. 把配置信息写到一个 Znode 上,例如 /DBConfiguration
  2. 客户端启动初始化阶段读取服务端节点的数据,并且注册一个数据变更的 Watcher
  3. 配置变更只需要对 Znode 数据进行 set 操作,数据变更的通知会发送到客户端,客户端重新获取新数据,完成配置动态修改

负载均衡

负载均衡是一种手段,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力。
在这里插入图片描述
实现的思路:
在这里插入图片描述
命名服务

命名服务就是提供名称的服务。ZooKeeper 的命名服务有两个应用方面。
在这里插入图片描述

功能:

  1. 提供类 JNDI 功能,可以把系统中各种服务的名称、地址以及目录信息存放在 ZooKeeper,需要的时候去 ZooKeeper 中读取
  2. 制作分布式的序列号生成器

分布式协调/通知

分布式协调/通知服务是分布式系统中不可缺少的一个环节,是将不同的分布式组件有机结合起来的关键所在。对于一个在多台机器上部署运行的应用而言,通常需要一个协调者(Coordinator)来控制整个系统的运行流程
在这里插入图片描述

五. 为什么选择Zookeeper

在这里插入图片描述
随着分布式架构的出现,越来越多的分布式应用会面临数据一致性问题。很遗憾的是,在解决分布式数据一致性上,除了ZooKeeper之外,目前还没有一个成熟稳定且被大规模应用的解决方案。
在这里插入图片描述

主要:
ZooKeeper无论从易用性还是稳定性上来说,都已经达到了一
个工业级产品的标准。

ZooKeeper是免费的,你无须为它支付任何费用。这点对于一个小型公司,尤其是初创团队来说,无疑是非常重要的。

广泛应用

最后,ZooKeeper已经得到了广泛的应用。诸如Hadoop、HBase、Storm、kafka等越来越多的大型分布式项目都将Zookeeper作为核心组件。
在这里插入图片描述

六. 基本概念

在这里插入图片描述

集群角色

通常在分布式系统中,构成一个集群的每一台机器都有自己的角色,最典型的集群模式就是Master/Slave模式(主备模式)。在这种模式中,我们把能够处理所有写操作的机器称为Master机器,把所有通过异步复制方式获取最新数据,并提供读服务的机器称为Slave机器。
在这里插入图片描述

概念颠覆:
而在ZooKeeper中,这些概念被颠覆了。它没有沿用传统的MasterlSlave概念,而是引入了Leader、Follower和 Observer三种角色。

数据节点(znode)

在谈到分布式的时候,我们通常说的“节点”是指组成集群的每一台机器
在这里插入图片描述

在ZooKeeper中节点分为两类

  • 第一类同样是指构成集群的机器,我们称之为机器节点
  • 第二类则是指数据模型中的数据单元,我们称之为数据节点——ZNode。

ZooKeeper将所有数据存储在内存中,数据模型是一棵树。

Watcher监听机制

Watcher(事件监听器),是ZooKeeper 中的一个很重要的特性。
在这里插入图片描述

注意:
ZooKeeper 允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴趣的客户端上去,该机制是ZooKeeper实现分布式协调服务的重要特性。

ACL权限控制

ZooKeeper 采用ACL (Access Control Lists)策略来进行权限控
制,类似于UNIX文件系统的权限控制。ZooKeeper定义了如下5种
权限。

  • CREATE: 创建子节点的权限
  • READ: 获取节点数据和子节点列表的权限
  • WRITE: 更新节点数据的权限
  • DELETE: 删除子节点的权限
  • ADMIN: 设置节点ACL的权限

注意:
create和delete这两种权限都是针对子节点的权限控制。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!
在这里插入图片描述

这篇关于2.14日学习打卡----初学Zookeeper(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/718765

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa