前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式实时消息队列Kafka(二)

分布式实时消息队列Kafka(二)

作者头像
Maynor
发布2021-12-07 10:59:35
4870
发布2021-12-07 10:59:35
举报

分布式实时消息队列Kafka(二)

知识点01:课程回顾

  1. 什么是消息队列?
    • 用于两个系统之间或者两个模块之间实现消息传递,基于队列机制实现数据缓存
  2. 消息队列的优点是什么?
    • 实现解耦
    • 通过异步,提高性能
  3. 消息队列的缺点是什么?
    • 架构更加复杂:如果消息队列出现故障,整个系统都会故障
      • 分布式集群
      • 副本机制
    • 数据维护更加复杂:不丢失,不重复
      • 生产安全:幂等性机制
      • 消费安全:Offset
  4. 什么是同步与异步?
    • 同步:立即一致性
    • 异步:最终一致性
  5. 什么是Kafka?
    • Kafka是一个基于订阅发布模式的高性能、高吞吐的实时消息队列系统
  6. Kafka在大数据的应用场景是什么?
    • 用于实时架构中:实现数据的临时存储
  7. Kafka中的Producer、Consumer、Consumer Group 、Broker分别是什么?
    • Producer:生产者,负责写入数据到Kafka
    • Consumer:消费者,负责从Kafka消费读取数据
    • Consumer Group:消费者组
      • Kafka中的数据消费必须以消费者组为单位
      • 一个消费者组可以包含多个消费者,注意多个消费者消费的数据加在一起是一份完整的数据
      • 目的:提高性能
        • 消费者组消费Topic
        • 消费者组中的消费者消费Topic的分区
    • Broker:Kafka一个节点
      • 多个节点,构建Kafka集群
      • 主从架构:类似于Zookeeper
        • HDFS:NameNode、DataNode
        • Hbase:HMaster、HRegionServer
        • Kafka:Kafka
          • 主:Kafka Controler
          • 从:Kafka Broker
          • 启动Kafka时候,会从所有的Broker选举一个Controler,如果Controller故障,会从其他的Broker重新选举一个
          • 选举:使用ZK是实现辅助选举
  8. Kafka中的Topic与Partition是什么?
    • Topic:逻辑上实现数据存储的分类,类似于数据库中的表概念
    • Partition:Topic中用于实现分布式存储的物理单元,一个Topic可以有多个分区
      • 每个分区可以存储在不同的节点,实现分布式存储
    • 副本机制:Kafka中每个分区可以构建多个副本【副本个数 <= 机器的个数】
      • 将一个分区的多个副本分为两种角色
      • leader副本:负责对外提供读写请求
      • follower副本:负责与leader同步数据,如果leader故障,follower要重新选举一个成为leader
        • 选举:不由ZK实现选举,由Kafka Crontroller来决定谁是leader
  9. Kafka中的Segment是什么?
    • Segment:对分区内部的数据进行更细的划分,分区段,文件段
      • 类似于Region中划分store
      • 规则:按照文件产生的时间或者大小
      • 目的:提高写入和查询性能
        • 文件名称可以用于检索数据:用offset命名的
      • 组成:每个Segment由两个文件组成
        • .log:存储的数据
        • .index:对应.log文件的索引信息
  10. Kafka中的Offset是什么?
    • Offset是kafka中存储数据时给每个数据做的标记或者编号
      • 分区级别的编号
      • 从0开始编号
    • 功能:消费者根据offset来进行消费,保证顺序消费,数据安全

知识点02:课程目标

  1. Kafka的集群如何搭建启动?
    • 实现Kafka分布式集群的安装部署【按照笔记一步步搭建】
  2. Kafka的Topic如何创建管理?【掌握】
    • 命令行实现
    • 创建Topic
    • 查看Topic信息
    • 删除、列举Topic
  3. Kafka的Java API如何实现?【掌握类和方法】
    • Java API
    • 开发生产者
    • 开发消费者

知识点03:Kafka集群架构

  • 目标了解Kafka集群架构及角色功能
  • 路径
