首页 文章

在 生产环境 中运行Lagom

提问于
浏览
1

我正在制作一个 生产环境 中的Lagom应用程序 . 我曾尝试联系Lightbend获取ConductR许可,但多年没有收到回复 . 所以,现在我正在寻找另一种方法 . 我有很多问题 .

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

为了压制Cassandra和Lagom的服务定位器,我在build.sbt中添加了以下行:

lagomCassandraEnabled in ThisBuild := false

我还在service.conf中添加了以下文件,其中包含service1-impl模块 .

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,我是否必须复制相同的配置wrt所有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"
}

由于每个特定的actor都会在其中一个节点上生成,它如何使用此服务定位器配置?

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

1 回答

  • 5

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

    对于 生产环境 ,我很高兴地说,如果您注册w / 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 's deployment poly w/ your own. That' s Lagom最了解的界面 . 除了核心之外,很多ConductR已经是OSS所以如果文档没有涵盖某些内容,可以尝试使用github .

    披露:我是一名行为指导Lightbender .

相关问题