【译】Serverless架构 - 4

原文:

https://martinfowler.com/articles/serverless.html

状态

当使用本地(机器/实例绑定)状态时FaaS函数有很严格的限制。简单说,你应该假设对于任何函数调用,你创建的进程内或主机状态都不会对后续任何调用生效。这状态包括内存和要写入到本地磁盘的。换句话说从部署单元的角度看FaaS函数是无状态的。

这对应用架构有极大影响,尽管不是唯一的因素 - ‘12因子应用’概念有同样的限制 http://12factor.net/processes

这个限制有什么可以代替的?正常来说表示要么FaaS函数是天生无状态 - 他们对输入提供纯函数变换 - 要么他们使用数据库, 跨应用缓存(如Redis),或网络文件存储(如S3)将跨请求的状态存储起来以备后续的处理请求时需要用来做输入。

执行周期

FaaS函数通常受限于每次调用可以允许运行的时间。目前AWS Lambda函数不允许运行超过5分钟,如果超过会被终止。

这意味着某些长执行周期的类如果不进行重构是不适合在FaaS函数中运行的,比如你可能需要创建很多不同的FaaS函数协调器,在传统环境中你可能只有一个有一个长周期的任务同时做协调和执行。

启动延迟

目前你的FaaS函数需要多长时间响应请求取决于很多因素,可能会在10ms到2分钟。这听起来很糟,但让我们具体点,用AWS Lambda作为例子。

如果你的函数不大(少于一千行代码)并用Javascript或Python实现,那么运行的开销应该不会超过10-100ms。更大的函数可能会要更长的时间。

如果你的函数使用JVM上的实现当JVM启动时你可能偶尔会看到较长的响应(大于10秒)。但是这只会发生在以下场景:

  • 你的函数进程不经常处理时间,调用的时间间隔大于10分钟。
  • 你的流量出现高峰,比如正常你每秒处理10个请求但突然在10秒内每秒100个请求出现。

这些情况可以用比较丑陋的技巧 - 每5分钟ping以下你的函数保证它的存活来解决。

这些问题是否值得关注?这取决于你应用的流量图形。我的前团队有一个用Java实现的Lambda用来处理亿级异步消息/天,他们不关心启动延迟。这说明如果你要写一个低延迟的交易引用你肯定不会想使用FaaS系统,无论你用什么语言实现。

无论你觉得你的应用是不是有这个问题,你应该用生产环境的负载来测试实际性能。如果你的case现在还不行,你可以在几个月后再测试一下,因为这是FaaS供应商的主要开发领域。

时间: 2024-09-11 05:31:24

【译】Serverless架构 - 4的相关文章

BaaS云架构核心模式之Serverless架构 - 用服务代替服务器(Martin Fowler)

Martin Fowler最近非常推崇的serverless架构模式,是BaaS云架构实现的核心架构模式. Martin Fowler在2016.6.17号发表了一篇博客: <Serverless Architectures>,引起业界广泛关注: 在这篇博客里,他介绍了serverless架构,以及FaaS,Microservice,Docker等流行的架构和概念,描述了Amazon AWS lambda的价值, 进一步将这种云时代的架构清晰的展现在大家的视野里. 本文很多内容来自这篇博客,让

Serverless架构综述

本文讲的是Serverless架构综述[编者的话]Serverless是当今软件架构领域最热的话题,关于这个话题,我们有很多介绍,设置举办过展会.但是什么是Serverless,为什么会成为热点,通过这篇文章,希望能启发大家的思考. 作者简介:Mike Roberts, 是NYC的一个工程师领导者.除了领导团队之外,他还花大量时间进行开发,特别是Clojure,对软件架构比较有研究.他认为Serverless架构应该会是未来的一个新趋势. 我们仍然先从什么是Serverless开始,我会从中立的

