热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

serverless是不是下一代计算范式

这篇文章给大家介绍serverless是不是下一代计算范式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。引子刚过去的HC2020,

这篇文章给大家介绍serverless是不是下一代计算范式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

引子

刚过去的HC2020,华为面向多样化算力的时代,发布了DC分布式计算的三个开发套件,其中一个是元戎组件。元戎是基于函数计算的分布式并行应用开发框架,希望能够帮助开发者定义DC分布式计算的开发模式和运行模式。关于的这里的函数计算,不断有同事询问这个和Serverless的关系或者区别呢?

在公司不同的场景,推动serverless技术的使用也有两年时间了,现在也是借这个引子,说说自己的理解。

1.Serverless的本质

Serverless当前相对比较正式的定义(CNCF白皮书)有几个特征:是云计算形态的进一步发展,相对于当前云计算,它带来两个关键好处:NoOPSPay as You Run。现阶段Serverless技术的实现形态,以AWS发布的Lambda为代表,其他还包括微软Azure Function,谷歌Cloud Functions等。在2019年伯克利发布《Cloud Programming Simplified》展望中,把Serverless定义为云计算的下一代计算范式。云计算从微服务技术主导到Serverless技术的演进,我们看看云计算的本质就可以比较好的理解这些技术背后的逻辑,也就能理解为什么伯克利继成功断言云计算的兴起之后,把目光聚焦在Serverless技术上呢?

serverless是不是下一代计算范式

图1:当前serverless技术的阶段和形态

1.1云计算兴起到云原生生态的演进

云计算的兴起,在CPU硬件能力大力发展之后,得益于OS+ISV的软件生态和虚拟化技术的成熟。云计算巧妙地延续OS+ISV生态,把ISV可以无缝地迁移到云上。云vendor利用虚拟化技术,对客户提供IAAS服务。满足客户:1、应用软件运行条件没有发生变化;2、不用维护物理主机,只需要关注应用软件本身。

首先,从云计算的服务形态来看,对于企业应用及其基础设施,现在变成了用户和基础设施提供商两个层次,如下图所示。这个逻辑层次的划分很重要,在软件生态中原来基础设施平台和应用软件都是由用户自己管理和维护,这时出现了专业的平台提供者的角色,来提供基础设施。

serverless是不是下一代计算范式

图2:云计算带来基础设施提供商的概念

其次,我们回到云计算兴起的过程,如图三所示,云Vendor利用虚拟化技术的成熟,没有改变原来OS+ISV的生态玩法,对用户提供IAAS服务,这样用户的软件几乎是无缝迁移到云厂商的基础设施之上的。这样云厂商快速地聚集了一些企业用户上云,在这个阶段之后,云厂商比如AWS快速创新,在IAAS服务之外,云中间件,云安全,第三方服务集成大量的云上应用运行和业务逻辑服务。逐渐构建起云原生生态所需要的生态环境。在这个第一阶段之后,容器技术持续演进,云原生的软件生态开始形成,可以明显地看到软件生态的界面从GuestOS上升到容器的层次,应用软件的部署也是由平台提供商来完成,用户不用再关注基础设施运行的操作系统是什么了。这个软件栈中云厂商即平台提供商cover的范围又上升了一步,这个变化既是云原生生态带来的变化,又有云厂商商业逻辑的需要在里面。

serverless是不是下一代计算范式

图3:云计算的产生和演进示意图

为什么这么说呢?可以看下一节。

1.2云计算的商业逻辑建立在规模经济之上

当前云计算集中在几个云厂商,而且成功的厂商都是在自有的消耗大量基础设施的业务基础之上,云业务才逐渐扩大发展起来的,比如,AWS和阿里云基于自有的电商服务平台。谷歌云和Azure在分别找到自己的移动用户服务和SAAS服务的规模运营之后,两家也是逐渐占据市场份额。

观察云计算发展过程,我们可以说云计算厂商遵循规模经济的发展模式。结合规模经济,有两个重要的现象或者规律,了解这两个现象,可以很好地帮助我们了解云技术的演进方向。

首先,可以解释为规模经济性,简单地说,随着生产规模(云计算)扩大,平均单位产出(服务收益)成本(基础设施成本)趋于下降。英国的杰弗里·韦斯特研究城市的人口和产业的发展规律,总结为规模经济体的产出呈超线性,而成本遵循亚线性规律,如下图所示。

了解到这个现象,我们可以理解为什么云厂商极力追求规模。AWS 2002年推出,持续推进云服务,到2013年AWS发布财报,才进入规模经济的盈利期。AWS现在每年投入100亿美金的CAPS,持续构建云规模,全球规模>500W台服务器。基于规模成本的优势,构建了长期价值成本和技术生态驱动的良性循环,掌握了云服务的定价策略,19年reInvent宣称实现了70+次的降价正常,同时还能获取云计算业务20+%的营业利润率。

serverless是不是下一代计算范式

图4:云计算遵循规模经济性的现象

其次,可以解释为规模的有效性。生产规模不断扩大,当基础设施单位成本降到最低时,达到最佳生产规模,如果生产技术没有发生变革,这时再继续扩大生产规模,平均单位产出成本转而逐渐上升。当前进入规模效应良性循环的AWS,其capex/收入比基本保持在40-50%左右,虽然相对稳定,也需要寻求继续成本下降的空间。

