写点什么

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:3914036

评论

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

“离职员工”试图打包资料带走,如何防止敏感数据外泄?

极盾科技

数据安全

阿里云人工智能平台PAI论文入选OSDI '24

阿里云大数据AI技术

人工智能 论文 大模型 大语言模型 OSDI

公共安全和应急管理系统:提升社区韧性与危机应对能力

天津汇柏科技有限公司

安全 应急响应

乘用车1-5月销量同比增长7%,火山引擎数据飞轮能帮车企盘活下半年增长吗?

字节跳动数据平台

大数据 数字化转型 云服务 火山引擎 数据飞轮

观测云产品更新 | 视图变量、仪表板、监控通知对象、日志索引等

观测云

监控 日志

Easysearch 数据可视化和管理平台:INFINI Console 使用介绍

极限实验室

console easysearch 极限科技

fm足球经理Football Manager 2022 for mac 下载安装包

你的猪会飞吗

Mac游戏下载

揭秘”大模型加速器”如何助力大模型应用

袁袁袁袁满

人工智能

MySQL派生表合并优化的原理和实现

华为云开发者联盟

MySQL 数据库 华为云 华为云开发者联盟 企业号2024年7月PK榜

特权账号管不好,“删库跑路”防不住

芯盾时代

iam 删库保护 特权账号管理

1688跨境寻源通系统案例:rakumart日本市场1688代采集运系统搭建

tbapi

1688代采系统 1688代采 1688代购系统 1688寻源通 1688寻源通系统

好玩的卡牌游戏推荐:堆叠大陆 Stacklands(Win/Mac)中文版

你的猪会飞吗

Mac游戏推荐 Mac游戏分享

携手并进 共创未来丨东软睿驰与中国移动上海产业研究院达成战略合作

科技热闻

文献解读-多组学-第十八期|《整合 WES 和 RNA-Seq 数据以进行短变异发现》

INSVAST

基因数据分析 生信服务

深入解析 MS404:基于 ERC404 标准的独特原生资产

NFT Research

NFT ERC404

如何高效使用YashanDB PL语言?这5点建议值得收藏

YashanDB

数据库 数据库系统 yashandb 崖山数据库

彻底解决网络哈希冲突,百度百舸的高性能网络 HPN 落地实践

百度Geek说

网络 哈希 企业号2024年7月PK榜

Go 语言专题之Sync.Mutex底层

Go 互斥锁Mutex RWMutex

INFINI Easysearch 尝鲜 Hands on

极限实验室

console easysearch 极限科技 征文系列

HBase 在统一内容平台业务的优化实践

vivo互联网技术

HBase 连接池预热 compact优化

火山引擎×威科:拥抱大模型,法律行业信息库建设再提效

新消费日报

本周六!上海场新能源汽车数据基础设施专场 Meetup 来了

Greptime 格睿科技

数据库 大数据 开源 汽车 新能源

中国在GenAI应用方面位列全球第一!马斯克取消100亿美元Oracle服务器交易,准备自己整活!|AI日报

可信AI进展

人工智能

优秀的程序员都有的十条特征,你中了几条?

禅道项目管理

项目管理 程序员 软件开发 项目管理软件

基于Rspack实现大仓应用构建提效实践|得物技术

得物技术

最佳实践 企业号2024年7月PK榜 Rspack 前端大仓

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