![](https://img-blog.csdnimg.cn/20210306155717211.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
kafka消息队列
文章平均质量分 59
kafka高性能消息队列
另一花生
竹杖芒鞋轻胜马,一蓑烟雨任平生
展开
-
kafka生产者客户端链路架构梳理
是早在Kafka 0.10.0.0中就已经引入的一个功能,Kafka一共有两种拦截器:生产者拦截器和消费者拦截器。生产者拦截器既可以用来在消息发送前做一些准备工作,比如按照某个规则过滤不符合要求的消息、修改消息的内容等,也可以用来在发送回调逻辑前做一些定制化的需求,比如统计类工作。自定义实现org.apache.kafka.clients.producer.ProducerInterceptor接口。......原创 2022-08-28 01:36:20 · 1342 阅读 · 0 评论 -
减少消息延迟的一些办法
想要减少消息的处理延迟,我们需要在消费端和消息队列两个层面来完成。想要减少消息的处理延迟,我们需要在消费端和消息队列两个层面来完成。在消费端,我们的目标是提升消费者的消息处理能力,你能做的是:不过,第二种方式会受限于消息队列的实现。比如说,如果消息队列使用的是 Kafka 就无法通过增加消费者数量的方式,来提升消息处理能力。因为在 Kafka 中,一个 Topic(话题)可以配置多个 Partition(分区),数据会被平均或者按照生产者指定的方式,写入到多个分区中,那么在消费的时候,Kafk原创 2021-06-06 11:31:24 · 709 阅读 · 0 评论 -
消息积压如何处理
优化性能来避免消息积压在消息的收发两端,我们的业务代码怎么和消息队列配合,达到一个最佳的性能。发送端性能优化你的代码发送消息的性能上不去,你需要优先检查一下,是不是发消息之前的业务逻辑耗时太多导致的增加每次发送消息的批量大小,还是增加并发,都能成倍地提升发送性能。至于到底是选择批量发送还是增加并发,主要取决于发送端程序的业务性质比如说,你的消息发送端是一个微服务,主要接受 RPC 请求处理在线业务。很自然的,微服务在处理每次请求的时候,就在当前线程直接发送消息就可以了,因为所有 RPC原创 2021-03-21 22:24:42 · 494 阅读 · 0 评论 -
如何处理消费过程中的重复消息
在 MQTT 协议中,给出了三种传递消息时能够提供的服务质量标准,这三种服务质量从低到高依次是At most once: 至多一次。消息在传递时,最多会被送达一次。换一个说法就是,没什么消息可靠性保证,允许丢消息。一般都是一些对消息可靠性要求不太高的监控场景使用,比如每分钟上报一次机房温度数据,可以接受数据少量丢失。At least once: 至少一次。消息在传递时,至少会被送达一次。也就是说,不允许丢消息,但是允许有少量重复消息出现。Exactly once:恰好一次。消息在传递时,只会被送.原创 2021-03-21 22:02:05 · 704 阅读 · 0 评论 -
为什么kafka不支持主从分离
首先明确一下:主从分离与否没有绝对的优劣,它仅仅是一种架构设计,各自有适用的场景。第二、如你所说,Redis和MySQL都支持主从读写分离,我个人觉得这和它们的使用场景有关。对于那种读操作很多而写操作相对不频繁的负载类型而言,采用读写分离是非常不错的方案——我们可以添加很多follower横向扩展,提升读操作性能。反观Kafka,它的主要场景还是在消息引擎而不是以数据存储的方式对外提供读服务,通常涉及频繁地生产消息和消费消息,这不属于典型的读多写少场景,因此读写分离方案在这个场景下并不太适合。第三.原创 2021-03-16 12:55:22 · 282 阅读 · 0 评论 -
kafka基本知识概念
消息:Record。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。副本:Replica。Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分.原创 2021-03-15 20:22:57 · 196 阅读 · 0 评论 -
如何设计一个消息队列中间件
比如说这个消息队列系统,我们来从以下几个角度来考虑一下(1)首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka的设计理念,broker -> topic -> partition,每个partition放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给topic增加partition,然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了?(2)其次你得考虑一下这个mq的数据要不要落地磁盘吧原创 2021-03-07 15:22:06 · 274 阅读 · 0 评论 -
几百万消息积压怎么处理
1)先修复consumer的问题,确保其恢复消费速度,然后将现有cnosumer都停掉2)新建一个topic,partition是原来的10倍,临时建立好原先10倍或者20倍的queue数量3)然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue4)接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据5)这种做法相当于是临时将queue资源和..原创 2021-03-07 15:08:42 · 344 阅读 · 0 评论 -
kafka如何保证顺序消费
kafka:一个topic,一个partition,一个consumer,内部单线程消费,写N个内存queue,然后N个线程分别消费一个内存queue即可原创 2021-03-07 14:48:49 · 534 阅读 · 0 评论 -
kafka可能存在的消息丢失问题
这块比较常见的一个场景,就是kafka某个broker宕机,然后重新选举partiton的leader时。大家想想,要是此时其他的follower刚好还有些数据没有同步,结果此时leader挂了,然后选举某个follower成leader之后,他不就少了一些数据?这就丢了一些数据啊。生产环境也遇到过,我们也是,之前kafka的leader机器宕机了,将follower切换为leader之后,就会发现说这个数据就丢了所以此时一般是要求起码设置如下4个参数:给这个topic设置replicati..原创 2021-03-07 00:02:35 · 561 阅读 · 0 评论 -
kafka消费端可能出现的重复消费问题
原创 2021-03-06 22:16:09 · 279 阅读 · 0 评论 -
kafka高可用架构
原创 2021-03-06 15:53:41 · 265 阅读 · 0 评论