快速上手 Serverless | 入门第一课

简介: 本文从云计算抛砖引玉,详解 Serverless 的典型应用场景和一些产品介绍。

一、 从云计算到 Serverless

自世界上第一台通用计算机 ENIAC (图左)诞生以来,计算机科学与技术的发展就从未停止过前进的脚步。2003年-2006年,谷歌先后发表了这三篇非常经典的论文(图右),指明了HDFS(分布式文件系统)、MapReduce(并行计算)和HBase(分布式数据库)的技术基础及未来机会,为云计算发展方向奠定了基础。 

所以说从。ENIAC 到谷歌的3篇经典论文,计算机科学与技术的发展是在不断的前进。而到了云计算时代,可以说计算机科学与技术的发展是在飞速的前进。

云计算的概念

对于云计算的界定,学术界的和工业界有不同的理解,回顾下云计算的发展历程:

1、2006年,谷歌首席执行官在搜索引擎大会上首次提出云计算的概念;同年亚马逊将其弹性计算能力作为云服务器进行售卖,标志着云计算这种新兴商业模式正式诞生;

2、2008年,微软发布云计算平台 Windows Azure,尝试将技术和服务托管化、线上化;

3、2009年,《伯克利云计算白皮书》发表,文中明确指出云计算的定义:云计算包含互联网上的应用服务以及在数据中心提供这些服务的软硬件设施。

明确定义后,伯克利提出了关于云计算展望,同时也指出云计算所面临的10个问题,如服务的可用性,数据的丢失或者数据安全性和可审计性等。

二、Serverless 概念

Serverless 定义

Serverless 翻译成中文是无服务器,所谓的无服务器并非是说不需要依靠服务器等资源,而是说开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上,同时计算资源也开始作为服务出现,而不是作为服务器的概念出现,Serverless是一种构建和管理基于微服务架构的完整流程,允许用户在服务部署级别而不是服务器部署级别来管理用户的应用部署。与传统架构的不同之处在于,它完全由第三方管理,由事件触发,存在于无状态(Stateless),暂存(可能只存在于一次调用的过程中)在计算容器内,Serverless 部署应用无须涉及更多的基础设施建设,就可以基本实现自动构建、部署和启动服务。

Serverless 架构

左边是传统意义上来说比较常见的 Web 应用的架构, 它是由客户端、服务端、数据库等元素组成。

以往做此类项目时,开发者需要在服务端做很多操作,如购买服务器、考虑购买数量、宽带、操作系统、部署在哪几个区、环境、软件等等问题。随后还需要人为对这台服务器的健康要实时去监控,不断的去感知。

而在 Serverless 架构下,开发者只需要关心我们的业务代码即可,在项目整个的开发、上线、维护过程中,用户并不需要关注服务器层面的维护,也无需为流量的波峰波谷进行运维资源的投入,这一部分将由云厂商来负责;同时在 Serverless 架构下,用户也无需为闲置资源进行额外支出。

Serverless 优点

 Serverless 架构拥有零服务器运维和空闲时无计算成本等特点;其交付心智可以体现为将复杂留给云厂商,把便捷带给更多开发者。综上所述 Serverless 的优势可以体现在如下:

1)降本提效

云厂商为使用者提供服务器的管理和运维工作,为使用者提供数据库、对象存储等 Baas 服务,让用户将更多的注意力放在自身的业务逻辑上,提升研发效率,缩小项目的创新周期,同时 Serverless 的使用者不用更多的担心自身的服务器运维,基础设施的运维等工作,更不用为这部分有额外的费用支出,无需承担更多的运维工作成本等;Serverless 架构提供了较为完善、全面的按量付费模型,使用者只需要按照自己实际使用的资源量付费即可;Serverless 架构在这一层面有较为明确的优势。

  • 降低运维成本
  • 降低人力成本
  • 提高研发效率
  • 降低创新周期
  • 按量付费、降低支出成本

2)安全、方便、可靠

把更专业的事情交给更专业的人去做,Serverless 架构将更多服务器运维、安全相关的事情交给云厂商来做,大规模提升项目整体的安全性;同时,Serverless 架构明显比其它架构更简单,因为更多的 Baas 服务都是云厂商提供的,使用者将会管理更少的组件,这意味着 Serverless 的使用者可以更简单更方便的管理项目;同时 Serverless 架构拥有着弹性能力,即自动伸缩的能力,该能力可以让项目在流量增加的时候,自动进行扩容,在流量降低的时候,自动进行缩容,进而保证整个业务的安全、稳定。专业团队为用户保障安全,保障性能,这使得 Serverless 架构:

  • 安全风险更低
  • 资源开销更小
  • 符合“绿色”计算思想
  • 更加方便管理
  • 弹性伸缩,服务更可靠

