【ZooKeeper高手实战】ZooKeeper 工业级的场景(配置中心、日志系统、数据同步系统)

🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送
发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景中间件系列笔记编程高频电子书
文章导读地址:点击查看文章导读!
🍁🍁🍁🍁🍁🍁🍁🍁
请添加图片描述

ZooKeeper 工业级的场景

zk 节点监听的 经典应用场景

  • 配置中心:可以将分布式业务系统中的配置放在 zk 中或者基于 zk 封装一个配置中心,并且对配置进行监听,如果配置发生变更,立马就可以通过 zk 通知到所有监听配置项的系统,从而可以及时响应

    就比如在分布式业务中需要 降级,打开一个降级开关,所有系统感知到之后,进行对应的降级处理

  • 集群负载均衡:对于需要进行负载均衡的机器去 zk 中注册自己,创建为临时节点,注册成 ip,如下图对于提供同一个服务的不同机器在同一个节点下边注册自己的 ip

    在这里插入图片描述

基于 zk 如何实现分布式业务系统的 配置中心

分布式系统的配置中心,用于存储以下配置:

  • 数据库配置信息、地址、用户名、密码
  • 限流开关、手动降级开关

比如对 手动降级开关 来说,开发人员通过手动设置降级开关,而各个系统去监听这个降级开关的 znode,如果监听到,就对各个接口采取降级措施,整个配置中心的设计如下(这里只讲一下应用场景,具体也就是通过对节点的监听实现的,后边会讲到):

在这里插入图片描述

基于 ZK + ES 的日志中心架构设计

在业务系统中会部署很多台机器,由于日志过于分散,需要统一收集到 ES 中进行日志存储,并且可以通过可视化工作台方便开发人员随时检索日志,下边将会设计一个 基于 ZK + ES 的日志中心系统

先来说一下日志中心的 需求场景

日志中心系统需要集群部署,在各个业务系统中都有日志客户端,通过客户端自动把日志异步化写入到 Kafka 中去,对应不同的 Topic,日志中心系统为 Master-Slave 架构,Slave 负责从 Kafka 中消费某些 Topic 里的日志写入 ES,Master 负责给 Slave 分配对应要消费的 Topic

在这里插入图片描述

那么基于上边说的需求场景,我们需要在 zk 中存储这些数据:

  • 需要收集的 Topic 列表:通过这个值,日志中心才知道需要去 Kafka 中拉取哪些数据存入到 ES 集群中
    • 存入 zk 中的节点目录:/log-center/topics/#{topic}
  • 日志中心节点列表:日志中心系统的 slave 时集群化部署的,因此当 slave 节点上线之后需要去 zk 中注册自己的 ip+port,并且注册为 临时节点,这样也可以感知到 slave 节点的上下线,并且通过这个列表还可以对 slave 节点进行 负载均衡 处理
    • 存入 zk 中的节点目录:/log-center/slaves/#{host}
  • slave 节点的分组信息:可以将多个 slave 节点分成一个组,相当于是多个 slave 节点属于一个 consumer group,可以并行去消费同一个 Topic 中的数据,加快消费速度
    • 存入 zk 中的节点目录:
      • /log-center/slave-groups/#{group01}/#{slave01}
      • /log-center/slave-groups/#{group01}/#{slave02}
      • /log-center/slave-groups/#{group02}/#{slave01}
  • 每个 slave 分组所分配的 Topic:表示这个 slave 分组需要去将哪些 Topic 数据给拉取并存入 ES 中
    • 存入 zk 中的节点目录:
      • /log-center/slave-groups/#{group01}/topics/#{topic}
      • /log-center/slave-groups/#{group02}/topics/#{topic}

一个简略版本的日志中心系统就是需要在 zk 中存储这些值了,当然既然 slave 集群部署了,还可以在 zk 中存储每个 slave 节点的消费速率,以及在 Topic 中消费的偏移量 offset,这样如果有某个 slave 节点挂了之后,可以让其他的 slave 节点接管这个 slave 节点需要消费的数据,做一个 故障转移 的处理

数据同步系统的架构设计

ZooKeeper 还可以用在数据同步系统中

数据同步系统就是需要将 源数据存储目标数据存储 中的数据进行同步,从而保持数据一致,那么数据同步系统就分为了 3 个部分:

  • Master:负责去 zk 中监听数据同步的任务,当监听到之后,将数据同步的任务发放给 Collector 和 Store

  • Collector:监听 zk 中的数据同步任务的节点,当监听到节点有同步的任务时,就负责去 源数据存储 中拉取待同步的数据

  • Store:监听 zk 中的数据同步任务的节点,当监听到节点有同步的任务时,就去 Kafka 中拉取待同步的数据,将数据写入到 目标数据存储

整体的一个流程如下图:

在这里插入图片描述

那么在数据同步系统中,zk 管理的数据就相比于日志中心架构要简单一些,只需要管理 同步任务 创建及监听即可,节点设计如下:

  • 发布数据同步任务到 zk 中
    • 存入 zk 中的节点目录:/data-sync-system/data-sync-tasks/#{data-sync-task}
  • Collector 监听的数据同步任务
    • 存入 zk 中的节点目录:/data-sync-system/collectors/#{collector}/data-sync-tasks/#{data-sync-task}
  • Store 监听的数据同步任务
    • 存入 zk 中的节点目录:/data-sync-system/stores/#{store}/data-store-tasks/#{data-store-task}

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

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

相关文章

深入理解 Hadoop (五)YARN核心工作机制浅析

概述 YARN 的核心设计理念是 服务化(Service) 和 事件驱动(Event EventHandler)。服务化 和 事件驱动 软件设计思想的引入,使得 YARN 具有低耦合、高内聚的特点,各个模块只需完成各自功能,而模…

