java - 在生产中运行 Lagom

标签 java akka actor microservices lagom

我正在致力于在生产环境中设置 Lagom 应用程序。我曾尝试联系 Lightbend 获取 ConductR 许可证,但很久没有收到回复。所以,现在我正在寻找替代方法。我有多个问题。

由于现在应用程序的规模非常小,我认为使用静态服务定位器现在对我来说很有效(对其他替代方案持开放态度)。另外,我使用 MySQL 作为我的事件存储,而不是 Cassandra 的默认配置(与此线程无关的原因)。

为了抑制 Cassandra 和 Lagom 的服务定位器,我已将以下几行添加到我的 build.sbt 中:

lagomCassandraEnabled in ThisBuild := false

我还使用 service1-impl 模块将以下内容添加到我的 application.conf 中。

lagom.services {
    service1 = "http://0.0.0.0:8080"
}

对于开发环境,我已经能够在 tmux session 中使用 sbt runAll 成功运行我的应用程序。使用此配置,默认 8000 端口上没有运行服务定位器,但我可以单独访问 8080 端口上的 service1。 (不确定这是否是预期的行为。评论?)

我运行sbt dist来创建一个zip文件,然后解压缩它并在其中运行可执行文件。有趣的是,该 zip 是在 service1-impl 文件夹中创建的。那么,如果我有多个模块(服务?),sbt dist 会为每个服务创建单独的 zip 文件吗?

当我运行通过 sbt dist 创建的可执行文件时,它会尝试连接到 Cassandra 并启动服务定位器并忽略我添加的静态服务定位器配置。基本上,看起来它忽略了我添加到 build.sbt 中的行。谁能解释一下吗?

最后,如果我有 2 个服务,service1 和 service2,以及集群中的 2 个节点,其中节点 1 运行 service1,节点 2 运行这两个服务,那么我的静态服务定位器在 application.conf 中会是什么样子?由于每个服务都有自己的 application.conf,我是否必须复制相同的配置。所有 application.conf 中的静态服务定位器?

会是这样吗?

lagom.services {
    service1 = "http://0.0.0.0:8080"
    service1 = "http://1.2.3.4:8080"
    service2 = "http://1.2.3.4:8081"
}

由于每个特定的参与者都会在其中一个节点上生成,因此它如何与此服务定位器配置一起工作?

此外,我不想在生产中的 tmux session 中运行它。最终在生产中运行此代码的最佳方法是什么?

最佳答案

您可以立即免费开始在开发模式下使用 ConductR,无需联系销售人员。说明位于:https://www.lightbend.com/product/conductr/developer 您确实需要注册(阅读:提供有效的电子邮件)并接受 TnC 才能访问该页面。该沙箱现在可以免费用于开发模式,因此您可以快速轻松地了解 ConductR 是否适合您。

对于生产,我很高兴地说,如果您注册 w/Lightbend.com(与上面相同)并生成“免费层”许可证 key ,您很快就可以在生产中部署最多 3 个节点。

Lagom 对微服务有自己的看法。如果项目不同意这些意见,那么总会有 Akka 和 Play。该观点的一部分是部署应该很容易。好的工具拿在手里感觉“恰到好处”。当然,您可以随意部署应用程序,但要准备好在距离标记路径越远的地方生成更多的polyfill。

关于服务查找,ConductR 为 HTTP 服务查找提供重定向,以便与 Play WS 上的“withFollowRedirects”一起使用 [1] 对于sbt dist来说,每个子项目服务都会是一个包。您可以在 Chirper 示例 [2] 中看到这一点,其中 sbt dist 生成 chirp-impl.zip、friend-impl.zip、activity-stream-impl 等,如 Chirper 顶级构建中所示.sbt 文件。 由于 ConductR 是一条干净且明亮的路径,因此您可以引用它的工作原理,以便更好地了解如何用您自己的部署 Poly 替换 Lagom 的部署 Poly。这是 Lagom 最了解的界面。除了核心之外,ConductR 的大部分内容都已经是 OSS,因此如果文档没有涵盖某些内容,可以尝试 github。

披露:我是一名 ConductR-ing Lightbender。

  1. http://conductr.lightbend.com/docs/1.1.x/ResolvingServices

  2. [email protected] :lagom/activator-lagom-java-chirper.git

关于java - 在生产中运行 Lagom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41548676/

相关文章:

java.lang.NumberFormatException : with JSP App and mySQL

java - hadoop异常类型在wordcount程序中不匹配

java - 定义 Akka Actor Count 的最佳实践是什么

java - 由于 "Type mismatch in key from map",hadoop 中的任务失败

scala - akka-http 和 JsonEntityStreamingSupport

web-services - spray-can webservice 优雅关闭

java - 如何在 Linux 集群上分发和维护 java/scala 程序?

scala - 回复不会传回 'client' -actor

Scala Remote Actor 消息类型问题

java - EJB3 映射的?谁拥有 OR 映射?