从云计算到函数计算

从云计算到函数计算

函数计算,你的名字

云计算,是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作计算资源,因此用“云”来指代“网络计算资源”这是一种非常恰当的比喻。

美国国家标准和技术研究院的云计算定义中明确了三种服务模式,分别是软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。阿里云的产品能全部覆盖这三种服务模式,如果分别举个例子那么应该是:宜搭(SaaS加速器)、函数计算FC和云服务器ECS。

Serverless计算服务,其基于PaaS又不同于PaaS,因而更多时候被称作功能即服务(Function-as-a-Service,缩写为 FaaS)。函数计算FC是阿里云的事件驱动的全托管Serverless 计算服务产品,我想函数计算Function Compute的名字就是这样诞生的。

函数计算,直达应用的核心

我们知道应用的核心是逻辑和存储,而代码主要实现业务逻辑和持久化。

函数计算FC总体上是FaaS+BaaS:

函数指计算函数,包含了业务逻辑部分,这一部分由FaaS来实现;

而数据持久化、消息推送和账户系统等,由BaaS来实现。

ECS?FC?

Serverless服务并不是没有服务器了,而是作为一种新的架构让我们在以往传统应用维护上的工作得到进一步降低。

以常见的主要基于云服务器的Web服务为例,大致有这样的流程:

在服务过程中,服务器可能涉及路由规则、鉴权逻辑以及其他各类复杂的业务代码。同时,开发团队不仅要将精力用于开发,还要付出很大的精力在服务器的运维上面,例如要时刻关注以下问题:

· 服务器性能能否应对可能突然爆发的用户请求,何时扩容?

· 服务器上的脚本和业务代码等多少还在健康运行?

· 外部网络安全威胁到来时如何保障数据安全?

面对诸多问题确实会让人头大,但如果我们摒弃基于服务器的架构而转用Serverless的架构之后,服务的过程就变成了这样:

当客户端和数据库未发生变化的前提下,服务器变成了Serverless的架构。工作的分工发生了巨变。例如,之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的API网关系统以及鉴权系统,开发团队无须再维护这两部分的业务代码,只需要持续维护相关规则即可,再也不用担心应用的构建;业务代码被拆分成了函数粒度,不同函数表示不同的功能,根据请求量还可以实现毫秒级扩容;业务逻辑之外的一部分安全问题、资源调度问题全都交由云厂商负责。

除了开发和维护产品的省心,在具体实现成本上也能达到降本增效的效果。相对于传统项目服务的全天候运行来说,函数计算FC是基于事件驱动的,只有在用户发起请求时,函数才会被激活并且执行,运行成本按量收费,成本相较于节省计划还有显著的成本优势。

FC 解放生产力,更专注于应用的业务本身

使用云服务器,我们不用操心物理机房的运行维护等操作系统层之下的内容;使用函数计算FC,我们不需要装操作系统、、容器配置、运行环境,不用担心环境程序会挂掉。

可见,采用函数计算FC的Serverless架构后用户仅需运维与应用有关的函数,ECS架构下需要操心的东西现在只剩下了一个:

函数计算仿佛一场全新的技术革命,使用函数计算FC的Serverless架构后:

  • 开发团队不需要再自己维护服务器,也不需要自己操心服务器的各种性能指标和资源利用率,团队的运维可以更加专注的将监控目光放到监控应用程序本身的度量。
  • 应用的部署将变得十分容易。我们只要上传基本的代码,同时不需使用Puppet、Chef、Ansible或Docker来进行配置管理,大大降低了运维成本。

综上所述,相对于传统项目,函数计算 FC 具备以下优势:

  • 用户无需采购和管理服务器等基础设施,运维成本低,安全性更高。(即涵盖了云服务器的优势)
  • 用户只需专注业务逻辑的开发,使用函数计算支持的开发语言设计、优化、测试、审核以及上传自己的应用代码。结合工作流,代码提交自动部署,直接运行!
  • 函数计算FC以事件驱动的方式触发应用响应用户请求。与阿里云对象存储OSS、API网关、日志服务和表格存储等服务无缝对接,帮助快速构建应用。
  • 简化运维工作,提供日志查询、性能监控和报警等功能快速排查故障。
  • 不用担心性能问题,架构更富有弹性,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力。
  • 使用成本低,按需付费,支持百毫秒级别收费。只需为实际使用的计算资源付费,适合有明显波峰波谷的用户访问场景。

