写点什么

Serverless 系列(二):运行原理与组件架构

  • 2019-09-04
  • 本文字数:2332 字

    阅读完需:约 8 分钟

Serverless 系列(二):运行原理与组件架构

随着越来越多的开发者开始关注并使用 Serverless 技术,开发者也对 Serverless 提出了更高的要求。上一篇文章中我们已经了解到 Serverless 相关的基本知识以及 Serverless 所带来的一些优势,本文就不再赘述。接下来,我们重点探讨下现阶段,开发者在使用 Serverless 时经常遇到的一些问题,以及腾讯云 Serverless,尤其是云函数为此所做出的一些探索。


在过去一年多的时间里,我和大量的 Serverless 用户做过线上、线下交流,了解他们的业务场景、以及对 Serverless 的看法或者使用上的体验。大部分用户认为 Serverless 会是云计算下一阶段的必然趋势,但不是现在。为什么呢?因为构成 Serverless 架构的云函数虽然有引以为傲的自动扩缩能力,但是糟糕的开发体验、让人畏惧的冷启动、原有业务需要改造等等,均降低了使用者的信心。这也是当前不少用户虽然认可 Serverless 的价值,但是认为很难承载核心业务的原因。针对这些关键问题,腾讯云在今年 6 月份的上海 KubeCon & CloudNativeCon 上发布了 Serverless 2.0,全面升级了产品形态、系统调度以及开发者工具。 为了便于大家理解,我们就从云函数的运行原理作为切入点,一步一步解释问题产生的原因以及云函数的应对方法。


首先,我们先来看下云函数,或者说 FaaS 和 IaaS、PaaS 的区别。如下图所示,FaaS 不仅给用户提供了标准的 Runtime,同时在应用层,也帮用户管理了请求的调度。开发者只用聚焦在核心业务逻辑开发上,按照函数的粒度去编写代码。而底层硬件相关的资源维护,则交给更加专业的云厂商来搞定。因此,对于用户来讲,则可以把更多的精力和时间放在业务上。而 IaaS 和 PasS,则均需要用户去运维云主机或者容器集群、搭建业务所需的运行环境。​​


​​




其次,我们再来看下云函数是怎么构成 Serverless 架构,以及云函数是怎么帮用户做的资源管理和请求调度,在这里也将会回答云函数是怎么解决冷启、降低核心业务迁移复杂度的。如下图所示,开发者在实际使用时,可以借助 WEB IDE 或者本地 IDE 完成代码开发,然后通过在线或者插件、工具的方式把代码以及所用到的相关依赖,一起打包部署到云函数平台,用户可以自行选择部署成函数的形态或者服务的形态。


在代码里,用户需要自己实现业务逻辑,比如访问数据库、对象存储、消息队列、第三方服务接口等。计算逻辑和后端服务共同构成了所谓的 Serverless 应用架构。而终端用户根据平台提供的请求方式,去触发部署在云函数平台上的业务代码,比如发送 http 请求,平台会根据用户的请求量去拉起相应的计算资源去运行用户代码。


​​



这里需要重点解释下,函数形态和服务形态的差异,因为服务的形态可以大大降低复杂业务迁移的成本。


服务形态支持直接部署基于框架开发的核心业务,如 node.js 的 express、koa 等框架,而不用为了应用 Serverless 而拆分成函数。平台会帮用户启动服务进程、端口监听,同时服务形态不会限制业务的实际运行时长。


函数形态和服务形态在收到用户请求的时候,均能实现自动扩缩。函数形态会针对用户的每个请求都分配一个运行实例,因此所有请求的执行体验是一样的。当没有请求的时候,平台是没有实例在运行的,所以可以做到按需请求,但是这也会造成所谓的冷启动,即当用户的首次请求进入平台的时候,平台会临时拉起资源,而这个过程会消耗一定的时间。为了消除冷启,云函数平台会预先初始化一批不同规格的实例放在资源池中,当用户有请求进入时,可以快速从资源池申请一个实例,直接挂载用户的代码运行,从而降低了资源申请时间。同时,针对函数形态,平台会根据历史并发数据进行预测,帮用户预留一定量的实例,这些实例会预先分配到用户的账号下并且加载好了用户的代码,从而不仅直接消除了冷启,也增加了实例复用几率。


​​



而服务形态可以至少帮用户预留一个常驻实例,并且把用户的所有请求都投递到首个实例,根据实例的使用情况,自动的动态扩缩。


函数形态更适合新建项目,可以敏捷迭代,业务按照函数的粒度开发,不仅可以轻松实现云上多产品的联动,也可以享受函数的高并发及性能一致体验。服务形态更适合已有项目的迁移、重度复杂业务、需要长时运行的业务。