总体来说,托管给云厂商之后呢,不仅可以大规模的提升项目整体的安全性和稳定性,Serverless 架构也是明显比其他架构更为简单的。

面临的挑战

Serverless架构虽然出现多年但是真正步入“元年”并得以快速发展的时间其实很短暂;因此Serverless架构拥虽有诸多优点,但是也面临一些困难和挑战,包括但不限于冷启动问题严重、开发工具不完善、厂商锁定等现象。但是近些年 Serverless 架构热度持续上升,人们对它寄予厚望,各个厂商也加大投入,相信目前的问题都是暂时的,Serverless 架构会朝着更好用、更易用的方向不断演进。

Serverless 架构为使用者提供全新的编程范式的同时,当用户在享受 Serverless 带来的第一波技术红利的时候, Serverless 的缺点也逐渐地暴露了出来,例如函数的冷启动问题,就是如今颇为严峻且备受关注的问题。由于 Serverless 架构具有弹性伸缩的能力, Serverless 服务的供应商会根据用户服务的流量波动进行实例的增加或缩减,其示意图如图所示。

以阿里云函数计算为例,当系统接收到第一个触发函数的事件时,它将启动一个容器来运行代码。如果此时收到了新的事件,而第一个容器仍在处理上一个事件,平台将启动第二个代码实例来处理第二个事件, Serverless 架构的这种自动的零管理水平缩放,将持续到有足够的代码实例来处理所有的工作负载为止。当然,不仅仅是并发情况下会比较容易触发函数冷启动,在函数的前后两次触发时间间隔超过了实例释放时间的阈值时,也会触发函数的冷启动,如下图所示。

然而这里就涉及一个问题,当新的请求或者说是事件到来时,在广义上可能出现以下两种情况:

  1. 存在空闲且可以直接复用的实例:热启动。
  2. 不存在空闲且可以直接复用的实例:冷启动。

在本地执行一个函数,通常情况下是环境都已经准备妥当,每次执行只需要执行函数对应的方法即可,但是 Serverless 架构下并不是,本地与 FaaS 的函数调用区别示意图如图所示。

三、典型应用场景

Serverless 架构自提出到现在经过若干年的发展,已经在很多领域中有着非常多的最佳实践,CNCF 总结出一些 Serverless 架构所适合的场景。

实时文件处理

视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如,对于用户上传的图片,可以使用多个函数对其分别处理,包括图片的压缩、格式转换等,以满足不同场景下的需求。

数据ETL处理

通常要对大数据进行处理,需要搭建 Hadoop 或者 Spark 等相关大数据的框架,同时要有一个处理数据的集群。通过 Serverless 技术,只需要将获得到的数据不断的存储到对象存储,并且通过对象存储相关触发器触发数据拆分函数进行相关数据或者任务的拆分,然后再调用相关处理函数,处理完成之后,存储到云数据库中。

函数计算近乎无限扩容的能力可以使用户轻松地进行大容量数据的计算。利用Serverless架构可以对源数据并发执行多个 mapper 和 reducer 函数,在短时间内完成工作,整个流程可以简化为以下图中所示;相比传统工作方式,使用 Serverless 架构更能避免资源的闲置浪费,从而节省成本。

实时数据处理

通过 Serverless 架构所支持的丰富的事件源,通过事件触发机制,可以通过几行代码和简单的配置对数据进行实时处理,例如:对对象存储压缩包进行解压、对日志或数据库中的数据进行清洗、对 MNS 消息进行自定义消费等。

机器学习(AI推理预测)

在AI模型完成训练后,对外提供推理服务时,可以使用 Serverless 架构,通过将数据模型包装在调用函数中,在实际用户请求到达时再运行代码。相对于传统的推理预测,这样做的好处是无论是函数模块还是后端的 GPU 服务器,以及对接的其他相关的机器学习服务,都是可以进行按量付费以及自动伸缩,从而保证性能的同时也确保了服务的稳定。

Web 应用/移动应用后端

Serverless 架构和云厂商所提供的其他云产品进行结合,开发者能够构建可弹性扩展的移动或 Web 应用程序,轻松创建丰富的无服务器后端,而且这些程序可在多个数据中心高可用运行,无需在可扩展性、备份冗余方面执行任何管理工作。

音视频转码

