微服务与 Lambda 与无服务器函数的区别

问题描述 投票:0回答:3

我只是想找到一个通用定义,它们之间有什么区别

  1. 微服务
  2. Lambda 函数
  3. 和无服务器功能

我的目标是在 Kyma 上实现一个“真正的”微服务 - 已经实现的关键点是什么,这样我就不会“仅仅”实现一个功能?

microservices serverless kyma
3个回答
12
投票

微服务

这是一个2013-2014年左右开始使用的坏名字。本质上,它意味着“基于服务的架构”——您拥有一个由多个服务组成的架构。这里最重要的是,服务可以由不同的团队拥有,并且独立于其他团队和服务进行开发、测试和部署。 “功能” 这可以是

AWS Lambda

Azure Functions

Google Cloud FunctionsGoogle Cloud RunKubernetes Knative。这里的“功能”一词主要是一个营销术语。您可以部署由一个或多个函数组成的代码(与任何其他代码一样)。但它通常只运行有限的时间,有冷启动惩罚,通常仅在您收到事件时按需部署,并且您通常只需为运行时间付费。 “无服务器”是同一事物的另一个营销术语。

以我的愚见,微服务和无服务器是在云上运行的两种对立范例(截至 2023 年撰写本文)。


0
投票

Lambda、云函数或无服务器架构是微服务的极端案例。其请求/消息的无状态处理程序被实例化并称为“按需”。实例的生命周期由相关容器管理,这些容器特定于云提供商。


0
投票

Lambda/云函数是动态创建的,一段时间内没有请求发生的运行实例可以有0个。 Lambda 函数的实例由云服务提供商的容器根据请求调用,它只是一个处理程序。

此外,Lambda 函数更接近命令模式,而不是函数的真正理解:例如,具有特定于域的数据的 CRUD 操作可以通过调用的 JSON 中的操作字段合理区分。这并不意味着为 GET、PUT、DELETE 和 UPDATE 创建特定函数。 通常函数是通过 HTTPS 中的 post 调用的。

因此,与微服务不同,Lambda 函数必须非常简单快速地启动,零启动时间,并执行非常简单的逻辑。 DI/IOC 框架(如 Spring )在这里并不是一个好的模式,ORM 也是如此,尤其是在延迟初始化和/或复杂查询的情况下。系统状态应保存在外部缓存(例如 Elastic Cache)或 KV 数据库(例如 DynamoDB)中,或者记录为事件(例如 Kafka)。 Lambda 函数中的会话有另一个解剖结构(例如

https://medium.com/@roy-pstr/a-simple-way-to-manage-sessions-with-aws-lambda-dynamodb-in-python-c7aae1aa7258

)

© www.soinside.com 2019 - 2024. All rights reserved.