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

使用高级工具解决无服务器冷启动

采用无服务器的最大缺点之一,并使其适合您。乔纳森珀西(JonathanPercy)在Unsplash上拍摄的照片什么是冷启动?

采用无服务器的最大缺点之一,并使其适合您。

乔纳森·珀西 ( Jonathan Percy)在Unsplash上拍摄的照片

什么是冷启动?

如果您花费大量时间来构建无服务器功能,您可能会开始认为它们实在太好了。 该代码更易于管理和维护。 Azure的耐用功能通过为您提供开箱即用的复杂管道系统,帮助您成功获得成功。 此外,它们都是荒谬便宜。

我内心的怀疑者一直想知道,有什么收获? 必须付出一些。 毫无疑问,无服务器并不是一个完美的世界,当然还有一些不足之处需要考虑。 最大的缺点之一就是冷启动。

冷启动是一个术语,用于描述未使用过一段时间的应用程序启动时间较长的现象。 ( MSDN )

上面的MSDN文章很好地解释了冷启动是什么,它们如何工作以及为什么有必要。 为了降低成本,闲置了一段时间的无服务器应用程序将被释放。 这意味着用户第一次调用释放的函数可能会在函数加载时产生延迟。

在每个无服务器环境(Azure,AWS,Google Cloud)中,冷启动的工作方式略有不同。 但是概念是相同的。 Mikhail Skilkov在冷启动方面有很多文章。 这一个冷启动行为在每个平台上进行比较。

冷启动期间会发生什么(来自MSDN )

让我们面对现实吧,对于大多数应用而言,冷启动问题更多的是轻微的不便。 对于大多数应用程序而言,偶尔会出现几秒钟的罕见延迟并不是什么大问题。 但是对于某些用例,它可能是绝对的破坏者。 所以,我们能做些什么?

解决方案

普遍的共识是,要减少冷启动,您首先要确保应用程序永远不会“变冷”。 通常,这是通过创建一个单独的函数来完成的,该函数每隔X分钟向您的应用发出一次请求。 我将提出一种非常相似的模式,但它可以提供一些附加的业务价值。

计时器功能应用

久经考验的方法是创建一个可在计时器上运行的单独的功能应用程序。 您将计时器设置为每隔一定时间运行一次,以知道您的应用程序不会变冷。 例如,Azure Functions“闲置大约20分钟后*分配资源* ”。

因此,最好将计时器设置为每15分钟运行一次,以确保应用永远不会变冷。 或更经常地确定! 我将再次链接到米哈伊尔·斯基尔科夫(Mikhail Skilkov)。 他还有另一篇很棒的文章,展示了这种方法的有效性。 这并不完美,但是它是掷骰子并希望您的用户不受冷启动影响的绝佳选择。

第三方监控器

如果冷启动是一个真正的问题,那么这是一个非常关键的应用程序。 对于这些应用程序,您需要获得所有保证,以确保您的应用程序不仅性能良好,而且性能出色。

无服务器功能具有很高的正常运行时间。 如果Azure的功能正常运行时间低于99.95%,它将为您带来一些荣誉。 但这并不是说它们永远不会下降或减速。 对于任务关键型应用程序,短暂的停机会造成很大的损失。 即使只有几分钟的时间,也能获得警报是一个巨大的胜利。

这就是诸如RunScope和Assertible之类的API监视工具发挥作用的地方。 这些服务使您可以设置时间表,以每隔一定的时间访问API。 他们可以对结果进行测试,并在出现任何异常情况时提醒您。 这是一个完美的冷启动器!

RunScope Scheduler

它与您自己的功能应用程序具有相同的概念,但具有更多优点。 首先,存在关注点分离。 如果您的功能应用程序已关闭,那么冷启动器功能(也已关闭)将无济于事。 这使您可以公正地使用第三方,以确保一切正常。

您还可以查看您的功能随着时间的推移表现如何。 既然您如此频繁地测试应用程序,您将开始看到模式。 应用程序变慢了吗? 新功能是否增加了加载时间? 我们可以确定生产中没有冷启动问题吗?

RunScope的测试仪表板

我没有从属关系,但是我一直是RunScope的忠实拥护者 。 而且我强烈建议您,不仅要冷启动功能应用程序,还要对所有API进行监控。 上面的概述非常不错。 另外,基于RunScope警报响应下降(例如图中的10月10日),而不是激怒用户,是无价的。

也就是说,如果您只是冷门,那么最便宜的计划每月79美元的价格可能有点高。 断言是另一个不错的选择,它甚至有免费的使用计划。 您可以使用免费套餐每30分钟发送一次请求。 消除冷启动的频率通常不够高,但是它可能会降低用户体验冷启动的频率。 另外,您还将获得所有其他好处。 如果发现用户仍然有问题,则可以升级到更合理的计划。 每月25美元的计划可让您每5分钟或更短的时间运行一次。 非常适合保持这些功能应用程序的温暖。

包起来

无论您选择做什么,很明显,在无服务器的情况下,冷启动问题都值得考虑。 毫无疑问,Azure正在致力于提高冷启动性能。 曾经有一段时间每五分钟一次,现在我们可以达到20分钟了。 但是在问题解决之前,请您自己(和您的用户)帮个忙,并使应用程序保持温暖。 在此过程中,您甚至可以从中受益。

From: https://hackernoon.com/serverless-cold-starts-using-them-to-your-advantage-3dfdf9a0bc66



推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
author-avatar
朵彩的人生_688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有