5分钟搭建图片压缩应用

分钟,搭建,图片,压缩,应用 · 浏览次数 : 381

小编点评

**摘要** 本文介绍了华为云函数工作流FunctionGraph如何实现让软件应用运行所需的资源,像用水用电一样按需使用,按需付费。通过函数工作流,软件应用无需关注任何服务器,只需关注核心业务逻辑,5分钟快速构建后端系统并上线,极大地提高了开发效率。 **函数工作流程** FunctionGraph 是一个基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。 **构建无服务图片压缩应用** 通过函数工作流,我们可以快速构建一个图片压缩应用,并对所涉及的配置功能有清晰认识。架构图说明,用户可以下载详情请参照示例代码,创建函数登录函数工作流控制台,创建函数,函数名称自定义,委托选择创建委托中创建的委托,运行时选择“Python3.6”。 **流程步骤** 1. 创建OBS桶创建两个OBS桶,登录对象存储服务控制台。 2. 创建委托由于华为云各服务之间存在业务交互关系,需要为函数设置拥有OBS访问权限的委托,登录统一身份认证服务控制台,创建委托(至少拥有对象存储服务的权限:OBS Administrator)。 3. 构建程序本例提供实现图片压缩功能的程序包,用户可以下载并粘贴至函数的index.py文件中。 4. 添加事件源OBS桶及函数创建以后,可以为函数添加事件源,添加OBS事件源是通过创建OBS触发器实现的。 5. 图片处理当图片上传或更新至your-bucket-input桶时,会生成事件,触发函数运行,将上传图片压缩,保存在your-bucket-output中。

正文

摘要:用华为云函数工作流FunctionGraph搭建图片压缩应用。

本文分享自华为云社区《真正的按需计费丨函数工作流 FunctionGraph实战,5分钟搭建图片压缩应用》,作者:华为云PaaS服务小智。

1.背景介绍

互联网时代,各类app,小程序为人们的生活,办公,学习,休闲,娱乐提供着便利,在今年8月31日中国互联网络信息中心发布的第50次《中国互联网络发展状况统计报告》中显示,截至2022年6月我国网民规模为10.51亿,网民人均每周上网时长为29.5个小时。由此可见互联网市场的巨大。

软件应用提供商不断推出各种满足人们需求的应用,以抢占市场先机,时有大火的应用进入人们的新宠,不知哪一个将成为下一匹杀出的黑马。而对于一个“合格”的应用来说,稳定性和可用性是需要达到的最基础的要求。对于部署在服务器上的应用,如何正常运行以为客户提供稳定的服务,近些年出现诸如负载均衡,微服务等计算机技术,这些技术对于访问量比较稳定或者浮动范围不是特别大的应用来说能够达到很好的效果。但是有些业务场景,应用的访问量并不能如愿的维持稳定,比如说电商网站在促销活动期间的访问量可能是平时的10倍甚至几十倍,上百倍。如果为了应对短期的井喷式访问而增加应用服务部署的服务器数量,是一种不会出错的解决办法,但对于大部分时间都处于正常访问量而少部分时间是激增访问量的应用来说,这种做法无疑是一种浪费,对于应用提供商也是不小的成本投入。另外,对于井喷式访问量的估算也是一项比较难以保证效果的工作,估算超过实际访问量是一种资源的浪费(提前按估算量准备的服务器,以及部署和运维应用的工作投入),估算少于实际访问又会导致服务器超负荷运行,应用响应延时,甚至宕机,从而影响客户的使用感受。

那么有没有一种服务能否实现让软件应用运行所需的资源,像用水用电一样按需使用,按需付费呢?这样,软件应用提供商不用再为正常访问量时闲置的服务器买单,又会在访问量爆发性增长时轻松应对。

2.函数工作流 FunctionGraph

函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。此外,按函数实际执行资源计费,不执行不产生费用。

FunctionGraph具有以下优势:

• 无服务器管理

自动运行用户代码,用户无需配置或管理服务器,专注于业务创新。

• 高弹性

