阿里云中“间“力量!RocketMQ

2023-11-08 20:50
文章标签 阿里 云中 rocketmq 力量

本文主要是介绍阿里云中“间“力量!RocketMQ,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开局先送官方福利!!!

1.免费领资源,好礼拿不停!

首先是猫超卡和社区积分,点点鼠标即可到手(2分钟不到,福利直接拿到手!):
领奖活动直达电梯
领奖活动直达电梯

image.png

2.是兄弟,就来助我!

助力最高拿科沃斯T10扫地机器人:

直达领取扫地机器人
直达领取扫地机器人

image.png



视频演示讲解

视频讲解直达!已更新!!!
视频讲解直达!已更新!!!
视频讲解直达!已更新!!!

切入正题

介绍完活动后,咱们言归正传,首先说说什么是"消息队列"
我想很多朋友应该是没有接触过"消息队列",笔者有一个5年开发经验的朋友,期间多次问到过他,他都回答笔者,在其日常开发工作中并没有使用到"消息队列"。

那么什么是消息队列呢?

消息队列(Message Queue),从广义上来讲就是一种消息队列服务中间件,提供一套完善的信息生产、传递、消费的软件系统。如下图
image.png

当然,消息队列所涵盖的功能远不止于队列(Queue),其本质是两个进程传递信息的一种方法。两个进程可以分布在同一个或多个不同的机器上。

说了一点理论,大家应该没有明白,那么请大家想象一下12306的业务处理流程,大家都明白12306的业务逻辑非常复杂,需要考虑的方面太多了,下面一张图为12306的部分业务逻辑
image.png


像12306这类软件超高并发需求的场景还有很多,那么如何解决呢?就是使用消息队列

消息队列的优点如下:

  1. 削峰填谷
  2. 程序解耦
  3. 异步处理
  4. 数据的最终一致性

说到这里,我讲的不如大家实际去看一看由李伟老师编写的《RocketMQ分布式消息中间件》

市面上常见的消息队列
image.png

从上面这张图可以很清晰的看到,截至2020年的时候,市面上主流的消息队列组件的对比,Apache RocketMQ在各项功能上来看,可以说是六边形战士,非常值得一试。

RocketMQ的发展历程

经过上面的简单介绍,大家应该对消息队列有了大致的了解,那么这里咱们介绍一下RocketMQ的发展历程。
image.png


RocketMQ前世---MetaQ

RocketMQ发展经历了几个阶段,一开始的时候,和大部分组件产生的原因类似,阿里巴巴内部为了适应淘宝 B2C 的更快、更复杂的业务,2001年启动了“五彩石项目”,阿里巴巴的第一代消息队列服务Notify就是在这个背景下产生的。
2010 年,阿里巴巴内部的 Apache ActiveMQ 仍然作为核心技术被广泛用于各个业务线,而顺序消息、海量消息堆积、完全自主控制消息队列服务,也是阿里巴巴同时期急需的。在这种背景下,2011年,MetaQ诞生。


RocketMQ 云

2011年,LinkedIn将Kafka开源。2012年,阿里巴巴参考Kafka的设计,基于对MetaQ的理解和实际使用,研发了一套通用消息队列引擎,也就是 RocketMQ。自此才有了第一代真正的RocketMQ,2016年阿里云上线云RocketMQ消息队列服务。
自2001年到2012年,11年的实际使用、运维,和业务不断碰撞,才得以抽象并整理出一个真正的行业级产品,技术从来不简单,只是你看不见!

Apache RocketMQ“毕业”

2016年11月,阿里巴巴将RocketMQ捐献给Apache基金会。 Apache社区有一个很重要的理念:社区大于代码。虽然RocketMQ已经开源3年,在国内小有名气,而且在阿里巴巴被广泛应用并有较好的效果,但是依然不能达到 Apache优秀项目的标准。 在RocketMQ被捐献后,通过一系列的修改、评审、调整,悄悄升级至4.0版本,正式进入孵化阶段。 2017年09月25日,RocketMQ成功“毕业”(Apache社区项目孵化成功即为毕业),成为 Apache 顶级项目,它是国内首个互联网中间件在 Apache 的顶级项目,也是继ActiveMQ、Kafka后Apache家族中全新的一代消息队列引擎。 随着不断地更新升级,RocketMQ 的能力也越来越强大,如图所示,这是阿里巴巴双11的消息量的部分统计,可以看出RocketMQ处理的消息量已经在万亿条级别。

image.png

RocketMQ经过多年的发展和实践应用,在自身的到现在阿里云存在两大版本可供使用,一个是RocketMQ 4.x,另一个是RocketMQ 5.x,其版本差异如下

差异项4.x5.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处理后将数据进行存储

业务逻辑图示

image.png

业务实现

RocketMQ设置

创建RocketMQ实例