在视频应用、社交应用等场景下,用户会上传一些视频,通常上传的视频会进行一些转码,包括转换为不同的清晰度。 Serverless 技术与对象存储相关产品组合后,可利用对象存储相关触发器,即上传者将视频上传到对象存储中,触发 Serverless 架构的计算平台(FaaS 平台)对其进行处理,处理之后将其重新存储到对象存储中,这个时候其他用户就可以选择编码后的视频进行播放,还可以选择不同的清晰度,如图所示。

综上所述, Serverless 架构的典型应用场景更多是由 Serverless 架构的特点决定的。当然,随着时间的不断推移, Serverless 架构也在不断演进,特点会更加突出,劣势会被弥补。

四、Serverless 产品介绍

公有云产品

自 Serverless 概念被提出,其从不为人知到引人注目经历了数年,Serverless 架构也在飞速发展,在 Serverless 架构中,计算机服务通常由 Faas 平台提供。AWS Lanmbda、Google Cloud Functions、阿里云函数计算等都是有代表性的工业化产品。

阿里云 Serverless

Serverless 架构对底层的技术基础要求很高,而从图中可以看出阿里云关于 Serverless 架构的整体形态是十分完善的,并且一直在自建自研的路上不断精进。阿里云 Serverless 产品在阿里巴巴经济体内部已经实现落地,在淘宝、支付宝、闲鱼、飞猪、钉钉,包括在语雀都有很好的体现。

函数计算是国内生态最完整、功能最丰富的 Serverless 产品,开发者一步上云、一键 Serverless 化将成为现实。上图是阿里云 Serverless 从产品维度的一些分析,下图则表达了 Serverless 从功能或者架构,底层基础设施,和在计算层面所展现出来的典型业务能力。例如说弹性伸缩、负载均衡、流量控制、高可用部署、版本灰度故障恢复等。像在运行时的容器镜像服务,阿里云在去年便已推出,随后AWS 、腾讯等,也都相继推出容器镜像。图中诠释了阿里云 Serverless 是如何通过底层,逐渐的向上层建设,让开发者可以更简单、更方便的使用 Serverless 的全过程。

开源产品

不仅仅在工业界有诸多厂商不断为 Serverless 架构努力,在开源领域也有诸多优秀的 Serverless 项目。包括 OpenWhisk、Fission、Knative 以及 Kubeless 等在内的众多优秀的开源 FaaS 平台都已得到 CNCF 的认可。

讲师简介:刘宇(江昱)国防科技大学电子信息专业在读博士,阿里云 Serverless 产品经理,阿里云 Serverless 云布道师,CIO 学院特聘讲师。

本文整理自【ServerlessLive 系列直播】9 月 22 日场

直播回放链接:0 基础晋级 Serverless 高手课-阿里云开发者社区

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

钉钉宜搭邵磊:钉钉宜搭低代码加速业务互联 让改变发生

简介: 近日,在2021“低代码技术发展与应用线上研讨会”上,钉钉宜搭产品总监邵磊带来了“钉钉宜搭低代码加速业务互联 让改变发生”的主题演讲,详细介绍了钉钉宜搭低代码产品的六大互联能力。 宜搭是今年1月份正式上线到钉钉&…

Cloudera发布全球企业数据成熟度报告,混合云趋势中有效数据战略是关键

编辑 | 宋慧 出品 | CSDN云计算 2022年3月初,企业数据云公司Cloudera近日发布与技术市场研究公司Vanson Bourne联合编写的全球企业数据战略研究报告,报告分别洞察了数据的使用和价值、企业数据战略、企业数据发展趋势、企业业务计划四大部分的内容&…

基于海量日志和时序数据的质量建设最佳实践

简介: 在云原生和DevOps研发模式的挑战下,一个系统从开发、测试、到上线的整个过程中,会产生大量的日志、指标、事件以及告警等数据,这也给企业质量平台建设带来了很大的挑战。本议题主要通过可观测性的角度来讨论基于海量日志和时…

阿里云RDS深度定制-XA Crash Safe

简介: 近几年,随着分布式数据库系统的兴起,特别是基于MySQL分布式数据库系统,会用到XA来保证全局事务的一致性。众所周知,MySQL对XA事务的支持是比较弱的,存在很多问题。为了满足分布式数据库系统对XA事务的…

java集合表_java集合类散列表

哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。…

庖丁解牛|图解 MySQL 8.0 优化器查询转换篇

简介: 本篇介绍子查询、分析表和JOIN的复杂转换过程 一 背景和架构 在《庖丁解牛-图解MySQL 8.0优化器查询解析篇》一文中我们重点介绍了MySQL最新版本8.0.25关于SQL基本元素表、列、函数、聚合、分组、排序等元素的解析、设置和转换过程,本篇我们继续…

Java 底层知识:什么是 “桥接方法” ?

