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这两种权限都是针对子节点的权限控制。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392519.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python--迭代生成器闭包面向对象继承多态】

🚀 作者 :“码上有前” 🚀 文章简介 :深度学习 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 python--迭代生成器闭包面向对象继承多态 往期内容1.迭代for...in字典的迭代列表迭代 生成器推导式的…

说说对BOM的理解(常见的BOM对象了解哪些)

文章目录 一、是什么二、window三、location四、navigator五、screen六、history 一、是什么 BOM (Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象 其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退&…

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢…

SG3225EAN规格书

SG3225EAN 晶体振荡器利用先进的锁相环技术和AT切割晶体单元,提供了宽频率范围和高性能LV-PECL输出,73.5 MHz至700 MHz的宽频率范围,能够保证高稳定性和宽频率调整的能力,适应于多样化的应用需求。2.5V和3.3V两种供电电压&#xf…

AutoSAR(基础入门篇)10.3-BswM配置

目录 一、ECU State Handing(ESH) 二、Module Initialization 三、Communication Control 说起BswM的配置,其实博主问过很多朋友了,大家基本都只用自动配置;很少有用到手动配置的时候,对于刚刚入门的大家来说,掌握自动配置基 本也就足够了。 一、ECU State Handing(ESH…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱13(附带项目源码)

效果演示 文章目录 效果演示前言每次丢弃一个物品源码完结前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机…

【Python中unittest(单元测试)的简单应用】

1、unittest核心组成: TestFixture:对一个测试用例环境的搭建和销毁,一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。如可以在setUp()中通过建立数据库连接来初始化,在tearDown()中清除数据库产生的数…

GIS分析交通事故

确定交通事故的集中区域对于制定新的战略以最大限度地减少事故具有重要作用。在本研究中,我们将使用核密度分析来检测交通事故集中的区域。 下载显示 2018 年至 2020 年期间北卡罗来纳州凯里市发生的交通事故的点数据。 我们可以看到,数据使用的是地理坐…

每日五道java面试题之java基础篇(十二)

目录: 第一题 谈谈你对AQS的理解,AQS如何实现可重⼊锁?第二题. Sychronized的偏向锁、轻量级锁、重量级锁第三题 CountDownLatch和Semaphore的区别和底层原理第四题 线程池中阻塞队列的作⽤?为什么是先添加列队⽽不是先创建最⼤线程&#xff…

【设计模式】使用装饰器模式对价格计算功能做灵活的拓展

文章目录 1. 概述2.实现方式2.1.原始商品类及计算接口2.2.加入装饰器2.3.装饰器的组合使用 3.总结 1. 概述 装饰器模式(Decorator Pattern)是一种结构型的设计模式,使用组合的方式来替代了继承,它的核心作用是在不修改对象本身的…

值得收藏的的适用于 Windows 11 的免费数据恢复软件榜单

终于要说到Windows 11了,有太多令人惊叹的功能,让人跃跃欲试。但是,在升级到 Windows 11 或使用 Windows 11 时,人们可能会因计算机问题而导致文件被删除或丢失。这就是为什么需要 Windows 11 的免费文件恢复的原因。这是适用于 W…

一周学会Django5 Python Web开发-项目配置settings.py文件-其他配置

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python we…

C++ //练习 7.27 给你自己的Screen类添加move、set和display函数,通过执行下面的代码检验你的类是否正确。

C Primer&#xff08;第5版&#xff09; 练习 7.27 练习 7.27 给你自己的Screen类添加move、set和display函数&#xff0c;通过执行下面的代码检验你的类是否正确。 Screen myScreen(5, 5, X); myScreen.move(4, 0).set(#).display(cout); cout<<"\n"; myScr…

开源C语言库Melon:Cron格式解析

本文介绍开源C语言库Melon的cron格式解析。 关于 Melon 库&#xff0c;这是一个开源的 C 语言库&#xff0c;它具有&#xff1a;开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 cron也就是我们常说的Crontab中的时间格式&#xff0c;格式如…

Debezium发布历史136

原文地址&#xff1a; https://debezium.io/blog/2023/01/06/change-data-capture-with-questdb-and-debezium/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Change Data Capture with QuestDB and Debezium …

【NI-DAQmx入门】处理数据采集和测试系统中噪声的几种主要方法

在实际的测试系统中测量模拟信号并不总是像将信号源连接到测量设备那么简单。数据完整性取决于被控制和监视的电气设备发送和接收的干净的电信号。 电噪声可能会掩盖电信号并使其无法识别&#xff0c;从而损害原本具备功能的 DAQ 系统。数据采集​​是关键任务应用测试系统的一…

深入浅出了解谷歌「Gemini大模型」发展历程

Google在2023年12月官宣了Gemini模型&#xff0c;随后2024年2月9日才宣布Gemini 1.0 Ultra正式对公众服务&#xff0c;并且开始收费。现在2024年2月14日就宣布了Gemini 1.5 Pro&#xff0c;史诗级多模态最强MoE首破100万极限上下文纪录&#xff01;&#xff01;&#xff01;Gem…

语音唤醒——

文章目录 配置主代码 参考文档&#xff1a;https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY&#xff1a;需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …

如何修复Microsoft Edge不能以全屏模式打开​?这里提供几个故障排除方法

随着越来越多的Windows 10用户将Edge设置为默认浏览器&#xff0c;各种错误和小故障层出不穷。例如&#xff0c;许多用户抱怨他们无法在全屏模式下启动Edge。如果你正在寻找解决方案来解决这个恼人的问题&#xff0c;请按照下面的故障排除步骤进行操作。 修复Microsoft Edge不…

内容检索(2024.02.17)

随着创作数量的增加&#xff0c;博客文章所涉及的内容越来越庞杂&#xff0c;为了更为方便地阅读&#xff0c;后续更新发布的文章将陆续在此汇总并附上原文链接&#xff0c;感兴趣的小伙伴们可持续关注文章发布动态&#xff01; 本期更新内容&#xff1a; 1. 信号完整性理论与…