腾讯云Serverless技术演进腾讯云专区

注:本文整理自上周六举办的「HelloServerless」技术沙龙深圳站演讲内容,讲师是腾讯云Serverless产品架构师孔令飞,文末提供了讲师演讲PDF的下载,回复「Serverless深圳」免费可得。

本文将从产品层面来介绍腾讯云是如何落地Serverless技术以及Serverless的技术演进。

目录

Serverless是一项新技术,可能有朋友不是很熟悉。所以我们先介绍下Serverless的概念和发展历史,接着介绍腾讯云Serverless从1.0到2.0的技术演进,以及我们如何支持Serverless这种技术的,也就是技术生态。最后再介绍下Serverless的应用场景和具体的应用案例。

Serverless:云计算新趋势

这是Serverless目前的发展情况。

最近几年,微服务和k8s很火。上图可以看到Serverless跟他们的热度对比,其中蓝色曲线是Serverless的热度曲线图。从2016年开始,Serverless的热度是要大于微服务和k8s的。

Serverless最初在2010年被提出,2014年AWS推出了lambda服务,把Serverless产品化,并收到了很好的效果,微软、Google和IBM看到后,也分别在2016年推出了自己的Serverless产品:Azurefunction、GCP和OpenWisk。阿里云和腾讯云也分别在2017年推出了自己的Serverless产品,腾讯云要早阿里云一天推出。

什么是Serverless

那么Serverless为什么这么火?

从云计算的发展阶段说起,一开始是On-Premise层,接着是IaaS层,之后再到PaaS层。最后是FaaS层,Serverless就是在这一层。

在软件研发领域,绕不开的2个环节是软件的部署和运维。如果我们要上线一个业务,在On-Premise阶段,需要购买物理服务器,可能还需要自建机房、安装制冷设备、招聘运维人员,然后再在上面搭建一系列的基础设施,比如:虚拟化、操作系统、容器、Runtime,Runtime可以理解为像Python、golang、Node.js这类软件。接下来我们要去安装软件类的开发框架。最后,我们才会去编写我们真正需要的业务函数。

过去十多年,云计算其实是一个「去基础架构」的过程。这个过程可以让用户聚焦于自己真正需要的业务开发上,而不是底层的计算资源上。Serverless符合云计算发展的方向,是云的终极形态,这种特有的模式使Serverless存在潜在的巨大价值。

Serverless2.0组件架构

这张图描述了Serverless的组件架构。最底层是基础设施层,底层计算资源我们用到了docker和轻量化虚拟机技术,其中docker是Serverless1.0的计算资源展现形态,轻量化虚拟机是Serverless2.0的计算资源展现形式,相比于docker,轻量化虚拟机性能得到了非常显著的提升,可以在几毫秒就可以启动一个业务进程。在最底层我们也做了双活,并且对底层资源做了严格的安全保护。

再上一层就是资源管理层,比如说我们有集群监控,监控我们的集群监控状况,如果有集群不可用,会立马安排运维人员去排障。当然了,我们底层是有双活的,当一个集群出故障的时候,我们可以把流量切换到另一个集群,用户是无感知的,也不会影响用户的请求。这一层我们有专门的自动扩缩容算法,来应对用户的请求变化。

我们还提供了很多外围的工具系统,来支持用户的研发、部署和排障。比如:DevOps支持,日志、监控、告警支持。后面会有介绍。

Serverless2.0技术形态

如图,左边是Serverless1.0的技术形态,右边这部分是Serverless2.0的技术形态。1.0的时候,只有eventfunction,eventfunction是基于事件驱动型的,大概意思就是外界触发一个事件给Serverless平台,Serverless平台收到触发事件后会调用函数并传入触发事件数据和参数信息,函数内部做业务逻辑处理之后返回给调用方。eventfunction可以对接多种云上的产品,比如:api网关、ckafka、cmq、cos等。

