Lagom 和 Akka 投影的区别

vas*_*orc 1 akka lagom

阅读Akka Projection项目时,我无法摆脱这样的感觉:它与Lagom(用于构建基于 Actor 的反应式微服务的框架)具有相同的目的。

其他相似之处

  • 背后是同一家公司
  • 相同的实现原理(通常是类)
  • 相同的模块(Kafka、事件日志记录、持久化等)

一些差异

  • 发布周期
    • Lagom 最后一次发布是在 4 月份,之前是 2020 年 11 月
    • Akka 投影 6 天前,2021 年 5 月之前
  • Akka Projection 是为 Lightbend 的 PAAS 设计的吗?他们在入门指南中 链接到 Akka Platform
    • 对于 Lagom 来说这是可选的
  • 服务端点实现

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

  • 坚持
  • 聚类
  • 分片

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

也许更有知识/有更多见解的人可以解释这种关系(如果有的话)是什么?一种产品是否正在逐渐被放弃,转而采用另一种产品(在这种情况下,最好让社区知道)?如果是,这是否是由于 Lightbend 商业模式的转变所致?在做出有关使用这两种产品的技术决策之前,了解这一点非常重要。

Lev*_*sey 6

Lagom 是 Akka 之上的一个固执己见的框架,特别是围绕集群分片和持久性(以及类似于 Play 的定义 HTTP 交互的方法,以及定义的依赖注入方法)。它包括以ReadSideProcessor一种固执己见的方式从 CQRS 的持久性中投射事件流。

Akka 最近的许多进展部分是基于结合了从 Lagom 学到的一些关于更加固执己见的知识。投影给 Akka 带来了类似但更通用的东西(因为它可以投影,例如来自 Kafka 的事件)ReadSideProcessor;值得注意的是,Projection 很大程度上是 Lagom 核心维护者之一的工作。

我不会真正将 Akka 平台归类为 PaaS,而更多的是“Lightbend 订阅”子集的替代定价/消费模型(Akka 平台基于使用情况,没有太多咨询类型的安排;订阅的定价可以公平地描述为“如果你必须问它要花多少钱,你可能买不起”,但它确实包括来自真正了解 Akka/Lagom/Play 堆栈的团队的一定程度的咨询参与)。否则,Akka 平台就是 Akka。

Akka Serverless 的 PaaS 是 Akka 的底层,但 Akka 特性隐藏在 gRPC API 后面(无论好坏)。就像在 Lagom 中一样,您定义域实体的行为,框架层将其表现为 Akka actor;Akka Serverless 比 Lagom 更严格地分离了这种表现形式(在 Lagom 中剥离 Lagom 饰面以暴露更多 Akka 是很有可能的,有时甚至很有用),但这反过来又允许用任何可以使用 gRPC 的语言来定义行为。

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

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