在没有 ConductR 的情况下在生产中使用 Lagom 是否实用或明智?商业许可让我望而却步。这个框架看起来可能很难部署,而定制工具可能需要付出很多努力才能做到正确。
4 回答
(免责声明:我是 Lightbend 员工,目前是 Lagom 团队的核心成员)
编辑(2018 年 11 月):有关此主题的最新信息,请参阅https://www.lagomframework.com/documentation/current/java/ProductionOverview.html#Running-Lagom-in-production 。
(原始答案,2017 年 8 月)自从一年多前添加此问题以来,Lightbend 堆栈发生了很大变化。例如:ConductR 现在可以在生产环境中免费使用,最多可用于三个节点。此外,ConductR 背后的团队还致力于提供在 Kubernetes 上部署 Lagom 应用程序的工具。这方面的工作非常先进,我们的一些示例应用程序已经可以部署在 Kubernetes中。
您的问题相当开放,所以让我们从“它取决于”开始。
如果
- 您可以轻松地在 Akka 集群的配置中管理扩展,
- 您的使用不违反 lagom、play 和 Akka 的开源许可条款,并且
- 您没有足够的现金流来证明使用 Lightbend 的生产套件是合理的,
那么可以说您可以用最少的努力和自定义工具进行部署。
如果这些条件不成立,您的选择是去其他地方(例如 Spring Cloud)或保留 Lightbend。你可能会发现去其他地方有它自己的认知负担和/或商业费用。
希望在 7 个月后也能有所帮助。
其他答案更高,但我基本上可以说“是”。我目前正在部署要在 Kubernetes 集群上托管的 Lagom 服务,并且我没有使用 ConductR 或任何商业许可的组件。
您需要深入研究一些 Play 内部结构才能正确启动服务,如果您想与其他一些服务定位器挂钩,您可能需要自己实现一个,但这当然不是不可能的,我认为它更少努力在网上。
老实说,它真的值得付出,因为你得到了更多,良好的报告仪表板,自动集群形成以及真正酷的是裂脑解析器......
但有时会同意,当您从事一个没有很多钱的项目时,您可以做一些小技巧并让它发挥作用,然后可能会做所有真正幸运的事情或购买企业订阅。
因此,如果您将所有内容委托给 Kubernetes DNS,或者在没有 Kubernetes 的情况下,只需在每个服务之前放置负载均衡器并使用其地址,那么 Lagom 就可以非常容易地使用而无需服务发现。
这是如何工作的
Each lagom service that you have should be external service
- 生产运行配置应与
ConfigurationServiceLocatorComponents
- 应该与另一个通信的服务应该用额外的参数启动,告诉 lagom 这个服务是外部的,可以直接通信(所有都可以在
JAVA_OPTS
播放应用程序中)
-Dlagom.services.your_service_name=http://k8s_service_name.default.svc.cluster.local:9000