首先是猫超卡和社区积分,点点鼠标即可到手(2分钟不到,福利直接拿到手!):
领奖活动直达电梯
领奖活动直达电梯
助力最高拿科沃斯T10扫地机器人:
直达领取扫地机器人
直达领取扫地机器人
视频讲解直达!已更新!!!
视频讲解直达!已更新!!!
视频讲解直达!已更新!!!
介绍完活动后,咱们言归正传,首先说说什么是"消息队列"
我想很多朋友应该是没有接触过"消息队列",笔者有一个5年开发经验的朋友,期间多次问到过他,他都回答笔者,在其日常开发工作中并没有使用到"消息队列"。
那么什么是消息队列呢?
消息队列(Message Queue),从广义上来讲就是一种消息队列服务中间件,提供一套完善的信息生产、传递、消费的软件系统。如下图
当然,消息队列所涵盖的功能远不止于队列(Queue),其本质是两个进程传递信息的一种方法。两个进程可以分布在同一个或多个不同的机器上。
说了一点理论,大家应该没有明白,那么请大家想象一下12306的业务处理流程,大家都明白12306的业务逻辑非常复杂,需要考虑的方面太多了,下面一张图为12306的部分业务逻辑
像12306这类软件超高并发需求的场景还有很多,那么如何解决呢?就是使用消息队列
消息队列的优点如下:
说到这里,我讲的不如大家实际去看一看由李伟老师编写的《RocketMQ分布式消息中间件》
从上面这张图可以很清晰的看到,截至2020年的时候,市面上主流的消息队列组件的对比,Apache RocketMQ在各项功能上来看,可以说是六边形战士,非常值得一试。
经过上面的简单介绍,大家应该对消息队列有了大致的了解,那么这里咱们介绍一下RocketMQ的发展历程。
RocketMQ发展经历了几个阶段,一开始的时候,和大部分组件产生的原因类似,阿里巴巴内部为了适应淘宝 B2C 的更快、更复杂的业务,2001年启动了“五彩石项目”,阿里巴巴的第一代消息队列服务Notify就是在这个背景下产生的。
2010 年,阿里巴巴内部的 Apache ActiveMQ 仍然作为核心技术被广泛用于各个业务线,而顺序消息、海量消息堆积、完全自主控制消息队列服务,也是阿里巴巴同时期急需的。在这种背景下,2011年,MetaQ诞生。
2011年,LinkedIn将Kafka开源。2012年,阿里巴巴参考Kafka的设计,基于对MetaQ的理解和实际使用,研发了一套通用消息队列引擎,也就是 RocketMQ。自此才有了第一代真正的RocketMQ,2016年阿里云上线云RocketMQ消息队列服务。
自2001年到2012年,11年的实际使用、运维,和业务不断碰撞,才得以抽象并整理出一个真正的行业级产品,技术从来不简单,只是你看不见!
RocketMQ经过多年的发展和实践应用,在自身的到现在阿里云存在两大版本可供使用,一个是RocketMQ 4.x,另一个是RocketMQ 5.x,其版本差异如下
差异项 | 4.x | 5.x |
---|---|---|
服务端架构 | 存算一体。 | 存储和计算分离,可独立水平扩展。 |
开发接入门槛 | 1. 同时存在多套SDK,功能接口体验不一致。 2. 强制阿里云账号鉴权,企业上云需要修改部分代码。 |
1. 统一使用开源SDK,功能体验一致。 2. 支持VPC内部安全识别,上云无需修改代码。 |
存储能力 | 按空间预留,需要做好容量评估避免存储时长不足。 | 根据实际使用量弹性伸缩。 |
计算能力 | 超过TPS规格最大值限流。 | 消息收发计算能力支持预留+突发流量弹性组合,业务方无需为突发流量预留大量Buffer资源。 |
计费项 | 1. 标准版实例:API调用费用、Topic资源占用费。 2. 铂金版实例:消息收发TPS峰值、Topic数上限、消息存储空间 |
1. 消息收发TPS计算规格 2. 存储空间 3. 公网下行流量。 |
售卖形态 | 标准版、铂金版 | 1. 主系列: 标准版、专业版、铂金版。 2. 子系列: 单节点版:测试环境专用。 集群高可用版:生产环境专用。 产品形态更丰富,产品选型更平滑。 |
那么经过前面的一系列讲述,大家应该对RocketMQ有了一些认知,并且也了解了产品特性,那么接下来就到了我们的动手实验环节了。在这里为大家演示的是RocketMQ事件驱动场景,所有服务均在阿里云上进行,让大家完整体验阿里云上的业务流程。
为何选择事件驱动场景?
2023年以来,阿里云社区先后推出了多个服务测评活动,其中有函数计算FC,以及不久前的事件桥EventBridge测评活动,直到现在正在测评的RocketMQ消息队列,完美支撑了该业务场景,可谓是温故而知新,将多个服务融合到同一个业务场景中
假设有一家小型游戏公司,需要通过使用RocketMQ来收发消息,然后通过阿里云函数计算FC处理后将数据进行存储
作为演示,本次使用的单节点的标准版RocketMQ实例,规格为rmq.s1.micro,如果您是第一次使用RocketMQ并且是通过活动页面进入,那么您可以领取一个月的免费使用额度。实例的创建大概需要5分钟左右,请您耐心等待,可以向下继续阅读。
使用代码
import os
from tablestore import *
import json
def handler(event, context):
body = json.loads(event.decode())['data']['body']
# 从环境变量中获取表格存储的连接信息
endpoint = os.environ.get('OTS_ENDPOINT', '')
accessid = os.environ.get('OTS_ACCESSID', '')
accesskey = os.environ.get('OTS_ACCESSKEY', '')
instance = os.environ.get('OTS_INSTANCE', '')
table_name = os.environ.get('OTS_TABLE_NAME', '')
# 创建表格存储客户端
client = OTSClient(endpoint, accessid, accesskey, instance)
# 定义要写入的数据
primary_key = [('id', body['id'])]
attribute_columns = [('Name', body['name']), ('Job', body['job']), ('Hero', body['hero'])]
row = Row(primary_key, attribute_columns)
# 向表格存储写入数据
consumed, return_row = client.put_row(table_name, row)
return 'Data written to Table Store successfully.'
事件总线EventBridge需要创建自定义的事件总线
步骤一:添加自定义事件源
步骤二:创建事件规则
a. 在配置事件目标配置向导,配置事件目标,然后单击创建。
b. 服务类型:单击函数计算。
c. 服务:选择已创建的函数计算的服务。
d. 函数:选择已创建的函数计算的函数。
通过本篇的一些简述以及一个小的实验,希望您可以对阿里云RocketMQ消息队列有一个大致的了解,同时也可以看到阿里云各个服务之间的集成协作,使整个业务流程均可以在云上完成。另外通过一个小小的实验,帮助大家回顾之前的社区活动内容同时也将本期知识融合进来,可以更好的帮助到大家真正的去使用阿里云服务,体验云计算的魅力。最后希望大家真正的去体验一下阿里云RocketMQ,毕竟大厂的羊毛必须薅!!!
领奖活动直达电梯
领奖活动直达电梯
领奖活动直达电梯
助力最高拿科沃斯T10扫地机器人:
直达领取扫地机器人
直达领取扫地机器人
直达领取扫地机器人