kafka
文章平均质量分 51
小甄笔记
这个作者很懒,什么都没留下…
展开
-
kafka什么情况下会认为发送失败进而去重试
在Kafka中,发送消息的过程是异步的,即消息后不会立即得到发送结果。Kafka会将消息添加到发送缓冲区,并立即返回一个成功的响应。因此,Kafka并不会直接知道消息是否成功发送到了目标主题的分区。需要注意的是,Kafka的重试机制是有限制的。在重试过程中,如果达到了最大重试次数或者超过了最大重试时间,Kafka会放弃重试,并将消息标记为发送失败。原创 2024-03-18 16:51:07 · 871 阅读 · 1 评论 -
什么是死信队列
当消息满足特定条件时,比如消息被拒绝、消息过期或者队列达到最大长度等,这些消息就会被发送到死信队列中。通过使用死信队列,我们可以对无法正常处理的消息进行特殊处理,比如记录日志、统计失败次数、发送告警通知等。当队列已经达到最大长度,新的消息无法进入队列时,这些新消息可能会被发送到死信队列,以便给予特别处理或记录日志。如果消息设置了过期时间,并且在此时间内没有被消费者处理,那么该消息可能会成为死信,被发送到死信队列中。当消费者拒绝消费消息并且不将其重新放回原始队列时,消息可能会被发送到死信队列。原创 2024-03-11 12:02:21 · 450 阅读 · 0 评论 -
kafka和ZK的关系
创建broker后,向zk注册新的broker信息,以及监测 partition leader存活性,实现在服务器正常运行下的水平拓展,Topic的注册,zk会维护broker与topic的关系,通过/brokers/topics/topic.name节点来记录。只是能够提供当前broker的相关信息,Producer向zookeeper中注册watcher,了解topic的partition的消息,以动态了解运行情况,实现负载均衡。ZooKeeper充当了Kafka集群的协调者,确保集群的稳定运行。原创 2024-02-22 11:15:08 · 772 阅读 · 0 评论 -
kafka为什么快
3、页缓存: Kafka 将其数据存储在磁盘中,但在访问数据时,它会先将数据加载到操作系统的页缓存中,并在页缓存中保留一份副本,从而实现快速的数据访问。1、批量发送: Kafka 通过将多个消息打包成一个批次,减少了网络传输和磁盘写入的次数,从而提高了消息的吞吐量和传输效率。1、零拷贝技术:Kafka 使用零拷贝技术来避免了数据的拷贝操作,降低了内存和 CPU 的使用率,提高了系统的性能。2、异步发送: 生产者可以异步发送消息,不必等待每个消息的确认,这大大提高了消息发送的效2.率。原创 2024-01-14 15:57:47 · 697 阅读 · 0 评论 -
rocketMq消息堆积处理方式
云消息队列 RocketMQ 版的消息发送至Broker节点后,配置了Group ID的客户端根据当前的消费位点,从Broker节点拉取部分消息到本地进行消费。一般情况下,客户端从Broker节点拉取消息的过程不会导致消息堆积,主要是客户端本地消费过程中,由于消费耗时过长或消费并发度较小等原因,导致客户端消费能力不足,出现消息堆积的问题。针对某些特殊业务场景,如果消息堆积已经影响到业务运行,且堆积的消息本身可以跳过不消费,您可以通过重置消费位点跳过这些堆积的消息从最新位点开始消费,快速恢复业务。原创 2023-11-10 13:21:53 · 713 阅读 · 0 评论 -
RocketMq批量拉取消息失败处理
Consumer的MessageListenerConcurrently监听接口的consumeMessage()方法的第一个参数为消息列表,但默认情况下每次只能消费一条消息。若要使其一次可以消费多条消息,则可以通过修改Consumer的consumeMessageBatchMaxSize属性来指定。不过,该值不能超过32。因为默认情况下消费者每次可以拉取的消息最多是32条。若要修改一次拉取的最大值,则可通过修改Consumer的pullBatchSize属性来指定。原创 2023-11-29 19:26:53 · 843 阅读 · 0 评论 -
Rocket如何实现顺序消费
在RocketMQ中,如果使消息全局有序,可以为Topic设置一个消息队列,使用一个生产者单线程发送数据,消费者端也使用单线程进行消费,从而保证消息的全局有序,但是这种方式效率低,一般不使用。广播消费:当使用广播消费模式时,每条消息推送给集群内所有的消费者,保证消息至少被每个消费者消费一次。,生产者在发送消息的时候,可以对消息设置一个路由ID,比如想保证一个订单的相关消息有序,那么就使用。,根据取余结果选择消息队列,这样同一个订单的数据就可以保证发送到一个消息队列中,消费者类实现。订单ID当做路由ID。原创 2023-11-19 12:04:55 · 391 阅读 · 0 评论 -
kafka和rocketMq的区别
1、RocketMQ 和 Kafka 都使用了顺序写机制,但相比 Kafka,RocketMQ 在消息写入时追求极致的顺序写,会在同一时刻将消息全部写入一个文件,这显然无法压榨磁盘的性能。而 Kafka 是分区级别顺序写,在分区数量不多的情况下,从所有分区的视角来看是随机写,但这能重复发挥 CPU 的多核优势2、Leader 节点承担一个分区的读写,Follow 节点只负责数据备份3、RocketMQ 默认采取的是主从同步架构,即 Master-Slave 方式,其中 Master 节点负责读写,原创 2023-11-10 12:00:37 · 979 阅读 · 0 评论 -
kafka的topic,broker,partition之间的关系
一个topic对应多个partition,partition分布在多broker上,多broker一起提供kafka服务。kafka中,Topic是一个存储消息的逻辑概念,可认为为一个消息的集合。物理上,不同Topic的消息分开存储,每个Topic可划分多个partition,同一个Topic下的不同的partition包含不同消息。每个消息被添加至分区时,分配唯一offset,以此保证partition内消息的顺序性。kafka中,以broker区分集群内服务器,同一个topic下,多个parti原创 2021-03-03 16:02:35 · 13662 阅读 · 6 评论 -
spring-kafka的消费者提交机制
AckMode/** * The offset commit behavior enumeration. */ public enum AckMode { /** * Commit after each record is processed by the listener. */ RECORD, /** * Commit whatever has already been processed before the next poll. */ BA原创 2021-03-03 15:40:22 · 399 阅读 · 1 评论 -
kafka如何保证消息有序
两种方案:方案一,kafka topic 只设置一个partition分区方案二,producer将消息发送到指定partition分区解析:方案一:kafka默认保证同一个partition分区内的消息是有序的,则可以设置topic只使用一个分区,这样消息就是全局有序,缺点是只能被consumer group里的一个消费者消费,降低了性能,不适用高并发的情况方案二:既然kafka默认保证同一个partition分区内的消息是有序的,则producer可以在发送消息时可以指定需要保证..原创 2021-03-03 14:22:37 · 2276 阅读 · 0 评论 -
消费者kafka配置
配置文件 <!-- 定义consumer的参数 --> <bean id="consumerProperties" class="java.util.HashMap"> <constructor-arg> <map> <entry key="bootstrap.servers" value="127.0.0。1" /> <原创 2020-10-27 19:01:35 · 635 阅读 · 0 评论 -
kafka生产者使用
配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:s原创 2020-10-27 18:10:22 · 175 阅读 · 0 评论 -
kafka和rabbitMq的对比
消息应答机制RabbitMQ具有生产者confirm机制以及消费者的消息应答机制ackKafka不具有应答机制消息的顺序rabbitMQ中,在一个队列里面,rabbitMQ的消息是严格顺序的,按照先进先出的则kafka中,在同一个partition中消息是有序的,但是生产者put到kafka中数据会分布在不同的partition中,所以总体是无序的吞吐量根据测试,RabbitMQ在不使用ACK机制的,Msg大小为1K的情况下,QPS可达6W+。再双方ACK机制,Msg大小为1K的原创 2020-10-26 18:20:23 · 508 阅读 · 0 评论 -
kafka分区介绍
kafka可以将一个topic(主题)从物理上分为一个或多个区partition,每个分区在物理上对应一个文件夹,以”topicName_partitionIndex”的命名方式命名,该文件夹下存储这个分区的所有消息(.log)和索引文件(.index),这使得Kafka的吞吐率可以水平扩展生产者在生产数据的时候,可以为每条消息指定Key,这样消息被发送到broker时,会根据分区规则选择被存储到哪一个分区中,如果分区规则设置的合理,那么所有的消息将会被均匀的分布到不同的分区中,这样就实现了负载均衡和水原创 2020-10-26 17:57:09 · 3244 阅读 · 2 评论 -
kafka的分区和消费者组
消费者组消费者组是Kafka实现单播和广播两种消息模型的手段。同一个topic,每个消费者组都可以拿到相同的全部数据(不论topic有几个分区)。单个消费者组topic单分区partition,同一个消费者组中有两个消费者这说明:同一个分区内的消息只能被同一个组中的一个消费者消费,当消费者数量多于分区数量时,多于的消费者空闲(不能消费数据)topic三分区,同一个消费者组创建2个消费者这说明:当分区数多于消费者数的时候,有的消费者对应多个分区topic三分区,同一个消费者组创原创 2020-10-26 17:02:51 · 3437 阅读 · 0 评论 -
为何使用消息系统
解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 冗余 有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢...原创 2020-01-10 15:54:39 · 109 阅读 · 0 评论 -
kafka基本结构和特性
点对点和发布/订阅点对点:消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。这里要注意:消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。发布/订阅消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点...原创 2020-01-13 14:01:31 · 802 阅读 · 1 评论