您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

无服务器并不意味着DevOpsLess或NoOps

时间:2023-04-07 13:31:59  来源:51CTO  作者:千山


3月底,在云界有一件盛事发生。

亚马逊科技于3月30日举办亚马逊云科技创新大会。据会议信息显示,这届大会的高主题是“全面拥抱Serverless时代”。

有心的朋友应该注意到了,从去年到今年,无论是此前的AWS re:Invent大会还是阿里云云栖大会,抑或是即将召开的这个会议,Serverless都是当仁不让的主角。

不管是AWS还是阿里云,都在坚定推进核心产品全面Serverless化。中美两大云巨头同时押Serverless,无疑是在向全行业传递出这样的信号:Serverless 是云计算的未来。

那么Serverless真有这么香吗?

“无服务器(Serverless)”这个概念最早出现在2012年,但真正为人熟知却始于——2014年Amazon Lambda服务推出时,时至今日,这一理念已经成为业内热词。

所谓“无服务器”,并不是指真的无需服务器,其指代的更多是一种云应用程序开发和执行模型。允许开发人员构建和运行代码,而无需管理服务器,也无需为闲置的云基础架构付费。

当选择无服务器和Lambda来搭建云架构时,你需要了解固有的限制,以便在应用程序和代码的规模以及复杂性开始增长时进行扩展。

在构建应用程序代码时,无服务器是快速升级的一个好选择,但有一个常见的误解,即无服务器意味着DevOpsLess或NoOps,而事实并非如此。

更重要的是,有时你必须提前在设计和架构上进行投资,以避免后来遇到瓶颈或招致大量技术债务。

一、无服务器问题的快速概述

当应用程序开始增长时,如果你不提前计划,很快就会遇到无服务器范式特有的挑战。很多人在开始尝试无服务器时很可能意识不到,为什么他们需要提前设计。

1.问题一:节流

Lambda节流是可以同时运行的实例数量的结果。

AWS Lambda默认一个账户的区域并发限制为1000,也就是可以同时处理1000个请求。一旦到达上限,新的请求会被节流。当然你可以请求提高此阈值,不过要注意,这会产生成本影响。因此在检查架构设计并确保你确实需要它之前,不应自动提高阈值。

需要直面的现实是,你同时运行的事件或服务越多,你就会越快地遇到瓶颈。如果你计划安全在无服务器架构上运行,那么就有必要在编写第一行代码的时候就考虑到这一点。

即使今天你只需要满足小规模请求的设计,但必须尽早考虑,当你有数千个(甚至更多)租户或客户时,这是否会线性缩放。根据构建资源、Lambda和微服务的方式(以及每个服务的“微”程度),如果将服务分解为太小的块,则最终可能会由于过多并行事件的限制而中断整个服务链流。

这意味着需要充分了解当前正在处理的流量(以每分钟事件的形式),甚至是服务处理的峰值和异常流量。所有这些都需要考虑,此外还需要考虑每种调用所采用的通信调用方法——同步或异步(稍后会更深入地研究)——其中,使用同步调用,每个服务或系统调用都会叠加起来,并可能使系统过载。

重要的是要意识到节流的工作方式并不是完全可预测的。因此,即使你有适当的监视以确保你不会达到1000个并行事件,并且你认为你已经覆盖了,但这实际上可能在你的第一个峰值时发生,其中节流可能发生在更低的阈值,因为这本质上是意外行为(但在AWS文档中有记录)。因此,一个好的实践是,以一种能够在这种情况发生时恢复的方式构建你的系统(例如等幂性和重试)。

2.问题二:超时

顾名思义,无服务器不运行在永远运行的服务器上,它们提供临时运行时,函数运行时最多只有15分钟的总窗口。这可能会影响服务可以处理的输入的大小。当你从头开始设计函数时,输入的大小随着处理时间的增加而不断增加,你可能会在运行时遇到超时。

因此,对于运行时随输入大小线性扩展的服务或函数,建议的设计模式是将输入拆分为块或批处理,并在不同的Lambda中处理它们。这样做时,使用队列也是一个很好的实践,从而避免节流。

3.问题三:事件大小

