消息中间件mq*(Kafka)

RabbitMQ和Kafka的区别

Kafka 适合 数据量大 高吞吐量和数据持久化

RabbitMQ 低延迟 灵活路由 多协议支持

就是一个量大 一个速度快

Kafka如果保证数据不丢失

1 通过日志实现异步回调机制 重试机制保证数据不丢失

2 复制机制 设置acks确认

3 禁用自动提价偏移量改为手动提交

Kafka消息的重复消费问题

Kafka消费消息是按照offset进行标记消费的 消费者默认是自动按期提交已经消费的偏移量

但是可以通过禁用自动提价偏移量 改为手动提交 避免消息丢失和重复消费

为了保证消息的幂等性 可以通过数据库加锁 设置唯一主键 redis分布锁

Kafka如何保证消费的顺序性

默认是不能保证顺序性的 因为可能存储在不同的分区 但是可以解决 有两种方法 都是把消息都存储到同一个分区下 但是感觉这么做会影响性能

1 指定分区号

2 相同业务设置相同key hash值一样的话 分区肯定也一样

Kafka高可用机制

集群

多个broker实例组成集群 即使某一台宕机了 也不耽误其他的broker继续对外提供服务

复制机制

一个topic有多个分区 每个分区有多个副本 其余的是follower 副本存储在不容的broker中 所有的分区副本的内容是相同的 如果leader发生故障时 会自动将其中一个follower提升为leader 从而保证高可用性 提高容错

复制机制的ISR

in-sync replice 同步复制保存follower

还有一种就是异步的

Kafka的数据清理机制

topic的数据存储在分区上 分区如果文件过大的会分段存储segment

每个分段都以 索引和日志文件的形式存储

这样分段的好处 1 减少单个文件内容的大小 查找数据方便 2 方便kafka进行日志清理

清理策略

1 根据消息保留时间 超时触发清理

2 根据topic存储大小

这两个都可以通过kakfa的broker中的配置文件进行设置

Kafka实现高性能设计

Kafka高性能来自 多方面协同的结果 宏观架构 分布式存储 ISR数据同步 高效利用磁盘 操作系统特性

消息分区 不受单服务器的限制 可以不受限的处理更多数据

顺序读写 磁盘读写效率高

页缓存 磁盘中的数据缓存到内存中 把对磁盘的访问变为对内存的访问

零拷贝 减少上下文切换以及数据拷贝

消息压缩 减少磁盘io和网络io

分批发送 将消息打包批量发送 减少网络开销

相关推荐
TTBIGDATA1 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger
indexsunny1 天前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices
编程彩机1 天前
互联网大厂Java面试:从Spring Boot到分布式事务的技术场景解析
spring boot·kafka·分布式事务·微服务架构·java面试·技术解析
没有bug.的程序员1 天前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融
yumgpkpm1 天前
华为昇腾300T A2训练、微调Qwen过程,带保姆式命令,麒麟操作系统+鲲鹏CPU
hive·hadoop·华为·flink·spark·kafka·hbase
ApachePulsar1 天前
演讲回顾|谙流科技在 Kafka on Pulsar 之上的探索
分布式·科技·kafka
yumgpkpm2 天前
2026软件:白嫖,开源,外包,招标,晚进场(2025年下半年),数科,AI...中国的企业软件产业出路
大数据·人工智能·hadoop·算法·kafka·开源·cloudera
迎仔2 天前
09-消息队列Kafka介绍:大数据世界的“物流枢纽”
大数据·分布式·kafka
indexsunny2 天前
互联网大厂Java面试实录:Spring Boot微服务与Kafka消息队列实战解析
java·spring boot·微服务·面试·kafka·电商·技术解析
indexsunny3 天前
互联网大厂Java面试实战:从Spring Boot到微服务架构的技术问答解析
java·spring boot·redis·微服务·kafka·jwt·flyway