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

本文涉及的产品
简介: 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 架构模式
目录
相关文章
|
6天前
|
存储 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中返回函数计算2.0控制台如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
16 1
|
3天前
|
Serverless 云计算 Docker
SAE是全场景Serverless计算平台,深度融合微服务
【5月更文挑战第2天】SAE是全场景Serverless计算平台,深度融合微服务,提供SAE Job任务场景解决方案,具备便捷、节省、稳定、透明和省心的特点。而ECI是Serverless容器运行服务,结合云计算理念,仅需Docker镜像即可运行,支持细粒度资源计费,旨在降低成本和提升效率。SAE侧重应用管理和运营,ECI专注于优化容器资源使用。
11 0
|
6天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数计算中,“允许函数默认网卡访问公网” 参数配置如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
28 6
|
6天前
|
运维 JavaScript Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,Php环境,配置取消禁止函数exec如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
22 4
|
6天前
|
存储 缓存 运维
Serverless 应用引擎产品使用之在阿里函数计算中,我的函数会运行很久,超过函数最大 执行时间如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
18 1
|
6天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云Serverless中将已有的域名绑定到FC函数上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
20 1
|
6天前
|
运维 Serverless 开发工具
Serverless 应用引擎产品使用之阿里云函数计算中在哪里可以找到函数入口设置的类如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
15 1
|
6天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之在阿里云函数计算中使用Docker进行部署函数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
14 0
|
6天前
|
消息中间件 运维 Serverless
Serverless 应用引擎产品使用之在阿里云函数计算FC中,函数的执行时间是根据实例的存活时间进行计算如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
25 0
|
6天前
|
运维 Java Serverless
Serverless 应用引擎产品使用之阿里函数计算中云函数怎么防止恶意刷流量的请求,例如:openresty的runtime如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
18 0

热门文章

最新文章

相关产品

  • 函数计算