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

【消息队列】——Kafka如何保证配置下发的一致性

目录

    • 一、分布式系统的控制面与数据面
    • 二、创建主题的过程
    • 三、创建主题的实现难点
      • 3.1、执行上面这些步骤中如果某个步骤执行失败了,应该如何处理?
      • 3.2、如果在执行过程中,执行流程所在的管控节点宕机了,应该如何处理?
    • 四、Kafka 如何实现创建主题的过程
    • 五、通过异步配置下发达成最终一致
    • 六、小结

本文来源:极客时间vip课程笔记

一、分布式系统的控制面与数据面

  • 任何一个分布式系统都可以按照功能划分为控制面与数据面。

  • 数据面,可以理解为“业务数据流经的部分”,负责数据流入流出、执行业务逻辑处理数据和存储数据。控制面,顾名思义,管理控制集群的功能都被划分到控制平面,业务数据不会流经到控制面。控制面的主要功能包括:存储集群元数据、指导数据面路由、下发配置和策略以及实现集群高可用等。

  • 以消息中间件为例说明。数据面包括生产者、Broker 和消费者。这些都是消息数据流经的组件,都属于数据面。

    生产者:负责发消息。
    Broker:负责接收、存储和分发消息。
    消费者:负责接收消息。

  • 控制面的功能包括:元数据存储、消息路由、集群管理、高可用、选举、认证等功能。

    元数据存储:负责保存集群主题、分区和副本以及集群配置等元数据。
    消息路由:指导生产者将消息发送给特定的 Broker 节点,指导消费者从特定的 Broker 节点获取消息。
    集群管理:负责主题创建、修改和删除,管理集群中的生产者、消费者和 Broker 节点。
    高可用:监控集群节点的健康情况,必要时执行主从切换。
    选举:负责集群内各种主节点选举,比如主副本选举等。
    认证:负责管理用户的认证和权限控制,确保只有授权的用户才能访问特定的资源。

  • 总体来说,集群的数据面负责实现系统的核心业务功能,控制面作为辅助角色,负责管理和控制数据面。

二、创建主题的过程

  • 在学习创建主题的实现过程之前,我们先回顾一下 Kafka 中主题的数据结构。

  • 在 Kafka 中,主题是收发消息的单元,一个主题下面包含多个分区,我们可以把分区理解为一个中转消息的串行队列,多个分区就可以提升主题的并行度,通过水平扩展来提升消息的吞吐能力。

  • 每个分区物理上由多个副本构成,这些副本被分散到不同的 Broker 节点上。同一个分区的多个副本拥有相同的消息数据,它们通过选举产生一个主副本,负责消息收发。

  • 从副本从主副本实时同步消息数据,但不提供任何服务,它的作用是保证高可用和一致性。当主副本所在的 Broker 宕机时,Kafka 会从可用的从副本中选举出新的主副本继续提供服务。

  • 在 Kafka 集群中创建主题是一个比较复杂的流程,简单来说创建一个新的主题,需要完成如下主要步骤:

    1.创建并保存主题、分区和副本这些元数据。
    2.将分区的副本分配给集群中的多个 Broker。
    3.每个 Broker 在本地创建分区副本的消息和索引文件。
    4.为每个分区选举主副本节点。

http://www.xdnf.cn/news/994393.html

相关文章:

  • 博图SCL语言教程:灵活加、减计数制作自己的增减计数器(CTUD)
  • 智能云打印机EN 18031申请认证流程
  • Mongodb学习(Windows版本)
  • MongoDB 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境
  • 需求文档:边缘计算机软件重装与物联网登录应用开发
  • 【新能源汽车技术全景解析:构建智能出行新生态】
  • 华为云Flexus+DeepSeek征文| 基于Dify-LLM平台应用实践:创建智能知识库问答助手
  • 离线部署openstack 2024.1控制节点基础服务
  • Webpack 剖析与策略
  • 部署http服务
  • Redis+Kafka实现动态延时任务
  • Java项目中订单未支付过期如何实现自动关单
  • 68、.NET Entity Framework(EF)
  • Hugo 自动化部署实战-部署 Hugo 到 Netlify
  • .NET 类库开发详细指南c
  • [python] 使用python设计滤波器
  • uniapp小程序不支持动态组件问题
  • Flask 应用中执行指定 JavaScript 脚本
  • 小程序【页面离开、页面卸载】对比区分
  • 知识经济时代IP破局之道:创客匠人赋能内容创业者构建商业闭环
  • 双系统(win+linux)根目录扩容(不掉GPU驱动)
  • 【C++】ImGui:不足半兆的桌面程序
  • Cloudflare SaaS 功能 ip 优选原理
  • Android S - 恢复部分应用安装
  • 扣子数据库实战案例:搭建AI登记助手
  • 常见的测试工具及分类
  • Bootstrap 5学习教程,从入门到精通,Bootstrap 5 徽章(Badges)语法知识点及案例代码(11)
  • vue组件对外属性类型错误接收问题
  • vue3 数据过滤方法
  • 基于SpringBoot的校园网上求职系统设计与实现