阅读Akka投影项目,我无法摆脱与Lagom(构建基于参与者的响应式微服务的框架)相同的感觉。
<<p>其他相似之处/strong>:- 他们背后是同一家公司
- 相同的实现原则(通常是类)
- 相同的模块(Kafka, Event Journalization, Persistence等)
一些差异:
- 发布周期
- Lagom最后一次发布是在4月,之前是在2020年11月
- Akka投影6天前,之前在2021年5月
- Akka投影是专为Lightbend的PAAS?它们在开始指南中链接到Akka平台
- 对于Lagom 是可选的
- 服务端点实现
- gRPC偏向Akka投影
- REST/WebSocket/Other for Lagom
所有这些更不用说Akka Serverless,它是一个只处理以下逻辑的PAAS:
- 持久性 集群
- 分片
…但依赖于相同的编程和设计模型。
也许更有知识/更有见解的人可以解释这是什么关系,如果有的话?是否一种产品正逐渐被另一种产品所取代(在这种情况下,最好让社区知道)?如果是,这是因为光之弯商业模式的转变吗?在做出使用这两种产品的技术决定之前,了解这一点是很重要的。Lagom是Akka之上的一个固执己见的框架,特别是围绕集群分片和持久性(以及一种类似于Play的定义HTTP交互的方法,以及一种定义依赖注入的方法)。它在其ReadSideProcessor
中包含了一种固执己见的方法来从CQRS的持久性中投影事件流。
Akka最近的许多进步部分是基于从Lagom那里学到的一些关于更固执己见的东西。投射带来了类似的东西,但更一般(因为它可以投射,例如事件从Kafka)到ReadSideProcessor
到Akka;值得注意的是,投影在很大程度上是Lagom的核心维护者之一的工作。
我不会真的将Akka平台归类为PaaS,而更像是"Lightbend订阅"的子集的替代定价/消费模式。(Akka平台是基于使用的,没有太多咨询类型的安排;"订阅"的定价可能被描述为"如果你要问它花了多少钱,你可能负担不起",但它确实包含了来自一个真正了解Akka/Lagom/Play堆栈的团队的某种程度的咨询参与)。否则,Akka平台就是Akka。
Akka Serverless的PaaS是Akka的底层,但Akka的本质隐藏在gRPC API后面(无论好坏)。在Lagom中,你定义领域实体的行为,框架层作为Akka参与者来表现;Akka Serverless比Lagom更严格地分离了这种表现形式(在Lagom中剥离Lagom的表面以暴露更多的Akka是很可能的,有时甚至是有用的),但这反过来又允许用任何可以使用gRPC的语言定义行为。
我无法推测未来会发生什么。Akka本身是纯开源的(而且它的贡献者中有很大一部分不是受雇于Lightbend):所以它在一定程度上不受Lightbend发生的任何事情的影响(商业附加组件的范围在过去几年里也有所减少,最明显的是多区域持久性和劈裂脑解析器是开源的)。Akka的一些用例可能永远不会在Akka Serverless中有效地发挥作用。至于Lagom,它可能已经实现了自己的目标,并将被认为是成熟的(加入其他各种微服务优先框架)。我个人倾向于使用普通的Akka:我会考虑推荐的类型化api(特别是在Scala中)来提供"恰到好处的数量"。虽然不如拉戈姆。作为Scala背景的开发者,缺少DI也是值得赞赏的。如果你想要商业附加组件,并且在Kubernetes的公共云上运行,那么Akka平台可能值得获得;对于其他部署,订阅可能是值得的。