kafka系列1——基本概念——第1章初识kafka2

 🌈hello,你好鸭,我是Ethan,西安电子科技大学大三在读,很高兴你能来阅读。

✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!

🔥个人主页:Ethan Yankang
🔥推荐:史上最强八股文||一分钟看完我的几百篇博客

🔥温馨提示:划到文末发现专栏彩蛋   点击这里直接传送

🔥本篇概览:详细讲解了kafka中的基本组成成分与基本概念。🌈⭕🔥


【计算机领域一切迷惑的源头都是基本概念的模糊,算法除外】


🔥   微服务全集

🔥   kafka全集

🔥   前一篇章


🌈引出

Apache的kafka是一个分布式的消息发布订阅中间件。具有高吞吐、可扩展和容错性等特点。主要用于处理大规模的流式数据

本博客从各个方面详细讲解了kafka的机制,并实际上手使用之,好好学完定会习得大功。(bushi,上一次面试就噶在kafka上了,好好对待之。)


1.1 概念详解

【开篇一张图系列】

Producer

生产者即数据的发布者,该角色将消息发布到 Kafka topic 中。 broker 接收到生产者发送的消息后, broker将该消息追加到当前用于追加数据的 segment 文件中。生产者发送的消息,存储到一个 partition 中,生产者也可以指定数据存储的partition

Consumer

消费者可以从 broker 中读取数据。消费者可以消费多个 topic 中的数据。

Topic

Kafka 中,使用一个类别属性来划分数据的所属类,划分数据的这个类称为 topic 。如果把 Kafka 看做 为一个数据库,topic 可以理解为数据库中的一张表 topic 的名字即为表名。

Partition(分区)

topic 中的数据分割为一个或多个 partition 每个 topic 至少有一个 partition 每个 partition 中的数据使 用多个 segment 文件存储 partition 中的数据是有序的 partition 的数据丢失了数据的顺序。如果 topic有多个 partition ,消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下, 需要将partition 数目设为 1

Partition offset(分区偏移量)

每条消息都有一个当前 Partition 下唯一的 64 字节的 offset ,它指明了这条消息的起始位置

Replicas of partition(分区副本)

副本是一个分区的备份副本不会被消费者消费,副本只用于防止数据丢失,即消费者不从为 follower 的partition 中消费数据,而是从为 leader partition 中读取数据。副本之间是一主多从的关系。

Broker(服务器节点)

Kafka 集群包含一个或多个服务器,服务器节点称为 broker broker 存储 topic 的数据。如果某 topic 有 N个 partition ,集群有 N broker ,那么每个 broker 存储该 topic 的一个 partition 。如果某 topic N 个 partition,集群有 (N+M) broker ,那么其中有 N broker 存储该 topic 的一个 partition ,剩下的 M 个 broker不存储该 topic partition 数据。如果某 topic N partition ,集群中 broker 数目少于 N 个,那么 一个broker 存储该 topic 的一个或多个 partition 。在实际生产环境中,尽量避免这种情况的发生,这种 情况容易导致Kafka 集群数据不均衡。(即broker>=partion)

Leader

是读写数据的入口,每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数 据的读写的partition。再备份给follower。

Follower

Follower 跟随 Leader ,所有写请求都通过 Leader 路由,数据变更会广播给所有 Follower Follower 与 Leader保持数据同步。如果 Leader 失效,则从 Follower 中选举出一个新的 Leader 。当 Follower
Leader 挂掉、卡住或者同步太慢, leader 会把这个 follower “in sync replicas” ISR )列表中删除,重 新创建一个Follower

Zookeeper

Zookeeper 负责维护和协调 broker 。(像主题之类的数据都是保存在zookeeper之中的) Kafka 系统中新增了 broker 或者某个 broker 发生故障失效时,由 ZooKeeper通知生产者和消费者。生产者和消费者依据 Zookeeper broker 状态信息与 broker 协调数据 的发布和订阅任务。

