Skip to content

[mq] mq knowledge #122

Description

@Alice52

核心

  1. 消息队列技术选型
  2. 高可靠、高可用和高性能
  3. 消息不重复、不丢失
  4. 性能
  5. 扩展行: 水平
  6. 社区

分布式系统

  1. 最基本需求: 通信
  2. 特点: 3v-3h
    • 3v
      • 海量
      • 实时
      • 多样
    • 3h
      • 高并发
      • 高可靠
      • 高性能
  3. 底层技术面: 高性能通信、海量数据存储、高并发等.
  4. 消息队列:
    • 功能简洁
    • 结构清晰
    • 入门简单
    • 深度足够

knowledge list

mq-knowledge-list

  1. 应用

    • 日志
    • 监控
    • 微服务
    • 流计算
    • ETL
    • IoT
    • other
  2. 实现技术

    • 网络通信
    • 序列化反序列化
    • 一致性协议
    • 分布式事务
    • 异步编程
    • 数据压缩
    • 内存管理
    • 文件与高性能 IO
    • 高可用分布式系统

哪些问题适合使用消息队列来解决

  1. 异步处理: 秒杀

mq-seckill

  1. 流量控制:

    • 自身能力范围内尽可能多地处理请求, 拒绝处理不了的请求并且保证自身运行正常
    • 使用消息队列隔离网关和后端服务, 以达到流量控制和保护后端服务的目的

    mq-seckill-access-control

    • 能预估出秒杀服务的处理能力, 就可以用消息队列实现一个令牌桶
      • 单位时间内只发放固定数量的令牌到令牌桶中, 规定服务在处理请求之前必须先从令牌桶中拿出一个令牌,
      • 如果令牌桶中没有令牌, 则拒绝请求. 这样就保证单位时间内, 能处理的请求不超过发放令牌的数量, 起到了流量控制的作用.

    mq-seckill-token-bucket

Selection_076

  1. 服务解耦
  2. 作为发布 / 订阅系统实现一个微服务级系统间的观察者模式
  3. 连接流计算任务和数据
  4. 用于将消息广播给大量接收者

issue

  1. 消息堆积时不适合使用 RabbitMQ, 考虑使用 RocketMQ、Kafka 和 Pulsar

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions