【问题标题】:Running Lagom in Production在生产中运行 Lagom
【发布时间】:2017-07-03 03:09:58
【问题描述】:

我正在努力在生产环境中设置 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 会话中使用 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,我是否必须复制相同的配置 w.r.t.所有 application.confs 中的静态服务定位器?

会是这样吗?

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

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

另外,我不想在生产环境的 tmux 会话中运行它。最终在生产中运行此代码的最佳方式是什么?

【问题讨论】:

    标签: java akka actor microservices lagom


    【解决方案1】:

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

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

    Lagom 对微服务持固执己见。如果项目没有分享这些意见,那么总会有 Akka 和 Play。这种观点的一部分是部署应该很容易。好的工具在手中感觉“正确”。当然,您可以随意部署应用程序,但要准备好在离标记路径越远的地方生成更多的 polyfill。

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

    披露:我是一名指挥 Lightbender。

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

    2. git@github.com:lagom/activator-lagom-java-chirper.git

    【讨论】:

    • Edward - 我没有看到网站上提到免费层。你能说得更具体点吗?
    • @TimPigden 你是对的。它现在还不可用。为此所需的许可证模块正在开发中。今年春天,我们绝对会宣布一个免费层级,允许最多 3 个代理充分利用堆栈。
    • 有这方面的消息吗?
    • 是的! 2.1.x 已发布,带有免费许可功能。这是getting started pageLagom Java Chirper 示例已更新以支持将 maven 和 sbt 捆绑部署到 ConductR。
    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多