作为演示,本次使用的单节点的标准版RocketMQ实例,规格为rmq.s1.micro,如果您是第一次使用RocketMQ并且是通过活动页面进入,那么您可以领取一个月的免费使用额度。实例的创建大概需要5分钟左右,请您耐心等待,可以向下继续阅读。
image.png

创建订阅及Group

image.png

创建Group(可选)
image.png

表格存储

创建表格存储实例
image.png

创建数据表
image.png
image.png

函数计算FC

创建函数
image.png

设置函数计算FC的环境变量
image.png

使用代码


import os
from tablestore import *
import jsondef 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

事件总线EventBridge需要创建自定义的事件总线

步骤一:添加自定义事件源

  1. 登录事件总线EventBridge控制台。
  2. 在左侧导航栏,单击事件总线。
  3. 在顶部菜单栏,选择地域。
  4. 在事件总线页面,单击已创建的自定义事件总线。
  5. 在左侧导航栏,单击事件源。
  6. 在事件源页面,单击添加事件源。
  7. 在添加自定义事件源面板,输入名称和描述,事件提供方选择消息队列 RocketMQ 版,并选择已创建的消息队列RocketMQ版的资源信息等,然后单击确定。

步骤二:创建事件规则

  1. 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线。
  2. 在顶部菜单栏,选择地域,在事件总线页面,单击目标总线名称。
  3. 在左侧导航栏,单击事件规则,然后单击创建规则。
  4. 在创建规则页面,完成以下操作。
  5. 在配置基本信息配置向导,在名称文本框输入规则名称,在描述文本框输入规则的描述,然后单击下一步。
  6. 在配置事件模式配置向导,事件源类型选择自定义事件源,事件源选择步骤一添加的自定义事件源,在事件模式内容代码框输入事件模式,然后单击下一步。

a. 在配置事件目标配置向导,配置事件目标,然后单击创建。
b. 服务类型:单击函数计算。
c. 服务:选择已创建的函数计算的服务。
d. 函数:选择已创建的函数计算的函数。

image.png

image.png

image.png
image.png

image.png

设置规则
image.png
image.png
image.png
image.png

测试

image.png
image.png
image.png

写在最后

通过本篇的一些简述以及一个小的实验,希望您可以对阿里云RocketMQ消息队列有一个大致的了解,同时也可以看到阿里云各个服务之间的集成协作,使整个业务流程均可以在云上完成。另外通过一个小小的实验,帮助大家回顾之前的社区活动内容同时也将本期知识融合进来,可以更好的帮助到大家真正的去使用阿里云服务,体验云计算的魅力。最后希望大家真正的去体验一下阿里云RocketMQ,毕竟大厂的羊毛必须薅!!!

领奖活动直达电梯
领奖活动直达电梯
领奖活动直达电梯

image.png

助力最高拿科沃斯T10扫地机器人:

直达领取扫地机器人
直达领取扫地机器人
直达领取扫地机器人

image.png

希望这篇文章能够帮助到您!!!

这篇关于阿里云中“间“力量!RocketMQ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372423

相关文章

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Rocketmq入门-基本概念】

Rocketmq入门-基本概念 名词解释名称服务器(NameServer)消息队列(Message Queue)主题(Topic)标签(Tag)生产者(Producer)消费者(Consumer)拉取模式(Pull)推送模式(Push)消息模型(Message Model) 关键组件Broker消息存储工作流程 名词解释 名称服务器(NameServer) 定义: 名称服务器

阿里云服务器ces

允许公网通过 HTTP、HTTPS 等服务访问实例 https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.3ca96b0b3KGTPq#allowHttp

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

centos7 安装rocketmq4.7.0以及RocketMQ-Console-Ng控制台

一、前置工作 1.1安装jdk8 https://blog.csdn.net/pang_ping/article/details/80570011 1.2安装maven https://www.cnblogs.com/116970u/p/11211963.html 1.3安装git https://blog.csdn.net/xwj1992930/article/details/964

AI 与大模型:物流行业的变革力量

一、物流行业的现状与挑战 物流行业在现代经济中扮演着至关重要的角色,但目前也面临着诸多挑战。 在效率方面,交通拥堵是一个突出问题。许多城市道路容量不足,无法满足日益增长的货物运输需求,导致运输时间延长。例如,在一些大城市,货物运输常常因交通拥堵而延迟,影响了整个供应链的效率。此外,信息不对称也严重影响了物流效率。供应商和购买方之间缺乏实时信息共享平台,双方无法准确了解货物的到达时间、配送状

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

Redis 管道的神奇力量

今天我们要来探索一个 Redis 中非常强大且实用的特性——管道(Pipeline)。如果你想让你的 Redis 操作更加高效,那么这篇文章绝对值得一读。 一、Redis 管道是什么 Redis 管道是一种在客户端和服务器之间批量执行命令的技术。它允许客户端将多个命令一次性发送到服务器,而不是逐个发送并等待每个命令的响应。服务器会按照顺序执行这些命令,并将所有命令的响应一次性返回给客户端。