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

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

作者头像
Maynor
发布2021-12-07 11:00:31
7920
发布2021-12-07 11:00:31
举报

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

知识点01:课程回顾

  1. 请简述Kafka的集群架构及角色功能?
    • Kafka:分布式主从架构
      • 主: Controller:管理集群中的Topic、分区、副本选举
      • 从:Broker:对外接受读写请求,存储分区数据
    • Zookeeper
      • 辅助选举Active的主节点:Crontroller
      • 存储核心元数据
  2. 请简述Kafka中Topic管理的脚本及常用选项参数?
    • 使用命令行中的脚本命令实现管理
    • 脚本:kafka-topics.sh
    • 常用选项
      • –topic
      • –create
      • –list
      • –describe
      • –delete
      • –alter:调整Topic的配置
      • –bootstrap-server / --broker-list
  3. 请简述如何使用Kafka Simple Java API 实现数据生产?描述具体的类及方法
    • step1:构建生产者连接对象:KafkaProducer
      • 需要配置对象:管理配置,例如连接地址:Properties
    • step2:KafkaProducer:send:生产数据到Kafka中
      • 需要构建一个生产的数据对象:ProducerRecord
      • ProducerRecord(Topic,Value)
      • ProducerRecord(Topic,Key,Value)
      • ProducerRecord(Topic,Partition,Key,Value)
  4. 请简述如何使用Kafka Simple Java API 实现数据消费?描述具体的类及方法
    • step1:构建消费者连接对象:KafkaConsumer
      • 需要配置对象:管理配置,例如连接地址:Properties
    • step2:消费者需要订阅Topic
      • KafkaConsumer:subscribe(List)
    • step3:消费数据
      • KafkaConsumer:poll
      • ConsumerRecords:拉取到的所有数据
      • ConsumerRecord:消费到的每一条数据
        • topic
        • partition
        • offset
        • key
        • value
  5. 请简述Kafka生产数据时如何保证生产数据不丢失?
    • acks:返回的确认,当接收方收到数据以后,就会返回一个确认的消息
    • 生产者向Kafka生产数据,根据配置要求Kafka返回ACK
      • ack=0:生产者不管Kafka有没有收到,直接发送下一条
        • 优点:快
        • 缺点:容易导致数据丢失,概率比较高
      • ack=1:生产者将数据发送给Kafka,Kafka等待这个分区leader副本写入成功,返回ack确认,生产者发送下一条
        • 优点:性能和安全上做了平衡
        • 缺点:依旧存在数据丢失的概率,但是概率比较小
      • ack=all/-1:生产者将数据发送给Kafka,Kafka等待这个分区所有副本全部写入,返回ack确认,生产者发送下一条
        • 优点:数据安全
        • 缺点:慢
    • 如果Kafka没有返回ACK怎么办?
      • 生产者会等待Kafka返回ACK,有一个超时时间,如果Kafka在规定时间内没有返回ACK,说明数据丢失了
      • 生产者有重试机制,重新发送这条数据给Kafka
      • 问题:如果ack在中途丢失,Kafkahi导致数据重复问题,怎么解决?

知识点02:课程目标

知识点03:生产分区规则

知识点04:自定义开发生产分区器

知识点05:消费者消费过程及问题

知识点06:自动提交问题

知识点07:实现手动提交Topic的Offset

知识点08:手动提交Topic Offset的问题

知识点09:手动提交分区Offset的实现

知识点10:指定消费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>

7943)]

  • 小结
    • 构建Topic的分区对象:TopicPartition
    • 消费者指定消费分区:consumer.assign(Collection)

附录一: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:生产分区规则
          • 知识点04:自定义开发生产分区器
            • 知识点05:消费者消费过程及问题
              • 知识点06:自动提交问题
                • 知识点07:实现手动提交Topic的Offset
                  • 知识点08:手动提交Topic Offset的问题
                    • 知识点09:手动提交分区Offset的实现
                      • 知识点10:指定消费Topic分区的数据
                        • 附录一:Maven依赖
                          • 附录一:Maven依赖
                          相关产品与服务
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档