最后,再来看下,Serverless 2.0 的组件架构。如下图所示,用户虽然只用关注绿色部分和业务相关的代码实现,但是平台也需要提供强大的开发者工具来保障开发和使用体验。如云函数推出的 Serverless 本地开发工具、VSCode 插件,和 Coding 联合推出的 WEB IDE、DevOps 平台等,均能很大程度上提升开发、部署效率,实现本次开发、本地调试、联动云端调试、本地部署、版本发布等能力。同时云函数也完善了配套的监控和告警机制,提供如调用次数、内存使用、并发使用、超时、代码错误等多维度的监控和告警能力。对于基础设施、资源管理、安全、容灾等能力,是云函数平台必备的基础能力,也是开发者关心的核心能力。​​



Serverless 不仅仅是计算,还需要不断完善周边生态。随着用户量的增加,Serverless 必然会面临更多的挑战,怎么帮助用户组织管理代码,怎么解决带状态的业务诉求,怎么实现数据库连接数管理,怎么实现应用级部署等等。我们也在不断探索和优化用户的使用体验,计划提供诸如 Serverless DB、性能监控、日志分析、Serverless 框架、函数编排、高性能调用等功能。后续的文章也会陆续推出更多的核心能力解读,帮助开发者更好的理解和使用 Serverless。


Serverless is more!


相关文章:


《Serverless 系列(一):基本概念入门》


作者介绍:


黄文俊,腾讯云高级产品经理,负责腾讯云 serverless 产品规划。经历过企业级存储、企业级容器平台等产品的架构与开发,对容器、微服务、无服务器、DevOps 都有浓厚兴趣。对 Serverless 技术感兴趣的读者可关注 ServerlessCloudNative(ID:ServerlessGo)公众号了解最新技术与动态。


2019-09-04 08:3914077

评论

发布
暂无评论
发现更多内容

如何成为一名共享自助洗车合伙人

共享电单车厂家

共享自助洗车 自助洗车加盟 自助洗车合伙人

Substrate 跨链技术源码级探索: XCVM的概览

彭亚伦

Substrate 跨链技术 波卡

7 月 2 日邀你来TD Hero 线上发布会

TDengine

数据库 tdengine

我的远程办公总结|社区征文

DS小龙哥

远程办公 初夏征文

一对一直播app开发时,如何使用Nginx安全?

开源直播系统源码

软件开发 直播系统 一对一直播 一对一直播源码 直播源码

智能自助洗车机洗车都有哪些优势

共享电单车厂家

自助洗车加盟 智能自助洗车机

Substrate 源码追新导读: Pallet Alliance 并入主线,

彭亚伦

Substrate 波卡

Substrate 源码追新导读: 修复BEEFY的gossip引擎内存泄漏问题, 智能合约删除队列优化

彭亚伦

Substrate 波卡

你的城市还没有自助洗车?赶紧开个

共享电单车厂家

自助洗车加盟 开自助洗车店

波卡跨链通信源码探秘: 要素篇

彭亚伦

Substrate 波卡

几个跨端开发神器

Geek_99967b

小程序 小程序容器

大数据培训 | Flink专题面试

@零度

flink 大数据开发

为了使远程工作不受影响,我写了一个内部的聊天室 | 社区征文

云小梦

微信小程序 wepy 初夏征文

Hologres共享集群助力淘宝订阅极致精细化运营

阿里云大数据AI技术

sql 大数据 分布式计算 存储 数据可视化

Substrate 源码追新导读: 质押额度大幅度削减, RocksDB可以完全被Disable

彭亚伦

Substrate 波卡

实战|SpringBoot jpa调用MySQL存储过程

写程序的小王叔叔

SpringBoot 2 存储过程 Spring JPA 6月月更

互联网研发效能实践之去哪儿网(Qunar)核心领域DevOps落地实践

laofo

DevOps 研发效能 持续交付 研发管理工具 工程效率

《网络是怎么样连接的》读书笔记 - 汇总篇

懒时小窝

网络

JS ES5也可以创建常量?🎃

德育处主任

JavaScript ES5 6月月更

24小时自助洗车让洗车更自由

共享电单车厂家

自助洗车加盟 24小时自助洗车

2022中国国潮发展新动向

易观分析

国潮消费

【等级测评师】等级测评师怎么报名?多少分及格?

行云管家

等保 等保测评师 等级测评师

聊聊远程办公那些事儿 | 社区征文

joe

初夏征文

观测云与 TDengine 达成深度合作,优化企业上云体验

TDengine

tdengine 物联网 观测云

dart:字符串replace相关的方法

坚果

flutter dart 6月月更

数据安全合规之后,给风控团队带来了新的问题

博文视点Broadview

等级测评是什么意思?工作流程包含哪些?

行云管家

网络安全 等保 等保测评 等级测评

图文并茂!手把手教你在VMware中的安装部署Linux-CentOS7.4

迷彩

Linux centos 开发 6月月更

更多龙蜥自研特性!生产可用的 Anolis OS 8.6 正式发布

OpenAnolis小助手

开源 操作系统 龙蜥社区 Anolis OS 8.6 版本发布

从前端开发角度理解如何与Substrate协作

彭亚伦

Substrate 波卡

Mybatis省略@Param注解原理

吴明

MyBatis标签 6月月更

Serverless 系列(二):运行原理与组件架构_语言 & 开发_黄文俊_InfoQ精选文章