写点什么

5 分钟 Serverless 实践 | 构建无服务器图片鉴黄 Web 应用

  • 2019-10-21
  • 本文字数:2529 字

    阅读完需:约 8 分钟

5分钟Serverless实践 | 构建无服务器图片鉴黄Web应用

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

Serverless 是什么

Serverless 中文译为“无服务器”,最早可以追溯到 2012 年 Ken Fromm 发表的《Why The Future Of Software And Apps Is Serverless》,他描述了一种场景,从用户自己维护的物理机,到 IaaS,再到 PaaS,计算模式的转变并不会停止,在云计算基础设施成熟的情况下应用程序可以不需要考虑服务器的存在,无服务器计算让开发者可以在不考虑服务器的情况下构建并运行应用程序和服务。



再到 2016 年,Mike Roberts 在 Martin Fowler 的博客《Serverless Architectures》中,将 Serverless 架构分为 Backend as a Service(BaaS)和 Functions as a Service(FaaS)。


  • BaaS 也就是后端即服务,即应用架构由大量三方云服务和 API 来组织,使应用中关于服务器的逻辑和状态都由服务提供方来管理。比如典型的单页应用(SPA)和移动 APP 这些富客户端应用,前后端的交互主要以 Rest API 调用为主,只需要调用服务提供方的 API 即可完成相应的功能,比如身份验证、数据访问等。

  • FaaS 可以被称为函数即服务,开发者可以直接将服务侧业务逻辑代码部署、运行在第三方提供的无状态计算容器中,开发者只需编写业务代码即可,无需关注服务器,且代码的执行是由事件触发的。


一个 Serverless 的应用就是这样一个将 BaaS 和 FaaS 融合在一起的应用,用户关注于应用的业务逻辑代码,以函数为粒度将其运行在 FaaS 平台上,并和 BaaS 三方服务整合在一起,最后搭建一个完整的系统,整个过程完全无需关注服务器。

Serverless 的优势

01 无需管理服务器

开发者只需关注应用的业务逻辑,而无需关注服务器的存在,降低业务接入门槛,快速上线,提高开发和运维效率。

02 灵活扩展、按需付费

据 Gartner 和麦肯锡统计,全球的服务器 CPU 平均利用率只有 6%到 12%,大量应用的资源利用率是非常低下的,特别是对于负载波峰波谷明显的应用。而 Serverless 可以根据负载弹性伸缩,并按需付费,根据实际运行消耗的资源计费,且业务是以函数的粒度运行的,可以充分利用碎片资源,极大地减小运作成本。

函数工作流 FunctionGraph

上面简单介绍了 Serverless 架构以及其优点之后,我们再介绍一下华为云的函数工作流(FunctionGraph,FGS)。


函数工作流(FunctionGraph,FGS)是一项基于事件驱动的函数托管计算服务,托管函数具备以毫秒级弹性伸缩、免运维、高可靠的方式运行。通过函数工作流,开发者无需配置和管理服务器,只需关注业务逻辑,编写函数代码,以无服务器的方式构建应用,便能开发出一个弹性高可用的后端系统,并按实际运行消耗的资源计费。极大地提高了开发和运维效率,减小了运作成本。

构建无服务器图片鉴黄 web 应用

为了让大家对 Serverless 架构和函数工作流有更直观的了解,接下来我们将介绍如何通过函数工作流快速构建一个完整的无服务器的图片鉴黄 Web 应用,如下图,该应用接收用户上传的图片,并对图片进行分析,判断是否为色情图片。



试想,如果我们通过传统的模式开发此应用,需要如何开发?


即使是基于现在的云平台,我们也仍需要购买云服务器,关注其规格、镜像、网络等各指标的选型和运维,然后在开发过程中可能还需要考虑与其他云服务的集成使用问题,使代码中耦合大量非业务代码,并且服务器等资源也并非是按需的,可能会造成大量多余的费用。


现在我们可以通过函数工作流服务来快速构建这个系统,并且完全无需关注服务器,且按需运行,如图:



创建函数,在函数中调用华为云内容检测服务提供的图片鉴黄接口,实现图片鉴黄功能,并为该函数配置一个 APIG 触发器,对外提供图片鉴黄的 API,从而构建出一个完整的图片鉴黄无服务器后端。然后将 Web 页面的静态资源部署在对象存储服务(OBS)中,用户可以直接从 OBS 访问前端页面。用户上传图片时,页面调用前面构建的图片鉴黄 API,他会自动触发函数执行,而开发者编写的函数只需实现接收到图片之后如何处理图片的逻辑(调用内容检测服务服务)即可,最后将结果返回给前端页面。至此,我们就构建了一个完整的无服务器图片鉴黄 Web 应用。


现在,我们将介绍如何端到端地将此无服务器应用构建出来。

后端 API 搭建

进入函数工作流服务函数创建页面,选择图片鉴黄模板。该模板已经提供了本应用中函数的代码,按照代码注释中的指示创建函数之后,就成功搭建了本应用的后端系统,为函数所创建的 APIG 触发器会提供一个调用该后端函数的 HTTP(s) API,供外部系统(如前端页面)调用。




创建成功后 API 的 URL 可以在函数详情页面的“触发器”栏看到:


前端页面搭建