serverless是不是下一代计算范式

图5:规模经济LAC曲线

而同时,当前云厂商主体服务IAAS,为租户提供虚拟机资源,都遇到了资源利用率低的问题,包括CPU利用率和内存利用率。业内数据:云厂商提供的数据中心,CPU资源利用率不高于20-30%。租户购买固定VCPU和内存配置的虚拟机,云厂商实际在平台使用的是装箱算法,按照租户的需求,装配到数据中心的空余空间中去。租户按照其业务峰值购买了资源,在这种情况下,大量租户资源长时间处于业务非峰值态,云厂商对于资源利用率这个问题基本都是无能为力。而同时,云厂商自运营的业务,通过不同业务的混部,SLA的调度等技术,比如谷歌很早就已经宣称Brog的改进版可以在数据中心获得90%的CPU资源利用率。这样一个现状,也是云厂商不约而同地提出共享计算实例的原因,比如AWS T实例等。通过用户SLA策略,在用户知情的情况下,获得对VCPU的共享的控制权,实现高CPU利用率。

回到前面我们提到用户和平台提供商两个角度。首先,云厂商希望能够获得更多的对资源的控制权,让超大规模的云计算继续享有规模的经济性,能够做到单位资源成本继续下降。其次,租户担一方面心其业务运行的平稳性,另一方面也希望能够更加聚焦业务本身。所以我们可以理解了云计算技术的方向:云厂商管理的软件栈层次肯定会越来越高,云计算技术必须能够解决用户业务的弹性和高可扩展。云厂商获得应用运行资源的最大控制权,追求高资源利用率和低成本,租户获得业务SLA保证的应用。

Serverless技术正是云厂商的基于规模经济的一个选择。

1.3 Serverless技术是匹配云原生规模经济的选择

如图3所示,Serverless在容器Runtime之后,进一步实现计算抽象,云厂商负责管理的软件栈进一步提升到Runtime。这里笔者把函数计算和Serverless技术分开。函数计算是一种计算范式的抽象,把计算抽象进一步为两个层次,函数(代码逻辑)和函数运行时(函数运行需要的资源,库等),即

函数计算= 函数+函数运行时

Serverless计算也是利用函数计算上述的抽象,在云原生生态下,进一步让用户聚焦到业务代码逻辑,直接使用云厂商提供的Runtime,相比容器,云厂商管理的软件栈又提升了一个层次。笔者把Serverless技术归到云原生的技术,因为serverless为租户提供服务,必须依赖云厂商提供的大量后台的服务及其运行时,即

Serverless= FaaS+BaaS

函数计算这个层次的抽闲,借助于终端用户或IOT等事件型的应用,将代码和其运行时分离,云厂商提供函数代码的运行时及其物理资源。如下图所示,平台提供商获得了软件栈最大可控制的范围,而用户只需要关注其代码。因此,函数粒度的应用,让平台提供商获得了最大的技术空间,基于这个空间,让云计算的规模成本进一步得到下降,所以Serverless技术是云厂商必选的选择项。

serverless是不是下一代计算范式

图6:Serverless使平台提供商获得软件栈中最大的可控制技术空间

然而,在当前阶段的Serverless,适用范围还主要是事件式,短时间任务型的应用。用户编写任务的函数,在执行时间,资源上有一个约束。平台提供商基于此获得最大的调度权限,所以提供了按次收费,按需收费的定价策略。在海量终端的服务驱动的场景获得很好的应用,充分发挥了serverless按需弹性,按需计费的好处。显然这样的应用范围,是不足以满足云厂商的期待的。所以从Serverless= FaaS+BaaS,另外一个BaaS方面,云厂商要推动serverless计算的快速演进。

Serverless 官方定义中从用户角度看到的两个关键特征NoOPS和Pay as You Run。符合这两个特征的形态也是Serverless技术,所以Serverless技术又比函数计算概念广泛,不一定非得基于函数计算的抽象,只要能为用户提供NoOPS和Pay as You Run的业务也就可以归到Serverless技术中去。所以云厂商不断的推进两件事情。

一件事情是把BaaS serverless化,这个我们都已经看到了,云DB,云存储的serverless产品都已经推出。还有一件事情,云厂商需要推动现在的应用serverless化,即当前用户继续关于自己应用服务及其runtime,但是服务的autoscaling,并行化模板都由云厂商来提供。这一点谷歌的产品策略中可以清晰地看到这一点。

谷歌对于Serverless两条明确的技术线:一是cloudRun产品,基于K8S容器平台演进的Serverless平台,相当于Serverless的应用平台,推动已有的微服务化应用演进到serverless化;二是移动应用的CloudFunction+MBaaS的产品。两条技术线推动Serverless技术演进。AWS当然也不会落后,虽然AWS没有想谷歌一样的运行时平台的强大生态控制权,但是AWS也直接提供AutoScaling、ASM等服务指导应用服务Serverless化。

基于上述我们对serverless技术背后的商业逻辑,所以它成为了云厂商的必选,也是伯克利断言serverless是云时代下一代计算范式的底气所在。

关于serverless是不是下一代计算范式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
author-avatar
robioven
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有