Lagom 和 As 投影之间的区别

Difference between Lagom and Akka Projection

正在阅读 Akka Projection project I can't get rid of the feeling that it serves the same purpose as Lagom(用于构建基于 actor 的反应式微服务的框架)。

其他相似点:

有些不同:

所有这些更不用说 Akka Serverless 了,它只是一个 PAAS,负责以下逻辑:

...但依赖于相同的编程和设计模型。

也许有人 knowledgeable/with 更多见解可以解释这种关系(如果有的话)是什么?一种产品是否逐渐被另一种产品所取代(在这种情况下最好让社区知道)?如果是,这是否是由于 Lightbend 商业模式的转变?在做出有关使用这两种产品中的任何一种的技术决定之前,了解这一点很重要。

Lagom 是 Akka 之上的自以为是的框架,尤其是围绕集群分片和持久性(以及定义类似于 Play 的 HTTP 交互的方法,以及定义的依赖注入方法)。它在其 ReadSideProcessor 中包含了一种自以为是的方式来为 CQRS 从持久性中投射事件流。

Akka 的许多最新进展部分是基于从 Lagom 中吸取的一些教训,即更加自以为是。 Projection 为 Akka 带来了类似但更通用的东西(因为它可以投影,例如来自 Kafka 的事件);可能值得注意的是,Projection 主要是 Lagom 的核心维护者之一的工作。

我不会真正将 Akka 平台归类为 PaaS,但更多的是“Lightbend 订阅”子集的替代 pricing/consumption 模型(Akka 平台是基于使用情况的,无需太多咨询- 类型的安排;订阅的定价可能被描述为“如果你不得不问它的成本是多少,你可能负担不起”,但它确实包括来自 的团队的某种程度的咨询参与真的 知道 Akka/Lagom/Play 堆栈)。否则 Akka 平台就是 Akka。

Akka Serverless 的 PaaS 是引擎盖下的 Akka,但 Akka-ness 隐藏在 gRPC 后面(无论好坏)API。与在 Lagom 中一样,您正在定义域实体的行为,而框架层将其表现为 Akka 参与者; Akka Serverless 比 Lagom 更严格地分离了这种表现形式(在 Lagom 中剥离 Lagom 单板以暴露更多 Akka 是很有可能的,有时甚至是有用的),但这反过来又允许用任何可以使用 gRPC 的语言来定义行为。

我无法推测未来会怎样。 Akka 本身是纯开源的(而且它的贡献者中有相当一部分未受雇于 Lightbend):因此它在某种程度上不受 Lightbend 发生的任何事情的影响(商业附加组件的范围多年来也有所减少,最显着的是具有多区域持久性和裂脑解析器是开源的)。 Akka 的一些用例可能永远不会在 Akka Serverless 中有效使用。至于 Lagom,它有可能已经实现了它的目标并且被认为是成熟的(加入各种其他微服务优先框架)。

我个人倾向于使用 vanilla Akka:我会考虑推荐的 Typed APIs(尤其是在 Scala 中)来提供“恰到好处”的意见,尽管少于 Lagom。来自 Scala 背景,缺乏 DI 也值得赞赏。如果您决定想要商业附加组件并且 运行 在 Kubernetes 上的 public 云中,那么 Akka 平台可能值得获得;对于其他部署,订阅可能是值得的。