Serverless特点及应用
Serverless可以看做是运行于无状态的容器中,由事件驱动,执行周期很短的服务,这部分描述和FaaS很像,所以在一部分人眼里Serverless = FaaS。
马丁大叔将Serverless与FaaS、BaaS做了一个结构整理:
马丁大叔意思是:
Serverless = FaaS + BaaS
Serverless特性包括:弹性伸缩、按需付费特点。
以谷歌开源的Serverless架构方案-Knative为例,聊聊FaaS的几个特点。
Knative是构建于K8S之上的提供基于事件驱动的Serverless架构的标准模式。
先看下Serverless如何实现弹性的。
系统根据当前监控到的流量,实现自动扩缩容,简单的公式如下:
目标实例数 = 当前并发数 / 单一实例支持的并发数
如果每个实例支持10并发,那当100个并发来了,就需要10个实例。如果当前只有1个实例,其余9个实例需要扩容完成。
外部请求先缓存在Activator,直到扩容完其他9个实例,才会将请求转交给FaaS进行请求处理。实例扩容到准备好这个阶段,就叫做“冷启动”。
如何提高冷启动速度呢?
云厂商为减少冷启动时间,一般会做一些分配算法,比如:
实际扩容实例数 = 1.2 * 期望的实例数
这样其实可以支撑120个并发,减少了一次扩容启动时间。
上面的实例扩容算法算是一种冷启动优化方式,我们看看是否还有其他冷启动优化的方式,实例启动过程大概是这样的:
下载代码 -> 启动实例 -> 代码初始化(依赖加载)-> 函数执行
不需要扩容实例时,过程就只剩下了最后一步了,直接函数执行,相对应,我们叫做“热启动”。
一般“冷启动”时间需要上百毫秒,“热启动”只需要几毫秒。
所以优化冷启动,可以从优化冷启动时间和优化冷启动概率上解决。
减少冷启动概率方式有:实例复用、实例预热。
实例复用说的是,函数代码执行结束之后,不会立马回收实例,而是从活跃状态变成了等待状态,处于等待状态的实例可以存活30s,如果期间没有请求需要处理,实例才会被回收,这样达到了30s内实例复用的目的。
实例预热方式简单来说,就是提供预留实例不释放功能,在目标扩容实例基础上增加一定的预留buffer。
以上两种方式对应着实例成本,需要结合具体情况具体实现。
优化启动时间可以从两方面入手:优化代码体积、减少不必要的依赖。
代码体积越大,下载时间越长,所以可以考虑代码打包压缩,或者在代码模板中删除不需要的代码。
如何定义一个函数的粒度是另一个使用Serverless需要考虑的地方。
有的平台推荐将整个web服务部署在一个函数里面,有的是按代码体积做判断,有的还需要考虑函数执行时对于IO、CPU、内存消耗考虑函数粒度的拆分。
但以上几种方式都会增加研发成本上升,这也是我怀疑Serverless是否可以带来其所承诺的研发价值的地方。其有相当确定的使用场景,不能简单粗暴使用。
驱动函数类型的方式有很多,但大部分提倡的还是事件驱动。
触发FaaS运行方式都可以抽象成事件类型,比如API网关事件触发。
那如何使用一个FaaS服务呢?
可以分成如下几步:
基于FaaS平台选择一个熟悉语言对应的Runtime平台,基于其完成:开发、测试过程。
代码完成之后,上传到FaaS平台。
代码上传之后,通过API/SDK或一些其他事件源触发函数。
FaaS平台接收到事件触发,基于配置并发度情况,弹性扩容并执行函数。
函数使用后,按资源使用情况进行计费。
为拉齐函数编写与函数执行环境的差异,FaaS平台一般会提供一些研发工具。有组件式命令行Devs工具,也有注重运维部署方面的Ops工具,提供平台观察函数生命周期。
通过工具,可以快速完成资源管理(代码编写、运行、下载、创建、上传)、快速部署、调试、工程模板、逻辑单元等工作。
有了一个个上传到云端的函数了,就可以基于函数做工作流编排,实现想要的逻辑控制了。包括任务跟踪,状态转换,日志查看,监控调试等。
当然还有函数执行之后是可观测性(Logging、Metric、Tracing)实现函数的运维。
包含用于定位、排查、分析问题的工具,评估风险、配置并发度等工作。
以及执行的详细日志:
Serverless特点及应用相关推荐
- 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门
新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...
- 二:serverless网站数据库操作
操作数据库API文档 第一篇,搭建一套免费的serverless网站 一,创建集合,进入控制台 登录腾讯云后台 打开云开发控制台 可以新建集合,新建集合后点击集合名称即可批量导入导出数据库集合的数据, ...
- 一:搭建一套免费的serverless网站
因为公司需求,需要快速搭建一个公司内部能够访问的资源查看管理的 PC网站,因为没有服务器,没有后端开发,又要快速上线使用,那么 serverless 就成了我的首选方案,下面从零开始搭建. 步骤一. ...
- 现在,Serverless 真的已经成熟了吗?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者 | Justin Etheredge 策划 | Ti ...
- 图解 Serverless!秒懂!
作者 | 江昱(阿里云 Serverless 产品经理) 抛砖引玉:从云计算到 Serverless 2009 年,UC Berkeley发表了:Above the Clouds: A Berkele ...
- Serverless 下的微服务实践
作者 | 弈川 微服务架构介绍 微服务架构诞生背景 在互联网早期即 Web 1.0 的时代,当时流行的是单体应用,研发团队比较小,主要是外部网页,然后新闻门户等:到了新世纪的互联网时期 Web 2.0 ...
- Serverless 在大厂都怎么用?
点击可观看精彩演讲视频 主持嘉宾: 中国信息通信研究院 云计算部副主任.腾讯云TVP,陈屹力 圆桌嘉宾: - Amazon Web Services 首席开发者布道师,费良宏 - 阿里集团 Serve ...
- Serverless:微服务架构的终极模式(文末赠书)
微服务的生态和实践已经比较成熟,其设计方法.开发框架.CI/CD工具.基础设施管理工具等,都可以帮助企业顺利实施微服务.然而,微服务远没有达到完美,它在架构.开发.基础设施方面仍然面临新的挑战. 微服 ...
- 微服务和 Serverless 如何强强联合?
导语 | 微服务与 Serverless 被不少开发者称为"天作之合",在当前的微服务体系中,Serverless 的定位是什么?Serverless 在微服务分布式应用中又是如 ...
- Serverless 时代下大规模微服务应用运维的最佳实践
微服务架构的优点和痛点 Aliware 1 微服务架构的诞生背景 回到互联网早期时代,也就是web1.0时代,当时主要是一些门户网站,单体应用是当时的主流应用,研发团队相对较小,这时候的挑战在于技术的 ...
最新文章
- 记录一次提交开源JAR包到中央仓库的过程
- 获取错误:当试图让pgsql使用rails时,用户“postgres”的对等身份验证失败
- linux 查看显卡信息
- chrome session丢失_一文带你彻底读懂Cookie、Session、Token到底是什么
- 剑指offer(C++)——链表中环的入口结点
- jQuery.tablesorter html表格排序插件
- /hgfs下无共享文件夹?/mnt下没有hgfs文件夹?vmhgfs-fuse:找不到命令?
- 【P1063】 能量项链
- 以太网,局域网,万维网
- 调用百度人脸识别API进行人脸对比 C语言
- 树形数据深度排序处理示例(模拟单编号法).sql
- html gbk正确 utf-8乱码,GBK与UTF-8互转乱码详解
- 怎么把PDF转换成jpg图片?这两种方法快来get
- bugku misc-旋转跳跃
- 超五类屏蔽双绞线和计算机电缆区别,什么是超五类网线?双绞线(网线)常用种类的区别详解...
- 台式计算机品牌怎么查,教你怎么看电脑主板型号和品牌
- Python 骚操作:微信远程控制电脑(转载)
- webrtc源码学习 - 点对点(P2P)链接过程(peer connection)
- mysql成绩表_mysql--学生课程成绩表
- 且行且走(8月22日,23日)