数加平台如何通过Serverless 架构实现普惠大数据

 阿里云大数据 Serverless 理念 Serverless是一种架构理念,指的是以服务的形式来提供计算能力而不是以服务器形式,让开发者在构建应用的过程中不用过多考虑基础设施的问题.大数据业务本来就是最典型的计算业务,从计算的场景上来说,涵盖了离线批量计算.实时流计算.在线实时计算等,在很多情况下还需要把这些计算能力组合起来才能满足需求.所以Serverless 的架构天生就能很好的适用于大数据应用的场景,能把数据科学家从底层服务器层的运维管理等解放出来,让数据科学家专注在数据价值的探索挖掘

对Serverless架构的一点体验和思考

发端 云计算机经过这么多年的发展,逐渐进化到用户仅需关注业务和所需的资源.通过Swarm.K8S这些编排工具,容器服务让开发者的体验达到很完美的境界.我曾经觉得Docker可以替代虚机,用户只要关注自己的计算和需要的资源就行,不需要操心到机器这一层.但是因为Docker对资源的隔离不够好,各大云厂商的做法还是一个Docker对应一台虚机,不仅成本高,给用户暴露虚机也多余了. 用户为什么需要关注业务运行所需要的CPU.内存.网络情况?还有没有更好的解决方案?Serverless架构应运而生,让人们

采用Serverless架构搭建Web应用

本文会向你介绍一种新的可能,一种无服务器的方案来搭建Web应用.使用这个方案大部分运维方面的问题就不需要你自己操心了,而且也省去运行服务器的费用.本文从无服务的优势与限制两方面带您初识Serverless设计. 在传统Web应用中,服务器是系统不可缺少的组成部分.尽管有时候服务器的前面还有负载均衡器或者专用Web服务器,但完成大部分工作的还是应用服务器.它完成一个应用所有的必要功能,包括存储用户数据.进行安全认证.控制流程等.应用的页面大部分仅仅只是为后端提供界面而已,尽管也会涉及一些控制导航的

【阿里云资讯】如何在阿里云数加平台实践Serverless架构?

导读 移动互联网.物联网和大数据应用的快速发展极大地促进了人们对云计算的需求.但是让应用架构拥有良好的可伸缩性和高可用性并非易事,运维和管控庞大的基础架构更是极大的挑战.近年来,一个新的架构风格Serverless成了热门话题. What is Serverless Serverless是一种基于互联网的技术架构理念.采用FAAS(Function as a Service)架构,通过功能组合来实现应用程序逻辑.该架构能够让开发者在构建应用的过程中无需关注计算资源的获取和运维,由平台来按需分配计

缘何是Serverless架构?

本文讲的是缘何是Serverless架构?[编者的话]本文讨论了Serverless解决的产品研发过程中遇到的问题,从而解释了产品研发中为何选择Serverless架构,并且对如何选择Serverless架构提出了建议,文章的最后还列举了一些Serverless架构中可以使用的工具. [3 天烧脑式容器存储网络训练营 | 深圳站]本次培训以容器存储和网络为主题,包括:Docker Plugin.Docker storage driver.Docker Volume Pulgin.Kubernet

智能调配 按需服务--UCloud Serverless架构浅析

通常用户在云上进行应用部署的时候,首先要考虑采用多少计算核心.多大内存.多高存储.多大带宽,然后在业务应用的时候还需要再反复的去进行调试.云计算"按需调配,自由扩展"的优势并不能很好的体现出来.那么在云上是否可以通过"智能调配 按需服务"的方式对云计算各项资源来自动进行分配呢?在3月29日Think in Cloud大会的专访中,UCloud应用创新部研发总监叶理灯先生向我们介绍了UCloud是如何通过Serverless架构来改变未来的. UCloud应用创新部研

AWS上的Serverless架构详谈

这篇文章摘录自彼得·萨巴斯基(Peter Sbarski)和萨姆·克鲁内伯格(Sam Kroonenburg)合著的<AWS上的无服务器架构>一书,概述了无服务器架构的五大原则. 彼得·萨巴斯基和萨姆·克鲁内伯格合著的<走无服务器道路>(Go Serverless)一书. 如果你问软件开发人员何谓软件架构,可能会得到五花八门的答案:软件架构"是蓝图或计划"."概念模型"或"大局",不一而足.毫无疑问,架构或缺少架构关系到软