我正致力于在生产中设置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,我是否必须复制相同的配置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会话中运行它。什么是最终在生产中运行此代码的最佳方式?
答案 0 :(得分:5)
您可以立即免费开始使用开发模式的ConductR,而无需联系销售人员。说明位于:https://www.lightbend.com/product/conductr/developer 您需要注册(阅读:提供有效的电子邮件)并接受TnC才能访问该页面。沙箱今天可以免费用于开发模式,因此您可以快速轻松地查看ConductR是否适合您。
对于制作,我很高兴地说,如果您注册w / Lightbend.com(与上述相同)并生成“免费套餐”许可证密钥,您很快就可以在生产中部署最多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顶级build.sbt文件中所示。
由于ConductR是干净且明亮的路径,您可以参考它的工作原理,以便更好地了解如何使用您自己的部署替换Lagom的部署。这是Lagom最了解的界面。除了核心之外,很多ConductR已经是OSS所以如果文档没有涵盖某些内容,可以尝试使用github。
披露:我是行为指导Lightbender。
git@github.com:lagom /活化剂 - lagom-java的chirper.git