Kafka
章全蛋
这个作者很懒,什么都没留下…
展开
-
Kafka副本机制详解
Kafka副本机制详解所谓的副本机制(Replication),也可以称之为备份机制,通常是指分布式系统在多台网络互联的机器上保存有相同的数据拷贝。副本机制在分布式系统下有以下好处:提供数据冗余。即使系统部分组件失效,系统依然能够继续运转,因而增加了整体可用性以及数据持久性。提供高伸缩性。支持横向扩展,能够通过增加机器的方式来提升读性能,进而提高读操作吞吐量。改善数据局部性。允许将数据放入与用户地理位置相近的地方,从而降低系统延时。这些优点都是在分布式系统中最常被提及的,但是有些遗憾的是,对于原创 2020-12-19 17:46:12 · 912 阅读 · 1 评论 -
如何监控 Kafka 消费者组消费进度?
如何监控 Kafka 消费者组消费进度?对于 Kafka 消费者来说,最重要的事情就是监控它们的消费进度了,或者说是监控它们消费的滞后程度。这个滞后程度有个专门的名称:消费者 Lag 或 Consumer Lag。所谓滞后程度,就是指消费者当前落后于生产者的程度。比方说,Kafka 生产者向某主题成功生产了 100 万条消息,你的消费者当前消费了 80 万条消息,那么我们就说你的消费者滞后了 20 万条消息,即 Lag 等于 20 万。通常来说,Lag 的单位是消息数,而且我们一般是在主题这个级别上讨原创 2020-12-19 16:02:55 · 3011 阅读 · 3 评论 -
Kafka 多线程开发消费实例
Kafka 多线程开发消费实例Kafka Java Consumer 设计原理谈到 Java Consumer API,最重要的当属它的入口类 KafkaConsumer 了。我们说 KafkaConsumer 是单线程的设计,严格来说这是不准确的。因为,从 Kafka 0.10.1.0 版本开始,KafkaConsumer 就变为了双线程的设计,即用户主线程和心跳线程。所谓用户主线程,就是你启动 Consumer 应用程序 main 方法的那个线程,而新引入的心跳线程(Heartbeat Threa原创 2020-12-19 11:32:18 · 701 阅读 · 2 评论 -
Kafka CommitFailedException 异常怎么处理?
Kafka CommitFailedException 异常怎么处理?CommitFailedException,顾名思义就是 Consumer 客户端在提交位移时出现了错误或异常,而且还是那种不可恢复的严重异常。如果异常是可恢复的瞬时错误,提交位移的 API 自己就能规避它们了,因为很多提交位移的 API 方法是支持自动错误重试的,比如commitSync()。每次和 CommitFailedException 一起出现的,还有一段非常著名的注释。为什么说它很“著名”呢?第一,我想不出在近 50 万行原创 2020-12-18 16:23:49 · 1891 阅读 · 1 评论 -
Kafka中位移提交那些事儿
Kafka中位移提交那些事儿Consumer 端有个位移的概念,它和消息在分区中的位移不是一回事,虽然它们的英文都是 Offset。今天我们要聊的位移时 Consumer 的消费位移,它记录了 Consumer 要消费的下一条消息的位移,而不是目前最新消费消息的位移。我来举个例子说明一下,假设一个分区中有 10 条消息,位移分别是 0 到 9 。某个 Consumer 应用已经消费了 5 条消息,这就说明该 Consumer 消费了位移为 0 到 4 的 5 条消息,此时 Consumer 的位移是 5原创 2020-12-18 14:27:51 · 200 阅读 · 1 评论 -
Kafka 消费者组重平衡能避免吗?
Kafka 消费者组重平衡能避免吗?Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程。在 Rebalance 过程中,所有的 Consumer 实例共同参与,在协调者组件的帮助下,完成订阅主题分区的分配。但是,在这个过程中,所有实例都不能消费任何消息,因此对 Consumer 的 TPS 影响很大。Coordinator 协调者所谓协调者,在 Kafka 中对应的术语是 Coordinator,它专门为 Con原创 2020-12-17 19:20:50 · 721 阅读 · 4 评论 -
Kafka 中的消费者位移 __consumer_offsets
Kafka 中的消费者位移 __consumer_offsets__consumer_offsets 在 Kafka 源码中有个更为正式的名字,叫位移主题,即 Offsets Topic。老版本 Consumer 的位移管理是依托于 Apache ZooKeeper 的,它会自动或手动地将位移数据提交到 ZooKeeper 中保存。当 Consumer 重启后,它能自动从 ZooKeeper 中读取位移数据,从而在上次消费截止的地方继续消费。这种设计使得 Kafka Broker 不需要保存位移数据,减原创 2020-12-17 11:29:27 · 9005 阅读 · 1 评论 -
Kafka 的消费者组和重平衡(Rebalance)
Kafka 的消费者组消费者组消费者组,即 Consumer Group,应该算是 Kafka 比较有亮点的设计了。用一句话概括就是 Consumer Group 是 Kafka 提供的可扩展且具有容错性的消费者机制。既然是一个组,那么组内必然可以有多个消费者或消费者实例(Consumer Instance),它们共享一个公共的 ID,这个 ID 被称为 Group ID。组内的所有消费者协调在一起来消费订阅主题(Subscribed Topics)的所有分区(Partition)。当然,每个分区只能原创 2020-12-16 20:16:01 · 900 阅读 · 0 评论 -
Kafka 消息交付可靠性保障
文章目录Kafka 消息交付可靠性保障至少一次最多一次精确一次幂等性 Producer事务型 Producer小结Kafka 消息交付可靠性保障所谓的消息交付可靠性保障,是指 Kafka 对 Producer 和 Consumer 要处理的消息提供什么样的承诺。常见的承诺有以下三种:至少一次(at least once):消息不会丢失,但有可能被重复发送最多一次(at most once):消息可能会丢失,但绝不会被重复发送精确一次(exactly once):消息不会丢失,也不会被重原创 2020-12-16 16:49:57 · 583 阅读 · 0 评论 -
Kafka 无消息丢失配置
Kafka 无消息丢失配置Kafka 到底在什么情况下才能保证消息不丢失呢?Kafka 只对“已提交”的消息(commited message)做有限度的持久化保证已提交的消息什么是已提交的消息?当 Kafka 的若干个 Broker 成功地接收到一条消息并写入日志文件后,它们会告诉生产者程序这条消息已成功提交。此时,这条消息在 Kafka 看来就正式变为“已提交”消息了。那为什么是若干个 Broker 呢?这取决于你对“已提交”的定义。你可以选择只要有一个 Broker 成功保存该消息就原创 2020-12-16 14:24:01 · 201 阅读 · 0 评论 -
Kafka 生产者压缩算法
Kafka 生产者压缩算法说起压缩(compression),我相信你一定不会感到陌生。它秉承了用时间去换空间的经典 trade-off 思想,具体来说就是用 CPU 时间去换磁盘空间或网络 I/O 传输量,希望以较小的 CPU 开销带来更少的磁盘占用或更少的网络 I/O 传输。在 Kafka 中,压缩也是用来做这件事的。今天我就来跟你分享一下 Kafka 中压缩的那些事儿。怎么压缩Kafka 是如何压缩消息的呢?要弄清楚这个问题,就要从 Kafka 的消息格式说起了。目前 Kafka 共有两大类消息原创 2020-12-16 10:36:14 · 2463 阅读 · 0 评论 -
Kafka 基本概念
Kafka 基本概念Kafka 是一个分布式的消息引擎系统,它的主要功能是提供一套完备的消息发布与订阅解决方案。Topic在 Kafka 中,发布订阅的对象是主题(Topic),你可以为每个业务、每个应用甚至每类数据都创建专属的主题。是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。Producer向主题发布消息的客户端应用程序称为生产者(Producer),生产者程序通常持续不断地向一个或者多个主题发送消息Consumer订阅主题消息的客户端应用程序被称为消费者(Consu原创 2020-12-15 16:34:30 · 192 阅读 · 1 评论 -
Kafka windows启动及常用命令
启动zookeeper进入zookeeper/bin目录执行zkServer.cmd命令启动zookeeper如果zookeeper 启动显示端口被占用:需要修改zoo.cfg文件下#修改为未被占用的端口admin.serverPort=9091###启动Kafka.在%KAFKA_HOME%\bin\windows目录下执行命令kafka-server-sta...原创 2019-10-19 12:11:46 · 1151 阅读 · 0 评论