作者 | 小志来源 | 程序员小灰导语笔者在最近的日常工作中,因业务需要,研究 Java 字节码层面的知识。具体是,需要根据类字节码,获取特定方法名的方法入参,此方法名在源码中只有一个。但是在实际使用中发现:…

ACMMM2021|在多模态训练中融入“知识+图谱”:方法及电商应用实践

简介: 随着人工智能技术的不断发展,知识图谱作为人工智能领域的知识支柱,以其强大的知识表示和推理能力受到学术界和产业界的广泛关注。近年来,知识图谱在语义搜索、问答、知识管理等领域得到了广泛的应用。 作者 | 朱渝珊 来源 |…

带你体验云原生场景下 Serverless 应用编程模型

简介: 阿里云 Knative 基于 ASK 之上,在完全兼容社区 Knaitve 的同时对 FC、ECI 工作负载进行统一应用编排,支持事件驱动、自动弹性,为您提供统一的 Serverless 应用编程模型。 背景 阿里云 Serverless Kubernetes(A…

CSO全球网络安全大会来了,权威奖项征集中

全球网络安全顶级峰会——IDC 2022 全球CSO网络安全大会(以下简称大会)将于2022年6月首次落地中国。本届大会以“聚力数据安全 赋能企业现代化”为主题,由Foundry(IDG)/IDC联合上海市信息安全行业协会共同举办&#xf…

stream of java_Java 8 新特性-Stream更优雅的处理集合入门

Java 8 新特性之——Stream一. 简单介绍Stream是Java 8提出了的一种新的对集合对象功能的增强。它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常高的可读性,优雅性!!举个例子来说…

MySQL深潜|剖析Performance Schema内存管理

简介: 本文主要是通过对PFS引擎的内存管理源码的阅读,解读PFS内存分配及释放原理,深入剖析其中存在的一些问题,以及一些改进思路。 一 引言 MySQL Performance schema(PFS)是MySQL提供的强大的性能监控诊断工具,提供…

敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】

本文实例讲述了Java实现的打地鼠小游戏。分享给大家供大家参考,具体如下:这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下。先来看看运行效果:具体代码:Mouse.jav…

深入理解 Docker 网络原理

作者 | 渡、来源 | CSDN博客Docker网络原理容器是相对独立的环境,相当于一个小型的Linux系统,外界无法直接访问,那他是怎么做的呢,这里我们先了解下Linux veth pair。1. Linux veth pairveth pair是成对出现的一种虚拟网络设备接口…

全网首发|阿里资深技术专家数仓调优经验分享(上)

简介: 本篇文章总结了AnalyticDB表的设计的最佳经验、数据写入的最佳经验、高效查询的最佳实践,以及一些常见的问题。 随着云原生数据仓库AnalyticDB for MySQL(下文统一简称:AnalyticDB)在阿里集团各个业务线、社会上…

重大技术突破首次发布!十问解密云栖大会!

简介: 2021年10月19日,杭州,云栖大会正式开幕。大会上,阿里巴巴正式发布自研云芯片倚天710,这是阿里云推进“一云多芯”策略的重要一步,也是阿里第一颗为云而生的CPU芯片,将在阿里云数据中心部署…

Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?

作者 | 码哥来源 | 码哥字节原始数据存储在 DB 中(如 MySQL、Hbase 等),但 DB 的读写性能低、延迟高。比如 MySQL 在 4 核 8G 上的 TPS 5000,QPS 10000 左右,读写平均耗时 10~100 ms。用 Redis 作为缓存系统正好可以…

在 Kubernetes 集群中使用 MetalLB 作为 Load Balancer(上)

作者 | Addo Zhang来源 | 云原生指北TL;DR网络方面的知识又多又杂,很多又是系统内核的部分。原本自己不是做网络方面的,系统内核知识也薄弱。但恰恰是这些陌生的内容满满的诱惑,加上现在的工作跟网络关联更多了,逮住机…

Java程序员情人节_盘点程序员情人节的表白,前端程序员最浪漫,后端不服来战...

今天是 2 月 14 日情人节,我看公众号后台有好多人在回复关键字:情人节表白代码。我想,我作为大家的校长,必须给大家送一波福利代码啊!我是真没想到,竟然很多程序员都想用代码表白,还整的挺浪漫的&#xff0…

GRPC: 如何实现分布式日志跟踪?

简介: 本文将介绍如何在 gRPC 分布式场景中,实现 API 的日志跟踪。 介绍 本文将介绍如何在 gRPC 分布式场景中,实现 API 的日志追踪。 什么是 API 日志追踪? 一个 API 请求会跨多个微服务,我们希望通过一个唯一的 ID…