AR(Assigned Replicas)

分区中所有的副本统称为 AR

ISR(In-Sync Replicas)

所有与 Leader 部分保持同步的副(包括 Leader 副本在内)本组成 ISR

OSR(Out-of-Sync-Replicas)

Leader 副本同步滞后过多的副本。

HW(High Watermark)

高水位,标识了一个特定的 offset ,消费者只能拉取到这个 offset 之前的消息。

LEO(Log End Offset)

即日志末端位移 (log end offset) ,记录了该副本底层日志 (log) 中下一条消息的位移值。注意是下一条消 息!也就是说,如果LEO=10 ,那么表示该副本保存了 10 条消息,位移值范围是 [0, 9]



💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖

热门专栏推荐

🌈🌈计算机科学入门系列                     关注走一波💕💕

🌈🌈CSAPP深入理解计算机原理        关注走一波💕💕

🌈🌈微服务项目之黑马头条                 关注走一波💕💕

🌈🌈redis深度项目之黑马点评            关注走一波💕💕

🌈🌈JAVA面试八股文系列专栏           关注走一波💕💕

🌈🌈JAVA基础试题集精讲                  关注走一波💕💕   

🌈🌈代码随想录精讲200题                  关注走一波💕💕


总栏

🌈🌈JAVA基础要夯牢                         关注走一波💕💕  

🌈🌈​​​​​​JAVA后端技术栈                          关注走一波💕💕  

🌈🌈JAVA面试八股文​​​​​​                          关注走一波💕💕  

🌈🌈JAVA项目(含源码深度剖析)    关注走一波💕💕  

🌈🌈计算机四件套                               关注走一波💕💕  

🌈🌈数据结构与算法                           ​关注走一波💕💕  

🌈🌈必知必会工具集                           关注走一波💕💕

🌈🌈书籍网课笔记汇总                       关注走一波💕💕         



📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤收藏✅ 评论💬,大佬三连必回哦!thanks!!!
📚愿大家都能学有所得,功不唐捐!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spark streaming 是基于 spark 引擎的实时数据处理框架,可以通过集成 kafka 来进行数据流的处理。然而,在使用 spark streaming 进行 kafka 数据流处理时,可能会遇到一些坑。 首先,要注意 spark streaming 和 kafka 版本的兼容性。不同版本的 spark streaming 和 kafka 可能存在一些不兼容的问题,所以在选择版本时要特别留意。建议使用相同版本的 spark streaming 和 kafka,以避免兼容性问题。 其次,要注意 spark streaming 的并行度设置。默认情况下,spark streaming 的并行度是根据 kafka 分区数来决定的,可以通过设置 spark streaming 的参数来调整并行度。如果并行度设置得过高,可能会导致任务处理过慢,甚至出现 OOM 的情况;而设置得过低,则可能无法充分利用集群资源。因此,需要根据实际情况进行合理的并行度设置。 另外,要注意 spark streaming 和 kafka 的性能调优。可以通过调整 spark streaming 缓冲区的大小、批处理时间间隔、kafka 的参数等来提高性能。同时,还可以使用 spark streaming 的 checkpoint 机制来保证数据的一致性和容错性。但是,使用 checkpoint 机制可能会对性能产生一定的影响,所以需要权衡利弊。 最后,要注意处理 kafka 的消息丢失和重复消费的问题。由于网络或其他原因,可能会导致 kafka 的消息丢失;而 spark streaming 在处理数据时可能会出现重试导致消息重复消费的情况。可以通过配置合适的参数来解决这些问题,例如设置 KafkaUtils.createDirectStream 方法的参数 enable.auto.commit,并设置适当的自动提交间隔。 总之,在使用 spark streaming 进行 kafka 数据流处理时,需要留意版本兼容性、并行度设置、性能调优和消息丢失重复消费等问题,以免踩坑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值