周会分享 - 函数计算

引入:serverless是一种基于云服务的架构理念,函数计算是serverless理念的一种具体实现。

什么是serverless?

severless的概念

Amazon在2014年发布的AWS Lambda第一次实现这种架构。“无服务器”的概念指的是代码不会明确地部署在某些特定的软件或者硬件的服务器上,运行代码托管的环境由阿里云这样的云计算厂商提供。

“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如AWS Lambda服务),客户端逻辑和服务托管远程过程调用的组合。”

serverless和传统IT架构的区别

以一个 图片分享 的web应用来举个栗子。

传统架构

1,业务初期,访问量较低,一个ECS轻松hold住。

image.png | left | 703x314

流程:
用户上传图片 -> ECS云服务器运行web容器,接受请求 -> web应用处理 -> oss存储 -> cdn分发加速 -> 用户访问图片

2,当业务扩展,访问量增加,进一步扩充ECS,逐步演变成集群架构,出现负载均衡等问题。

image.png | left | 751x368

*这个过程需要我们来做什么?*

1,管理ECS。关心CPU数量、内存大小、IP地址等等系统级的配置。
2,管理ECS的操作系统,为部署容器设置访问策略,定期打补丁,升级版本,防止网络攻击。
3,配置弹性扩容策略,应对突发高峰访问量。
4,配置OSS,CDN。
5,编写web应用代码。

serverless架构

image.png | left | 550x279

流程:
用户上传图片 -> OSS触发存储事件 -> 调用处理函数 -> 处理结果存入OSS -> CDN分发加速 -> 用户访问图片

这个过程需要我们来做什么?

1,配置OSS,CDN。
2,编写处理函数。

serverless的优势

  • 1,节约成本。假如业务的突发峰值极高,那么平时部署的大容量高资源系统会严重浪费。

  • 2,隐藏运维细节,专注业务开发。

  • 3,集成第三方服务,降低开发成本。

    serverless抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。

什么是函数计算?

函数计算的概念

阿里云的函数计算(Function Compute)是基于Serverless这种理论框架下推出弹性海量计算平台,是Serverless的一种实现。

函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询、性能监控和报警等功能。借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。

函数计算的结构划分

image.png | left | 420x424

service - 服务

服务是管理函数计算的基本资源单位。可以在服务级别上授权、配置日志和创建函数。

function - 函数

定义在服务下的执行单位,也是核心代码的执行区域。

trigger+event - 事件驱动

函数由触发器触发,一个触发器只能被一个事件定义。一个Service可以设置50组Function,一个Function可以设置10个Trigger。

  • 服务怎么定义?函数如何编写?有哪些事件可以定义触发器? *

实现一个函数计算

创建服务

image.png | left | 827x404

名称、描述不多赘述。

image.png | left | 691x835

高级配置里可配置:

  • 此服务中的函数能否访问公网
  • 能否访问专有网络的云资源
  • 能否访问NAS存储
  • 日志配置
  • 角色管理(当函数需要访问账户中的阿里云资源时,例如 OSS 中的数据,可以创建 RAM 角色并授予相关权限。函数计算在执行函数时将扮演该角色,代表此角色执行函数。)

创建函数

创建完服务以后,就可以在服务的控制台中创建函数了。创建分五个步骤。

函数模板

image.png | left | 827x404

函数计算服务提供nodejs、java、php、python四种语言环境,亦提供常用业务场景下的函数模板。

触发器配置

image.png | left | 788x471

在触发器配置步骤中,可选择不同触发器触发函数。根据业务需要选择。

基础管理配置

image.png | left | 827x435

image.png | left | 827x265

基础管理配置步骤稍微复杂一些,也是核心代码部分,需要指定函数所在服务,具体代码,函数入口以及运行时间和内存大小。

权限配置

emm我选了个http。没啥要配的权限。这一步骤填写服务角色信息(授予函数计算操作其它服务资源的权限)。

信息核对

这一步确认填写信息是否有误即可。

image.png | left | 827x404

触发函数

image.png | left | 827x305

不同的触发器可能会有不同调试器,点击执行右边会出执行结果。点击测试链接也可以。

image.png | left | 711x263

踩坑

可能你已经发现了,测试链接会下载一个附件文件而不是直接在浏览器打开。多方调试无果,确认response头没问题。我提了工单。。

image.png | left | 827x404

原因:

image.png | left | 808x156


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

grafana部署高可用架构 Previous
一点感想 Next