介绍:Serverless架构是否不需要服务器?要回答这个问题,我们需要了解Serverless是什么。什么是无服务器?无服务器架构是否消除了对服务器的需求?要回答这个问题,我们需要了解Serverless是什么。Serverless架构在近些年的一些技术架构大会的演讲题目中频频出现。很多人只是从字面上理解Serverless——无服务器架构,但它的真正含义是开发者不再需要过多考虑服务器。当然,这个问题并不是说服务器完全去掉了,而是我们依赖了第三方资源服务器的后端。从2014年开始,经过这么多年的发展,各大云服务商基本都提供了Serverless服务。例如,使用AmazonWebServices(AWS)Lambda计算服务来执行代码。Serverless服务在国内的发展比AWS晚一点,目前也有对Serverless的支持。比较著名的云服务提供商包括阿里云和腾讯云。他们提供的服务大同小异:函数计算、对象存储、API网关等,都非常好用。架构是如何演变成Serverless的?看看云计算在过去几十年中是如何发展的。总的来说,云计算的发展分为三个阶段:虚拟化的出现、虚拟化在云计算中的应用、容器化的出现。云计算的快速发展集中在过去十年。概括起来有以下里程碑事件:通过虚拟化技术,将大型物理机虚拟化为单个VM资源。将虚拟化集群迁移到云计算平台,只做简单运维。按照运行空间最小化的原则,将每个VM划分为更细的Docker容器。构建基于Docker容器的Serverless架构,不需要管理任何运行环境,只需要编写核心代码。从裸机的部署应用,到Openstack架构和虚拟机的划分,再到容器化部署,这是近几年Docker和Kubernetes流行的典型,进一步发展到用一个微服务或者微函数来实现响应一个Client请求,这种方式是云计算发展的自然过程。这个发展过程也是IT架构的演进。在此期间,它经历了一系列代际技术变革,将资源划分得更细,运营效率更高,软硬件维护更容易。IT架构演进主要有以下特点:硬件资源使用粒度越来越小,资源利用率越来越高,运维工作逐渐减少,业务更加聚焦代码层面.1.ServerlessArchitecture)和FunctionsasaService(FaaS)的组成,Serverless是由开发者实现的服务端逻辑,运行在一个无状态的计算容器中,由事件触发,完全由第三方管理。2、什么是BaaS?Baas英文翻译成中文的意思:后端即服务,其应用架构由大量的第三方云服务器和API组成,使得应用中服务器的逻辑和状态由服务来管理供应商。比如在我们典型的单页应用SPA和手机APP富客户端应用中,前后端交互主要是基于RestAPI调用。只需要调用服务商的API就可以完成相应的功能,比如常见的身份验证、云端数据/文件存储、消息推送、应用数据分析等。3、什么是FaaS?FaaS可以称为:Functionasaservice。开发者可以直接部署服务业务逻辑代码,运行在第三方提供的无状态计算容器中。开发者只需编写业务代码,无需关注服务端,代码的执行由事件触发。其中,AWSLambda是目前最好的FaaS实施之一。Serverless应用架构是一种结合了BaaS和FaaS的应用。用户只需要关注应用的业务逻辑代码,编写函数细粒度地运行在FaaS平台上,并与BaaS第三方服务集成,最终构建一个完整的系统。整个系统过程无需关注服务器。Serverless架构的特点总的来说,Serverless架构有以下几个主要特点:实现了细粒度的计算资源分配,不需要预先分配资源;云服务商资源的解耦是购买,让Serverless架构降低运维压力,无需预估和购买服务器硬件。Serverless架构让开发者更专注于业务服务的实现,中间件和硬件服务器资源都由云服务商托管。这同时降低了开发成本、扩展和按需计费,而不管基础设施如何。Serverless架构也给前端带来了便利。降低了大前端深入业务端的成本。开发者只需要专注于业务逻辑,前端工程师轻松转为全栈工程师。Serverless的应用场景有哪些?应用场景与Serverless架构的特点密切相关。根据Serverless的这些一般特性,我们总结出以下典型的使用场景:弹性伸缩、大数据分析、事件触发等。1.弹性伸缩由于云函数的事件驱动和单事件处理的特点,云函数通过自动伸缩支持业务的高并发。针对实际的业务事件或请求数量,云函数自动弹性适当处理实例承载实际业务量。当没有事件或请求时,没有正在运行的实例,没有资源被占用。比如视频直播业务,直播观众不固定,需要考虑适度的并发和灵活性。直播不能24小时在线,有明显的业务访问高峰和低谷。直播是事件或公众爆发的场景。更新速度快,版本迭代快。要尽快完成新热点的技术升级。2、大数据分析数据统计本身只需要少量计算,离线计算生成图表。数据在空闲时处理,或者在不需要考虑任何延迟时处理。开发者编写代码,目前支持Java、NodeJS、Python等多种语言;通过API或SDK,或通过控制台页面,或通过命令行工具FcliUpload将代码上传至函数计算;通过API&SDK触发函数计算的执行,也可以通过云产品的事件源触发函数计算的执行;在执行过程中,函数计算会根据用户请求量动态扩容函数计算,以保证峰值请求的执行。过程对用户透明、不可察觉;函数执行结束。3.事件触发事件触发是指云函数由事件驱动。事件的定义可以是指定的http请求,也可以是数据库的binlog日志,消息推送等。通过Serverless架构,在控制台配置事件源通知,编写业务代码。函数计算加入业务逻辑,函数计算会在业务高峰期动态伸缩。这个过程不需要管理软件和硬件环境。视频、OSS图片等常见场景,在上传后,会通过后续的过滤、转换、分析,触发一系列后续处理,如非法内容、容量告警等。小结回到文章开头,Serverless架构并没有淘汰服务器,而是依赖于第三方云服务平台。服务端逻辑运行在无状态计算容器中,其业务级状态供开发者使用。记录数据库和存储资源。Serverless无服务器架构有其适合的应用场景,但也有局限性。总的来说,serverless架构还不够成熟,很多地方还不够完善。Serverless依赖于云服务提供商提供的基础设施。目前,云服务提供商无法实现真正??的平台高可用。Serverless资源虽然便宜,但是在生产环境中搭建应用系统就比较复杂。云计算还在发展,基础设施服务越来越完善,开发者会更加关注业务逻辑的实现。云计算转移了平台、中间件、运维部署的责任,也降低了中小企业上云的成本。让我们共同期待Serverless架构的未来。作者:aoho原文链接本文为阿里云原创内容,未经允许不得转载
