函数计算-建立一个简单的数学计算函数场景

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月15万CU 3个月
简介: Serverless作为一种微服务是一种概念,Serverless允许你提供代码或可执行程序提交给云厂商的解析服务(如阿里云的FunctionComputer等),由解析服务来为你执行它们,而你无需自己管理服务器、配置环境、Web环境等。

Serverless作为一种微服务是一种概念,Serverless允许你提供代码或可执行程序提交给云厂商的解析服务(如阿里云的FunctionComputer等),由解析服务来为你执行它们,而你无需自己管理服务器、配置环境、Web环境等。这就是所谓的执行即服务execution-as-a-service,这样的一种概念听起来非常吸引人,实际上也可以算是一场革命,引用一张经典图轨迹图,让大家看看整个IT运维运行的发展轨迹,如下图:

22ab67b875fc0d7d5118397843b36bb07def42f6

图解:犹如我们从爬行动物猩猩一样,最初靠两只手和两只脚慢慢的挪动,到逐步站立走稳,到最后解放双手直立行走成为真正的人,这种演变过程犹如整个IT发展的过程,首先经过笨重的物理机--》虚拟化--》云计算--》容器--》微服务整个演变,这样的演变,开发者变得更加纯粹、自由、更加轻量。开发者开始无需关注硬件资源,无需考虑多线程,无需考虑扩容,无需考虑流量瞬间峰值的未雨绸缪,极大解放研发生产力,专注做自己擅长的事情(Coding),我甚至觉得,未来的开发者或许就剩下前端开发而无了后端开发。

哪么Serverless到底特点都在哪里,适用那些业务场景?

其特点:

1、细粒度的计算资源分配

2、不需要预先分配资源

3、真正意义上的高度扩容和弹性

4、按需使用,按需计费。

根据Serverless的这些通用特点,我归纳出几种典型使用场景,供大家参考。

事件请求场景

A、网店中的商品图片维护,根据商品陈列位置,要求需要动态切割成不同尺寸图片,或者打上不同水印,当店家把图片上传到阿里云OSS上,会通过Function computer上定制的trigger来触发函数计算,根据计算规则,生成不同尺寸的图片,满足电商陈列使用,整个过程无需再搭建额外服务器,也无需网站美工干预。

B、物联网行业中,由于物联网设备传输数据量小,且往往是固定时间间隔进行数据传输,因此经常涉及低频请求场景。例如:物联网应用程序每分钟仅运行一次,每次运行50ms,这意味着CPU的使用率为0.1%/小时,这也意味着其实有1000个相同的应用可以共享计算资源。而Serverless架构下,用户可以购买每分钟100ms的资源来满足计算需求,通过这种方式就能够有效解决效率问题,降低使用成本。

C、用户注册时发邮件验证邮箱地址,同样通过定制的事件来触发后续的注册流程,而无需再配置额外的应用无服务器来处理后续的请求。

事件触发固定时间触发,例如在夜间或者服务空闲时间来处理繁忙时候的交易数据,或者跑批量数据,来生成数据报表,通过 serverless 方式,不用再额外购买利用率并不高的处理资源。

流量突发场景

A、移动互联网应用经常会面对突发流量场景,例如:移动应用的通常流量情况是QPS 20,但每隔五分钟会有一个持续10s的QPS 200流量(10倍于通常流量),传统架构下企业必须扩展QPS 200的硬件能力来应对业务高峰,即使高峰时间仅占整个运行时间的4%;而在Serverless架构下,用户可以利用弹性扩展特性,快速构建新的计算能力来满足当前需求,当业务高峰后,资源能够自动释放,有效节省成本。

B、视频直播某次专场活动,由于无法预估会有多少点播的观众视频接入,把转码和流量扩容这部分内容通过Function来处理,无需考虑并发和流量扩容。

处理大数据场景

A、由于安全审计问题,你需要从存放在OSS(多个region)里过去一年的数据拿出来(1个小时一个文件),你需要从中找出特定关键字访问的日志,同时做聚合运算(计算出总值)。如果使用阿里云Function Compute。你可以把访问高峰期每两小时的日志,或者访问低谷期每四小时的日志交给一个计算函数处理,处理结果存入RDS,使用一个函数分派数据给另一个函数,使其执行成千上万个相同的实例。这样会同时运行近千个计算函数(24 x 365 / 10),在不到一分钟的时间内完成整个工作。同样的事情交给ECS+计算脚本来做计算,单单为这些instance配置网络就让人头疼(不同region无法走内网下载OSS文件):instance的数量可能已经超出了子网中剩余IP地址的数量(比如,你的VPC使用了24位掩码)。


