美文网首页
32. 消息队列选项:RcoketMQ 适用哪些场景

32. 消息队列选项:RcoketMQ 适用哪些场景

作者: 木叶苍蓝 | 来源:发表于2023-07-16 17:25 被阅读0次

不同消息队列有各自合适的应用场景
如果你的工作以业务开发为主
建议了解一下消息队列背后的设计思想,以及基本特性

RocketMQ 应用

RocketMQ 前身是淘宝的MetaQ,加入 Apache 基金会
RocketMQ 提供低延时,高可靠的消息发布与订阅服务



NameServer 主要功能——管理 Broker ,以及进行消费的路由信息管理
在服务器启动时,节点会注册到 NameServer 上,通过心跳保持连接,并记录各个节点状态
Broker 是消息存储的承载,管理生产者和消费者的消费情况
Broker 可以扩展副本机制,通过主从节点间的数据同步保证高可用
消息队列的 Topic 会分散在多个队列中传输

Broker 可以进行横向扩展—— 如果消息队列集群不能满足目前的业务场景,可以增加新的机器,扩展Broker 集群

新的 Broker 节点启动以后,会注册到 NameServer 上
集群中的生产者和消费者通过 NameServer 感知到新的节点
RocketMQ 支持 Tag,Tag是对 Topic 的进一步扩展
例如:订单消息有订单创建,订单支付,订单配送等不同的消息
商品消息会有商品价格更新,库存更新等不同的分类
Tag——把订单消息统一为 Order-Topic
继续创建 Order-Create-Message,Order-Pay-Message 等子主题

实例一:实现 Binlog 分发

在大多数业务场景下,会有文件索引,各类缓存的存在
电商中的订单信息,订单信息在用户端的展示—— ElasticSearch 等文件索引
在订单状态修改后,需要实时同步修改
如何同步数据呢? 基于 Binlog 的数据同步


实例二:实现分布式一致性

事务消息时支持类似 XA 规范的分布式事务功能,通过 RocketMQ 达到分布式事务的最终一致
以电商中的下单后扣款为例,用户在完成商品购买后,点击确认支付会调用交易模块的服务,更新账号金额,或者从第三方支付扣款。
分布式事务,可以使用 TCC 进行改造,也可以使用基于消息队列的本地消息表
RocketMQ 在事务消息的实现中添加了一个 Half Message 的概念
Half Message 表示事务消息处于未完成状态
可以实现一个类似于两个阶段提交的流程,实现最终的一致性

相关文章

  • Kafka常见问题解决

    概要:我们使用消息队列,就需要知道为什么要用消息队列,什么场景需要用消息队列,使用消息队列能带来哪些好处和消息队列...

  • Nodejs学习(一)

    Nodejs适用场景: 高并发性 以服务方式海浪化数据 webapp 消息队列 Nodejs不适用场景 高cpu使...

  • 高并发架构消息队列

    为什么使用消息队列 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队...

  • 关于使用消息队列今天被面试官问倒了

    为什么使用消息队列 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队...

  • 消息队列优缺点适用场景

    在项目中为什么要使用消息队列? 消息队列使用场景主要有三个: 解耦,异步,削峰 解耦耦合 如上图所示,可能存在某一...

  • php操作redis(list)

    list适用场景 消息队列list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,...

  • Java 面试系列:消息队列面试题汇总

    1.消息队列的应用场景有哪些? 答:消息队列的应用场景如下。 应用解耦,比如,用户下单后,订单系统需要通知库存系统...

  • RocketMQ 基础

    RcoketMQ 是一个队列模型的消息中间件,具有高性能、高可靠、可伸缩、高实时、分布式特点。 RocketMQ特...

  • redis-delayqueue

    redis-delayqueue 适用场景 相比于专业的消息队列,Redis的优点就是简单,适用于只有一个消费者的...

  • 队列

    1)列队是什么?2)队列的特点?3)队列的基本操作有哪些?4)队列已被应用的经典场景有哪些?应用场景? 一、队列是...

网友评论

      本文标题:32. 消息队列选项:RcoketMQ 适用哪些场景

      本文链接:https://www.haomeiwen.com/subject/nylwudtx.html