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

这篇具有很好参考价值的文章主要介绍了2.14日学习打卡----初学Zookeeper(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2.14日学习打卡

Zookeeper概念

一. 集中式到分布式

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

单机架构

一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上,整个项目所有的服务都由这台服务器提供。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

缺点

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

集群架构

单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个集群。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

什么是分布式

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
分布式架构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

分布式的优势:

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

三者区别

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

二. CAP定理

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
分布式系统正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

分布式系统的三个指标

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

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

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

分区容错性

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

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

一致性

写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
接下来,用户的读操作就会得到 v1。这就叫一致性。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
问题是,用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
为了让 G2 也能变为 v1,就要在 G1 写操作的时候,让 G1 向 G2 发送一条消息,要求 G2 也改成 v1。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

可用性

只要收到用户的请求,服务器就必须给出回应。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

一致性和可用性的矛盾

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

一致性和可用性如何选择

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

三. 什么是Zookeeper

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

分布式架构

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

多个节点协同问题

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

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

一个应用程序,涉及多个进程协作时,`业务逻辑代码中混杂有大量复杂的进程协作逻辑。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

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

因此,考虑将多进程协作的共性问题拎出,作为基础设施,让 RD 更加专注业务逻辑开发,即:
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

Zookeeper从何而来

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

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

Zookeeper介绍

ZooKeeper是一个开放源代码的分布式协调服务。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

四. 应用场景

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

数据发布/订阅

数据发布/订阅的一个常见的场景是配置中心,发布者把数据发布到ZooKeeper 的一个或一系列的节点上,供订阅者进行数据订阅,达到动态获取数据 的目的。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,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 操作,数据变更的通知会发送到客户端,客户端重新获取新数据,完成配置动态修改

负载均衡

负载均衡是一种手段,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
实现的思路:
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
命名服务

命名服务就是提供名称的服务。ZooKeeper 的命名服务有两个应用方面。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

功能:

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

分布式协调/通知

分布式协调/通知服务是分布式系统中不可缺少的一个环节,是将不同的分布式组件有机结合起来的关键所在。对于一个在多台机器上部署运行的应用而言,通常需要一个协调者(Coordinator)来控制整个系统的运行流程
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

五. 为什么选择Zookeeper

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式
随着分布式架构的出现,越来越多的分布式应用会面临数据一致性问题。很遗憾的是,在解决分布式数据一致性上,除了ZooKeeper之外,目前还没有一个成熟稳定且被大规模应用的解决方案。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

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

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

广泛应用

最后,ZooKeeper已经得到了广泛的应用。诸如Hadoop、HBase、Storm、kafka等越来越多的大型分布式项目都将Zookeeper作为核心组件。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

六. 基本概念

2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

集群角色

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

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

数据节点(znode)

在谈到分布式的时候,我们通常说的“节点”是指组成集群的每一台机器
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,zookeeper,分布式

在ZooKeeper中节点分为两类

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

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

Watcher监听机制

Watcher(事件监听器),是ZooKeeper 中的一个很重要的特性。
2.14日学习打卡----初学Zookeeper(一),每日学习,学习,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(一),每日学习,学习,zookeeper,分布式文章来源地址https://www.toymoban.com/news/detail-837236.html

到了这里,关于2.14日学习打卡----初学Zookeeper(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分布式】Zookeeper

    可以参考:https://zhuanlan.zhihu.com/p/62526102 ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务。ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。 配置管理。 Java微服

    2024年02月11日
    浏览(46)
  • 分布式协调组件Zookeeper

    ZooKeeper 是⼀种 分布式协调组件 ,用于管理大型主机。 在分布式环境中协调和管理服务是一个复杂的过程 。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 分布式协调组件 在分布式系统

    2024年02月13日
    浏览(44)
  • Zookeeper 分布式锁案例

    Zookeeper 是一个开源的分布式协调服务,可以用于维护分布式系统中的一致性、顺序性和命名等。其中,Zookeeper 的分布式锁机制可以用于实现分布式系统中的互斥访问,确保在多个节点上对共享资源进行同步访问。 Zookeeper 分布式锁的实现原理是基于 Zookeeper 的临时有序节点和

    2024年02月16日
    浏览(43)
  • Zookeeper实现分布式锁

    ZooKeeper是一个分布式协调服务,其中提供的序列化、持久化、有层次的目录结构使得它非常适合用于实现分布式锁。在ZooKeeper中,分布式锁通常通过临时有序节点实现。以下是ZooKeeper分布式锁的详细介绍:  实现方式: 临时有序节点: 当一个客户端需要获取锁时,它在ZooK

    2024年02月02日
    浏览(58)
  • zookeeper伪分布式安装

    需要有jdk1.8 (1)将zookeeper的安装包上传到/opt/modules目录下 (2)解压 (3)更名 切换到/opt/installs目录下 (4)配置环境变量 切换到/opt/installs/zookeeper3.6.3/conf目录下

    2024年02月17日
    浏览(37)
  • ZooKeeper的分布式锁

    ZooKeeper的分布式锁机制主要利用ZooKeeper的节点特性,通过创建和删除节点来实现锁的控制。 实现步骤: 创建锁节点:当一个进程需要访问共享资源时,它会在ZooKeeper中创建一个唯一的临时顺序节点作为锁。 尝试获取锁:进程会查看当前所有的锁节点,检查自己创建的节点是

    2024年04月22日
    浏览(41)
  • Zookeeper 实战 | Zookeeper 和Spring Cloud相结合解决分布式锁、服务注册与发现、配置管理

    专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏: Python 专栏: Redis 专栏: TensorFlow 专栏: Logback 专栏: 量子计算: 量子计算 | 解密著名量子算法Shor算法和Grover算法 AI机器学习实战: AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析 AI机器学习 | 基于lib

    2024年02月05日
    浏览(90)
  • zookeeper —— 分布式服务协调框架

    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已

    2024年02月07日
    浏览(44)
  • 02-zookeeper分布式锁案例

    核心思想 :当客户端要获取锁,则创建节点,使用完锁,则删除该节点。 当我们假设根节点/ 下有/locks节点时 1)客户端获取锁时,在locks节点下创建 临时顺序 节点。 2)然后获取lock下面的所有子节点,客户端获取到所有的子节点之后,如果 发现自己创建的子节点序号最小

    2024年02月09日
    浏览(41)
  • 基于zookeeper实现分布式锁

    目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析  基本实现 初始化链接 代码落地  优化:性能优化  实现阻塞锁 监听实现阻塞锁 优化:可重入锁 zk分布式锁小结  Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的 功

    2024年02月02日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包