以上三个场景,都是非常典型的Serverless场景。
下面我结合阿里云的 Function Compute 这个产品来完成一个简单场景的设置,阿里云的 Function Compute 目前主要组成部分有这几大块:

1、Service定义: 服务是资源管理的基本单位 ,可以授权管理等,简单理解为空间或者java中的包名。

2、Event定义: 任何能够触发函数执行的事情称之为事件 ,一个Event中可以触发多个Tigger来执行函数

3、Trigger定义: 用户通过触发器定义和管理事件的生成方式, 触发直接对应的执行函数。

4、Function定义:真正执行的执行函数, 函数是调度和运行的基本单位。

5、Project 和log Store 定义:主要是存储执行日志,整体配置稍微复杂,但是日志方便后续追踪和调试程序。

阿里云执行函数可以通过两种方式来执行,可以在控制台上配置好service,even,trigger和书写Function后执行即可看到结果,还可以通过命令行工具Fcli工具来执行函数,目前阿里云支持的脚本语言仅限于Nodejs,听说很快要推出python版本。

Fcli界面如下:

c7b27a80e7a139f7337c81c82bd127900bf67df7
从控制台界面上看,都是很常用命名方式,可以通过config来配置account_id,access_key_id和 access_key_secret等,每一个命令行都给了相对详细的帮助,可以通过-help来查看。

Fcli的使用整体流程:

1、用户先授权,要填写accout_id,access_id,access_key,如果设置失败,还需要重新用config进行重置,或者删除.fcli下的配置文件

2、  创建service

3、创建project,store

4、授权grant service(4步骤,包括role,policy name,log project,log store)

5、进入service空间,开始写function程序。

6、执行 Function 程序即可看到结果

一个科学计算的例子

明白上面概念后,我来简单实现一个计算一个随机数的例子,通过控制台进行配置:

1、配置Service,见图:
662931c5a1ed36e60a3071b026bc0be453ea9fa6
2、配置Trigger,见图:
4eda0dbe38bdd6a5a8b153e31fcdd705cc465899

3、编写Function(函数执行时间最长300秒),见图:

18ba94127f75ff3d0ab25c689866cd47f4816ac6

代码段:

'use strict';
console.log('Loading function');
exports.handler = (event, context, callback) => {
    var min_nmu = 1000;
    var max_nmu = 10000;
    var generatedNumber = Math.floor(Math.random() * max_nmu) + min_nmu;
    callback(null, generatedNumber);
};

4、查看执行结果: 配置 Project+Store ,略微复杂,后续使用方便,注意这块内容是收费的,费用较低。配置完成后,点击执行看看执行结果:

532128f47451cefc26d079fd532add952df112e6

现状:

目前Function compute和OSS产品能无缝集成,后续阿里云推出API Gateway可以完美地连接到任何其他的云产品,也非常容易构建出控制流量、安全认证、标准化的WEB服务等,后续阿里云还承诺再推出PythonJava等执行环境。





相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
机器学习/深度学习 机器人 Serverless
FaaS 的应用场景
FaaS 的应用场景
|
2月前
|
消息中间件 存储 监控
函数计算产品使用问题之“低频介质型”适用哪些场景
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
运维 负载均衡 Serverless
函数计算产品使用问题之在同一地域同一时刻最多可以同时运行多少个函数实例
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1天前
|
监控 Serverless 云计算
探索Serverless架构:无服务器计算的新纪元
Serverless架构作为云计算的新范式,让开发者无需管理服务器即可构建和运行应用,从而专注于代码开发。其核心优势包括成本效益、自动扩展及高效部署。通过事件驱动模型和微服务部署,开发者按需付费,减少了资源浪费。尽管面临冷启动、状态管理和调试等挑战,Serverless架构仍凭借其高效性与可扩展性展现出广阔的应用前景。流行平台如AWS Lambda、Azure Functions等使其实施更为便捷。
|
2月前
|
运维 Serverless 网络安全
函数计算产品使用问题之函数运行时间大于24小时该如何解决
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
Serverless API 异构计算
函数计算产品使用问题之gpu实例函数该如何创建
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 运维 Serverless
函数计算产品使用问题之如何预热函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 缓存 监控
函数计算产品使用问题之调用sd生图时,怎么保证高并发场景正常运行
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
弹性计算 监控 Serverless
函数计算产品使用问题之如何处理银行转账场景遇到的高并发问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
运维 Serverless 调度
函数计算产品使用问题之怎么在HTTP触发的函数里添加或读取自定义头部
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

相关产品

  • 函数计算