eventfunction和HTTPFunction都是只有在请求的时候才会调用,函数完成之后便不再运行,也就是不再占用资源,换句话说不用再为这些资源付费,后面会有一页PPT介绍,serverless是如何节省资源,以及跟CVM比Serverless这个技术的价格优势在哪里。

到2.0的时候我们跟友商已经形成了一个差异,像AWS和阿里的FaaS还停留在这个阶段,这边业界有个比较好的产品叫GoogleCloudRun。所以我们跟其他友商的优势是他们是割裂开的2款产品,我们把他放到同一个入口了,更方便用户去使用。

Serverless2.0运行过程

这两种技术形态,又是如何支持用户请求的呢?

当请求来的时候,我们平台会根据请求量的大小,去自动或缩容。像Function这种,我们会瞬时拉取足够的函数实例来满足所有的请求,我们有一个调度层,会根据请求量的大小来判断需要起多少个function实例,同时我们也有一套算法,根据用户每天的请求情况,提前创建好一些资源,当用户请求过来时,直接将请求切换到已经创建好的资源上,减少请求延时。像Service这种,我们也会根据请求流量动态的做水平扩容,业务无须感知。

Serverless2.0技术生态

Serverless更多的是解决计算资源的按需分配,无须运维,但如果想真正在Serverless平台上跑业务,还需要其它系统的支持,来满足业务对开发、运维和排障的需求。我们从开发者工具,DevOps、监控运维3个方面,来介绍下我们是如何支持函数的研发、运维和排障的。

开发者工具

首先来介绍下开发工具,为了支持开发者能够方便高效的开发和部署云函数,我们开发了一系列的工具,比如:我们提供VSCode插件,通过VSCode插件,开发者可以很方便的通过IDE直接部署、更新和调试云函数。我们也提供了WebIDE来方便用户直接在网页开发代码。此外我们还提供CLI工具,通过CLI用户可以在终端很方便的通过命令调用完成诸如配置、部署、调试、调用等功能。最后我们还提供API接口来满足用户对自动化和定制化的需求。最后我们还提供SDK供用户更方便的调用云函数的接口。所以可以看到要将serverless产品化,还需要做很多其它工作来支撑Serverless这个技术,尤其是工具这块儿。

DevOps支持

除了开发者工具,我们也提供完善的DevOps支持,从最佳实战,到工作流,到工具链,以及产品打通,我们都提供了很多方案和支持。

比如工作流这里,我们支持编码、构建、打包、部署、测试和发布等一系列流程。在工具这里,我们提供了:CLI、应用模型等。产品这里,我们打通了很多产品供用户很方便的跟这些产品进行交互,利用这些产品提供的能力,比如:Git仓库,API网关,ServerlessDB等。这个是DevOps支持。

日志

监控

性能监控

我们还提供一些更高阶的监控,现在在启动开发,大概在8月底或者9月初的时候会发布。我们会提供函数与函数之间的调用链追踪,展示每个调用节点函数的执行情况、函数执行的性能分析,以及支持对失败函数进行流量重放。所谓的流量重放,就是说,我们会把调用失败的函数放在DLQ队列中,用户可以很方便的从DLQ队列中重试该失败的函数,方便用户Debug。

计费模型

之前有提到过,我们会有一页PPT来专门分析下Serverless下的计费模式和优势。Serverless平台下的计费按如下3个维度进行计费:

1.资源使用费用:(资源使用量-免费资源额度)X资源使用单价

2.调用次数:(函数调用量-免费调用额度)X调用次数单价

3.外网流量费用:外网出流量X流量单价

但是这种比较难理解,所以我们一般会跟CVM进行对比:如果用户部署业务,需要购买CVM,可能需要10台CVM,那对计算资源的投入就是这条黄线,相当于计算资源一直在使用这些计算资源。对于云函数来讲,当没有请求的时候是不占用计算资源的,不会产生任何费用,只有请求的时候才占用计算资源,白天会有个波峰,晚上会有个波谷,大部分业务都是这种模式,可以看到这些阴影面积就是云函数的实际使用资源,我们只会对这些阴影面积进行收费。

