独立部署 Lagom Framework jar/docker
Deploy Lagom Framework as standalone jar/docker
是否可以将 Lagom 应用程序部署为独立的 运行 jar 或 Docker 容器?
如果是,怎么做?
是的,可以将 Lagom 应用程序部署为独立的 JAR/Docker 容器。为此,您可以按照以下步骤操作。
- 配置 Cassandra 联系点:如果您计划为您的服务使用动态服务定位,但需要静态定位 Cassandra,这在生产中很明显,那么修改
application.conf
你的服务。此外,禁用 Lagom 的 ConfigSessionProvider
并退回到 akka-persistence-cassandra
中提供的那个,它使用接触点中列出的端点列表。您的 Cassandra 配置应如下所示 -
cassandra.default {
## list the contact points here
contact-points = ["127.0.0.1"]
## override Lagom’s ServiceLocator-based ConfigSessionProvider
session-provider = akka.persistence.cassandra.ConfigSessionProvider
}
cassandra-journal {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
cassandra-snapshot-store {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
lagom.persistence.read-side.cassandra {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
- 提供 Kafka Broker 设置(如果您使用的是 Kafka Message Broker):如果您打算使用 Lagom 的流媒体服务,下一步是提供 Kafka 代理设置。为此,你需要修改你的服务的application.conf,如果Kafka服务是静态定位的,也就是你的服务只充当消费者的时候,否则你不需要进行如下配置。
lagom.broker.kafka {
service-name = ""
brokers = "127.0.0.1:9092"
client {
default {
failure-exponential-backoff {
min = 3s
max = 30s
random-factor = 0.2
}
}
producer = ${lagom.broker.kafka.client.default}
producer.role = ""
consumer {
failure-exponential-backoff = ${lagom.broker.kafka.client.default.failure-exponential-backoff}
offset-buffer = 100
batching-size = 20
batching-interval = 5 seconds
}
}
}
- 创建Akka集群: 最后,我们需要自己创建一个Akka集群。由于我们没有使用 ConductR,因此我们需要自己实施加入。这可以通过在
application.conf
. 中添加以下行来完成
akka.cluster.seed-nodes = [
"akka.tcp://MyService@host1:2552",
"akka.tcp://MyService@host2:2552"]
现在,我们知道我们需要为我们的服务提供哪些配置,让我们来看看部署的步骤。由于我们只使用 java -cp
命令,我们需要打包我们的服务并 运行 它。为了简化流程,我们为其创建了一个 shell 脚本。
有关完整示例,您可以参考我们的 GitHub 存储库 - Lagom Scala SBT Standalone project.
希望对您有所帮助!
是否可以将 Lagom 应用程序部署为独立的 运行 jar 或 Docker 容器? 如果是,怎么做?
是的,可以将 Lagom 应用程序部署为独立的 JAR/Docker 容器。为此,您可以按照以下步骤操作。
- 配置 Cassandra 联系点:如果您计划为您的服务使用动态服务定位,但需要静态定位 Cassandra,这在生产中很明显,那么修改
application.conf
你的服务。此外,禁用 Lagom 的ConfigSessionProvider
并退回到akka-persistence-cassandra
中提供的那个,它使用接触点中列出的端点列表。您的 Cassandra 配置应如下所示 -
cassandra.default {
## list the contact points here
contact-points = ["127.0.0.1"]
## override Lagom’s ServiceLocator-based ConfigSessionProvider
session-provider = akka.persistence.cassandra.ConfigSessionProvider
}
cassandra-journal {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
cassandra-snapshot-store {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
lagom.persistence.read-side.cassandra {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
- 提供 Kafka Broker 设置(如果您使用的是 Kafka Message Broker):如果您打算使用 Lagom 的流媒体服务,下一步是提供 Kafka 代理设置。为此,你需要修改你的服务的application.conf,如果Kafka服务是静态定位的,也就是你的服务只充当消费者的时候,否则你不需要进行如下配置。
lagom.broker.kafka {
service-name = ""
brokers = "127.0.0.1:9092"
client {
default {
failure-exponential-backoff {
min = 3s
max = 30s
random-factor = 0.2
}
}
producer = ${lagom.broker.kafka.client.default}
producer.role = ""
consumer {
failure-exponential-backoff = ${lagom.broker.kafka.client.default.failure-exponential-backoff}
offset-buffer = 100
batching-size = 20
batching-interval = 5 seconds
}
}
}
- 创建Akka集群: 最后,我们需要自己创建一个Akka集群。由于我们没有使用 ConductR,因此我们需要自己实施加入。这可以通过在
application.conf
. 中添加以下行来完成
akka.cluster.seed-nodes = [
"akka.tcp://MyService@host1:2552",
"akka.tcp://MyService@host2:2552"]
现在,我们知道我们需要为我们的服务提供哪些配置,让我们来看看部署的步骤。由于我们只使用 java -cp
命令,我们需要打包我们的服务并 运行 它。为了简化流程,我们为其创建了一个 shell 脚本。
有关完整示例,您可以参考我们的 GitHub 存储库 - Lagom Scala SBT Standalone project.
希望对您有所帮助!