Kafka的原理是怎么样的?[面试6.0]

Kafka由broker,topic,partition组成
broker: 一个kafka应用实例(节点)
topic: 主题,一个主题对应多个partition
partition: 分区,当消息队列性能不高时可以增加partition,一个partition可以看做是一个先进先出(FIFO)的队列

Kafka通过生产者提供消息到消息队列,再通过消费者拉取或者订阅消息并进行消费
有两种方式:拉取或订阅,其中拉取用在点对点的消费情况,订阅是指多个消费者订阅后,当消息队列有数据了就会推送(push)消息给消费者

Kafka的高可用性是怎样的?[面试6.0]

kafkaMq高可用架构-协作
kafkaMq高可用架构-视频

Kafka由broker,topic,partition组成
broker: 一个kafka应用实例(节点)
topic: 主题,一个主题对应多个partition
partition: 分区,当消息队列性能不高时可以增加partition,一个partition可以看做是一个先进先出(FIFO)的队列

Kafka0.8以后,提供了HA机制,就是replica(复制品)副本机制,每个partition的数据都会同步到其它机器上,形成自己的多个replica副本,所有replica会选举一个leader出来,那么生产和消费都跟这个leader打交道,然后其他replica就是follower,写的时候,leader会负责把数据同步到所有follower上去,读的时候就直接读leader上的数据即可,Kafka会均匀地将一个partition的所有replica分布在不同的机器上,这样才可以提高容错性

若某个broker宕机了,那个broker上面的partition在其他机器上都有副本的,如果这个宕机的broker上面有某个partition的leader,那么此时会从follower中重新选举一个新的leader出来,大家继续读写那个新的leader即可

写数据的时候,生产者就写leader,然后leader将数据落地写本地磁盘,接着其他follower自己主动从leader进行pull数据,一旦所有follower同步好数据了,就会发送ack给leader,leader收到所有follower的ack之后,就会返回成功的消息给生产者

消费的时候,只会从leader去读,但是只有当一个消息已经被所有follower都同步成功返回ack的时候,这个消息才会被消费者读到

Kafka如何保证消息不被重复消费?(同问:使用消息队列如何保证幂等性?)[面试6.0]

采用Redis设置一个参数避免重复消费
如数据要写数据库,先判断是否已经写入了这条数据了,若有就不再写了
利用数据库的唯一约束保证重复数据不会重复插入

Kafka消息队列如何保证消息的可靠性传输?(同问:如何处理消息丢失的问题?)[面试6.0]

在生产阶段,你需要捕获消息发送的错误,并重发消息
在存储阶段,通过配置刷盘和复制相关的参数,让消息写入到多个副本的磁盘上,来确保消息不会因为某个Broker宕机或者磁盘损坏而丢失
在消费阶段,你需要在处理完全部消费业务逻辑之后,再发送消费确认

Kafka消息是有序的吗?[面试7.0]

在同一个partition里的消息是有序的(一个partition对应一个消费者),不同partition之间的消息是没法保证全局有序的

Kafka如何保证消息的顺序性?(How Kafka guarantees message ordering?)[面试7.0]

一个topic,一个partition,一个consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个
写N个内存队列,队列中(通过hash方式路由),每个线程分别消费一个内存队列即可,这样就能保证顺序性

java消息队列-kafka相关推荐

  1. Java 消息队列、缓存、同步(个人理解:空谈)

    Java 消息队列.缓存.同步. 消息队列 我的理解:消息队列,将消息存入消息队列,然后就OK了. 系统之间原先调用通用接口,但引入了消息队列后,系统之间调用MQ消息队列. 好处:响应快,能累积请求, ...

  2. 光速入门消息队列Kafka

    文章目录 光速入门消息队列Kafka 消息队列 知识要点 2.1 背景.问题的产生 2.2 消息队列应运而生 2.3 消息队列的特点 认识kafka 知识要点 2.1 认识kafka 2.2 kafk ...

  3. 分布式消息队列 Kafka

    分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala 具有高吞吐.可扩展.分布式等特点 适用场景 活动数 ...

  4. 阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

    摘要: 7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态.在兼容Apache生态的基础上,阿里云消息队列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性9 ...

  5. 阿里云正式推出消息队列Kafka:全面融合开源生态

    摘要: 在全面兼容Apache Kafka生态的基础上,消息队列Kafka彻底解决Apache Kafka稳定性不足的长期痛点,并且支持消息无缝迁移到云上. 近日,阿里云宣布正式推出消息队列Kafka ...

  6. 消息队列 Kafka的架构原理 (小白必看)

    最终大家会掌握 Kafka 中最重要的概念,分别是 Broker.Producer.Consumer.Consumer Group.Topic.Partition.Replica.Leader.Fol ...

  7. Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个或多个程序之间的耦合,底层由Jav ...

  8. java 消息队列详解_Java消息队列-Spring整合ActiveMq的详解

    本篇文章主要介绍了详解Java消息队列-Spring整合ActiveMq ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.概述 首先和大家一起回顾一下Java 消息服 ...

  9. Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...

最新文章

  1. titanium开发教程-04-11其他属性和方法
  2. postgres 支持的线程数_线程池被打满了怎么处理呢,你是否真的了解线程池?
  3. 计算机二级公共,计算机二级公共基础知识
  4. 千橡CEO给应聘者的信
  5. 向前logistic回归与向后筛选出一样的变量_什么泊松分布?泊松回归又能做什么?...
  6. ZeroMq的研究和使用
  7. mysql 策略_MySQL 密码策略
  8. python实现商品进销存管理系统
  9. 用计算机制作课程表,怎么用word做表格-Word制作课程表的方法,学习必备表格,简单易学...
  10. 日期转换 EEE MMM dd HH:mm:ss zzz yyyy
  11. 考研英语 单词常见熟词生义
  12. 云计算是互联网和计算机技术发展的产物,云计算 是传统计算机和网络技术发展融合的产物,它意味着计算能力也可作为一种商品通过互联网进行流通 。...
  13. 分享82个HTML电脑主机模板,总有一款适合您
  14. linux sort 排序 指定间隔符
  15. 对拉勾网数据分析职位做数据分析
  16. 当供应链金融遇上IoT 华为将和渣打银行擦出怎样的火花?
  17. 手工卡纸做机器人_折纸大全手把手教你安卓机器人的手工制作教程
  18. mysql取数据库时间函数_MySQL数据库—日期与时间函数
  19. 吴思《潜规则》:读圣贤书所为何事?
  20. 基于simulink的模糊PID控制器

热门文章

  1. 关于微信拉票之微信如何拉票及微信投票怎样拉票操作方法
  2. 计算机毕业设计太难做不出来怎么办?
  3. 高效便捷组卷功能,学练考一体化让考试更轻松
  4. 【uniapp】 两种上拉加载方式
  5. 水面倒影风格的LOGO在线做
  6. AI 大数据在数据隐私保护下如何普惠共享?CCF TF「联邦学习」研讨会给出了答案
  7. 中国工业园区建设与运营市场发展状况与投资战略咨询报告2022-2028年
  8. 访问服务器上的图片显示404,vue run build打包之后服务器端访问图片404
  9. Roson的Qt之旅#71 Qt绘制星空和旋转的星球
  10. 为什么现在java这么难找,现在java工作难找吗