函数计算FC似乎是真正实现 “像云一样“的云计算愿景,它很好的诠释了:最大程度利用资源、减少空闲资源浪费的环保理念和降低学习成本和使用成本的现实需求。

如此妙哉的函数计算该如何体验呢?

函数计算FC提供运行环境、、开发者工具和函数触发器等功能。同时,函数计算FC提供有免费执行次数 : 100万 (次)和免费资源使用量 : 40万 (GB-秒)。对于小范围的上线使用,我们只用负担公网流量费用和其他资源付费即可。

最常用的函数计算创建方式是控制台进入服务及函数子页面,依次创建服务和函数。一个服务可以由多个函数组成,一个函数只能隶属于一个服务。

当然,阿里云提供了一键式的在函数计算控制台-应用页面,我们可以通过模板和仓库导入来创建:

目前公测中的模板中心包含了各类来自官方或社区的共计56个应用或框架模板,覆盖已经相当全面了。在官方文档的指导下可以实现零基础创建FC应用。

由繁到简,从长到短

实践-基于Node.js + Serverless的Web短网址跳转

主要功能-实现长连接与短链接的映射。

简要描述:

用户可以为指定URL创建对应短链

用户访问短链,自动跳转到相应URL

如上文所说,用函数计算FC构建应用总体上要是FaaS+BaaS。本文的实践项目涉及到BaaS数据库的使用,方便起见使用云开发平台搭建应用。

应用架构图如下:

资源预备:

需要注册开通云开发平台并激活以下服务,

API 网关/API Gateway

函数计算/Function Compute

对象存储/Object Storage Service

日志服务/Log Service

MongoDB Serverless实例

数据库部分:

购买MongoDB Serverless版。

新建集合,新建集合其实就相当于新建一个表。创建集合:links、logs。

通过程序代码连接Serverless实例,使用方法点击该链接参见官方文档。

逻辑代码部分示例:

(Attention:该项目还使用了Express框架,以便于简化路由处理)

import storage from '../storage'export default async (req, res): Promise<any> => {// params from request body or querystringconst params = req.body ?? req.queryconst { url = '', slug = '' } = params as { url?: string, slug?: string }// url is requiredif (url === '') {return res.status(400).send({ message: 'Missing required parameter: url.' })}// url format checkif (!/^https?:\/\/.{3,}/.test(url)) {return res.status(400).send({ message: 'Illegal format: url.' })}// custom slug length checkif (slug.length !== 0 && (slug.length < 2 || slug.length > 10)) {return res.status(400).send({ message: 'Illegal length: slug, (>= 2 && <= 10).' })}const getForwarded = (name: string): string => req.headers[`x-forwarded-${name}`]?.toString() ?? ''try {// request origin urlconst origin = `${getForwarded('proto')}://${getForwarded('host')}/`// if slug customizedif (slug !== '') {const existUrl = await storage.getUrlBySlug(slug)// url & slug are the same.if (existUrl === url) {return res.send({ slug, link: origin + slug })}// slug already existsif (existUrl != null) {return res.status(400).send({ message: 'Slug already exists.' })}}// target url existsconst existSlug = await storage.getSlugByUrl(url)// url exists & no custom slugif (existSlug != null && slug === '') {return res.send({ slug: existSlug, link: origin + existSlug })}// create if not existsconst newSlug = await storage.addLink(url, slug)// responseres.send({ slug: newSlug, link: origin + newSlug })} catch (e) {return res.status(500).send({ message: e.message })}
}

完成前端静态页面后便可绑定域名上线测试。

注意,需要绑定已备案域名。

小结

Serverless作为云原生玩家的首选微服务已逐渐得到大众认同并快速发展起来,期待未来会有更多基于Serverless的应用。

作者:Ethin

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 OPLG 从 0 到 1 构建统一可观测平台实践

