tencent cloud

消息队列 CMQ 版

动态与公告
产品动态
公告
产品简介
产品概述
产品功能
产品优势
应用场景
使用限制
基本概念
购买指南
计费概述
购买方式
价格总览
欠费说明
退费说明
快速入门
队列模型快速入门
主题模型快速入门
操作指南
队列服务
主题订阅
访问管理 CAM
标签管理
配置告警
消息查询与轨迹
实践教程
消息去重
选择 Push 还是 Pull
案例分享
在线图片处理案例
起点文学网案例
开发指南
HTTP Endpoint 订阅
通用参考
API 文档
API 列表
CMQ API2.0 切换至 TDMQ CMQ 版 API3.0指引
SDK 文档
HTTP 数据流 SDK
HTTP 控制流 SDK
SDK 参数配置说明
常见问题
功能类
操作类
服务等级协议
联系我们
词汇表

在线图片处理案例

PDF
聚焦模式
字号
最后更新时间: 2024-01-03 10:17:36
某美图公司在腾讯云搭建了在线图片处理服务,该服务可以让用户上传照片,并指定需要对这些照片执行的操作,例如裁剪、红眼处理、牙齿美白、重新着色、对比度调节、生成缩略图等。用户上传图片后,提交任务,然后等待图片处理完,下载处理后的图片。不同的操作会耗费不同的处理时间,从几秒到几分钟不等,而且用户可能一次上传几张也可能是几十张甚至几百张图片,所以总的处理时间就跟上传的图片个数、图片的大小、用户选择的操作有关。



使用 TDMQ CMQ 版实现了上述需求,用户的图片存储在腾讯云存储中(CBS/COS等),用户的每一个操作请求都会作为一个消息存入请求队列(Request Queue)中,消息内容为:图片索引,由图片名称+用户请求的操作类型+图片存储的位置索引 key 等组成。
运行在 CVM 的图片处理服务从 Request Queue 中获取消息(图片索引),图片处理服务器从云端下载数据,并进行图片编辑,完毕后把处理结果发送到结果队列(Response Queue)中,结果图片存储到云存储中。流程结束,客户已将原图片、编辑处理后的图片,都存储在云端存储,可随时下载使用。
可扩展的、高可靠的进一步思考:
如果因为 bug 或其他原因导致图片处理服务暂时不可用。但是系统利用 TDMQ CMQ 版使得错误对用户透明,一方面用户可以继续上传照片,web server 可以继续发消息到 Request Queue,消息会被保存在队列中直到图片处理服务可用后取走;另一方面。图片处理服务在实现时不用记住崩溃前在处理的消息,而且其崩溃时处理的消息还可以被重新处理。因为 TDMQ CMQ 版提供的接收消息(包括接收顺序队列消息和接收并发队列消息)特性保证消息在接收后仍然在队列中,直到消息的接收者显式来删除它。本特性保证了图片处理服务与图片上传服务的解耦。
如果单个图片处理服务不能满足用户需求(用户虽然能够上传照片,但是却长时间拿不到处理的结果),利用 TDMQ CMQ 版并启动多个图片处理服务便可以满足不断增长的用户访问需求。 TDMQ CMQ 版的两个特性让这个需求成为可能:
单个 TDMQ CMQ 版队列是可以让多个 server 同时共享访问的(即发送消息、接收并发队列消息、删除并发队列消息功能)。
一个消息不会同时被多个服务接收,这是通过针对消息的短暂锁来保证的,消息的接收者可以指定消息被锁定的时间,接收者处理完消息需要主动删除消息,如果接收者处理消息失败,那么另一个服务可以在这个消息的锁失效后重新获得这个消息。
这两个特性保证了处理服务器的数量可以随着负载的变化而动态加减。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