这个是跟CVM的计费对比,当资源使用率小60%的时候serverless下的费用比CVM小很多,一般业务很难达到资源使用率60%,能达到30%就已经很不错了。

ServerlessEventFunction应用场景

这里介绍一下应用场景,先介绍下eventfunction的应用场景,通过这张图,我们可以看到,云函数可以作为浏览器、APP和小程序的后端服务。通过我们提供的不同触发器可以支持不同的场景,比如通过API网关触发器,可以匹配websockt的应用场景,通过cos/cmq/ckafka触发器可以支持像:消息处理、流失计算,事件通知这类的应用场景。

ServerlessHTTPService应用场景:BFF

接下来我们看下serverless的具体落地情况。

Serverless助力腾讯六大业务线

客户案例-腾讯地图:100亿条消息/天

这个是腾讯地图的客户案例,走的是eventfunction这种方式。场景是这样的:用户在访问腾讯地图时会产生一些数据库,腾讯地图会将这些数据进行整理并保存到Hbase和ES上,然后再配上一个UI用来查询数据。当用户产生一条数据时,会将这条数据放在kafka队列中,kafka触发后端的云函数,云函数做数据处理之后又将数据放入kafka队列中,由另外一个进程从kafka队列中取走处理后的数据,放入ES和Hbase中。

客户案例-企业辅导背单词

客户案例-腾讯相册小程序

Serverless带来的用户价值

业务迁移到serverless平台可以带来如下价值:

2.我们天然的支持了基于ckafka的触发器,用户不需要再去实现这一套逻辑,节省了很多工作量

3.资源按需分配,只有用户浏览地图的时候才会触发底层资源的分配

4.借助于云的能力,我们提供了非常大的资源池,用户不需要去担心后台计算资源的问题

