消息队列关键概念

特点

优点

  • 解耦
    • 解耦C/S,无需服务发现。
    • 支持1-1,1-n通信方式。
  • 异步
    • 减少rt。
    • 即使消费方暂时不可用也不影响生产方的业务逻辑。
    • 削峰。类似缓存,抗峰值流量。

缺点

  • 潜在的单点。MQ挂掉影响这个系统,MQ需要可扩展。
  • 复杂度提高。消息重复、丢失、顺序等问题。
  • 一致性。部分消费成功,部分不成功情况。

典型

rabbitMQ

  • 使用AMQP模型。punlisher发布消息到exchange,根据routes发送到绑定的queue,push或者pull给consumer。
  • 其他概念:
    • broker:消息队列服务器。
    • vhost:broker里面设置,用于用户分离。
    • channal:每个客户端连接可建立多个channal,代表会话。
  • 交换机有四种类型。
    • 直连交换机:单播,根据routing key投递给队列。
    • 扇形交换机:广播,发送到绑定的所有队列,无视routing key。
    • 主题交换机:多播,根据routing key和队列绑定规则发送。
    • 头交换机。
  • 官方文档入门教程

kafka

  • 每个topic分为多个partition,并行消费。通过offset来标识已经消费的消息。
  • partion可多副本,在不同broker打散容错。
  • 一个consumer group(逻辑消费者)由多个consumer组成,消费一个topic。
  • 官方文档

对比

  • rabbitMQ:erlang语言开发,依靠活跃的开源社区支持。
    • 一个队列(topic)一个分片,连接从队列的机器需要路由到主队列上读写。
    • 多个consumer需要多个相同的队列。
    • 数据一致性、稳定性和可靠性高。
  • rocketMQ:阿里出品。
  • kafka:业界标准。
    • 一个topic多个分片,多个consumerGroup通过offset共享同一个分片。
    • 多分片机制->高性能,可扩展,可容错。适合大数据领域等,可改造可靠性。
  • RabbitMQ和Kafka到底怎么选
  • 从 Kafka 与 RabbitMQ 的对比看全局

消费注意点

  • 处理消息顺序。
    • 按key路由到指定分片,串行消费。
  • 处理消息重复。
    • 业务逻辑幂等。
    • 寻找幂等key,记流水去重。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值