《从Paxos到Zookeeper》——第五、六章:经典应用场景

news2024/9/23 19:16:24

目录

第五章 使用Zookeeper

5.1 服务端部署与运行

5.2 客户端相关

5.2.1 客户端运行

5.2.2 客户端命令

5.3 Java客户端API

5.4 开源客户端

第六章 经典应用场景

6.1 典型应用场景及实现

6.1.1 数据发布/订阅(全局配置中心)

6.1.2 负载均衡(Load Balance)

6.1.3 命名服务

6.1.4 分布式协调/通知

6.1.5 集群管理

6.1.6 Master选举

6.1.7 分布式锁

6.1.8 分布式队列

6.2 Zk在大型分布式系统中的应用

6.2.1 Hadoop

6.2.2 HBase

6.2.3 Kafka

6.3 Zk在阿里的实践与应用

本章不是重点,粗略的介绍了下Zk的应用场景

第五章 使用Zookeeper

环境:Zk是基于Java语言编写的,因此运行环境需要Java环境的支持

5.1 服务端部署与运行

Zk有两种运行模式:单机模式与集群模式

Zk提供的可执行脚本

5.2 客户端相关

5.2.1 客户端运行
## 连接本地服务端
sh zkCli.sh

## 连接指定服务端
sh zkCli.sh -server ip:port
5.2.2 客户端命令

内容

命令

格式

创建

create

create [-s] [-e] path data acl

  • -s或-e分别指定节点特性:顺序 或 临时。默认不加参数,创建的是持久节点

读取

ls

ls path [watch]

  • 查看该节点下所有子节点

get

get path [watch]

  • 获取该节点下数据内容和属性信息

更新

set

set path data [version]

删除

delete

delete path [version]

5.3 Java客户端API

5.4 开源客户端

  • ZkClient

  • Curator

  • 其他:zkui


第六章 经典应用场景

数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁,分布式队列......

6.1 典型应用场景及实现

近年来很多分布式系统都以Zk为核心组件:

  • Hadoop:用于高可用性(HA)配置中的名称节点选举和一些子项目的协调服务

  • HBase:用于Region服务器的状态管理、元数据存储和Master服务器的选举

  • Kafka:在早期版本中,用于集群管理、领导者选举、配置管理等。2.8.0后不再依赖Zk

  • Dubbo:作为注册中心,管理服务的地址和配置信息

6.1.1 数据发布/订阅(全局配置中心)
  • 即所谓的配置中心:发布者将数据发布到zk的一个或一系列节点上,订阅者进行数据订阅,动态获取数据。

    • 通常全局配置有以下特点

      • 数据量小

      • 运行时动态发生变化

      • 集群中各机器共享,配置一致

  • 数据发布/订阅一般有两种设计模式:Push模式和Pull模式

    • Push:服务端主动将数据更新发送给订阅的客户端

    • Pull:客户端定时轮询,主动发请求拉取数

  • Zk采用推拉结合的模式:客户端订阅需要关注的节点,一旦节点数据更变,服务端通过发生Watcher事件通知客户端,客户端再主动拉取

  • Zk的实现方式

    • ①存储配置:在Zk上选取一个节点用于配置存储,如/app1/database_config

    • ②配置获取

      • 启动:集群中每台机器在启动初始化阶段,首先会从上面提到的Zk配置节点上读取该配置

      • 注册:同时在该配置节点上注册一个数据变更的Watcher监听。一旦数据发生变化,订阅的客户端能够得到通知

    • ③配置变更

      • 发生变更后,Zk会发送通知到各个客户端,客户端收到通知后拉取

6.1.2 负载均衡(Load Balance)
  • 什么是负载均衡

    • 对多个计算机,网络连接,CPU,磁盘驱动器或其他资源进行分配负载,以达到优化资源使用,最大化吞吐率,最小化响应时间,避免过载的目的

    • 负载均衡分为两种

      • 硬件:直连交换机,比如F5,成本比较高

      • 软件:Zk是基于软件的

  • 基于Zk实现的动态DNS方案("DDNS",Dynamic DNS)

6.1.3 命名服务
  • 命名服务场景

    • 在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等。比较常见的就是一些分布式服务框架中的服务地址列表

    • 在分布式环境中,上层应用有时仅仅需要一个全局唯一的名字,类似数据库中的唯一主键

  • Zk全局唯一ID命名的实现方式:通过Zk节点的顺序递增性质,获取全局唯一ID

    • 根据任务类型(type),在该节点下创建顺序节点,获取全局唯一ID

6.1.4 分布式协调/通知
  • 对于分布式机器而言,需要一个协调者(Coordinator)来控制整个系统的运行流程,如分布式事务的处理,机器间的相互协调等

  • Zk通过让客户端对同一个数据节点进行Watcher注册,来实现不同系统间的协调,如果数据节点发生变化,会通知所有订阅的客户端

  • 常用场景

    • 任务注册

    • 心跳检测

    • 系统调度