熟悉HDFS常用操作

1. 利用Hadoop提供的Shell命令完成下列任务 (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件。 #检查文件是否存在./bin/hdfs dfs -test -e text.txt echo $? #结果是1 代表已存在 #根据结果判断出文件已存…

dubbo与seata集成

1.seata是什么? Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的注解 GlobalTransactional:全局事务注解,添加了以后可实现分布式事务的回滚和提交,用法与spring…

VMware虚拟机安装Ubuntu

准备:Ubuntu的镜像文件,VMware,手. 1.新建虚拟机,选择自定义,下一步。 2.硬件兼容性,选择Workstation 16.x,下一步。 3.选择安装程序光盘映像文件,路径为映像文件所在文件夹,下一步。 4. 创建用户和设置密…

hive 函数使用详解

一、前言 在任何一种编程语言中,函数可以说是必不可少的,像mysql、oracle中,提供了很多内置函数,或者通过自定义函数的方式进行定制化使用,而hive作为一门数据分析软件,随着版本的不断更新迭代,也陆续出现了很多函数,以满足日常数据查询与分析的各种场景。 二、hive 函…

GEE中导入研究区shape

找到Assets,新建NEW 等待上传完成 从Assets列表中找到导入文件,复制ID

106短信群发如何发送会员通知

106短信群发可以通过以下步骤发送会员通知: 1.确定通知内容:首先需要确定要发送的通知内容,包括通知的主题、内容、时间、地点等信息。 2.设计通知模板:根据通知内容,设计通知模板。模板应包括短信的格式、语言风格、…

AI教我学编程之C#入门程序详解与拓展

与AI肩并肩 前言一、一个简单的C#程序补充说明对话AI 二、标识符三、关键字四、Main五、空白1. 缩进2. 代码块的间距3. 操作符的空格4. 换行5. 一致性 六、语句七、从程序输出文本主题:从程序中输出文本1. Write 和 WriteLine 方法2. 格式字符串3. 多重标记和值4. 格…

Banner设计专家详细解释和使用技巧!

一、banner的作用 宝安在运营工作中具有吸引注意力、提高转化率、传达信息、提升品牌形象、引导用户行为、营造活动氛围等多种功能。因此,在运营工作中,需要根据具体需要和目标精心设计和合理使用宝安,才能达到更好的运营效果。 二、banner…

【读书笔记】网空态势感知理论与模型(七)

通过网络级对象依赖关系揭示0Day攻击路径 1. 研究动机 0Day攻击是攻击者和防御者之间信息不对称的结果。赛门铁克研究人员认为,典型的0Day攻击平均隐藏312天才会被觉察。 受到SKRM模型启发,Patrol系统以全局视野来调查在某一个路径上的0Day攻击行为。从…

k8s-存储 11

一、configmapu存储 首先,确保集群正常,节点都处于就绪状态 Configmap用于保存配置数据,以键值对形式存储。configMap资源提供了向 Pod 注入配置数据的方法,旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用…

js实现倒计时

今天和大家分享一个小功能,在我们进行需要获取手机验证码或其他方式的验证码进行登录时会有一个功能,就是当你点击发送验证码时会有一个倒计时,倒计时没有结束时按钮是禁用的状态,防止重复发送短信,下面我们来看一下这…

【数据结构】——期末复习题题库(7)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

C2-4.3.1 多个决策树——随机森林

C2-4.3.1 多个决策树——随机森林 参考链接 1、为什么要使用多个决策树——随机森林? 决策树的缺点: A small change in the data can cause a large change in the structure of the decision tree causing instability 即:对数据集 中…

持续领跑云安全赛道!安全狗多项安全能力获认可

近日,以“数字安全 未来可期”为主题的“2024安全市场年度大会”在北京成功举行。 作为国内云原生安全领导厂商,安全狗也受邀出席此次活动。 厦门服云信息科技有限公司(品牌名:安全狗)创办于2013年,是国内领…

Redis主从复制哨兵及集群

目录 一.主从复制 主从复制的工作原理如下: 主从复制的作用: 搭建Redis 主从复制 每台服务器配置: ​编辑进行编译安装: 定义systemd服务管理脚本: 开启服务,报错看下内容: 修改 Redis…

Python 日志模块 logging 的最佳实践,内容干练简洁

文章目录 1. 引言2. 定义日志类3. 引用日志4. 参考 1. 引言 每次写 python 代码,想找一个日志模块 logging 的最佳实践,都要找一大圈,确不一定可以找到合适的最佳实践。 痛定思痛,我决定下笔记录目前觉得合适的 python 日志的用…

代码混淆:保护您的应用程序

目录 引言 什么是代码混淆? 代码混淆常见手段 代码混淆的作用 代码混淆可能带来的问题 常用的混淆工具 如何使用ipaguard进行混淆 总结 引言 在当今数字化时代,移动应用程序已经成为人们生活和工作中不可或缺的一部分。但是,随着应用…

PPT插件-大珩助手-清除同类

清除同类-颜色 对于选定的形状,删除相同颜色 清除同类-文本 删除当前幻灯片中的文本对象 清除同类-非文本 删除当前幻灯片中的非文本对象 清空当页 删除当前幻灯片中的所有对象 选中的形状动画 删除选中的对象上的形状动画 当前页形状动画 对于当前页中的…

MIB 变更周期

MIB 始终以 80 ms 的周期在 BCH 上传输并在 80 ms 内重复,并且它包括从小区获取 SIB1 所需的参数;如果 SSB 的周期大于 80 ms,则 MIB 的发送周期与 SSB 的周期相同。 在UE初始搜索时,SSB在半帧内的周期是20ms;所以对于…