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

本文涉及的产品
简介: 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等执行环境。





相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
人工智能 关系型数据库 Serverless
Serverless 应用引擎常见问题之生成的函数镜像改为自定义的镜像如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
27 5
|
1月前
|
监控 Serverless
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
21 4
|
3月前
|
JSON 安全 Serverless
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数【1月更文挑战第23天】【1月更文挑战第112篇】
223 7
|
3月前
|
Serverless 异构计算
函数计算FC部署问题之函数报错如何解决
函数计算FC部署是指在阿里云Function Compute服务上部署函数或应用程序的过程,它提供了一个无需管理服务器即可运行代码的平台;本合集将介绍和总结函数计算FC部署中常见的问题与解决方案,指导用户如何高效部署和管理Serverless函数。
|
7月前
|
编解码 运维 监控
课时9:典型案例2:函数计算在音视频场景实践
课时9:典型案例2:函数计算在音视频场景实践
275 0
|
1月前
|
人工智能 关系型数据库 Serverless
Serverless 应用引擎常见问题之API生成的函数镜像改为自定义的镜像如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
39 3
|
8天前
|
弹性计算 安全 Serverless
图像处理场景下的Serverless架构
【4月更文挑战第15天】图像处理场景下的Serverless架构
|
1月前
|
物联网 大数据 云计算
未来趋势:无服务器计算的崛起
随着云计算技术的发展,无服务器计算作为一种新兴的计算模式正逐渐受到关注。本文将探讨无服务器计算的定义、优势以及在后端开发中的应用,并展望其在未来的发展趋势。
|
6月前
|
Serverless API 数据库
在阿里函数计算中,国内的云函数,海外调用有什么限制么?
在阿里函数计算中,国内的云函数,海外调用有什么限制么?
57 1
|
6月前
|
运维 Java Serverless
深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
427 0

热门文章

最新文章

相关产品

  • 函数计算