根据请求的并发数量自动调度资源运行函数,实现透明、准确和实时的伸缩,应付业务峰值的访问。

用户无需关心峰值和空闲时段的资源需要申请多少资源,系统根据请求的数量自动扩容/缩容。自动负载均衡将请求分发到函数运行实例。

• 事件触发

通过事件触发机制,集成多种云服务(SMN,OBS…),满足不同场景需求,获得高效的开发体验。

与云日志服务、云监控服务对接,无需任何配置,即可查询函数日志和监控告警信息,快速排查故障。

• 高可用

函数运行实例出现异常,系统会启动新的实例处理后续的请求,故障函数实例占用资源将会回收使用。

• 按量计费

根据代码的调用次数和运行时长计费,代码未运行时不产生费用。

3.构建无服务图片压缩应用

为方便读者更近一步了解函数工作流 FunctionGraph,这里提供一个通过函数工作流快速构建图片压缩应用的实操体验 ,帮您快速掌握FunctionGraph的使用,并对所涉及的配置功能有清晰认识。

架构图说明:

• 在OBS服务中,创建两个桶。

• 创建函数,设置OBS触发器。

• 用户向其中一个桶上传图片。

• 触发函数执行,对图片进行压缩处理。

• 函数将处理后的图片上传到指定桶中。

3.1 准备工作

1. 创建OBS桶

创建两个OBS桶,登录对象存储服务控制台 ,按下图创建桶,“your-bucket-input”用于上传需要处理的图像,“your-bucket-output”用于存储处理后的图像。

2. 创建委托

由于华为云各服务之间存在业务交互关系,一些云服务需要与其他云服务协同工作,需要您创建云服务委托,将操作权限委托给该服务,让该服务以您的身份使用其他云服务,代替您进行一些资源运维工作。

本实践中,在创建函数前,您需要为函数设置拥有OBS访问权限的委托,登录统一身份认证服务控制台 ,按下图创建委托(至少拥有对象存储服务的权限:OBS Administrator)。

3.2 构建程序

本例提供了实现图片压缩功能的程序包,用户可以下载详情请参照示例代码 、学习使用。

创建函数

登录函数工作流控制台 ,创建函数,函数名称自定义,委托选择创建委托 中创建的委托,运行时选择“Python3.6”。

输入代码

下载示例码,粘贴至函数的index.py文件中,如图所示。

添加依赖包

为函数添加pillow-7.1.2 依赖包,pillow-7.1.2 依赖包是Python图像处理库,支持多种文件格式,并提供了强大的图像处理和图形处理能力。

配置函数

• 常规设置

内存选择:“256”

超时时间输入:“40”

• 环境变量

键obs_output_bucket: index.py文件中定义的存放输出图片的OBS桶参数,值your-bucket-output: 创建 OBS 桶 中创建的存放输出图片的OBS桶;

键obs_server: index.py文件中定义的存放输出图片的OBS桶的地址参数,值obs.region.myhuaweicloud.com。

3.3 添加事件源

OBS桶及函数创建以后,可以为函数添加事件源,添加OBS事件源是通过创建OBS触发器实现的。当用户将一张照片上传到存储桶时,OBS存储桶调用FunctionGraph函数,实现读取图像和创建照片缩略图。OBS对象操作触发函数的过程请参考使用OBS触发器 。

如下图所示,桶选择创建 OBS 桶 中创建的“your-bucket-input”桶。事件选择“Post”、“Put”。

3.4 图片处理

当图片上传或更新至your-bucket-input桶时,会生成事件,触发函数运行,将上传图片压缩,保存在your-bucket-output中。

上传图片生成事件

登录对象存储服务控制台 ,进入your-bucket-input桶对象界面,上传image.jpg图片,如下图所示。

可以看到原始图片image.jpg大小超过28KB。

触发函数执行

上传图片至your-bucket-input桶,OBS生成事件触发函数运行,将图片压缩,压缩后的图片存放在your-bucket-output桶中。可以在函数详情页日志页签查看函数运行日志,如下图所示。

图片压缩验证

