后端学习 | 青训营笔记

63 阅读2分钟

这是我参与「第五届青训营 」伴学笔记活动十四天。 消息队列


概述

  • 消息队列是什么

    • MQ指保存消息的一个容器,本质是一个队列,支持高吞吐、高并发、高可用
    • 解耦:解决系统崩溃的爆炸半径
    • 削峰:缓解请求过多
    • 异步:应对长尾延迟
    • 日志处理:处理日志信息
  • 发展

    • 应用场景
    • 发展历史
  • Kafka

    • 分布式、多分区、多副本的日志提交服务,在高吞吐场景下发挥较出色。
    • 场景
      • 搜索服务

      • 直播服务

      • 订单服务

      • 支付服务

        • 业务日志-----↓
        • 用户行为数据---->kafka
        • Metrics数据-----↑
    • 使用
      • 创建集群
      • 新增topic
      • producer逻辑编写
      • consumer逻辑编写
    • 架构
      • 基本概念
        • producer:消息的生产端、负责将业务信息发送到topic中
        • cluster:kafka的物理集群,每个集群可以新建不同的topic
        • consumer:消息的消费端,负责消费已经发送到topic中的消息
        • topic:kafka的逻辑队列,不同业务场景对应不同topic,所有业务信息数据都存储在topic中
        • partition:通常topic会有多个分片,不同分片直接消息可以并发处理,提高单个topic的吞吐
        • offset:消息在partition内的相对信息位置,在partation内严格递增。
        • replica:每个分片有多个replica,副本,用来容灾,leaer用来提供服务,follower异步拉取leader数据进行同步。leader挂掉follower成为leader
    • 高级特性
      • 数据迁移、offset、partition选主
      • 一条消息的生产到消费是如何处理的,producer逻辑、broker逻辑、consumer逻辑
  • BMQ

    • 存算分离,逐步替换掉对应的kafka集群
    • 场景
      • kafka使用中遇到问题
    • 架构
      • broker
      • proxy
      • HDFS
      • MetaStorage
    • 高级特性
      • 多机房容灾
  • RocketMQ

    • 低延迟、强一致、高性能、高可靠、万亿计容量和灵活性的可扩展性,在一些实时场景中运用广
    • 场景
    • 架构
      • producer
      • broker
      • nameserver
      • consumer
    • 高级特性
  • 实践