当前位置: 首页 > news >正文

第三章 zookeeper+kafka群集

消息队列

概念

  • 消息(Message)是指在应用间传送的数据
  • 消息队列(Message Queue)是一种应用间的通信方式解决方法,确保消息的可靠传递

特征

存储

  • 将消息存储在某种类型的缓冲区中,直到目标进程读取这些消息或将其从消息队列中显式移除为止。

异步

  • 消息队列通过缓冲消息可以在应用程序中公开一定程度的异步性,允许源进程发送消息并在队列中累积消息,而目标进程则可以挑选消息进行处理

为什么需要消息队列

  • 解耦、冗余、扩展性、灵活性、峰值处理能力、可恢复性、顺序保证、异步通信

kafka

概念

  • Kafka 是一种高吞吐量的分布式发布/订阅消息系统
  • kafka 是 Apache 组织下的一个开源系统
  • 可以实时的处理大量数据以满足各种需求场景

kafka角色术语

角色

说明

Broker(经纪人)

Kafka 集群包含一个或多个服务器,每个服务器被称为 broker

Topic(主题)

每条发布到 Kafka 集群的消息都有一个分类,这个类别被称为 Topic

Producer(生产者)

负责发布消息到 kafka broker

Consumer(消费者)

从kafka broker拉取数据,并消费这些已发布的消息

Partition(分区)

Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition,每个 partition 都是一个有序的队列。partition 中的每条消息都会被分配一个有序的 id(offset)

Consumer Group(消费者组)

可以给每个 Consumer 指定消费组,若不指定消费者组,则属于默认的 group

Message(消息)

通信的基本单位,每个 producer 可以向一个 topic 发布一些消息

kafka架构

zookeeper

概念

  • ZooKeeper 是一种分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成资源竞争(脑裂)的后果。

工作原理

master启动

  • 各节点向 ZooKeeper 中注册节点信息,以编号最小算法选举出一个主节点,另外的节点就是备用节点,由 zookeeper 完成对两个 Master 进程的调度,和了主、备节点的分配和协作。

master故障

  • 如果主节点A发生了故障,这时候它在 ZooKeeper 所注册的节点信息会被自动删除,并会再次发出选举

master恢复

  • 如果主节点恢复了,它会再次向 ZooKeeper 注册自身的节点信息,但注册的节点信息编号会变小,因此不会称为 master,而是另一台节点继续担任 master

zookeeper架构

zookeeper集群主要角色有 server 和 client,其中 server 又分为 leader、follower 和 observer 三个角色

  • Leader:领导者角色,主要负责投票的发起和决议,以及更新系统状态。
  • follower:跟随着角色,用于接收客户端的请求并返回结果给客户端,在选举过程中参与投票。
  • observer:观察者角色,用户接收客户端的请求,并将写请求转发给 leader,同时同步 leader 状态,但是不参与投票。observer 目的是扩展系统,提高伸缩性。
  • client:客户端角色,用于向zookeeper发起请求。

zookeeper在kafka中的作用

  • Broker 注册
  • Topic 注册
  • 生产者负载均衡
  • 消费者负载均衡
  • 记录消息分区与消费者的关系
  • 消息消费进度 Offset 记录
  • 消费者注册

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 最长对称子串
  • 在Ubuntu中重装Vscode(没有Edit Configurations(JSON)以及有错误但不标红波浪线怎么办?)
  • 数学建模笔记(1):插值法
  • 计算机毕业设计 医院问诊系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • maven打包jar后运行提示“没有主清单属性”问题的几种解决方案
  • 24/8/17算法笔记 DDPG算法
  • spark-sgg-java
  • 已解决Exception in thread “main“ java.lang.NullPointerException
  • 【数据结构题集(c语言版)】魔王语言解释 题解(字符串+栈)
  • 【JavaEE】文件操作
  • Shell——流程控制语句(if、case、for、while等)
  • SQLALchemy ORM 的关联关系之 ORM 中的一对一
  • 2024.8.17
  • 基于DPU云盘挂载的Spark优化解决方案
  • 【Linux网络】高级 I/O
  • 10个确保微服务与容器安全的最佳实践
  • Angular4 模板式表单用法以及验证
  • CSS相对定位
  • HTTP中的ETag在移动客户端的应用
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java超时控制的实现
  • Material Design
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue2.0 实现互斥
  • Webpack 4 学习01(基础配置)
  • 构造函数(constructor)与原型链(prototype)关系
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于字符编码你应该知道的事情
  • 如何用vue打造一个移动端音乐播放器
  • 在Unity中实现一个简单的消息管理器
  • - 转 Ext2.0 form使用实例
  • 白色的风信子
  • 【云吞铺子】性能抖动剖析(二)
  • ###STL(标准模板库)
  • #android不同版本废弃api,新api。
  • #Linux(帮助手册)
  • #pragma multi_compile #pragma shader_feature
  • (11)MSP430F5529 定时器B
  • (8)STL算法之替换
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (十六)一篇文章学会Java的常用API
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core引入性能分析引导优化
  • .net SqlSugarHelper
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET中使用Protobuffer 实现序列化和反序列化
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ IO.File ] FileSystemWatcher
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)