栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka和rabbitmq面试题

kafka和rabbitmq面试题

     角色

 topic:每一类的消息为一个主题

partition:一个topic可以分多个partition

producer:发布消息    主题生产者

consumer:订阅消息   主题消费者

broker :服务区

                          kafka 1.什么是kafka 

kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,主要用于处理流式数据.

 2.kafka的作用

缓冲和削峰: 当数据高并发时kafka可以在中间起到一个缓冲作用,把消息暂存在kafka中,服务器可以慢慢处理

解耦和扩展性: 当不确定具体需求,消息队列可以作为一个接口层,解耦重要的业务流程.只要遵守约定,针对数据变成即可获取扩展能力.

冗余: 可以采用一对多的方式,一个生产者发送消息,可以被多个订阅的topic的服务消费到,供多个毫无关系的业务使用.

健壮性: 消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行

异步通信: 处理一些不是必要的数据,缩减用户请求响应时间

 3.kafka中的特性?

1.高吞吐量,低延迟,每个topic可以分多个partition,consumer group 对 partition进行consume操作

2.可扩展性:  kafka集群支持热扩展

3持久性,可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

4.容错性:允许集群中节点失败

5.高并发

6.支持实时在线处理和离线处理

 4.kafka如何保证消息有序

方案一: topic值只设置一个partition分区

方案二:producer将消息发送到指定topic的partition分区

详解:"kafka默认保证同一个partition分区内的消息时有序的

方案一:,缺点时只能被consumer group里的一个消费者消费,降低了性能,不适合高并发的情况

5.kafka如何保证数据不丢失 

同步模式下:ack确认机制设置为-1      在发送消息时,需要leader向fllow同步数据完成后,也就时ISR队列中所有的broker全部保存完这条消息后才会像ack发送完成信息

异步模式下:为防止缓冲区慢,可以在配置文件设置不限制阻塞超时时间,当缓冲区满时让生产者一直处于阻塞状态

6.kafka如何保证数据的不重复消费
1.保证消息消费的幂等性

2.确认之际ack设置为-1

3.事务管理

                         RabbitMQ 1.rabbitmq的作用

异步    削峰   解耦

2.rabbitmq的使用场景

1.服务间异步通讯

2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来.

3.实现消费者和生产者之间的解耦

4.对于高并发场景下利用消息队列可以使得同步访问变为串行访问达到一定量的限流

5.异步通信: 处理一些不是必要的数据,缩减用户请求响应时间

 3.RabbitMQ如何保证消息的不重复消费

1.在消息生产时MQ内部每条生产者发送的消息生成一个inner-masg-id,作为去重的依据,避免重复的消息进入队列

2.在消息消费时,要求消息中必须有bizid作为去重的依据,避免一条消息被重复消费

 4.RabbitMQ如何保证消息不丢失

第一种:消息持久化

RabbitMQ消息默认是存放在内存上的,消息设置存放到本都磁盘需要

Exchange设置持久化

Queue设置持久化

Message持久化发送:发送消息设置模式deliveryMode=2代表持久化消息

第二种ack确认机制

第三种设置集群镜像模式

 4.RabbitMQ的缺点

1.系统可用性降低

2.系统复杂性提高

3.一致性问题

单个消费者来出路对应的单个queue是不会出现消息错乱的问题

5RabbitMQ的顺序性

 单个消费者来出路对应 的单个queue是不会出现消息错乱的问题

            Kafka和Raa和RabbitMQ的区别

一.以消息队列来说,MQ中间件都是很成熟的产品,性能没有kafka强,但可靠性强而,kafka原本设计的初衷是日志统计分析

RabbitMQ  用在实时的对可靠性要求比较高的消息传递上

kafka主要用于处理活跃的流式数据,大数据量的数据处理上

二:在架构方面

RabbitMQ一broker为u中心,有消息确认机制

Kafka尊重一般的MQ结构 ,一consumer为中心,无消息确认机制

三:吞吐量

RabbitMQ在吞吐量方面逊色与kafka,RabbitMQ支持对消息的可靠的传毒,支持事务不支持批量的操作:基于存储的可靠性的要求存储可以采用内存或者硬盘

Kafka具有高的吞吐量,内部采用消息的批量处理,数据的存储和获取是本地磁盘顺序批量操作,具有复杂度,消息处理的效率很高

四:在集群负载均衡方面

RabbitMQ的负载均衡需要单独的loadvalancer进行支持

kafka采用zookeeper对进群中的broker,consumer进行管理,可以注册topic到zookeeper上,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号