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

    文章

    3911

    浏览量

    61337
  • 工作流
    +关注

    关注

    0

    文章

    42

    浏览量

    12354
收藏 人收藏

    评论

    相关推荐

    E8.Net工作流90%以上源代码提供~

    E8.Net工作流开发架构,快速开发实施软件项目:  E8.Net工作流是国内商业流程管理(BPM)领域在.Net平台上的领先产品,是快速搭建大型流程管理自动化解决方案的IT技术
    发表于 03-31 11:17

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

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

    基于Notes的OA工作流引擎的设计和实现

    到了更高层次的发展,成为企业管理现代化的重要标志。目前,办公自动化技术越来越普遍地被应用到***机关、金融机构和企事业单位的日常管理中,成为提高工作效率、优化管理流程的重要手段。工作流技术的使用,使得
    发表于 04-24 09:22

    基于工作流的零售贷款档案管理系统设计与实现

    课题。工作流技术的应用在企业中逐渐发挥越来越重要的作用。工作流技术是实现业务过程重组与改造的核心技术。工作流技术的应用可以提高生产率,优化业务流程,对企业信息化具有重要的现实意义。可无缝集成到Web服务上
    发表于 04-24 09:22

    协同时光Synchro FLOW,中国特色工作流

    ` 本帖最后由 372345973 于 2013-7-1 16:57 编辑 协同时光工作流基于BPM的应用开发 西安协同时光软件有限公司提供的协同时光工作流产品Synchro FLOW,重视流程
    发表于 07-01 16:55

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

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

    显示屏幕工作5分钟乱码

    最近用8951采集电压并显示,但是显示屏幕工作分钟就乱码
    发表于 07-15 12:46

    比特压缩如何工作

    我已经把它看作是赛灵思ISE的一个选项,但是没有真正的线索它是如何运作的...我之所以要问的是我们原先在我们的设计中有一个XQ6SLX75,它很容易适合32Mbit闪存设备,但随后我们对LX150
    发表于 05-29 13:10

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

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

    电脑上的图片怎么批量压缩

        对电脑上的文件我们都会定期的清理,相信大家也发现了在整理图片文件时总是会用到压缩,我们电脑上都会保存着各式各样的图片,单项的压缩图片很浪费时间,那么怎样
    发表于 09-21 17:59 522次阅读

    电脑上的图片怎么批量压缩

        对电脑上的文件我们都会定期的清理,相信大家也发现了在整理图片文件时总是会用到压缩,我们电脑上都会保存着各式各样的图片,单项的压缩图片很浪费时间,那么怎样
    发表于 09-21 17:59 891次阅读

    电脑上的图片怎么批量压缩

        对电脑上的文件我们都会定期的清理,相信大家也发现了在整理图片文件时总是会用到压缩,我们电脑上都会保存着各式各样的图片,单项的压缩图片很浪费时间,那么怎样
    发表于 09-21 18:00 323次阅读

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

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

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

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

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

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