暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云原生前沿手札丨基于 Redis Streams,五步实现 Azure 容器应用灵活扩缩容!

Azure云科技 2023-05-15
331


10 卷

依托开源基石

幕后运筹帷幄

Azure Container Apps (ACA)

无需自行安装

直接启用和/或配置容器应用

来使用 Dapr、KEDA 等组件

快速便捷、轻松实现定制扩展



在本期云原生前沿手札内容中,您将了解到如何采用 Azure Redis 托管实例(即Azure Cache for Redis)基于 Redis Streams 扩展 Container Apps,并重点展示如何手动创建 Redis 实体,以及用 Redis Console 向其添加数据;或者用 Redis 通过 DAPR PUB/SUB 实现此操作。




事件驱动,灵活高效




为满足配置复制数量需求,ACA 自动扩展特性内部使用 KEDA,且根据规则(事件触发)进行部署。基于 HTTP/TCP 规则的扩展外,进行容器应用创新时,也支持客户定制规则模式,以灵活地打开更多配置选项。


部分事件驱动型 Azure 数据源

 Azure Service Bus

 Azure Storage Queue

 Azure Event Hubs

 Azure Blob Storage

 Azure Cache for Redis

Azure Container Apps 多种扩展示例,

请参阅 




在做中学,在学中做


想要搞懂 Redis Streams 触发机制和定制扩展方法,也需积极上手实践。现在,就按照如下五步操作在 Azure Container Apps 上体验一下标准流程吧。


五步 get 定制路径

1、登入 Azure Portal 创建新 Container App(参考如下创建 Container App 教程)


2、创建新 Redis Cache(参考如下创建 Azure Redis Cache 教程)

(注:务必选择 Redis 第六版,Redis Streams 在 Redis 5.0 中引入,并确认非 TLS/SSL 访问已启用)

完成预配置后,从概览边栏选项卡打开 Redis Console。先行创建新的流 mystream 和消费者组 mygroup。

XGROUP CREATE mystream mygroup $ mkstream


3、在 Container App 上扩展配置

为连接到 Redis Cache,Container App 应将 Primary Redis Access Key 保存为 Secret。随后,进入 Container App Secrets 边栏选项卡,添加新的 Secret。创建新的密钥 redis-connection-string 以Redis Primary Access Key 为值点击添加

接下来,我们将配置扩展规则。查看 Container App 的扩展边栏选项卡,点击“编辑和部署”,按照如下所示添加扩展规则。

每个基于 KEDA 的扩展器定制规则类型各有差异。触发参数可被设为“密码”。编辑如下字段,指定元数据参数。

consumerGroup 和 stream 字段如其名称所示,是消费者组和初始创建的Redis Stream 名称。pendingEntriesCount 是消费者组的Pending Entries List (PEL) 中存在的尚未确认的消息数量。在本示例中,PEL 中每有两条新消息,一个实例/复制就会添加到 Container App 修订中。

编辑如上所有字段后,点击保存,再点击创建,将部署新的 Container App 进行修订。完成后,即可测试环境。

更多信息,参阅如下 KEDA 触发参数规范


4、双浏览器并行提效

推荐大家将两个浏览器选项卡并排打开,其一显示 Redis Cache 控制台,其二显示 Container App控制台边栏选项卡。流中在刚开始并无消息,Replica 下拉菜单仅有单一的复制(即 minReplica 数量设置为1的情况)


我们先向队列添加两条消息,分配至消费者组。

应用 XADD 和 XREADGROUP 命令


截屏显示消息已添加到流中,分配至消费者(consumerx)组

等待状态中的消息数量,可通过 XPENDING 命令查看


下面我们来看看复制数量。刷新控制台边栏选项卡,点击 Replica 下拉菜单,可发现尽管添加两条消息到流中,但实例/复制数量并未增加。


此时,我们按照之前的操作,再添加两条消息到消费者组流中。这样列表中,我们就拥有了4条待处理消息。


针对4条消息,根据配置,我们需要使用2个实例去处理。控制台边栏选项卡的复制下拉菜单中,我们能看到目前有两个活跃的实例,这说明至此容器应用已成功扩展。

相伴消息数量增加,扩展还将继续,直至 maxReplica 数量位置


5、简易缩容操作

上面讲述了扩展路径,那么该如何实现缩放呢?这很容易。当列表中待处理消息使用并确认后,就会出现实例缩放。我们先来确认2条消息,再次查看 PEL 数量。

> XACK mystream mygroup <MESSAGE_ID>


对于本示例,我们从最后一条 XREADGROUP 命令的结果中选择两个messageIDs(分别为1674708896170-0和1674708901325-0,对应 Derek 和 Emily)。

在确认两条消息后,PEL 数量已降至2


最后一步,我们刷新控制台边栏选项卡,检查现有复制数量,验证缩容是否完成。

当复制数量下降为1,则说明已成功缩容

简单易用的智能扩缩功能,是云原生服务的灵活性与高效性以及弹性特征的集中体现。在 Azure Container Apps上,基于 Redis Streams 实现定制扩展,将有力支持开发者实现快速部署、灵活满足不同应用程序的负载需求,从而更具竞争力地进行云原生创新。

文章转载自Azure云科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论