6.1.5 集群管理

集群管理包括两部分

  • 集群监控:对整个集群运行时的状态信息收集,如:希望知道当前有多少台机器工作,每台机器运行时数据收集

  • 集群控制:对集群的操作与控制,如:针对某台机器进行上下线操作

Zk做集群管理的两大优势

  • 基于Watcher的订阅与监听特性

  • Zk上的临时节点,一旦会话失效,临时节点会自动清除

6.1.6 Master选举
  • 客户端集群每天都会定时往Zk上创建临时节点。在这个过程中,由于Zk原子性,只有一个客户端能创建成功,成功的即为Master
  • 一旦Master挂了,通过Watcher机制,其余的客户端会重新选举
6.1.7 分布式锁

不赘述

6.1.8 分布式队列

不赘述,各类消息中间件已经很成熟了,不一定要用到Zk

6.2 Zk在大型分布式系统中的应用

6.2.1 Hadoop
6.2.2 HBase
6.2.3 Kafka
  • 注:在 Kafka 的早期版本中,Kafka 是基于 ZooKeeper 的。从 Kafka 2.8.0 版本开始,Kafka 引入了 KRaft 模式(Kafka Raft Metadata mode)这是一个不依赖于 ZooKeeper 的元数据管理模式。在 KRaft 模式下,Kafka 可以使用自己的内部 Raft 实现来管理集群元数据,从而摆脱对 ZooKeeper 的依赖。

Zk在kafka的应用体现在以下几方面

  • 管理所有Broker节点:所有Broker节点启动上线时,都会在(路径/brokers/ids)下进行注册创建属于自己的节点,并按ID排序

    • 例如/brokers/ids/1和/brokers/ids/2代表了两个Broker服务器

    • 创建完broker节点后,会把ip地址和端口写入该节点

    • 由于注册的是临时节点,Broker宕机或下线后会自动删除

  • Topic注册

    • 每一个Topic都会记录在(路径/brokers/topics)下

      • 例如/brokers/topics/topic1和/brokers/topics/topic2代表了两个Topic

      • /brokers/topics/login/3->2,这个节点表明了 BrokerID=3的一个服务器,对于login的topic,提供了两个分区进行存储

  • 生产者的负载均衡(如何将消息合理的发送到分布式Broker上):Kafka提供了两种负载均衡方案

    • 传统的四层负载均衡:生产者IP地址和端口 —> 关联Broker

      • 优点:实现简单,生产者直接TCP维护到Broker

      • 缺点:写死,无法真正意义上的负载均衡,实际过程中,不同生产者的生产速率不一致

    • 基于Zk进行负载均衡:能实现动态负载均衡

  • 消费者的负载均衡

6.3 Zk在阿里的实践与应用

  • Metamorphosis:消息中间件

  • Dubbo:RPC服务框架

  • Canal:基于MySQL Binlog的增量订阅和消费组件

  • ......

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌推广和seo留痕具体怎么操作?

留痕跟谷歌推广其实是一回事,你能在谷歌上留痕,其实就是推广了自己的信息,本质上留痕就是在各大网站留下自己的记录,这个记录可以是品牌信息,联系方式,看你想留下什么 如果要问自己怎么操作,正常…

Python 网络编程实践:从基础到进阶

目录 网络编程 一.IP地址简介 1. IP 地址的概念 1.1. IP 地址的表现形式 1.2. IP 地址的作用 2. 查看 IP 地址 3. 检查网络是否正常 4. 小技巧 二.端口和端口号 1. 什么是端口 2. 什么是端口号 3. 端口和端口号的关系 4. 端口号的分类 4.1. 知名端口号 4.2. 动…

网络文件共享

存储类型分三类 直连式存储:DAS存储区域网络:SAN网络附加存储:NAS 三种存储架构的应用场景 DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业SAN多适用于文件服务器&#xff0c…

毕设:邮件分发系统

文章目录 前言一、登录1.邮箱登录2.账号登录 二、注册三、首页四、写邮件五、收邮件六、草稿箱七、垃圾箱八、已发送九、通讯录十、用户管理十一、邮件管理十二、登录日志总结 前言 分享一下邮件分发系统 一、登录 1.邮箱登录 2.账号登录 二、注册 三、首页 首页有邮件信息&…

本地部署eXtplorer文件管理器并安装内网穿透构建私人云存储服务器

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件,是互联网最重要的应用之一,无论是…

OSPF综合实验(超详细易懂)(HCIP)

1、拓扑信息 2、需求分析 3、IP规划 4、配置 5、测试 1、拓扑信息 2、需求分析 R4为ISP,其上只能配置I地址; R4与其他所有直连设备间均使用公有IP 公网中使用的是点到…

每日OJ题_DFS解决FloodFill⑦_力扣LCR 130. 衣橱整理(原剑指Offer13机器人的运动范围)