应用架构与可观测技术演进历程 在软件开发早期&#xff0c;单体应用架构因其结构简单&#xff0c;便于测试和部署&#xff0c;得到了广泛的应用&#xff0c;对应的监控诊断技术主要是基于日志和日志关键词的指标监控。随着软件复杂度的不断提升&#xff0c;单体应用架构逐步向分…

从运维到运维大神,只需要一个正确的选择

马上就是7月24日了&#xff0c;听群里的朋友说&#xff0c;7和24这两个数字是运维工作的最佳体现——7X24小时待命&#xff0c;所以咱们IT人将这一天自定义为“运维日”。 对于运维工作来说&#xff0c;想要在黑天鹅横飞&#xff0c;灰犀牛直撞的当下&#xff0c;既能独善其身…

主流定时任务解决方案全横评

定时任务作为一种按照约定时间执行预期逻辑的通用模式&#xff0c;在企业级开发中承载着丰富的业务场景&#xff0c;诸如后台定时同步数据生成报表&#xff0c;定时清理磁盘日志文件&#xff0c;定时扫描超时订单进行补偿回调等。 程序开发人员在定时任务领域有着诸多框架和方…

基于阿里云 Serverless 函数计算开发的疫情数据统计推送机器人

一、Serverless函数计算 什么是Serverless&#xff1f; 在《Serverless Architectures》中对 Serverless 是这样子定义的&#xff1a; Serverless was first used to describe applications that significantly or fully incorporate third-party, cloud-hosted applications…

看 Serverless Task 如何解决任务调度可观测性中的问题

在上篇文章《解密函数计算异步任务能力之「任务的状态及生命周期管理」》中&#xff0c;我们介绍了任务系统的状态管理&#xff0c;并介绍了用户应如何根据需求&#xff0c;对任务状态信息进行实时的查询等操作。在本篇中我们将会进一步走进函数计算异步任务&#xff0c;介绍异…

B站每日自动签到传统单节点网站的 Serverless 上云

什么是函数&#xff1f;刚刚考完数学没多久的我&#xff0c;脑力里立马想到的是自变量、因变量、函数值&#xff0c;也就是yf(x)。当然&#xff0c;在计算机里&#xff0c;函数function往往指的是一段被定义好的代码程序&#xff0c;我们可以通过传参调用这个定义好的函数&…

通过部署流行 Web 框架掌握 Serverless 技术

大家好&#xff0c;我是霍大侠&#xff0c;这个系列课程我们通过部署流行web框架&#xff0c;来学习掌握serverless的技术和架构。课程主要从实践介绍&#xff0c;实践演示&#xff0c;分析详解三个大的章节来一步一步学习。 前言 进入实验室-动手实践 点击下面链接进入阿里云…

一首歌的时间,手把手搭建基于FC的网站

部署网站 说好不哭 在接触serverless架构之前&#xff0c;我们如果想实现上线一个Web网站&#xff0c;就要在开发前期经过操作很多冗杂但又必须的步骤&#xff0c;不少小白可谓是快速的从入门到退坑。 编写代码&#xff0c;部署应用&#xff0c;部署数据库&#xff0c;申请域…

PolarDB-X 源码解读:事务的一生

概述 本文将主要解读 PolarDB-X 中事务部分的相关代码&#xff0c;着重解读事务的一生在计算节点&#xff08;CN&#xff09;中的关键代码&#xff1a;从开始、执行、到最后提交这一整个生命周期。 在阅读本文前&#xff0c;强烈推荐先阅读与 PolarDB-X 事务系统相关的文章&a…

阿里云云原生一体化数仓 — 湖仓一体新能力解读

一、基于 MaxCompute 的湖仓一体架构更新 基于MaxCompute 云数据仓库的湖仓一体架构近期进行架构升级。了解 MaxCompute 的同学可能比较清楚&#xff0c;MaxCompute 有两层结构&#xff0c;需要先创建 Project &#xff0c;在 Project 里面创建表、资源等。传统数据库&#xf…

DM8168 DVRRDK软件框架研究

