Kafka
分布式消息系统
要争气
人生来平凡,因奋斗进取而不凡。
展开
-
Kafka过期数据清理
Kafka将数据持久化到了硬盘上,允许你配置一定的策略对数据清理,清理的策略有两个,删除和压缩。数据清理的方式删除log.cleanup.policy=delete启用删除策略直接删除,删除后的消息不可恢复。可配置以下两个策略:清理超过指定时间清理: log.retention.hours=16超过指定大小后,删除旧的消息:log.retention.bytes=1073741824为了避免在删除时阻塞读操作,采用了copy-on-write形式的实现,删除操作进行时,读取操作的二.转载 2020-09-10 14:27:46 · 1331 阅读 · 0 评论 -
kafka和rabbitmq 的区别
一、语言不同RabbitMQ是由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是采用Scala语言开发,它主要用于处理活跃的流式数据,大数据量的数据处理上二、结构不同RabbitMQ采用AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议RabbitMQ的broker由Exchange,Binding,queue组成kafka采用mq结构:broker 有pa.转载 2020-09-08 16:00:16 · 1477 阅读 · 0 评论 -
Kafka监控系统Kafka Eagle剖析
1.概述最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题。并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑,同时也给出一些定位分析Kafka Eagle异常的时的解决办法。2.内容2.1 背景在使用Kafka Eagle监控系统之前,笔者简单的介绍一下这款工具的用途。Kafka Eagle监控系统是一款用来监控Kafka集群的工具,目前更新的版本是v1.2.3,支持管理多个Kafka集群、管理Kafka转载 2020-09-06 09:10:10 · 604 阅读 · 0 评论 -
Kafka中的偏移量
Kafka中的每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序号,用于partition唯一标识一条消息。Offset记录着下一条将要发送给Consumer的消息的序号。Offset从语义上来看拥有两种:Current Offset和Committed Offset。Current OffsetCurrent Offset保存在Consumer客户端中,它表示Consumer希望收到的下一条消息的序号。它仅仅转载 2020-09-04 14:33:17 · 6453 阅读 · 0 评论 -
Kafka自定义offset存储
在Kafka中,offset默认存储在broker的Topic,我们也可以自定义存储位置,为了保证消费和提交偏移量同时成功或失败,我们可以利用数据库事务来实现,下面是把offset存储在Mysql里的一个例子。在重新均衡分组之前保存数,在重新均衡后读取数据。在提交偏移量时保存数据。注意 在重置偏移量时候,要比提交的大1,因此读取时候对偏移量值加1。读取条件 分组+Topic+Partition。建表语句:CREATE TABLE `consumer_offset` ( `id`原创 2020-09-04 14:28:31 · 1445 阅读 · 1 评论 -
你绝对能看懂的Kafka源代码分析-KafkaConsumer类代码分析
前文我们分析了Kafka生产者端的源代码,了解了生产者产生消息的过程。消息由生产者发布到某个主题的某个分区上,其实最终是被存储在服务端的某个broker上。而消费者由订阅行为来决定它所要消费的主题和分区。消费者通过poll操作,不断的从服务端拉取该主题分区上产生的消息。相信有兴趣看kafka源代码的同学,肯定对kafka的基本概念和原理有所了解。关于消费者,我们知道在服务端会有GroupCoordinator,负责每个consumer group的leader的选举,以及分发分区分配结果,而coumer转载 2020-09-03 18:45:48 · 544 阅读 · 0 评论 -
kafka消费者API之自定义存储offset 到mysql中
pom文件<dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.11.0.0</version> </dependency&g转载 2020-09-02 15:23:10 · 577 阅读 · 0 评论 -
从源码理解 Kafka 的分区选择策略[新的生产者发送消息分区选择]
Kafka 中将 Topic 分为 partition,消费者从 partition 中消费消息。消息是怎么确定发住哪个 partition 呢?其实默认有两种分区选择策略:消息 key 为空时随机选择 消息 key 不为空时,对 key 进行 HASH,然后对分区数取模源码分析在KafkaProducer的doSend方法中调用了以下方法进行分区选择,如果指定了分区,则直接使用指定的分区。如果没有指定则通过默认的 partitioner 来计算出分区。 1234...转载 2020-08-31 14:51:52 · 717 阅读 · 1 评论 -
Kafka的零拷贝技术
kafka中的消费者在读取服务端的数据时,需要将服务端的磁盘文件通过网络发送到消费者进程,网络发送需要经过几种网络节点。如下图所示:image.png传统的读取文件数据并发送到网络的步骤如下:(1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存;(2)应用程序将数据从内核空间读入用户空间缓冲区;(3)应用程序将读到数据写回内核空间并放入socket缓冲区;(4)操作系统将数据从socket缓冲区复制到网卡接口,此时数据才能通过网络发送。通常情况下,Kafka的消息会有..转载 2020-08-23 11:31:05 · 267 阅读 · 0 评论 -
Kafka的分区策略
在kafka中,每个topic一般会有很多个Partitions。为了使我们能够及时的消费消息! 我们也可能启动多个Consumer去消费分区,而每个Consumer同样会启动一个或者是多个streams去分别消费Topic里面的数据。我们又知道,在Kafka中存在着Consumer Group的概念,也就是在group.id 一样的Consumer,这些Consumer属于同一个Consumer Group,在组内所有消费者协调在一起来消费订阅主题(subscribed topics)的所有分区(par.转载 2020-08-21 14:03:25 · 157 阅读 · 0 评论 -
新版Kafka直接删除topic
我用的Kafka版本是 kafka_2.12-2.3.0,zookeeper版本是 zookeeper-3.4.14当用命令删除topic时候,发现topic在zookkeeper中直接被删除,kafka的存储topic文件被打上了删除标记,用list命令也没有看到该topic。过了大约1分钟左右,再看topic在各个broker上的存储文件,竟然没有topic了。在整个过程,并没有配置 delete.topic.enable=true,topic直接被删除了。如果有生产者或者消费者在使用该topi原创 2020-08-18 10:12:03 · 426 阅读 · 0 评论 -
Kafka文档阅读笔记 1 入门
Kafka是一个分布式消息系统,用于构建实时数据通道和流应用程序。Kafka具有横向扩展和容错等优点,具有很高的吞吐量,可以处理更大规模的消息。可以应用在网站行为追踪、用户行为追踪、日志聚合等场景。Kafka具有4个核心API,生产者API、消费者API、流处理API、连接器API,生产者API:发布消息到Topic,消费者API:从Topic消费消息,流处理器API:从Topic读取流数据,分析处理后,写入到Topic,连接器API:可以使用连接器API,把数据从一个应用程序或者消息系统导入到Kafk原创 2020-08-01 19:12:26 · 198 阅读 · 0 评论