img
img
  • Kafka集群有哪些角色?
  • Kafka每个角色的功能是什么?
  • Zookeeper在架构中的作用是什么?
  • 实施
    • 架构角色
      • Kafka
      • Zookeeper
    • Kafka中的每个角色以及对应的功能
      • 分布式主从架构
      • 主:Kafka Controller
        • 负责管理所有从节点:Topic、分区和副本
        • 每次启动集群,会从所有Broker中选举一个Controller,由ZK实现
      • 从:Kafka Broker
        • 对外提供读写请求
        • 其他的Broker监听Controller,如果Controller,会重新从Broker选举一个新的
    • ZK的功能
      • 辅助选举Active的主节点
      • 存储元数据
  • 小结
    • kafka是一个主从架构,整体对外提供分布式读写
    • ZK主要负责选举Controller和实现元数据存储

知识点04:Kafka分布式集群部署

知识点05:Kafka启动与关闭

知识点06:Topic管理:创建与列举

知识点07:Topic管理:查看与删除

知识点08:生产者及消费者测试

知识点09:可视化工具Kafka Tool

  • 目标了解Windows版可视化工具Kafka Tool的使用
  • 路径
    • step1:安装Kafka Tool
    • step2:启动构建连接
    • step3:查看Kafka集群信息
  • 实施
    • 安装Kafka Tool:不断下一步即可
    image-20210329163448255
    image-20210329163448255
    image-20210329163613726
    image-20210329163613726
    • 构建集群连接:连接Kafka集群
    image-20210329163535693
    image-20210329163535693
    image-20210329163710836
    image-20210329163710836
    • 查看集群信息
    image-20210330104345929
    image-20210330104345929
  • 小结
    • 可视化工具,界面或者交互性不是很友好
    • 后面会学习:Kafka Eagle

知识点10:Kafka集群压力测试

知识点11:Kafka API 的应用

知识点12:生产者API:构建KafkaProducer

知识点13:生产者API:生产数据到Kafka

知识点14:消费者API:构建KafkaConsumer

知识点15:消费者API:消费Topic数据

附录一:Maven依赖

代码语言:javascript
复制
<repositories>
    <repository>
        <id>aliyunid>
        <url>http://maven.aliyun.com/nexus/content/groups/public/url>
    repository>
repositories>
<dependencies>
    
    <dependency>
        <groupId>org.apache.kafkagroupId>
        <artifactId>kafka-clientsartifactId>
        <version>2.4.1version>
    dependency>
    <dependency>
        <groupId>org.apache.kafkagroupId>
        <artifactId>kafka-streamsartifactId>
        <version>2.4.1version>
    dependency>
dependencies>

cord.key(); //获取Value String value = record.value(); System.out.println(topic+"\t"+partition+"\t"+offset+"\t"+key+"\t"+value); } ```

  • 小结
    • KafkaConsumer:subscribe:负责订阅Kafka的Topic
    • KafkaConsumer:poll:负责拉取消费数据
    • ConsumerRecords:消费到的所有数据的集合
    • ConsumerRecord:消费到的每一条数据
      • topic:获取Topic
      • partition:获取分区
      • offset:获取offset
      • key:获取key
      • value:获取value

附录一:Maven依赖

代码语言:javascript
复制
<repositories>
    <repository>
        <id>aliyunid>
        <url>http://maven.aliyun.com/nexus/content/groups/public/url>
    repository>
repositories>
<dependencies>
    
    <dependency>
        <groupId>org.apache.kafkagroupId>
        <artifactId>kafka-clientsartifactId>
        <version>2.4.1version>
    dependency>
    <dependency>
        <groupId>org.apache.kafkagroupId>
        <artifactId>kafka-streamsartifactId>
        <version>2.4.1version>
    dependency>
dependencies>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分布式实时消息队列Kafka(二)
    • 知识点01:课程回顾
      • 知识点02:课程目标
        • 知识点03:Kafka集群架构
          • 知识点04:Kafka分布式集群部署
            • 知识点05:Kafka启动与关闭
              • 知识点06:Topic管理:创建与列举
                • 知识点07:Topic管理:查看与删除
                  • 知识点08:生产者及消费者测试
                    • 知识点09:可视化工具Kafka Tool
                      • 知识点10:Kafka集群压力测试
                        • 知识点11:Kafka API 的应用
                          • 知识点12:生产者API:构建KafkaProducer
                            • 知识点13:生产者API:生产数据到Kafka
                              • 知识点14:消费者API:构建KafkaConsumer
                                • 知识点15:消费者API:消费Topic数据
                                  • 附录一:Maven依赖
                                    • 附录一:Maven依赖
                                    相关产品与服务
                                    消息队列 CMQ 版
                                    消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档