DM8168 DVRRDK软件框架研究 2016-07-26 11:39 72人阅读 评论(0) 收藏 举报分类&#xff1a;DM8168&#xff08;18&#xff09; Netra&#xff08;DM8168&#xff09;处理器是个多核处理器&#xff0c;每个核之间相互独立却又相互关联&#xff0c;如何高效简洁地利用每个核完成一…

基于函数计算自定义运行时快速部署一个 Springboot 项目

什么是函数计算&#xff1f; 函数计算是事件驱动的全托管计算服务。使用函数计算&#xff0c;您无需采购与管理服务器等基础设施&#xff0c;只需编写并上传代码。函数计算为您准备好计算资源&#xff0c;弹性地可靠地运行任务&#xff0c;并提供日志查询、性能监控和报警等功…

FFmpeg源代码简单分析:avformat_open_input()

登录 | 注册 收藏成功 确定收藏失败&#xff0c;请重新收藏 确定标题 标题不能为空网址 标签 摘要 公开 取消收藏 查看所有私信查看所有通知 暂没有新通知返回通知列表 下一条 上一条 分享资讯传PPT/文档提问题写博客传资源创建项目创建代码片baidu_34732018编辑自我介绍&…

硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台

硬之城成立于 2015 年&#xff0c;是一家以电子元器件 BOM 整体供应为核心&#xff0c;为中小科技型硬件企业提供 BOM 标准化、BOM 报价、BOM 采购、BOM 交付和 SMT 一站式 PCBA 服务的电子产业数字供应链与智能制造平台。 电子产业互联网的需求是离散和复杂多变的&#xff0c…

阿里云 Serverless 异步任务处理系统在数据分析领域的应用

异步任务处理系统中的数据分析 数据处理、机器学习训练、数据统计分析是最为常见的一类离线任务。这类任务往往都是经过了一系列的预处理后&#xff0c;由上游统一发送到任务平台进行批量训练及分析。在处理语言方面&#xff0c;Python 由于其所提供的丰富的数据处理库&#x…

代码重构:面向单元测试

重构代码时&#xff0c;我们常常纠结于这样的问题&#xff1a; 需要进一步抽象吗&#xff1f;会不会导致过度设计&#xff1f;如果需要进一步抽象的话&#xff0c;如何进行抽象呢&#xff1f;有什么通用的步骤或者法则吗&#xff1f; 单元测试是我们常用的验证代码正确性的工具…

如何把 thinkphp5 的项目迁移到阿里云函数计算来应对流量洪峰?

1. 为什么要迁移到阿里云函数&#xff1f; 我的项目是一个节日礼品领取项目&#xff0c;过节的时候会有短时间的流量洪峰。平时访问量很低。之前的架构是购买的阿里云alb多台ecs云msyql云redis。最大的问题就是成本问题。平时流量低的时候ecs成本也无法缩减。 阿里云函数计算…

[总结]视音频编解码技术零基础学习方法

0. 生活中的视音频技术 平时我们打开电脑中自己存电影的目录的话&#xff0c;一般都会如下图所示&#xff0c;一大堆五花八门的电影。&#xff08;其实专业的影视爱好者一概会把影视文件分门别类的&#xff0c;但我比较懒&#xff0c;一股脑把电影放在了一起&#xff09; 因…

Helm Chart 多环境、多集群交付实践,透视资源拓扑和差异

Helm Charts[1] 如今已是一种非常流行的软件打包方式&#xff0c;在其应用市场中你可以找到接近一万款适用于云原生环境的软件。然后在如今的混合云多集群环境中&#xff0c;业务越来越依赖部署到不同的集群、不同的环境、同时指定不同的配置。再这样的环境下&#xff0c;单纯依…

跨全端 SDK 技术演进

关于为什么要选择跨平台的实现方式 Write Once&#xff0c; Run AnyWhere. 越来越多的业务需求都有统一的业务诉求&#xff0c;按照传统的方式&#xff0c;在开发、测试、维护上的成本都是乘以N的&#xff0c;体验也很难做到一致性&#xff0c;特别是复杂的业务&#xff0c;实…