事件驱动的设计模式在基于无服务器的系统中很常见,很多时候需要链中的各种服务来进行事件处理,包括API网关、SQS(Amazon Simple Queue Service)、事件桥接器、SNS(Amazon 的发布/订阅服务),其中每种服务都有不同的事件大小限制。你使用的每个资源可能都有需要注意的不同大小限制,在发送大型有效负载时,沿链传递数据可能会中断。

这意味着你不能在资源之间发送无限的有效负载,并且在构建函数和服务时需要注意这一点。链中的每一个资源都能够处理不同大小的有效负载,这意味着如果不提前考虑这一点,并确保可以在系统服务和资源中接收此有效负载,则会遇到失败事件。

一种解决方案,本质上是一种变通方法,可以通过利用支持有效负载大小的不同资源,在S3存储桶中传递大型有效负载。(提示:搜索“AWS 服务配额”以了解有关你使用的资源的更多信息,这是一个很好的入门参考)

4.问题四:幂等性

所谓的幂等性,是分布式环境下的一个常见问题,一般是指我们在进行多次操作时,所得到的结果是一样的,即多次运算结果是一致的。也就是说,用户对于同一操作,无论是发起一次请求还是多次请求,最终的执行结果是一致的,不会因为多次点击而产生副作用。

由于前文中列出的所有挑战,故障总是会发生,因此会出现延迟。Lambdas和无服务器资源通常构建在重试机制上。这就是幂等性至关重要的地方。服务需要为给定的输入交付相同的结果,无论它们被重试或部分重试了多少次(这意味着即使只重试了流的一部分,结果仍然需要相同)。

你需要提前设计幂等性,以便重试和重放不会影响生产系统的状态。一个好的做法是确保在运行数据时为每个实例创建唯一的但不随机的确定性ID。这是正确执行此操作的良好指南。

5.问题五:内存泄漏

若要了解内存泄漏是如何发生的,首先需要了解运行代码的机制是如何工作的,因为它也有其局限性。对于Lambda函数,相同的Lambda运行程序会被一次又一次地重用,直到它死去。也许它可以完美运行1000次,但它可能会在第1001次运行时开始崩溃,并可能导致你的服务出现问题。

例如,使用相同解释器的Python/ target=_blank class=infotextkey>Python代码会被反复使用。如果这段代码在每个运行中都添加全局内存对象,这些对象可能会通过不同的运行实例传递,这可能会导致内存泄漏,即超出实例内存限制。然后你的Lambda就会崩溃。

在使用共享资源和多租户架构时,这一点尤其重要。你需要确保不会留下未使用的资源、敏感数据或其他垃圾。在租户隔离方面,如果使用共享内存,则需要非常小心,确保数据不会在实例之间泄漏,因为数据可能会在租户之间泄漏。

6.问题六:同步与异步调用

无服务器中的同步调用可能会导致许多问题(比如前文中提到的“节流”)。在可能且不需要立即响应的情况下,异步调用模式是无服务器的首选模式。

无服务器通常被设计成异步和无状态的,而不是同步和有状态的,因此发挥技术的优势总是最好的。当你确实需要同步调用时,请确保有适当的保护措施(如使用API网关),并通过适当的日志记录获得可见性。

二、设计无服务器应用程序的复原能力和健壮性

对于那些希望快速运行、专注于交付和推出产品、不想在基础设施管理上耗费过多的人来说,无服务器是一个很好的选择。不过在选择运行无服务器时,你需要记住,这意味着使用许多不同的AWS资源,了解每种资源如何独立工作、如何协同工作以及它们的局限性和缺陷非常有必要。

要发挥无服务器的优势,需要建设适当的“护栏”,从而尽可能规避上述问题。

首先,与不可预测的动态云环境中的所有云原生应用程序一样,对于无服务器应用程序,通过监控、日志记录和追踪,确保对应用程序的工作方式具有适当的可见性尤为重要。

再者,谈到在无服务器上运行时,另一个常见且不容忽视的问题是成本。设计和构建应用程序的方式也会直接影响成本。你需要有适当的机制,以避免过度滥用资源,从计费警报和常规的具有成本意识的系统设计开始,这是无服务器的一个极其重要的实践。

