Serverless的概念&定义-无服务计算详解
过去几年间,Serverless 发展迅猛,与其相伴的还有从小程序、移动端等到前后端一体化的演进与实践,也正因如此,从云计算到前端,众多开发者都极为关注
Serverless到底是什么?
在国内,Serverless 通常被称呼为「无服务计算」。但 Serverless 不是一种具体的框架、代码库或者工具集,而是一个为了减轻开发者的服务运营/运维成本而提出来的一套理论思想。
为了简化开发者们的理解成本,业界对 Serverless 有一种结合云计算行业的定义方式:
Serverless = FaaS + BaaS
FaaS:Function as a Service,函数即服务
对于 FaaS,业界已经有比较多的成熟厂商提供了线上产品,例如:
- AWS Lambda,起步最早的 FaaS 云产品,和 AWS 的云产品有很好的互动,开发者使用较多。
- Azure Functions,来自微软的公有云函数计算产品,晚于 AWS lambda 发布。
- Google Cloud Functions,来自 Google 的公有云计算产品,和 Google 的 Firebase 有较深的互动。
- 腾讯云 云函数,来自腾讯云的公有云计算产品,和腾讯云的云开发有较深的结合落地。
BaaS: Backend as a Service, 后端即服务
对于 BaaS,覆盖的范围会更广阔一些,需要去解决 Serverless 落地过程中除去计算而外的所有后端场景,例如数据库服务,消息队列和存储服务等。开发者在使用 BaaS 服务的时候,不再需要去感知后端的服务运维,提出服务需求,享受服务即可。例如在数据库服务部分,通常又被细称为 DBaaS(Database as a Service)。传统场景下,开发者的运维团队要关心数据库运维的细节问题,而基于 DBaaS,开发者只需要关注业务逻辑即可。
Serverless与FaaS
FaaS在解决用户业务场景乏力,存在一定局限,如下
局限1:改造成本
在FaaS的模式下,开发者需要进行一系列的云函数适配性改造才可以将已有业务搬迁到云开发上来。特别是,开发者部分业务还需要基于后台常驻模式才可以有效运行,而云函数的事件触发、用完即回收的特点却无法支持开发者的这一重要诉求。
局限2:语言生态限制
FaaS对于不同的语言需要针对性的提供不同的 Runtime,例如 Node.js 场景,随着版本的不断更新迭代,需要平台不停去适配新的 Runtime 版本。另外,不同的开发语言往往还有很多的配套框架。例如 Node.js 生态的 Koa 和 Express 等等,这些框架往往依赖于系统平台的一些机制,而云函数本身需要额外的成本去适配这些框架,对框架的适配度也将大大影响相关语言开发者的使用意愿。
局限3:性能
FaaS的按需使用,在请求真正触发时才产生计算成本的特性大大降低了开发者的运维成本,但也同时带来了启动时的时延问题,也就是「冷启动」问题。
为了解决这个冷启动问题,云函数可以采用首次启动后延迟销毁、资源预留等方法来优化,但是对于一些对性能要求较高的业务,云函数始终无法提供逼近传统计算模型的服务,也影响了开发者使用云函数的意愿。
从而促进Serverless的发展
Serverless云应用背后的技术理念
那除了 FaaS,Serverless 的计算载体还有其他的选项么?
答案是肯定的,2019 年 4 月谷歌科技大会,Google Cloud 宣布将专注电信、零售、金融等垂直领域,与成熟的大型企业合作。针对此类用户在使用 Serverless 产品时的语言生态支持有限、改造成本过大、性能等问题推出基于 Knative 的 Serverless 容器产品 CloudRun。
这里是 Google Cloud Run 的一个产品时间轴:

那 CloudRun 背后的 Knative 理念又是怎样的呢?
Knative 是由 Google 提出,尝试去解决 Kubernetes 入门门槛略高的问题,这个理念已得到业界的一致认可。Knative 将重点放在三个关键组件上:build(构建)你的应用程序,为其提供流量 serving(服务),以及确保应用程序能够轻松地生产和消费 event(事件),以下是一个直观的表述 Knative 和 Kubernetes 之间关系的架构图:

关于腾讯云serverless产品-云开发
为了让应用开发者更高效地落地创意,作为国内落地实践 Serverless 较早的团队,腾讯云云开发结合 Serverless 理念打造了一套服务开发者的多端一站式应用开发平台 CloudBase,并取得了包括多端支持、大幅节约资源成本、免运维等成果验证。
目前,腾讯云云开发服务了 50 万的开发者,涉及的领域包含小程序、Web 应用和终端应用。开发者们可以基于云开发平台快速构建自己的业务逻辑,释放创意。
当然在云应用模式下,开发者需要理解更多的一些计算服务概念(镜像,框架,Dockerfile),会比云函数的使用上更重一些,云函数在快速落地原型验证,上线轻量能力上有更多的应用场景。
在传统定义 Serverless 概念中,「Serverless=FaaS+BaaS」,这是一种前后串联的组合关系,彼此之间的互动是单向的,FaaS 的行为单向传递到 BaaS。
将 Serverless 云应用(Serverless 容器)补充到 Serverless 计算场景之后,CaaS(Container as a Service)的理念也将慢慢走近开发者,服务开发者。
因为加入 CaaS 概念的 Serverless 生态等式将会变更为:「Serverless = FaaS+CaaS+BaaS」,但是这里仅仅是在原概念上多了一个加数么?考虑到计算能力之间的相互传递,Serverless 的作用关系将会发生本质的形态变化,如下图所示:

