当前位置: 首页 > article >正文

常用的消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)面试精华

目录

主要作用:

四种消息中间件:

主要作用:

  • 解耦

  1. 多个系统调用主系统可选择是否订阅

  • 异步

  1. 主系统可提高响应时间

  • 削峰

  1. 通过消息队列减轻消息访问对服务器的压力

四种消息中间件:

ActiveMQ

  1. 万级吞吐量

RabbitMQ(中小型公司)

  1. 万级吞吐量

RocketMQ(中大型公司)(非分布式)

  1. 十万级

  2. Topic主题分类更加细致 有Tag分级

  3. 高可用:镜像集群模式

  4. 怎么做:开启镜像集群策略,可指定同步数据节点数量是所有还是个别几个

Kafka(纯分布式的mq)

  1. 十万级

  2. 高可用:假设一个topic有三个partition,在topic中写三条消息,每条消息存在不同的partition中,每个partition有自己的副本,选出leader和follower,leader宕机后,在follower中选出leader

  3. 只能leader读写,保证一致性,减轻复杂度

  4. leader读取数据后,follower从leader拉取数据,响应ack告诉leader

  5. 生产者给kafka发送消息都有一个offset 在kafka中是有序的,消费者也是按照顺序消费的,消费者按顺序消费到哪个offset,zookeeper有记录,kafka可以从zookeeper中读取消费到那个位置了

  6. 由于消费者重启,kafka无法感知消费者消标记的offset,kafka会重复发已经发过的消息,导致消费者会重复消费   需要要保证幂等性

      解决办法:

      每条消息设置id存入Redis

      数据库主键唯一性


http://www.kler.cn/a/446547.html

相关文章:

  • springboot 3 websocket react 系统提示,选手实时数据更新监控
  • 【Mysql优化】SQL优化最佳实践分析与总结
  • List深拷贝后,数据还是被串改
  • HIPT论文阅读
  • Windows server 服务器网络安全管理之防火墙出站规则设置
  • aosp15 - Activity生命周期切换
  • Git(10)之忽略指定文件改动
  • iOS 多个输入框弹出键盘处理
  • 我在华为的安全日常
  • 嵌入式硬件面试题
  • Pycharm和Jupyter Notebook的比较【笔记】
  • 【ETCD】【实操篇(六)】使用多种方式从ETCD集群中读取数据【Get keys by prefix】
  • 《商业模式2.0图鉴》读书笔记(如何构建创新驱动的商业模式:打破定律与重塑价值)
  • 使用Redis实现限流
  • 鸿蒙项目云捐助第十九讲云捐助百度智能名片识别
  • YOLO系列正传(三)神经网络的反向传播(back propagation)与公式推导
  • C语言学习-数组练习
  • OB删除1.5亿数据耗费2小时
  • 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述
  • 《计算机组成及汇编语言原理》阅读笔记:p9-p27
  • 构建MacOS应用小白教程(打包 签名 公证 上架)
  • centos7下制作DockerFile 镜像
  • 牛客月赛107
  • 云消息队列 Kafka 版
  • 前端数据可视化库介绍Echarts、D3.js、Plotly、Matplotlib
  • 各种开源汇编、反汇编引擎的非专业比较