Skip to content

[mq] mq knowledge #122

@Alice52

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

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions