当我们在聊 Serverless 时你应该知道这些

 

作者 | 杨泽强(竹涧)阿里云技术专家

说起当前最火的技术,除了最新的区块链、AI,还有一个不得不提的概念是 Serverless。Serverless 作为一种新型的互联网架构,直接或间接推动了云计算的发展,从 AWS Lambda 到阿里云函数计算,Serverless 一路高歌,同时基于 Serverless 的轻量计算开始登录云计算的舞台,本文将从两个部分展开:

  1. 介绍 Serverless 的概念,历史及其现状与未来的思考;
  2. Serverless Container 的概念及现状。

一、聊聊 Serverless

前文讲到 Serverless 是一种新型的互联网架构,目前尚没有官方权威的定义,可以认为:

Serverless 无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如 AWS Lambda 服务),客户端逻辑和服务托管远程过程调用的组合。

AWS Lambda 作为 Serverless 最早的框架产品,在 2014 年由亚马逊推出,但最早的 Serverless 概念并不是由亚马逊提出,下面我们来简单聊聊 Serverless 的历史。

Serverless 历史

发轫之始

2012 年云基础设施服务提供商 Iron.io 的副总裁 Ken 提出软件的未来 ,首次提出来 Serverless 概念, 以下是原文的一段摘录:

Even with the rise of cloud computing, the world still revolves around servers. That won’t last, though. Cloud apps are moving into a serverless world, and that will bring big implications for the creation and distribution of software and applications.

初出茅庐

AWS Lambda 产品的发布可以认为是 Serverless 的里程碑,在此之前 Serverless 几乎是停留在概念期,直到 14 年 Lambda 发布,让“Serverless”提高到一个全新的层面,为云中运行的应用程序提供了一种全新的系统体系架构,**Serverless 开始正式走向云计算的舞台。

崭露头角

在 AWS 发布 Lambda 之后,众多 IaaS 及 Pass 厂商争相入市,Google Cloud Functions, Azure Funcions, IBM OpenWhisk,阿里云函数计算,短短数年时间 Serverless 产品已遍地开花。

未来已来

随着容器技术、IoT、5G、区块链等技术的快速发展, 技术上对去中心化,轻量虚拟化,细粒度计算等技术需求愈发强烈,而 Serverless 必将借势迅速发展,未来 Serverless 将在云计算的舞台上大放异彩!

云计算发展看 Serverless

首先,抛一个总结性观点:云计算的发展从IaaS、PaaS、SaaS,到最新的 BaaS、FasS,在这个趋势中 serverless (去服务器化)越来越明显,而 Serveless 的完善带给云计算将会是一次完美进化!

众所周知,云计算经历了从 IDC -> IaaS -> PaaS -> Serverless/FaaS 的发展历程,下面对这些概念做一些基本介绍。

IaaS

IaaS(Infrastructure as a Service) 基础设施即服务,服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),用户需要通过 IaaS 提供的服务平台购买虚拟资源,选择操作系统、安装软件、部署程序、监控应用。

目前知名的 IaaS 平台有 AWS、Azure、Google Cloud Plantform、阿里云以及开源的 OpenStack 等。

PaaS

PaaS (Platform as a Service) 平台即服务,服务商提供基础设施底层服务,提供操作系统(Windows,Linux)、数据库服务器、Web 服务器、负载均衡器和其他中间件,相对于 IaaS 客户仅仅需要自己控制上层的应用程序部署与应用托管的环境。

目前知名的 PaaS 平台有 Amazon Elastic Beanstalk,Azure,Google App Engine,VMware Cloud Foundry 等。

SaaS

SaaS (Software as a Service) 软件即服务, 服务商提供基于软件的解决方案,如 OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud 等,客户不需考虑任何形式的专业技术知识,只需要通过服务商平台获取软件使用即可。

BaaS

BaaS (Backend as a Service) 后端即服务,服务商为客户(开发者)提供整合云后端的服务,如提供文件存储、数据存储、推送服务、身份验证服务等功能,以帮助开发者快速开发应用。

FaaS

FaaS (Function as a Service) 函数即服务,服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护基础架构。 按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用。

IaaS、PaaS、FaaS 对比

举个例子,比如小明想开一个水果店:

  • IDC:如果盖房子,装修、上架水果这些工作都是小明自己来做;
  • IaaS:如果小明房子是租的,装修、上架水果是自己做;
  • PaaS: 如果小明房子是租的,可是房子已经装修好了,但是上架水果要自己来做;
  • FaaS:如果有一个商家提供装修好的水果店,小明只负责把水果送过来,其余上架工作都由商家来做。

总结

从 IDC → IaaS,用户不用关注真实的物理资源。
从 IaaS → PaaS,用户不再关注操作系统,数据库,中间件等基础软件。

从 PaaS → BaaS/FaaS, 用户可以很少甚至不用关注 backend,app 可以简化为一个单页面程序。

可以说,Serverless 是云计算发展到一定阶段的必然产物,云计算作为普惠科技,发展到最后一定是绿色科技(最大程度利用资源,减少空闲资源浪费)、大众科技(成本低,包括学习成本及使用成本)的产品,而 Serverless 将很好的诠释这些!

Serverless/FaaS 模型

Serverless 是基于事件驱动的编程范型,其底层的计算平台一般为轻量计算,比如容器计算 Docker。

针对该模型本文不再赘述, 下面以 AWS Lambda 及阿里云函数计算为例,简单介绍该模型。

AWS Lambda

大致流程如下:

  1. UI 驱动,通过模拟鼠标点击触发事件;
  2. 当触发事件增多时,lambda 实例自动扩容;
  3. 当触发事件减少时,lambda 实例自动缩容。

阿里云函数计算

流程大致如下:

  1. UI/Event/Message Driven 触发事件;
  2. 用户 Function 会 package 为一个 docker 镜像;
  3. 事件调度系统配合 Docker 集群运行 Docker 容器来执行 Function 

Serverless 价值与影响

低成本

  • 运营成本,Serverless 将用户的服务器、数据库、中间件委托于 BaaS/FaaS,用户将不再参与基础设施及软件的维护,尤其在大规模的集群运营上成本大幅度降低;
  • 开发成本,对比 IaaS 或者 PaaS 平台的服务器或者操作系统,Serverless 的架构中,用户操作的是服务化的组件比如存储服务,授权服务等,可以缩短开发周期,降低开发难度。

真正的按需计费

Serverless/FaaS 区别于 IaaS/PaaS 预先分配计算资源的计费方式,其计费方式通常是按请求次数及运行时间,一方面可以最大程度利用资源,另一方面真正的按需计费降低用户的资源成本。

高扩展

Serverless 架构一个显而易见的优点即“横向扩展是完全自动的、有弹性的、且由服务提供者所管理”。

“绿色”计算

据统计,商业和企业数据中心的典型服务器仅提供 5%~15% 的平均最大处理能力的输出,本质上这是对社会资源的一种浪费。而在 Serverless 架构下,提供商将提供更细力度的计算能力,最大限度满足实时需求,资源利用率将大幅度提升,可以认为相对 IaaS 与 PaaS,Serverless/FaaS 是一种 “绿色” 计算。

NoOps

运维的发展经历了人肉运维、自动化运维、DevOps、AiOps 等,而 Serverless 带来一种新的运维模式,这种模式下用户需要管理的只有 Code 可以认为 NoOps。

Serverless 应用场景

  • 事件驱动以及响应式架构

    • IoT 物联网场景中低频请求
    • 请求对及时响应需求不够
    • 固定时间触发计算资源利用低的业务
  • 流量突发场景

    • 比如短时间大流量视频转码
    • 短周期内的流量峰值
  • 跨云与混合云场
  • 边缘计算
  • 其它 ...

Serverless 未来的一些思考

细粒度的计算资源

目前主流的 Serverless/FaaS 技术底层的计算环境通常是容器比如 Docker,容器技术是一种比硬件虚拟化更轻量的实现,用户可以在虚拟机上运行大量的容器,可以更大程度的利用计算资源。

而Serverless 的需求可能是更细粒度的计算资源,比如最近华为发布的 CCI 产品容器的规格已经支持千分之一核,相信千分之一核只是开始,未来 Serverless 在细粒度资源使用上将发挥无限可能。

统一的容器调度模型

从当前 Serverless/FaaS 及容器生态的发展来看,容器基本都是运行在云主机之上比如 aws 的 ec2,阿里云的 ecs。
由于云厂商实现方式及不同产品的差异性,容器的调度框架选择不尽相同,比如有的厂商其 Serverless 产品是基于 Kubernetes 管理云主机集群进行容器编排及调度(比如华为的 CCI),而有的产品如阿里云的函数计算产品是基于自研的 Agent 进行容器调度。那么为什么没有一种产品可以为不同的 Serverless 服务提供通用的容器调度能力呢?

生态圈多样化

Serverless 的发展必然会带动其周边生态的完善,比如 BaaS 及 FaaS 产品的形态将多样化输出,举个例子:
Serverless 架构下用户的 Code 是没有服务端的,而这些服务将由云厂商以 BaaS 的服务形态提供,随着 Serverless 的发展,必然会催生多样化的 BaaS 服务。

产品抽象输出

Serverless 是云计算普惠科技的重磅技术!Serverless 的出现将开发者从复杂的硬件及软件环境中解脱出来,未来可以想象 Serverless 的产品将会以更加简单的方式呈现给用户。举个例子:大家熟知的乐高积木,不同的小零件按照不同的方式组装,最终得到的作品是多样化的。
而 Serverless 天生具备这种优势,可以想象如果 Function 以服务化的方式抽象,开发者开发一个 Cloud App 需要做的事情就是在无数的 Function 里面挑选自己需要的“积木”,然后通过一种可视化的工具进行"积木"组合!

二、Serverless Container

前文讲了一些 Serverless 生态的概念及现状,从当前主流的 Serverless/FaaS 框架,如 AWS Lambda、IBM OpenWhisk、Iron.io、阿里云函数计算分析来看,其底层的计算资源通常是 Docker 容器。可以认为 Serverless 构建于容器 (Docker) 之上!

什么是 Serverless Container

Serverless Container(无服务器容器),意味着用户不再需要关注容器集群和服务器,只需关注 Docker 容器或者 Docker Image 即可。

通过分析业界主流的的 Serverless Container 产品如 AWS Fargate, Azure ACI, 华为 CCI,可以看出:

  • Serverless Container 提供了更为简单的体验,用户不再需要理解容器编排技术如 K8s,Swarm;
  • Serverless Container 提供了更细粒度的的能力,比如微核粒度的 CPU 资源和 MB 粒度的内存资源;
  • Serverless Container 提供了将容器作为基础计算单元的思路。

Serverless Container VS Kubernets

Kuberntes (K8s) 是谷歌开源的容器管理系统,类似的产品还有 Docker Swarm、Apache Mesos。这些优秀的集群管理系统,尤其是 K8s 已经在生成得到了充分验证,从使用角度来说,K8s 需要用户具备容器及容器编排、集群管理等多方面的专业知识,而 Serverless Container 对用户屏蔽了容器集群管理,用户使用起来将更简单!

结论:Serverless Container 在容器产品形态上是高于 Kubernetes 的,事实上大部分的 Serverless Container 产品都基于或者兼容 Kubernetes。

Serverless Container VS Serverless/FaaS

根据上文的分析:

  • Serverless Container 对用户提供的是一种容器计算资源,用户不需要关心容器集群,只需要定制 vCpu、mem 及 Docker Image;
  • Serverless/FaaS 提供的是一种服务化的计算能力,用户同样不用关心计算集群,只需指定 vCpu,mem 及 Code。

结论:FaaS 及 Serverless Container 的底层计算资源都是 Docker 容器!

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nacos集成dubbo实现远程服务调用

文章目录1. 模块划分设计2. 创建父工程3. 创建公共接口4. 服务端5. 客户端6. nacos7. 测试8. 码云开源地址1. 模块划分设计 模块名工程名端口父工程nacos-dubbo无服务端nacos-dubbo-provider9000消费端nacos-dubbo-consumer8000公共接口nacos-dubbo-interface无 2. 创建父工程…

如何在容器内高效编程?

作者 | Daniel Lemire译者 | 苏本如,责编 | 郭芮头图 | CSDN 下载自东方IC出品 | CSDN(ID:CSDNnews)以下为译文:我个人的编程环境中包括了一些服务器、笔记本电脑和台式电脑。我的服务器是在不同的时间购买和配置的&am…

(企业案例)Nacos Config 进阶使用

文章目录一、SpringBoot 使用 Nacos Config 实现多环境切换1. 现象2. 引入依赖3. 添加bootstrap.yaml配置文件4. 配置对应关系图5. 文件格式简述6. 启动nacos7. 添加生产配置8. 添加测试controller9. 启动Springboot工程并观察到如下日志则为成功10. 浏览器验证11. 调整激活环境…

OceanBase如何获得TPC-C测试第1名?

阿里妹导读:TPC-C是TPC组织(国际事务性能委员会)制定的关于商品销售的订单创建和订单支付等的基准测试标准,是数据库联机交易处理系统的权威基准测试标准。 蚂蚁金服自研的分布式关系数据库OceanBase获得TPC-C测试第一名后&#…

由一次磁盘告警引发的“血案”——你知道 du 和 ls 区别吗?

来源 | 程序猿石头责编 | Carol封图 | CSDN下载自视觉中国图来源于 SkyPixel知道为什么会有上面的结果吗?什么又是稀疏文件?这篇文章将为你揭秘。问题背景确切地说,不是收到的自动告警短信或者邮件告诉我某机器上的磁盘满了,而是某…

如何优化大规模推荐?下一代算法技术JTM来了

阿里妹导读:搜索,推荐和广告是互联网内容提供商进行价值创造的核心业务,在阿里巴巴的电子商务交易平台上,搜索,推荐和广告业务同样具有举足轻重的意义和价值。现在,阿里推荐技术又双叒优化了,新…

Sentinel 基于Nacos规则持久化-推模式

文章目录一、推模式架构图二、原理简述2.1. 组件版本关系2.2. 控制台推送规则三、Sentinel控制台改造3.1. 下载源码3.2. 修改pom3.3. 重要文件复制3.4. 注册地址修改3.5. 请求实例需改3.6. 菜单新增四、编译 & 启动4.1. 先启动nacos4.2. 编译打包4.3. 创建微服务 &&…

都听我的,会养猪种菜的工程师最帅了!

来了!今天,阿里数字农业事业部在黑龙江首次亮相,并且定了一个小目标:到2022年,阿里涉农产品全年网络销售额破4000亿元。 黑龙江省牡丹江市的阿里巴巴响水大米种植基地,又到了收割季 数字农业事业部将建立产…

清华硕士一针见血:这些才是机器学习必备的数学基础

现如今,计算机科学、人工智能、数据科学已成为技术发展的主要推动力。无论是要翻阅这些领域的文章,还是要参与相关任务,你马上就会遇到一些拦路虎:想过滤垃圾邮件,不具备概率论中的贝叶斯思维恐怕不行;想试…

如何查看使用 Cloud Toolkit 部署应用的实时日志

之前,我们介绍了《在 IntelliJ IDEA 中部署应用到服务器》。最新版本 Cloud Toolkit 新增了对远程服务器应用部署时,实时日志的查看功能。功能预览如下: 打开应用部署的配置界面,如上图所示,点击「Advanced」标签页&am…

这 10 个云计算错误,会让你的业务一蹶不振!

作者 | John Edwards译者 | 火火酱,责编 | Carol出品 | CSDN 云计算(CSDNcloud)封图 | CSDN 付费下载自视觉中国乐观主义者们总爱说:“乌云总是镶着金边的”,但他们没有说的是,在乌云下常有狂风、暴雨、闪电…

MySQL 8.0.26 简易配置安装教程 (windows 64位)

文章目录一、软件下载解压1. 官网下载2.下载完成后解压二、mysql配置2.1. my.ini2.2. 初始化MySQL2.3. 安装MySQL服务2.4. mysql已经安装过了2.5. 启动MySQL的服务三、密码修改3.1. 登录mysql3.2. 修改密码3.3. 退出mysql四、客户端连接mysql4.1. Navicat4.2. 登录mysql4.3. 操…

类与字节码技术

类文件结构 1.1 魔数 0-3字节,表示它是否是【class】类型的文件 ​ |java| 0000000 ca fe ba be 00 00 00 34 00 23 0a 00 06 00 15 09 1.2 版本 4-7字节,表示类的版本00 34 (52) 表示是Java8 0000000 ca fe ba be 00 00 00…

支付宝 App 是如何建设移动 DevOps 的?

本文系InfoQ对蚂蚁金服技术专家洪锋的采访,洪锋老师即将在 QCon 上海站 2019 分享《移动研发 DevOps 在支付宝 App 内的落地实践》,欢迎关注。 微软 MSDN 上的一篇文章有这样一段话:“移动应用的理想环境需要满足两个条件,一是可以…

淘宝端智能演进和思考

今天分享内容包括三部分,第一是端智能整体趋势和淘宝应用现状,第二是淘宝在应用端智能过程中面临的问题和挑战,以及我们的应对和解决思路,我们构建了端到端的完整技术体系,第三是开源推理引擎 MNN 的最新情况。 01、端…

从零开始入门 K8s | 可观测性:你的应用健康吗?

一、需求来源 首先来看一下,整个需求的来源:当把应用迁移到 Kubernetes 之后,要如何去保障应用的健康与稳定呢?其实很简单,可以从两个方面来进行增强: 首先是提高应用的可观测性;第二是提高应…

技术差的程序员,90%都输在这点上!骨灰级开发:其实都是在瞎努力!

01从未得到过重视的问题“一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法”。可能有人会以为这是段子,而有过开发经验的都知道,这就是程序员的真实写照!而数学不好的程序员,我想你开发过程中&…

layui 单选项 点击显示与隐藏 很实用

html <div class"layui-form-item"><label class"layui-form-label">类型</label><div class"layui-input-block"><input type"radio" name"type" lay-filter"type" value"0&quo…

2. 字节码指令

2. 字节码指令 2.1 入门 public cn.itcast.jvm.t5.HelloWorld();构造方法的字节码指令 ​ 2a b7 00 01 b1 2a> aload_0加载slot 0的局部变量&#xff0c;即this&#xff0c;做为下面的invokespecial 构造方法调用的参数b7 >invokespecial预备调用构造方法&#xff0c…

它是真实的“盗梦空间”?在这里,一切都可能是数据

阿里妹导读&#xff1a;位于杭州阿里巴巴西溪园区旁边的大型商场“亲橙里”2018年正式开业。和传统的线下综合型商场不同的是&#xff0c;亲橙里从规划之初就定位为数字化商场&#xff0c;通过植入自研的IBOS平台完成建筑内的所有子系统的接入&#xff0c;而让建筑和建筑内的设…