THE END
1.开发微信小程序:全面解析开发工具与流程微信小程序作为一种轻量级的应用,因其无需下载安装、即用即走的特点,受到了广大用户的喜爱。对于开发者而言,掌握微信小程序的开发工具及其使用方法,是进入这一领域的必备技能。本文将详细介绍微信小程序的开发工具及其使用流程,帮助您快速上手。 二、开发前的准备 https://pbids.com/aboutUs/pbidsNews/1861320285602549760
2.微信小程序开发工具推荐:哪个更适合你?微信小程序是一种在微信平台上运作的软件应用,用户不需要进行任何下载或安装,可以直接在微信中运用。要打造出色的微信小程序,关键在于挑选适当的开发工具,所以本文将为你介绍一些常用的微信小程序开发工具,协助你挑选符合你需求的工具。 1. 公众号构建辅助工具 https://www.seohnzz.com/wzyh/1867.html
3.uniapp2.0可视化开发工具:提升跨平台应用开发效率的新篇章传统的应用开发方式往往需要开发者手动编写大量的代码,不仅效率低下,而且容易出错。而可视化开发工具则通过拖拽、配置等方式,让开发者可以直观地构建应用界面,自动生成代码,极大地简化了开发流程。uniapp 2.0的可视化开发工具,不仅支持微信小程序和H5页面的开发,还能直接生成uniapp代码,实现了真正的跨平台开发。 https://cloud.tencent.com/developer/news/1341674
4.探索5款宝藏小程序开发工具,助力项目腾飞在小程序开发的广阔领域中,效率与质量是成功的关键。如今,有5款堪称神器的可视化小程序开发工具横空出世,它们犹如魔法棒,能将复杂的开发流程简化,开启高效开发的全新篇章。无论你是初涉小程序开发的新手,还是经验丰富的开发者,这些工具都将为你的项目注入强大动力,让我们一同深入了解它们的魅力所在。 https://m.sohu.com/a/839647882_122023986/
5.极速用2.0:高效个性化小程序开发神器51CTO学堂服务器小程序编辑器产品运营营销定时器中继器互联网运营小程序开发第三方插件平台数据动态化一键授权模板套用模块拼装可视化拖拽个性化定制开放性平台高效率操作 极速用2.0作为全国首家同时支持微信和支付宝的小程序第三方开发平台,提供了开放性、个性化和高效率三大优势。开放性体现在首个小程序第三方插件平台,允许开发者在https://edu.51cto.com/video/72267.html
6.小程序开发软件下载,探索最佳工具选择铝塑门窗摘要:,,在寻找小程序开发软件下载的最佳工具时,需要深入探索与明智选择。市场上充斥着各式各样的开发工具,功能各异,适用于不同的开发需求和技能水平。开发者应根据自身项目需求、经验以及预算,挑选最适合的工具。这些小程序开发工具旨在提供便捷、高效的开发体验,助力开发者快速构建优质小程序,满足用户需求。 http://www.shxdfmc.com/post/3465.html
7.微信小程序开发指南:从安装到调试工具的全面解析即使你没有收到第一批小程序的邀请,你仍然可以学习开发小程序。创建项目时选择None: 检查项目选项。 3.熟悉开发工具的使用 调试工具分为6个功能模块:Wxml、、、。 Wxml 组件视图面板 Wxml用于帮助开发者开发Wxml转换后的接口。这里可以看到真实的页面结构以及该结构对应的wxss属性。同时可以修改对应的wxss属性,并在模https://m.bjhwtx.com/h-nd-408347.html
8.掌握微信小程序开发的核心要点:从基础到进阶开发者工具。小程序开发者工具是官方提供的一款调试工具,它提供了丰富的功能来帮助我们调试和优化小程序。 常用的功能: 实时预览和调试:可以在开发者工具中实时查看小程序的效果,并进行调试和修改。 页面检查器:可以查看页面的 DOM 树结构、样式、事件等信息,并进行修改和调试。 http://cloud.jaozi.cn/?developer/article/2472716
9.微信小程序开发指南:初学者快速上手指南(微信小程序开店)微信小程序是一种轻量级应用,可以在微信生态系统内运行。它们无需安装,可以直接在微信中打开。开发微信小程序可以为企业和个人提供一个在微信平台上的推广和服务渠道。 第1 部分:环境搭建 安装Node.js 和 npm Node.js 是 JavaScript 的运行时环境,npm 是 JavaScript 包管理器。它们是微信小程序开发必备工具。 https://www.ulidc.com/2024/12/19/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97%EF%BC%9A%E5%88%9D%E5%AD%A6%E8%80%85%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E6%8C%87%E5%8D%97-%E5%BE%AE%E4%BF%A1%E5%B0%8F/%27
10.零基础入门小程序~开发属于自己的第一个小程序今天来教大家如何开发我们的第一个小程序 小程序开发我们需要下载相应的开发工具,个人比较推荐的是微信官方出的开发工具。毕竟是官方工具。 首先贴出官方开发工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 官方开发工具的下载 https://guangxi.sqqingxi.com/49124.html
11.小程序开发工具2.0单击二维码可复制二维码链接地址,然后在pc钉钉客户端钉钉聊天框内粘贴该地址并访问. 2.手机和pc端的运行日志会在工具最下方devtool里展示. 四,小程序打包上传和发布 1.选择关联的小程序应用. 2.单击 上传版本 > 确定 . 3.上传成功,显示上传简要信息. 4.登录 开发者后台 ,执行 发布 .发布时可以选择该小程序https://open.dingtalk.com/document/resourcedownload/2-0-of-small-program-development-tools
12.蚂蚁开发者工具支付宝小程序开发工具蚂蚁开发者工具调试工具小程序开发者工具也提供了定制的 Devtool,用于查看模拟器运行的日志等。我们也提供了 AXML 插件用于调试小程序的元素: 真机预览 当你完成开发后,可以切换至上传菜单,一键上传至开放平台,进行提审上架。 蚂蚁开发者工具 v2.0.4官方版 本地下载安全下载https://www.wmzhe.com/soft-64957.html
13.钉钉开发工具2.0没法切换app,自己账号是管理员,之前已经创建了好以上回答没暖用,都是复制粘贴,全部都试过的,不是第一次开发钉钉小程序,只是很久没用过了,之前的https://developer.aliyun.com/ask/609018
14.CSFramework.WebApi后端开发框架APP微信小程序服务端框架v2.0C/S WebApi (标准版 v2.0) ASP.NET WebApi快速开发框架|APP后端开发框架 v2.0 适用开发:快速搭建移动端APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。 运行平台:Windows + .NET Framework 4.5 开发工具:Visual Studio 2017+,C#语言,ASP.NET 数据库:Microsoft SQLServer 2008R2+(支持多数http://www.csframework.com/cs-framework-webapi.htm
15.滴滴DoKit2.0泛前端开发者的百宝箱有人说“这个世界是靠懒人来推动的”,而程序员肯定是这里面的佼佼者,我们封装了各种轮子来方便自己和他人,只为了少写几行代码。近几年来,移动开发进入了新的时代,各种各样的轮子层出不穷。但是在线下辅助开发工具这一块貌似还是一片空白,并没有好的解决方案。https://www.jianshu.com/p/f40b8f0455a5
16.DevEcoStudio2.0开发鸿蒙HarmonyOS应用初体验全面测评(推荐)我这里从五个方面给大家详细讲解鸿蒙应用开发,包括:开发工具安装和配置;项目代码分析;项目部署运行到模拟器;鸿蒙项目和Android项目对比;鸿蒙项目和微信小程序项目对比,最后一部分是结束语。 开发工具安装和配置。 项目代码分析)。 项目部署运行到模拟器。 鸿蒙项目和Android项目对比。 鸿蒙项目和微信小程序项目对比。 https://www.jb51.net/article/196591.htm
17.Editor(API开发工具)SwaggerEditor(API开发工具)2.0.1Swagger Editor(API开发工具)是个用Angular开发设计的WEB微信小程序,这一款Swagger Editor是一套开源系统的API设计工具,它能够给你用YAML来界定你的接口规范,并即时认证和实际成api文档。 软件基础简介 Swagger Editor 是一款对于REST APIs文档的线上生成专用工具,能够生成一个具备交互性的API控制面板,开发人员能够用于如https://xiazai.zol.com.cn/detail/53/528108.shtml
18.DevEcoStudio2.0开发鸿蒙HarmonyOS应用初体验全面测评全网最新最全面的DevEco Studio开发鸿蒙HarmomyOS项目初体验。我这里从五个方面给大家详细讲解鸿蒙应用开发,包括:开发工具安装和配置;项目代码分析;项目部署运行到模拟器;鸿蒙项目和Android项目对比;鸿蒙项目和微信小程序项目对比,最后一部分是结束语。 开发工具安装和配置。项目代码分析)。项目部署运行到模拟器。鸿蒙项目和https://news.fromgeek.com/cto/54-119967.html
19.PCVX小程序解密工具下载完成后,双击安装包,开始安装,一直点next即可,安装路径默认在C:\Program Files下,也可以自定义修改 如下图位置 3.然后开始解压 解压过程 解压后得到这个 4.这个我们用wx小程序开发者工具打开 也可以用16进制工具UE打开 UltraEdit 这个名字 自行百du,https://www.eyuyan.la/post/20970.html
20.使用compressionwebpack使用compression-webpack-plugin压缩代码后小程序开发者工具拒绝上传.gz压缩包 - 我用uni-app开发的微信小程序,增加uni-push2.0之后,主包一下子变成了2.2M,传不上服务器。分析了原因,是因为要在app.vue中启动监听,这样主包一下子增加了近200K,vendor.js文件由500k跃变https://ask.dcloud.net.cn/question/194116
21.按照教程创建了微信小程序插件项目,导入开发者工具后,总是提示未按照官方教程创建了微信小程序插件项目,修改两处appid,并将插件根目录导入微信开发者工具后,总是提示“未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译”,这是怎么回事呢? 官方教程地址:https://taro-docs.jd.com/taro/docs/miniprogram-plugin.html 复现步骤 使用官方教程的步骤创建小程序插件项目 tarhttps://github.com/NervJS/taro/issues/5338
22.uniapp从入门到精通(全网保姆式教程)~别再说你不会开发小程序了我们要最终打包成微信小程序就必须在微信开发者工具去预览,那么需要下载微信开发者工具了。 微信开发者工具下载地址与更新日志 | 微信开放文档 2.3 创建uniapp项目 HBuilderX下载下来后,直接双击运行HBuilderX.exe文件即可,它是免安装的。 然后我们新建一个uniapp项目,按照下图操作即可。 https://www.jindouyun.cn/document/industry/article/180461
23.博尼云百度智能小程序开发工具在线版Web2.0支持在线开发百度智能小程序/微信小程序, 本工具可以智能同步发布至百度|微信|百度|今日头条|抖音|QQ五大小程序平台,菜鸟小白3分钟可制作。 打通微信小程序|百度小程序|字节跳动(头条、抖音)小程序、QQ小程序 ,轻松做到流量倍增。https://yun.bonicn.com/
24.微信小程序微信小程序制作视频号开店微信小程序开发工具平台【即速应用】是国内领先的企业微信小程序制作开发工具,免代码生成企业微信小程序平台,拥有海量企业微信小程序模板案例,为小程序企业公司,H5网站提供小程序定制推广,私域流量营销一站式服务。https://www.jisuapp.cn/
25.文档反馈下载小程序开发者工具没这么老的版本了,官方这边最早就2.0版本了 ? https://open.alipay.com/portal/forum/post/112701011
26.2021年新媒体运营必备的28大类工具!2.0小程序制作 上线了 涵盖十大行业,销售产品或内容创作,10分钟,上线你的小程序。 网址:www.sxl.cn 即速应用 无需代码一键生成的小程序开发工具,功能模块自由拼装、自定义后台。 网址:www.jisuapp.cn 轻芒小程序 无需代码,免费一键生成免费小程序第三方平台,3分钟即可发布。 https://www.niaogebiji.com/article-33180-1.html
27.新手入门首先,打开QQ 开发者工具,将先前下载好的演示 demo的qq-sdk-demo文件夹添加入小程序项目中。 创建小程序项目 其中AppID为小程序的 ID,在 QQ 小程序后台设置 >> 开发设置中可获取,知晓云也在设置模块的小程序面板提供了快速通道获取小程序 ID。 开发者 ID https://doc.minapp.com/newbies/qq.html
28.在线随机密码生成工具v2.0开发技术在线随机密码生成工具 - (V2.0)修正特点: 1、增加到四组密码的难易程度,分别从数字 小写字母,数字 大写字母,数字 大小写字母以及数字 大小写字母 符号,根据不同的密码要求选择。 2、点击按钮刷新一组新密码,页面不需要刷新,提高用户体验 该工具后面不再更新,基本可以满足我们密码安全需求。 演示地址://www.cnyhttps://www.coder100.com/index/index/content/id/2183745
29.如何给微信小程序和web应用开发通用的后端程序–PingCode给微信小程序和web应用开发通用后端程序可以通过构建RESTful API、使用兼容性强的数据格式如JSON、实现用户鉴权机制如OAuth 2.0、考虑不同客户端的数据缓存策略、采用脚手架工具快速搭建等方法实现。以构建RESTful API为例,这种架构风格使得资源在网络中以一种简洁、标准化的方式被表示和传输。REST API允许微信小程序和webhttps://docs.pingcode.com/ask/ask-ask/194529.html