0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

真正的按需计费-函数工作流 FunctionGraph实战,5分钟搭建图片压缩应用

秃头也爱科技 来源:秃头也爱科技 作者:秃头也爱科技 2022-11-21 20:46 次阅读

背景介绍

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

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

1669034621019irlo4k57px

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

函数工作流 FunctionGraph

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

FunctionGraph具有以下优势:

  • 无服务器管理

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

  • 高弹性

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

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

  • 事件触发

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

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

1669034621561jgcmp7voq3

  • 高可用

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

  • 按量计费

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

16690346220024l1e9zsuiu

构建无服务图片压缩应用

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

https://resource.idp.huawei.com/idpresource/nasshare/editor/image/202083103891/1_zh-cn_image_0000001337739268.png

架构图说明:

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

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

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

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

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

准备工作

  1. []()创建OBS桶

  创建两个OBS桶,登录[对象存储服务控制台](https://storage.huaweicloud.com/obs/" \\o " ),按下图创建桶,“your-bucket-input”用于上传需要处理的图像,“your-bucket-output”用于存储处理后的图像。

1669034622863lr1uvisn3d

  1. []()创建委托

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

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

16690346232751htwgirg7e

构建程序

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

创建函数

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

1669034623677c52a32t5mq

输入代码

下载[示例代码](https://codelabs.developer.huaweicloud.com/codelabs/samples/f09ebb2c80664f62bc424b22d2e95c2e/view-code/91982ead208c11ea8b68fa163e6e3ea0" \\o " ),粘贴至函数的index.py文件中,如图所示。

16690346240014p3d1gpl85

添加依赖包

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

1669034624320nmxr91n9nn

配置函数

常规设置

内存选择:“256”

超时时间输入:“40”

16690346246038p6n30vhls

环境变量

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

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

1669034624941xqnwf7658r

添加事件源

OBS桶及函数创建以后,可以为函数添加事件源,添加OBS事件源是通过创建OBS触发器实现的。当用户将一张照片上传到存储桶时,OBS存储桶调用FunctionGraph函数,实现读取图像和创建照片缩略图。OBS对象操作触发函数的过程请参考[使用](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html" \\o " )[OBS](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html" \\o " )[触发器](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0205.html" \\o " )。

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

16690346252068rxs53jcco

图片处理

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

上传图片生成事件

登录[对象存储服务控制台](https://storage.huaweicloud.com/obs/" \\o " ),进入your-bucket-input桶对象界面,上传image.jpg图片,如下图所示。

1669034625527j4l365c7f8

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

触发函数执行

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

1669034625812ujdqx0dabp

图片压缩验证

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

16690346263142w7ao1qvy2

总结

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

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

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

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

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4323

    浏览量

    62516
  • 工作流
    +关注

    关注

    0

    文章

    44

    浏览量

    12421
收藏 人收藏

    评论

    相关推荐

    基于工作流技术的广州电信本地计费系统改造

    对广州电信本地计费系统进行了改造。通常情况下,由于电信系统一般都比较复杂,对工作流的性能、稳定性、灵活性和安全性都提出了很高的要求,但是目前的计费运行过程仍然依赖人手提交程序,直接影响了计费
    发表于 04-24 09:20

    【MPS最佳实践】媒体工作流转码

    自定义转码模板(按需)自定义水印模板(按需)操作步骤添加媒体Bucket创建媒体工作流,在工作流中可以灵活配置截图、转码、转封装、水印、加密、剪辑等功能。CDN加速域名(非必填项):如
    发表于 02-28 11:15

    基于案例推理的工作流异常处理研究

    工作流的异常和案例推理(Case - Based Reasoning,简称CBR)的机制进行了介绍,给出了一个应用CBR 技术进行异常处理的工作流模型,并研究了应用CBR 方法处理工作流异常的机制。
    发表于 06-15 10:20 14次下载

    企业工作流机模型的设计

    工作流机是一个为工作流实例的执行提供运行服务环境的软件或引擎。它是工作流执行服务的核心,是执行企业经营过程的业务操作系统的内核,它的运转也就带动了企业的经营活
    发表于 06-16 09:45 30次下载

    OA系统中工作流引擎的设计

    本文首先介绍了工作流供理系统的概念及其体系结构模型。基于Web 平台,针对模型中工作流引擎模块的设计提出了一个行之有效解决方案。关键字:工作流; 工作流引擎; UML; 用
    发表于 06-16 11:31 45次下载

    基于UML的工作流引擎的设计与研究

    由于工作流技术具有在异构环境中处理复杂事务的能力,所以在科学研究、电子政务和商务等方面引起了广泛的关注,工作流引擎是工作流管理系统的核心,本文以工作流管理联盟的工
    发表于 08-19 10:47 23次下载

    动态工作流技术的应用研究

    在基于工作流的应用系统中,业务过程的不可预见性往往会要求工作流能够适应不断改变的业务环境,而传统的工作流技术通常对业务动态可变的支持度不够。本文在传统工作流
    发表于 01-15 14:08 7次下载

    轻量级工作流引擎架构设计

    为了克服传统工作流管理系统的不足,设计了工作流管理型系统的原型体系结构,搭建了轻量级工作流引擎的核心架构,详细地介绍了轻量级工作流引擎各个组
    发表于 04-12 16:15 0次下载
    轻量级<b class='flag-5'>工作流</b>引擎架构设计

    工作流环境下组件的开发

    本文基于对工作流环境下组件的开发为目的,采用工作流技术与组件技术相结合的方法,讨论构建工作流组件的方法。通过在开发中结合Ajax技术,使之克服传统的Web应用中同步交换问题
    发表于 12-17 11:01 0次下载
    <b class='flag-5'>工作流</b>环境下组件的开发

    基于行为特征的语义工作流修正算法

    工作流修正是工作流重用的重要任务,目前在基于工作流的可重用片段-stream的语义工作流修正中,当工作流stream库中不存在与检索语义
    发表于 12-14 15:50 0次下载
    基于行为特征的语义<b class='flag-5'>工作流</b>修正算法

    时候将高清工作流转换为4K/8K工作流的TICO轻量级压缩技术介绍

    intoPIX的产品和营销经理Jean-Baptiste Lorent描述了TICO轻量级压缩,非常适合将高清工作流转换为4K / 8K工作流
    的头像 发表于 11-22 07:08 4551次阅读

    刘润5分钟商学院之实战篇电子版下载

    刘润5分钟商学院之实战篇电子版下载
    发表于 09-03 16:31 0次下载

    联影磁共振参数工作流卡介绍

    工作流卡提供了临床工作应用相关的参数,主要分为三部,校准工作流、扫描工作流以及加载工作流,此篇
    的头像 发表于 05-19 16:07 4458次阅读
    联影磁共振参数<b class='flag-5'>工作流</b>卡介绍

    体验华为云 Serverless FunctionGraph,一分钟上线应用

    使用 FunctionGraph 可以无需预先购买计算资源,直接上传代码上线应用,并可以自动弹性伸缩应对业务流量。FunctionGraph 按需计费,目前免费调用 100 万次。 一
    的头像 发表于 09-02 01:18 507次阅读
    体验华为云 Serverless <b class='flag-5'>FunctionGraph</b>,一<b class='flag-5'>分钟</b>上线应用

    华为云函数工作流:引领未来无服务器计算时代

    在当今数字化飞速发展的时代,企业和个人对于计算资源的需求越来越高,但传统的服务器架构带来的管理成本和资源浪费问题也愈发凸显。为解决这一难题,华为云引领着无服务器计算的浪潮,推出了函数工作流
    的头像 发表于 05-27 10:50 346次阅读
    华为云<b class='flag-5'>函数</b><b class='flag-5'>工作流</b>:引领未来无服务器计算时代