![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
A1--kafka
文章平均质量分 62
kafka
乐之者v
一生编程,快乐编程。
展开
-
kafak入门(十一):Kafka怎么保证可靠性?
就Kafka而言,越多的副本数越能够保证数据的可靠性,副本数可以在创建主题时配置,也可以在后期修改,不过副本数越多也会引起磁盘、网络带宽的浪费,同时会引起性能的下降。如果要提升可靠性,那么生产者可以采用同步或异步的模式,在出现异常情况时可以及时获得通知,以便可以做相应的补救措施,比如选择重试发送(可能会引起消息重复)。对于发后即忘的模式,不管消息有没有被成功写入,生产者都不会收到通知,那么即使消息写入失败也无从得知,因此发后即忘的模式不适合高可靠性要求的场景。消息发送的3种模式,即发后即忘、同步和异步。原创 2024-02-04 00:08:56 · 630 阅读 · 0 评论 -
kafka为什么不支持读写分离?
读写分离可以均摊一定的负载,却不能做到完全的负载均衡,比如对于写压力很大而读压力很小的情况,从节点只能分摊很少的负载压力,而绝大部分压力还是主节点上。而kafka 的主写主读,可以做到负载均衡。在kafka中,生产者写入消息,消费者读取消息的操作都是与 leader 副本进行交互的,从而实现的是一种主写主读的生产消费模型。类似 Redis ,数据从写入主节点,再同步到从节点中的过程需要耗费一些时间。如果对延时的要求比较高,读写分离并不太适用。(3) 副本稳定的情况下,不会出现数据不一定的情况。原创 2024-01-24 22:12:08 · 1555 阅读 · 0 评论 -
kafka入门(十):副本数据同步
随着follower副本不断与leader副本进行消息同步,follower副本的LEO也会逐渐后移,并最终追赶上leader副本,此时该follower副本就有资格进入ISR集合。追赶上leader副本的判定准则是此副本的LEO是否不小于leader副本的HW,注意这里并不是和leader副本的LEO相比。在ISR集合之外,也就是处于同步失效或功能失效(比如副本处于非存活状态)的副本统称为失效副本,失效副本对应的分区也就称为同步失效分区,即under-replicated分区。(注:lag,表示滞后)原创 2024-01-21 22:28:56 · 811 阅读 · 0 评论 -
kafka入门(九):副本
消息先发送到 leader 副本,然后 follower 副本才能从 leader 副本中拉取消息进行同步,同步期间 follower 副本相对 leader 副本会有一定程序的滞后。leader副本负责维护和跟踪ISR集合中所有follower副本的滞后状态,当follower副本落后太多或失效时,leader副本会把它从ISR集合中剔除。副本处于不同的 broker中,当 leader 副本出现故障时,从 follower 副本中重新选举新的 leader 副本对外提供服务。HW , 俗称"高水位"。原创 2024-01-18 23:47:18 · 581 阅读 · 0 评论 -
kafka入门(八):kafka分区分配策略
不仅可以任意选用Kafka提供的3种分配策略,还可以自定义分配策略来实现更多可选的功能。自定义的分配策略必须要实现 org.apache.kafka.clients.consumer.internals.PartitionAssignor接口。原创 2024-01-20 19:33:25 · 700 阅读 · 0 评论 -
kafka入门(八):控制器
每个 broker 启动时都会去尝试读取 /controller 节点的 brokerid 的值,如果读取到 brokerid 的值不为 -1,则表示已经有其他 broker 节点成功竞选为控制器,所以当前 broker 会放弃竞选。在 Kafka 集群中会有一个或多个 broker, 其中有一个 broker 会被选举为控制器 (kafka Controller), 它负责管理整个集群中所有分区和副本的状态。当某个分区的 leader 副本出现故障时,由控制器负责为该分区选举新的 leader 副本。原创 2024-01-16 23:44:03 · 105 阅读 · 0 评论 -
kafka入门(七):kafka实现高吞吐量
当一个进程准备读取磁盘上的文件内容时,操作系统会先查看待读取的数据所在的页(page) 是否在页缓存(pageCache) 中,如果存在则直接返回数据,从而避免了对物理磁盘的 IO 操作。当一个进程准备将数据写入磁盘时,操作系统也会检查数据对应的页是否在页缓存中,如果不存在,则先在页缓存中添加相应的页,最后将数据写入对应的页。被修改过的页也就变成了脏页,操作系统会在合适的时间,把脏页中的数据写入磁盘,以保持数据的一致性。页缓存,是操作系统实现的一种磁盘存储,用来减少对磁盘 IO 的操作。原创 2024-01-11 00:05:04 · 523 阅读 · 0 评论 -
kafka入门(六):日志分段(LogSegment)
每个 LogSegment 对应于磁盘上的一个日志文件和两个索引文件,以及其他可能的文件(比如以 .txnindex 为后缀的事务索引文件)。时间戳索引文件中包含若干个时间戳索引项,每个追加的时间戳索引项中的 timestamp 必须大于之前追加的索引项的 timestamp。偏移量索引文件,用来建立消息偏移量( offset ) 到物理地址之间的映射关系,方便快速定位消息所在的物理文件位置。Kafka中 的索引文件以稀疏索引的方式构造消息的索引,它并不保证每个消息在索引文件中都有对应的索引项。原创 2024-01-09 23:34:42 · 777 阅读 · 0 评论 -
kafka入门(五):kafka生产者发送消息
创建生产者实例和构建消息之后,就可以开始发送消息了。发送消息主要有三种模式:发后即忘、同步、异步。原创 2023-12-17 22:49:37 · 1170 阅读 · 0 评论 -
kafka rebalance(再均衡)导致的消息积压分析
kafka消费消息后,如果业务逻辑处理时间过长,会导致消费线程与 Coordinator(协调器) 的 heartbeat (心跳) 超时,Coordinator 判断 Consumer 已经宕机,就将 Consumer 从消费组中剔除,并触发了 Rebalance 机制。max.poll.interval.ms :如果消费端在该间隔内没有发起 poll 操作,该消费者将被剔除,触发重平衡,将该消费者分配的队列分配给其他消费者。如果想从根本上解决,还需要优化消费逻辑,提高性能,快速消费完,避免超时。原创 2023-12-11 23:07:00 · 943 阅读 · 0 评论 -
《Kafka权威指南》读书笔记
Kafka权威指南》第一、三、四、六章,是重点。可以多看看。原创 2023-12-10 10:48:41 · 1270 阅读 · 0 评论 -
kafka入门(四): kafka指定位移消费
也就是说,在执行 seek()方法之前需要先执行一次 poll()方法,等到分配到分区之后才可以重置消费位置。seek 方法只能重置消费者分配到的分区的消费位置,分区的分配是在 poll() 方法的调用过程中实现的。注意:如果配置或者环境有问题, consumer.assignment 会返回空。如果想从特定的位移处开始拉取消息。可以用 seek() 方法。原创 2023-11-29 00:15:13 · 311 阅读 · 0 评论 -
kafka入门(四): 位移提交
假设刚刚提交完一次消费位移,然后拉取一批消息进行消费,在下一次自动提交消费位移之前,消费者崩溃了,那又得从上一次位移提交的地方重新开始消费,这样就会重复消费。异步提交,在执行的时候消费者线程不会被阻塞,可能在提交消费位移的结果还未返回之前就开始了新一次的拉取操作。手动位移提交,由消费者客户端参数 enable.auto.commit 配置, 设置为 false 就是手动位移提交。默认的自动提交,是定期提交,提交的周期由 auto.commit.interval.ms 配置,默认是 5s。原创 2023-11-25 21:15:40 · 930 阅读 · 0 评论 -
kafka入门(三):kafka多线程消费
如果生产者发送消息的速度过快,或者是消费者处理消息的速度太慢,那么就会有越来越多的消息无法及时消费,也就是消费积压。消费积压时,可以使用多线程消费,提高消费速度。《深入理解Kafka:核心设计与实践原理》原创 2023-12-05 23:16:07 · 795 阅读 · 0 评论 -
kafka入门(二):消费者
可以为每一个需要获取一个或多个主题全部消息的应用程序创建一个消费者群组,然后往群组里添加消费者来伸缩读取能力和处理能力,群组里的每个消费者只处理一部分消息。如果我们往群组里添加更多的消费者,超过主题的分区数量,那么有一部分消费者就会被闲置,不会接收到任何消息,如图4-4所示。如果往群组G1新增多几个消费者,直到有4个消费者,那么每个消费者可以分配到一个分区,如图4-3所示。一个群组里的消费者订阅的是同一个主题,每个消费者接收主题的一部分分区的消息。每一个消费者都有一个对应的 消费者群组。原创 2023-12-10 23:01:41 · 654 阅读 · 0 评论 -
kafka入门(一):kafka消息发送与消费
Windows安装kafka, 详情见:https://blog.csdn.net/sinat_32502451/article/details/133067851。Linux 安装kafka,详情见:https://blog.csdn.net/sinat_32502451/article/details/133080353。使用文章开头安装好的 kafka,打开一个 生产者 producer,创建 topic ,并发送消息。设置 broker服务器的ip和端口, 设置 消费者群组id。原创 2023-11-18 22:25:54 · 954 阅读 · 1 评论 -
kafka启动报错
详情见:https://blog.csdn.net/weixin_36771703/article/details/112374609。原创 2023-11-13 00:26:52 · 262 阅读 · 0 评论 -
kafka代码实践示例
Windows安装kafka, 详情见:https://blog.csdn.net/sinat_32502451/article/details/133067851。Linux 安装kafka,详情见:https://blog.csdn.net/sinat_32502451/article/details/133080353。在实际开发中,会有多种不同的消息,服务器也不一定一样。需要根据不同的需求,进行不同的配置。kafka 配置类。原创 2023-10-29 14:52:31 · 164 阅读 · 0 评论 -
kafka代码示例
Windows安装kafka, 详情见:https://blog.csdn.net/sinat_32502451/article/details/133067851。Linux 安装kafka,详情见:https://blog.csdn.net/sinat_32502451/article/details/133080353。原创 2023-10-29 11:34:17 · 106 阅读 · 0 评论 -
linux下安装kafka
安装条件:确保zookeeper已经安装成功。zookeeper安装过程见:https://www.cnblogs.com/expiator/p/9853378.html1.下载kafka 进入Apache官网 http://kafka.apache.org/downloads.html选择Binary downloads,选择版本进行下载。也可以直接用以下命令下载: wget ...原创 2018-11-20 17:22:00 · 48 阅读 · 0 评论 -
kafka消息队列的简单理解
kafka在大数据、分布式架构中都很流行。kafka可以进行流式计算,也可以做为日志系统,还可以用于消息队列。本篇主要是kafka消息队列相关的知识。零、kafka作为消息队列的优点:高吞吐、低延迟:kakfa 最大的特点就是收发消息非常快,kafka 每秒可以处理几十万条消息,它的最低延迟只有几毫秒。高伸缩性: 每个主题(topic) 包含多个分区(partition),主题中的...原创 2018-09-27 15:40:00 · 92 阅读 · 0 评论 -
windows环境下搭建kafka
注意:请确保本地Java环境变量配置成功1.安装Zookeeper Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper 1.1 下载安装文件: http://mirror.bit.edu.cn/apache/zookeeper/ 1.2 解压文件(本文解压到 E:\zookeeper-3.4.8) ...原创 2018-09-26 11:43:00 · 120 阅读 · 0 评论