目录 力扣LCR 130. 衣橱整理(原剑指Offer13机器人的运动范围) 解析代码 力扣LCR 130. 衣橱整理(原剑指Offer13机器人的运动范围) LCR 130. 衣橱整理 难度 中等 家居整理师将待整理衣橱划分为 m x n 的二维矩阵 grid&#xff…

选择气膜生产厂家的三大关键因素—轻空间

随着气膜体育馆在建筑领域的不断发展,越来越多的客户开始考虑定制气膜体育馆以满足特定需求。然而,选择一家靠谱的气膜生产厂家并非易事。为了帮助客户更好地了解选择气膜生产厂家的关键考量,轻空间为您整理了以下三个方面的重要信息&#xf…

RockChip Android13 NFC SL6320移植

环境:RK3568 Android13 一:驱动移植 1、驱动 将SL6320驱动代码拷贝至kernel-5.10/drivers/misc/sl6320/ 特殊说明:勿将驱动代码放置于kernel-5.10/drivers/nfc/目录下,会导致sl6320驱动生成设备节点时因/dev/nfc节点以创建而加载失败。 2、DTS 本次硬件设计电路走I2C协…

免费开源线上线下交友社交圈子系统 小程序+APP+H5 可支持二开!

为什么要玩社交软件:互联网社交软件的独特优势 首先,社交软件为我们提供了一个便捷的沟通方式。在传统的交往方式中,人们需要面对面交流,这种方式在时间和空间上都受到限制。而社交软件打破了这些限制,无论我们身处何地…

深度学习之基于YOLOv5电线电缆目标检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 项目简介:深度学习之基于YOLOv5电线电缆目标检测系统 本项目旨在利用深度学习技术,特别是基…

VS Code 远程连接 SSH 服务器

文章目录 一、安装 Remote - SSH 扩展并连接远程主机二、免密连接远程主机1. 生成 SSH 密钥对2. 将公钥复制到远程服务器3. 配置 SSH 客服端4. 连接测试 随着技术的不断迭代更新,在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器(我曾经也是个 …

ubuntu20.04通过minio配置FTP服务

项目需求:原来存储文件用的是oss服务存储的,本地minio服务。因为项目需求需要ftp服务来访问文件。查看了一下minio官网4.20版本以后的支持ftp服务。官网介绍如下: 参考文章地址如下:File Transfer Protocol (FTP/SFTP) — MinIO …

linux查看ip和端口

1. ip addr ip addr 或者 ip addr show 输出包含了网络接口的名称、状态、MTU(Maximum Transmission Unit)、链路层地址(如MAC地址)、IPv4和IPv6地址等信息。 2. 只需要 ip地址 ipV4 ip addr | grep inet ipV6 3.查看端口 s…

Xinstall实操指南:二维码推广,轻松追踪App安装效果!

在移动互联网时代,App的推广方式层出不穷,但二维码推广始终占据着重要的地位。作为国内专业的App全渠道统计服务商,Xinstall深知二维码推广的潜力与价值,并致力于通过创新的技术和服务,帮助广告主和开发者实现推广效果…

STM32CubeMX学习笔记30---FreeRTOS内存管理

一、简介 1 基本概念 FreeRTOS 操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的,所以在 FreeRTOS 中提供了多种内存分配算法(分配策略)&#xf…

亚马逊云科技产品测评:玩转云服务器(EC2)

文章目录 📑引言一、亚马逊发展历史介绍二、云服务器资源地域分布三、云服务器实例规格四、EC2计费模式五、亚马逊免费EC2领取 📑引言 亚马逊:世界上最大的云服务器提供商 亚马逊云科技 是由亚马逊公司提供的一系列云计算服务。它提供了弹性计…

AI绘画:Stable Diffusion 拒绝一眼塑料味的AI质感,超写实人物图片如何制作?简单几步教会你!

今天给大家介绍一款能够对生成的人像进行皮肤调节的 lora。 上面两幅图片的生成参数一样,尺寸也一样,但右边一幅图片相较于左面图片的画面质感,特别是人像皮肤的质感上有很大的提升,看上去更加细腻有层感。 这就是我们今天要介绍…

并行执行的概念—— 《OceanBase 并行执行》系列 一

From 产品经理: 这是一份姗姗来迟的关于OceanBase并行执行的系统化产品文档。 自2019年起,并行执行功能已被许多客户应用于多种场景之中,其重要性日益凸显。然而,遗憾的是,我们始终未能提供一份详尽的用户使用文档&…

高防护皮带机巡检机器人:适应恶劣环境的智能助手

在众多工业领域中,皮带机作为一种重要的物料输送设备,广泛应用于发电厂、煤栈等场所。然而,长期以来,皮带机的巡检工作一直依赖人工,存在着劳动强度大、检测效率低、安全性差等问题。为了解决这些痛点,皮带…