前端的展示形式有很多,这里我们提供了一份前端代码包供大家学习参考,可以将此代码包部署到 OBS 上,快速构建一个单页 Web 应用(SPA)。然后调用上一步后端提供的接口,连通后端系统,完成整个无服务图片鉴黄 Web 应用的构建。


1、下载代码包并解压


2、为了让前端页面访问您的函数,需要配置页面 Rest 请求的 URL。修改代码包里/functiongraph/assets/config/apis.json 文件中 checkImage 的值,更改为上一步“后端 API 搭建”中创建的 APIG 触发器 URL,即您的后端 API 的访问地址。


3、通过 OBS 托管前端页面。进入对象存储服务,创建一个 OBS 桶,将程序包文件逐个上传至该桶中。因为文件比较多,我们建议您下载 OBS Browser ,使用 OBS Browser 前,请先获取访问密钥。



4、启动网站。进入桶的静态网站托管界面,单击静态网站托管,配置桶的默认首页为 index.html



配置完成后,您就已经成功搭建了本案例的前端系统。您可以通过 obs 提供的访问地址访问您的前端页面,检测图片时,页面会发送请求到您的函数。


总结


通过上面端到端构建一个完整的无服务器图片鉴黄 Web 应用,我们可以发现 Serverless 的架构具有如下优点:


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

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

  • 可以通过简单的配置连通函数工作流和其它云服务,甚至云服务和云服务,比如本例中只需创建一个 APIG 触发器便可完成 API 网关和函数工作流的连接,然后在函数中调用内容检测服务的鉴黄接口,那么函数就像一个粘合剂一样将两个云服务连接在一起。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/0mwy2swKvty8vxncwGPUQg


2019-10-21 14:421043

评论

发布
暂无评论
发现更多内容

typescript的必要性及使用 | 京东云技术团队

京东科技开发者

JavaScript 前端 企业号 6 月 PK 榜

数据分析与可视化在企业中的日常应用

夏日星河

行云管家- 积极探索“AI+信息安全”的创新融合

行云管家

网络安全 信息安全 智能 AI智能

Java反射源码学习之旅 | 京东云技术团队

京东科技开发者

Java java反射 企业号 6 月 PK 榜

全球NDR市场“客户之声”首次发布:那些最挑剔的用户都选了谁?

Geek_2d6073

玖章算术与百度智能云达成合作,「NineData SQL 开发」成为百度智能云主推的数据库工具

Baidu AICLOUD

【有奖体验】这个 AI 智能回答,就一个字“绝”!

阿里巴巴云原生

阿里云 AI 云原生

瓴羊Quick BI:财务报表分析工具的重要应用

巷子

直播预约 | 邀您共同探讨“云XR技术如何改变元宇宙的虚拟体验”

3DCAT实时渲染

元宇宙 VR虚拟现实 云XR技术

SpringBoot 2 种方式快速实现分库分表,轻松拿捏!

程序员小富

分库分表 springboot ShardingSphere

CFFF在复旦上线 中国高校可以在世界带好头!

新云力量

阿里云 复旦大学 智算平台

芯片中的上百亿个晶体管是如何设计的?

博文视点Broadview

IPQ9554-IPQ6010 supports QCN9274-QCN9074 to achieve triple-band 2.4G, 5G, 6E, up to 9.6 Gbps rate

wifi6-yiyi

WIFI 6e WiFi7

京东到家小程序-在性能及多端能力的探索实践 | 京东云技术团队

京东科技开发者

小程序 性能优化 后端 多端开发 企业号 6 月 PK 榜

BI商业智能工具成宠儿,企业降本增效优质工具

夜雨微澜

一年省七位数,得物自建HFDS在 Flink Checkpoint 场景下的应用实践

得物技术

大数据 阿里云 成本优化

CFFF部署在公共云上意义重大

新云力量

阿里云 复旦大学 智算平台

Apifox:与 OpenAI 接口调试的最佳拍档

Apifox

开发 API openai ChatGPT chatgpt api

互联网大厂2700道Java高频面试题(2023年最新版)不管你工作几年,都可以看看!

采菊东篱下

java面试

直播系统聊天技术(九):千万级实时直播弹幕的技术实践

JackJiang

网络编程 即时通讯 IM

Android SDK安全加固问题与分析

百度Geek说

android 安全加固 企业号 6 月 PK 榜 6 月 优质更文活动

推进绿色数据中心建设,宁畅发布“无忧焕液计划”

Geek_2d6073

可观测性Trace全量存储——之开篇

乘云数字DataBuff

浅谈 ByteHouse Projection 优化实践

不在线第一只蜗牛

bytehouse

vivo 自研鲁班分布式 ID 服务实践

vivo互联网技术

雪花算法 分布式ID UidGenerator Tinyid Leaf

直播平台源码功能分享:直播回放功能的实现

山东布谷科技

软件开发 直播 源码搭建 直播平台源码

AIGC+设计|AI卖画,卖的是创意还是生意?

TE智库

人工智能 AIGC 生成式AI 平面设计

AI药物研发大赛培训来啦!清华博导讲解,高分基线等你来Fork!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

数字经济催生的低代码开发浪潮,JNPF带你轻松实现应用程序拓展!

引迈信息

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

西柚子

使用堡垒机的意义你知道吗?能解决哪些问题?

行云管家

网络安全 信息安全 堡垒机 数据泄露

5分钟Serverless实践 | 构建无服务器图片鉴黄Web应用_文化 & 方法_李壮_InfoQ精选文章