赞
踩
消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列 RocketMQ 版既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。
Topic:消息主题,一级消息类型,生产者向其发送消息。
生产者(producer):也称为消息发布者,负责生产并发送消息至 Topic。
生产者组(producer group):简单来说就是多个发送同一类消息的生产者称之为一个生产者组。
消费者(consumer):也称为消息订阅者,负责从 Topic 接收并消费消息。
消费者组(consumer group):和生产者类似,消费同一类消息的多个 Consumer 实例组成一个消费者组。
消息(message):生产者向 Topic 发送并最终传送给消费者的数据和(可选)属性的组合。
消息属性:生产者可以为消息定义的属性,包含 Message Key 和 Tag。
Group:一类生产者或消费者,这类生产者或消费者通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。
broker:RocketMQ核心模块,接收并存储消息,同事提供push/pull接口将消息发送给consumer,多个主/从组成集群,同时提供消息查询功能,broker会将自己的topic配置信息实时同步至nameserver
queue:Topic和Queue是1对多的关系,一个Topic下可以包含多个Queue,主要用于负载均衡。发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个Queue上。Consumer订阅消息时,会根据负载均衡策略决定订阅哪些Queue的消息。
offset:RocketMQ在存储消息时会为每个Topic下的每个Queue生成一个消息的索引文件,每个Queue都对应一个Offset记录当前Queue中消息条数。
nameserver:NameServer可以看作是RocketMQ的注册中心,它管理两部分数据:集群的Topic-Queue的路由配置;Broker的实时配置信息。其它模块通过Nameserv提供的接口获取最新的Topic配置和路由信息。
削峰填谷
--诸如秒杀、抢红包、企业开门红等大型活动时皆会带来较高的流量脉冲,或因没做相应的保护而导致系统超负荷甚至崩溃,或因限制太过导致请求大量失败而影响用户体验,消息队列 RocketMQ 版可提供削峰填谷的服务来解决该问题。
异步解耦
--交易系统作为淘宝/天猫主站最核心的系统,每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、流计算分析等等,整体业务系统庞大而且复杂,消息队列 RocketMQ 版可实现异步通信和应用解耦,确保主站业务的连续性。
顺序收发
--细数日常中需要保证顺序的应用场景非常多,例如证券交易过程时间优先原则,交易系统中的订单创建、支付、退款等流程,航班中的旅客登机消息处理等等。与先进先出(First In First Out,缩写 FIFO)原理类似,消息队列 RocketMQ 版提供的顺序消息即保证消息 FIFO。
分布式事务一致性
--交易系统、支付红包等场景需要确保数据的最终一致性,大量引入消息队列 RocketMQ 版的分布式事务,既可以实现系统之间的解耦,又可以保证最终的数据一致性。
大数据分析
--数据在“流动”中产生价值,传统数据分析大多是基于批量计算模型,而无法做到实时的数据分析,利用阿里云消息队列 RocketMQ 版与流式计算引擎相结合,可以很方便的实现将业务数据进行实时分析。
分布式缓存同步
--天猫双 11 大促,各个分会场琳琅满目的商品需要实时感知价格变化,大量并发访问数据库导致会场页面响应时间长,集中式缓存因为带宽瓶颈限制商品变更的访问流量,通过消息队列 RocketMQ 版构建分布式缓存,实时通知商品数据的变化。
选择目录:cd /home
克隆镜像:git clone https://github.com/foxiswho/docker-rocketmq.git
进入克隆后的目录:/home/docker-rocketmq编辑compose文件(docker-compose.yml)
version: '3.5' services: rmqnamesrv: image: foxiswho/rocketmq:4.7.0 container_name: rmqnamesrv ports: - 9876:9876 volumes: - ./rmqs/logs:/opt/logs - ./rmqs/store:/opt/store environment: JAVA_OPT_EXT: "-Duser.home=/opt -Xms512M -Xmx512M -Xmn128m" command: ["sh","mqnamesrv"] networks: rmq: aliases: - rmqnamesrv rmqbroker-a: image: foxiswho/rocketmq:4.7.0 container_name: rmqbroker-a ports: - 10911:10911 - 10912:10912 volumes: - ./rmq-a/logs:/opt/logs - ./rmq-a/store:/opt/store - ./rmq/brokerconf/broker-a.conf:/etc/rocketmq/broker.conf - /etc/hosts:/etc/hosts environment: JAVA_OPT_EXT: "-Duser.home=/opt -Xms512M -Xmx512M -Xmn128m" command: ["sh","mqbroker","-c","/etc/rocketmq/broker.conf","-n","rmqnamesrv1:9876;rmqnamesrv2:9876","autoCreateTopicEnable=true"] # depends_on: # - rmqnamesrv networks: rmq: aliases: - rmqbroker-a rmqbroker-b: image: foxiswho/rocketmq:4.7.0 container_name: rmqbroker-b ports: - 10923:10923 - 10924:10924 volumes: - ./rmq-b/logs:/opt/logs - ./rmq-b/store:/opt/store - ./rmq/brokerconf/broker-b-s.conf:/etc/rocketmq/broker.conf - /etc/hosts:/etc/hosts environment: JAVA_OPT_EXT: "-Duser.home=/opt -Xms512M -Xmx512M -Xmn128m" command:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。