《专题四 服务化改造》之《第三章 分布式系统解耦》之《第五节 常见消息中间件介绍》、《第六节 消息队列的持久化和可靠消息与事务消息》

《3.5.1 消息中间件概念和RabbitMQ介绍》

  • 4 30 消息队列两种模式:点对点与发布订阅:
    在这里插入图片描述

  • RabbitMQ:
    在这里插入图片描述

  • 26分 AMQP模型:
    在这里插入图片描述

  • 47 30 消息:
    在这里插入图片描述

  • 64 40 RabbitMQ的架构:
    在这里插入图片描述

  • 66分 RabbitMQ的消息运转流程:
    在这里插入图片描述

《3.5.2 kafka技术架构和配置介绍》

  • Kafka整体架构如下图。一个broker可以容纳多个topic在这里插入图片描述

  • 6分 每个Consumer Group中只会有一个Consumer消费一个partition

  • Broker:
    在这里插入图片描述

    扫描二维码关注公众号,回复: 12983369 查看本文章
  • Consumer:
    在这里插入图片描述
    在这里插入图片描述

  • 24分 kafka data flow:
    在这里插入图片描述

  • 生产流程:
    在这里插入图片描述

  • 29 10 kafka会尽量把leader分配到不同的broker上;leader负责读与写,replica只负责读;当一个broker挂了,会针对其中的leader重新选举;进行partition分配和leader选举的执行者称为控制者,默认采用zookeeper

    • 31 10+ leader选举
    • 37 40 早期版本中offset保存在zookeeper中
  • 在消费过程中分配Partition :

    • 40 27 消费过程中的选择coordinator:一般是保存offset的leader所在的broker
    • 45 50 什么时候发生rebalance: partition或者消费者的数量发生变化
  • 47 45 消息投递语义:
    在这里插入图片描述
    At least once: 消费者处理完业务后,再去更新offset
    At most once: 拿到消息后,先更新offset,再去处理业务

  • 54 40 生产幂等性:
    在这里插入图片描述

《3.5.3 RocketMQ介绍》

  • 22 20 RocketMQ的物理架构:
    在这里插入图片描述
    • 26 40 Producer只发送消息到broker master,而consumer既可以从broker master也可以从broker slave读消息
  • 29 27 与kafka不同,Consumer组里的所有实例都会收到同一条消息

《3.6.1 消息中间件的对比使用经验》

  • 18 50
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 选型建议:
    在这里插入图片描述

  • 实现消息必达:
    在这里插入图片描述

    • 33 30 核心流程:
      在这里插入图片描述
  • 37分+ 实现消息幂等:
    上半场使用id,id有两个特点:1)全局唯一,2)由MQ生成,业务方不需要关心
    下半场的biz id?由生产者生成,在对应消费场景中全局唯一,由消费者判重和保证幂等,对MQ透明。比如把此id放在消息体中

  • 45 25 流量消峰:
    消费者取消息的模式,用pull,而不是push

  • 46 50 实现延时消息:
    cron定时任务
    更高效的设计:环形队列

猜你喜欢

转载自blog.csdn.net/qq_23204557/article/details/111940545
今日推荐