进入your-bucket-output桶对象界面,可以看到压缩后的图片image-thumbnail.jpg,图片大小小于8KB,实现了对图片的压缩,如下图所示。

4.总结

通过上面端到端构建一个完整的图片压缩应用,我们可以发现FunctionGraph的架构具有如下优点:

1.无需关注任何服务器,只需关注核心业务逻辑,5分钟快速构建后端系统并上线,极大地提高了开发效率。

2.函数运行随业务量弹性伸缩,按需付费,当创建的函数没有执行时,不计费。

3.可以通过简单的配置连通函数工作流和其它云服务,甚至云服务和云服务,比如本例中只需创建一个OBS触发器便可完成OBS和函数工作流的连接,然后在函数中对图片进行压缩,那么函数就像一个粘合剂一样将两个云服务连接在一起。

 

点击关注,第一时间了解华为云新鲜技术~

与5分钟搭建图片压缩应用相似的内容:

5分钟搭建图片压缩应用

摘要:用华为云函数工作流FunctionGraph搭建图片压缩应用。 本文分享自华为云社区《真正的按需计费丨函数工作流 FunctionGraph实战,5分钟搭建图片压缩应用》,作者:华为云PaaS服务小智。 1.背景介绍 互联网时代,各类app,小程序为人们的生活,办公,学习,休闲,娱乐提供着便利

5分钟教你搭建邮件服务器的实用指南

今天我写了一篇实用的文章,重点是教你如何免费搭建一个邮件服务器,这个服务器不仅可以用于发送邮件,还可以供我的待办机器人使用。一开始我试图找一些免费的 API 接口来实现这个功能,但遗憾的是,并没有找到合适的。对于程序员来说,能自己动手实现绝对是最好的选择,幸运的是,我有一台空闲的服务器可以利用。如果...

ChatGPT搭建AI网站实战

1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模型快速搭建一个AI网站。 2.内容 在实

5分钟了解LangChain的路由链

路由链(RouterChain)是由LLM根据输入的Prompt去选择具体的某个链。路由链中一般会存在多个Prompt,Prompt结合LLM决定下一步选择哪个链。

5分钟理透LangChain的Chain

LangChain几乎是LLM应用开发的第一选择,它的野心也比较大,它致力于将自己打造成LLM应用开发的最大社区。而LangChain最核心的部分非 Chain 莫属。

5分钟带你了解RabbitMQ的(普通/镜像)集群

通过本文我们深入了解了RabbitMQ的集群模式及其优缺点。无论是普通集群还是镜像集群,都有其适用的场景和局限性。普通集群利用Erlang语言的集群能力,但消息可靠性和高可用性方面存在一定挑战;而镜像集群通过主动消息同步提高了消息的可靠性和高可用性,但可能会占用大量网络带宽。因此,在选择集群方案时,...

5分钟明白LangChain 的输出解析器和链

本文介绍 LangChain 的输出解析器OutputParser的使用,和基于LangChain的LCEL构建链。 1. 输出解析器OutputParser 1.1、为什么需要OutputParser 常规的使用LangChain构建LLM应用的流程是:Prompt 输入、调用LLM 、LLM输出

5 分钟理解 Next.js Static Export

5 分钟理解 Next.js Static Export 在本篇文章中,我们将介绍 Next.js 中的 Static Export 功能,以及它是如何工作的。我们将介绍一些相关的基本概念,以及在 Next.js 中如何使用 Server Components 和 Client Components

5分钟体验代码仓托管、CloudIDE云端代码编辑、调试、运行

摘要:您将学会如何通过代码托管(CodeHub)创建代码仓,解决软件开发者在跨地域协同、多分支并发、代码版本管理、安全性等方面的问题。 本文分享自华为云社区《5分钟体验代码仓托管、CloudIDE云端代码编辑、调试、运行》,作者:华为云PaaS服务小智 。 您将会学到什么 您将学会如何通过代码托管(

5分钟迁移关系型数据库到图数据库

本文借助Apache Hop及GES插件,提供了多数据源通用、可视化、开箱即用的数据转换工程,可将多种关系型数据库迁移至GES图数据库中。