事件驱动架构(EDA)对事件或信息做出反应,并触发特定的操作,而不是依赖直接的同步通信。EDA 是异步的,它允许组件独立运行,从而提高了系统在不同工作负载下的响应速度和性能。
请看两个简单的例子:文件上传和新用户注册。这两项操作都可以通过同步、请求-响应流(即 REST API)进行,但需要提出新请求,以获得文件上传的状态更新,或在新用户数据插入数据库后触发下一步操作。想象一下,你有一群任务运行人员在不断轮询消息;他们在无线电静默或无关的聊天中不知疲倦地工作,偶尔才会收到一条可以采取行动的消息。可以看出,这并不是对按需云计算资源弹性的最有效利用。EDA 采用基于推送的方法解决了这一问题。
EDA 还非常适合实时处理和处理大量数据,因为组件可以在数据到达时对事件做出反应和处理,而无需等待完整的数据集。
为什么要考虑 EDA?
- 增强系统灵活性:事件驱动架构的松散耦合特性使您可以轻松修改、添加或删除组件,而不会影响整个系统,从而使其能够适应不断变化的需求。
- 提高可扩展性:EDA 支持轻松的横向扩展,允许企业根据需要添加更多组件或服务实例,以处理增加的工作负载或流量。
- 提高系统恢复能力:EDA 的异步通信和解耦组件有助于提高容错能力,因为一个组件的故障不一定会导致整个系统的中断。
- 实时处理能力:EDA 可对大量数据和复杂事件模式进行实时处理,因此适用于需要对快速变化的情况进行即时洞察或响应的企业。
- 优化资源使用: 通过在事件发生时才做出反应,EDA 可帮助优化资源利用率,减少对持续运行流程的需求,从而节省成本并提高效率。
云本地无服务器计算
EDA 支持无服务器计算等应用开发模式,允许代码可移植且与提供商无关,因此您可以根据功能、支持的语言、成本等选择云提供商。功能即服务(FaaS)是许多云提供商提供的一种流行产品,它允许用户将功能和应用基础架构合二为一进行管理。云提供商作为责任层,负责处理底层基础设施,包括服务器供应、扩展和维护,从而让开发人员专注于编写代码。
我们所熟悉的 FaaS 服务,如AWS Lambda、Azure Functions 和 Google Cloud Functions,就是我们所说的平台原生服务。它们通常会将你锁定为使用特定的云提供商,而无法轻松迁移。你会经常听到我们谈论Knative,它是一个基于 Kubernetes 的开源平台,用于运行无服务器,这意味着它可以在几秒钟内将你的应用从 0 扩展到 N 个副本。从 0 扩展到 N 是非常棒的,因为它允许 Kubernetes 和Knative根据需要重新分配资源。
你的一段代码可以自动扩展资源,因为它可以被并行调用多次。我们前面提到的平台原生 FaaS 产品的核心问题是定价难以预测。通过我们的 Kubernetes 托管服务,在我们的计算实例上运行 Knative,您只需支付一个统一且可预测的价格,而不必担心在某些免费层级之后会出现按执行次数付费的情况。
为什么要考虑无服务器?
- 成本效益:无服务器计算的 "即用即付 "定价模式可以节约成本,因为企业只需为使用的计算时间付费,而无需提前分配资源。
- 提高可扩展性:无服务器计算可根据需求自动扩展资源,确保应用程序能够处理增加的工作负载,而无需人工干预或停机。
- 减少运营开销:通过无服务器计算,云提供商可以管理底层基础设施,从而使 IT 团队能够专注于应用程序开发、创新和其他战略举措。
- 更快上市:无服务器计算提供的简化开发和部署流程可帮助企业加快新功能、更新和错误修复的发布速度,从而增强企业的竞争优势。
- 灵活性和适应性: 无服务器计算允许企业使用各种编程语言和技术构建和部署应用程序,从而更容易适应不断变化的需求或根据需要采用新技术。
正如我前面提到的,无服务器计算是基于事件驱动架构的,这意味着函数会被 HTTP 请求、文件上传、数据库更新等事件触发。这有助于简化应用架构,提高可扩展性。
无服务器函数也应该是无状态的。它们在调用之间不存储任何数据或状态,从而确保函数易于扩展,并且在函数失效时可以替换。它们还应该是短暂的,以确保资源不会被浪费,并且函数可以快速扩展。如果函数的任务需要长期运行,则应评估持续运行的服务是否更合适。
不要忘记监控无服务器功能并记录日志,以确保它们按预期运行,并找出任何问题或错误。使用日志聚合器和应用性能监控(APM)工具(如Prometheus 和Grafana )等工具。此外,不要忘记使用最佳实践(如身份验证、授权和加密)确保功能安全。这样可以确保应用程序的安全和敏感数据的保护。在将它们部署到生产环境之前,要对它们进行彻底测试,以确保它们能按预期运行,并且不存在漏洞。
无服务器计算可以实现成本效益,但重要的是要使用成本优化技术,如功能优化、资源共享和自动扩展,以降低成本并提高效率。评估您的工作负载、使用模式和要求,以确定无服务器计算对于您的特定用例是否具有成本效益。考虑预期使用模式、性能要求以及您选择使用的无服务器平台的定价结构。
注释