另外,确保安全性和数据隐私也很重要,以免在使用共享资源和多租户时危及关键数据。有一些优秀的DevSecOps工具可以帮助你做到这一点。

当你了解了无服务器的工作原理后,你可以优化设计、架构和应用程序代码,进而实现显著的成本改进,同时获得更好的性能、安全性和容错能力。

三、写在最后

Lambda的推出开启了云计算的新时代,随后,微软、谷歌、IBM等大厂也先后推出了自己的Serverless产品。云产品的全面Serverless化逐渐成为时之所趋。

一旦Serverless进入规模化使用阶段,一方面,资源的使用由平台统一调度,按需使用,整个云计算资源的使用成本有望实现大幅降低;另一方面,编程方式会随着Serverless的发展产生很大不同。我们有理由相信,Serverless将成为IT基础设施变革中不可轻忽的拐点。

参考链接:https://thenewstack.io/serverless-doesnt-mean-devopsless-or-noops/



Tags:服务器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
暴雪公布国服规则:当服务器开启时,将保证账号数据被完整保留
新浪科技讯 4月10日上午消息,暴雪娱乐、微软游戏与网易今日共同宣布,暴雪娱乐旗下的游戏作品,将根据更新后的游戏发行协议自今年夏季开始陆续重返中国大陆市场。消息公布后,暴雪...【详细内容】
2024-04-10  Search: 服务器  点击:(2)  评论:(0)  加入收藏
异步Rust:构建实时消息代理服务器
在本文中,我们将深入研究使用Rust构建实时消息代理服务器,展示其强大的并发特性。我们将使用Warp作为web服务器,并使用Tokio来管理异步任务。此外,我们将创建一个WebSocket客户...【详细内容】
2024-02-01  Search: 服务器  点击:(58)  评论:(0)  加入收藏
哪种服务器操作系统更好呢?
在当今的IT世界中,服务器操作系统扮演着至关重要的角色。它们是确保服务器能够高效、安全地运行的关键因素。然而,对于许多人来说,服务器操作系统的种类和特点可能是一个复杂的...【详细内容】
2024-01-30  Search: 服务器  点击:(76)  评论:(0)  加入收藏
什么是VPS服务器
VPS服务器是一种虚拟化技术,它将一台物理服务器划分为多个虚拟的独立服务器,每个虚拟服务器都可以拥有自己的操作系统、运行环境、应用程序等。这种技术使得每个虚拟服务器可...【详细内容】
2024-01-30  Search: 服务器  点击:(70)  评论:(0)  加入收藏
VPS服务器下载速度慢?这五招帮你提速
VPS服务器下载速度慢可能会让用户感到沮丧,尤其是对于需要大量下载和上传数据的用户。幸运的是,有一些方法可以帮助您提高VPS服务器的下载速度,使您的在线体验更加顺畅。在本文...【详细内容】
2024-01-30  Search: 服务器  点击:(57)  评论:(0)  加入收藏
美国VPS和英国VPS:地理位置对服务器性能的影响
在今天的数字时代,VPS已成为在线业务和网站托管的关键组成部分。然而,选择合适的VPS主机服务时,地理位置通常被忽视,尽管它对服务器性能有着重要的影响。本文将探讨美国VPS和英...【详细内容】
2024-01-26  Search: 服务器  点击:(55)  评论:(0)  加入收藏
如何判断服务器所需带宽:基于业务需求和流量模式的关键考量
在选择服务器时,带宽是一个重要的考虑因素。带宽的大小直接影响到网站的加载速度和用户的访问体验。那么,如何判断服务器需要多大的带宽呢?本文将为你揭示这一关键问题的答案...【详细内容】
2024-01-26  Search: 服务器  点击:(74)  评论:(0)  加入收藏
计算机服务器中了mallox勒索病毒解密方案计划,勒索病毒解密措施
计算机技术的不断应用与发展,为企业的生产运营提供了有利条件,但网络安全威胁无处不在。近期,广西某生物制药企业的计算机服务器遭到了mallox勒索病毒攻击,导致企业的计算机所有...【详细内容】
2024-01-26  Search: 服务器  点击:(88)  评论:(0)  加入收藏
服务器内存空间及IO操作原理解析
服务器的内存空间分为内核空间和用户空间,而我们编写的程序通常在用户空间中运行。在进行读写操作时,我们直接操作的是用户缓冲区,而用户缓冲区的内容来自于内核缓冲区。这种内...【详细内容】
2024-01-23  Search: 服务器  点击:(44)  评论:(0)  加入收藏
服务器证书和SSL证书有啥区别?
在互联网经济时代,随着越来越多的信息以及合作都是从企业官网开始的,因此绝大多数企业都会为自己的网站配置SSL证书,以提高安全性。在接触SSL证书时,也有很多人称之为服务器证书...【详细内容】
2024-01-10  Search: 服务器  点击:(65)  评论:(0)  加入收藏
▌简易百科推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  coderidea  微信公众号  Tags:Nginx   点击:(60)  评论:(0)  加入收藏
哪种服务器操作系统更好呢?
在当今的IT世界中,服务器操作系统扮演着至关重要的角色。它们是确保服务器能够高效、安全地运行的关键因素。然而,对于许多人来说,服务器操作系统的种类和特点可能是一个复杂的...【详细内容】
2024-01-30    简易百科  Tags:操作系统   点击:(76)  评论:(0)  加入收藏
什么是VPS服务器
VPS服务器是一种虚拟化技术,它将一台物理服务器划分为多个虚拟的独立服务器,每个虚拟服务器都可以拥有自己的操作系统、运行环境、应用程序等。这种技术使得每个虚拟服务器可...【详细内容】
2024-01-30    简易百科  Tags:VPS服务器   点击:(70)  评论:(0)  加入收藏
VPS服务器下载速度慢?这五招帮你提速
VPS服务器下载速度慢可能会让用户感到沮丧,尤其是对于需要大量下载和上传数据的用户。幸运的是,有一些方法可以帮助您提高VPS服务器的下载速度,使您的在线体验更加顺畅。在本文...【详细内容】
2024-01-30  IDC行业观察者    Tags:VPS服务器   点击:(57)  评论:(0)  加入收藏
美国VPS和英国VPS:地理位置对服务器性能的影响
在今天的数字时代,VPS已成为在线业务和网站托管的关键组成部分。然而,选择合适的VPS主机服务时,地理位置通常被忽视,尽管它对服务器性能有着重要的影响。本文将探讨美国VPS和英...【详细内容】
2024-01-26  IDC行业观察者    Tags:服务器   点击:(55)  评论:(0)  加入收藏
如何判断服务器所需带宽:基于业务需求和流量模式的关键考量
在选择服务器时,带宽是一个重要的考虑因素。带宽的大小直接影响到网站的加载速度和用户的访问体验。那么,如何判断服务器需要多大的带宽呢?本文将为你揭示这一关键问题的答案...【详细内容】
2024-01-26  源库科技    Tags:服务器   点击:(74)  评论:(0)  加入收藏
服务器内存空间及IO操作原理解析
服务器的内存空间分为内核空间和用户空间,而我们编写的程序通常在用户空间中运行。在进行读写操作时,我们直接操作的是用户缓冲区,而用户缓冲区的内容来自于内核缓冲区。这种内...【详细内容】
2024-01-23  王建立    Tags:服务器   点击:(44)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  敲代码的小动    Tags:Nginx   点击:(61)  评论:(0)  加入收藏
服务器证书和SSL证书有啥区别?
在互联网经济时代,随着越来越多的信息以及合作都是从企业官网开始的,因此绝大多数企业都会为自己的网站配置SSL证书,以提高安全性。在接触SSL证书时,也有很多人称之为服务器证书...【详细内容】
2024-01-10  安信SSL证书    Tags:服务器证书   点击:(65)  评论:(0)  加入收藏
宝塔面板怎样部署java项目?
宝塔面板怎样部署java项目?在使用宝塔面板部署Java项目之前,需要确保已经安装了Java Development Kit (JDK)。接下来,将介绍如何使用宝塔面板来部署Java项目的步骤。步骤一:安装...【详细内容】
2024-01-09  西部数码    Tags:宝塔面板   点击:(113)  评论:(0)  加入收藏
站内最新
站内热门
站内头条