全部产品
云市场

概述

更新时间:2020-01-15 00:41:00

SOFAStack 消息队列(SOFAStack MQ,简称 SOFAMQ)是基于 Apache RocketMQ 构建的分布式消息中间件,并与金融分布式架构 SOFAStack 深度集成,为分布式应用系统提供异步解耦和削峰填谷的能力,支持事务消息、顺序消息、定时消息等多种消息类型,并具备高可靠、高吞吐、低延时等金融级特性。

应用场景

  • 异步解耦
    消息队列的生产消费模型可以解耦上下游业务系统,并支持下游多个消费者对同一消息进行消费和处理。以金融场景为例,支付中心作为支付宝主站最核心的系统,每笔支付数据的产生会引起几百个下游业务系统的关注,包括账户中心、用户中心、权益中心、流计算分析等,整体业务系统庞大而且复杂,在应用强耦合的情况下,任一应用故障都将可能对业务带来影响。通过消息队列进行异步通信和应用解耦,可以很好的提升业务的连续性。

  • 削峰填谷
    应用分布式改造后,不同应用能承载的性能情况往往不一致,在诸如双11、店庆、秒杀等大型活动时,将会带来较高的流量脉冲,部分系统可能导致系统超负荷甚至崩溃,影响用户体验,消息队列可提供强大的抗积压能力,实现削峰填谷,生产方生产消息后,消费方可以按照系统自身的承受能力进行消息的消费。

  • 顺序收发
    顺序收发指的是消息消费者按照消息发送的顺序进行消费,保证 FIFO。金融场景里需要保证顺序的应用场景非常多,例如证券交易过程中的时间优先原则,交易系统中的订单创建、支付、退款等流程等等。

  • 分布式事务一致性
    应用解耦往往带来多个应用之间的事务一致性的问题。例如支付转账成功后,需要生成账单,更新用户积分等,此时通过消息队列的分布式事务处理功能,既可以实现系统之间的解耦,又可以保证最终的数据一致性。

更多信息请参见 应用场景

核心概念

  • Topic:消息主题,一级消息类型,生产者向其发送消息。
  • 生产者:也称为消息发布者,负责生产并发送消息至 Topic。
  • 消费者:也称为消息订阅者,负责从 Topic 接收并消费消息。
  • 消息:生产者向 Topic 发送并最终传送给消费者的数据和(可选)属性的组合。
  • 消息属性:生产者可以为消息定义的属性,包含 Message Key 和 Tag。
  • Group:一类生产者或消费者,这类生产者或消费者通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。

更多概念解释请参见 名词解释

消息收发模型

消息队列支持发布/订阅模型,消息生产者应用创建 Topic 并将消息发送到 Topic。消费者应用创建对 Topic 的订阅以便从其接收消息。通信可以是一对多(扇出)、多对一(扇入)和多对多。消息收发模型

生产者集群

用来表示发送消息应用,一个生产者集群下包含多个生产者实例,可以是多台机器,也可以是一台机器的多个进程,或者一个进程的多个生产者对象。

一个生产者集群可以发送多个 Topic 消息。发送分布式事务消息时,如果生产者中途意外宕机,Broker 会主动回调生产者集群的任意一台机器来确认事务状态。

消费者集群

用来表示消费消息应用,一个消费者集群下包含多个消费者实例,可以是多台机器,也可以是多个进程,或者是一个进程的多个消费者对象。

一个消费者集群下的多个消费者以均摊方式消费消息。如果设置的是广播方式,那么这个消费者集群下的每个实例都消费全量数据。

一个消费者集群对应一个 Group ID,一个 Group ID 可以订阅多个 Topic,如上图中的 Group 2 所示。Group 和 Topic 的订阅关系可以通过直接在程序中设置即可。