CaaS 会重新定义 Serverless 的语义(Serverless = FaaS+CaaS+BaaS)么,给 Serverless 生态带来多大的组合变化?
让我们拭目以待。
Serverless的概念&定义-无服务计算详解的更多相关文章
- 2-4、nginx特性及基础概念-nginx web服务配置详解
Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...
- 无服务计算应用场景探讨及 FaaS 应用实战
作者 | 宋文龙(闻可) 阿里云全球技术服务部高级交付专家 什么是无服务计算 无服务器计算(Serverless Computing)在构建和运行应用时无需管理服务器等基础设施.它描述了一个细粒度的 ...
- (转)Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 原文:https://www.jianshu.com/p/4be0d5882ec5 静态文件 Nginx以其高性能著称,常用与做前端反向代理服 ...
- Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器.同时nginx也是一个高性能的静态文件服务器.通常都会把应用的静态文件使用ng ...
- linux基础之LSB定义的常用目录详解
Linux基础之LSB定义的基本目录详解 1.LSB中FHS(Filesystem Hierarchy Standard)定义的一些文件 /boot:主要是存放引导文件的目录,比如内核文件(vmlin ...
- Linux:SSH服务配置文件详解
SSH服务配置文件详解 SSH客户端配置文件 /etc/ssh/ssh——config 配置文件概要 Host * #选项“Host”只对能够匹配后面字串的计算机有效.“*”表示所有的计算机. For ...
- java newInstance() 的参数版本与无参数版本详解
newInstance() 的参数版本与无参数版本详解 博客分类: Core Java 通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.new ...
- Nginx服务优化详解
Nginx服务优化详解 1.隐藏Nginx版本信息 编辑主配置文件nginx.conf,在http标签中添加代码 server_tokens off;来隐藏软件版本号. 2.更改Nginx服务启动的默 ...
- Serverless无服务器架构详解
本文对Serverless架构的基础概念.具体产品.应用场景.工作原理进行详细解析. 基础概念 Serverless: 无服务器架构,即在无需管理服务器等底层资源的情况下完成应用的开发和运行,是云原生 ...
随机推荐
- 附015.Kubernetes其他技巧
一 优化镜像源 1.1 国内镜像源 global proxy in China format example dockerhub (docker.io) dockerhub.azk8s.cn dock ...
- qemu-guest-agent详解
qemu guest agent简称qga, 是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),他可以管理应用程序,执行宿主机发出的命令. QEMU为宿主机和虚拟机 ...
- 什么是Galil(加利尔)运动控制卡,它是用来干嘛的呢?galil开发文件dmc32.dll,动态链接库,API
什么是Galil(加利尔)运动控制卡,它是用来干嘛的呢?运动控制卡是基于PC总线,利用高性能微处理器(如 DSP)及大规模可编程器件实现多个伺服电机的多轴协调控制的一种高性能的步进/伺服电机运动控制卡 ...
- Fabric网络组织与主节点选举
一.Fabric网络组织 Fabric网络组织按如下结构组成:Fabric网络-->Channel通道-->组织(成员)-->节点.即整个网络由数个通道组成,每个通道都由多个组织构成 ...
- gdb基本命令总结
本文介绍使用gdb调试程序的常用命令. 主要内容: [简介] [举例] [其他] [简介] ============= GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 ...
- 05.DRF-Django REST framework 简介
一.明确REST接口开发的核心任务 分析一下上节的案例,可以发现,在开发REST API接口时,视图中做的最主要有三件事: 将请求的数据(如JSON格式)转换为模型类对象 操作数据库 将模型类对象转换 ...
- cookie的介绍和使用
一.什么是cookie 是由服务器端生成,发送给客户端(一般指浏览器),浏览器将cookie以键值对的形式保存到某个目录下的文本文件内.下次请求该网站时就把cookie发送回服务器.(cookie就是 ...
- Day10-微信小程序实战-交友小程序-创建friendList字段实现好友关系(添加好友功能)--内附代码
回顾:之前我们进行了删除的功能,以及对message消息的增删,下面实现添加好友的功能 我们先在数据库中,在message这个字段的list里面,添加上测试号的id,就是模拟这个两个测试号要加我主号的 ...
- 基于 Angular Material 的 Data Grid 设计实现
自 Extensions 组件库发布以来,Data Grid 成为了使用及咨询最多的组件.最开始 Data Grid 的设计非常简陋,经过一番重构,组件质量有了质的提升. Extensions 组件库 ...
- HTML5实现DTMF(电话拨号按键信号)解码、编码,代码简单易于移植
目录 一.前言 1.1 HTML5实现DTMF的一些动机 1.2 一些有效场景 (1) 10086 (2) 软电话 (3) 小玩具 二.DTMF频率按键对照表 三.DTMF信号解码 得到按键值 3.1 ...