java - 在同一服务的多个实例上操作数据库中的数据

标签 java cassandra cassandra-3.0 lagom

我是 lagom 新手,我想询问如何在同一服务的多个实例上操作数据库中的数据?

读取端支持吗?

编辑1: 我正在研究用户管理模块。

我已经放置了一个 ReadSide 来监听用户相关事件并更新其数据库中的数据,并且我正在使用 ReadSide 来获取所有用户的列表。

我目前处于开发阶段,因此我有一个运行 1 个用户服务实例的集群节点和另一个运行 Cassandra DB 的集群节点。

将用户服务和 Cassandra 部署(到生产)到多节点集群时,我需要配置/创建用户服务的多个(目前为 3 个)实例。

假设部署如下:

  • 节点 1:运行用户服务的实例 1 及其 cassandra DB
  • 节点 2:运行用户服务实例 2 及其 cassandra DB
  • 节点 3:运行用户服务实例 3 及其 cassandra DB

用户“SMITH”调用注册 Web 服务,实例 1 处理该请求。

后来由于某种原因(例如维护、故障)实例 1 不再可用。

实例 2 或 3 会从这种意外“情况”中恢复吗? 它们中的任何一个都可以处理与用户“SMITH”相关的 ReadSide 操作吗?

最佳答案

这三个节点将形成一个 akka 集群,当其中一个节点被删除时,原来存在的实体将被移动到其他节点之一。

有关其工作原理的详细信息可以在此处找到: https://doc.akka.io/docs/akka/current/cluster-sharding.htmlhttps://doc.akka.io/docs/akka/current/cluster-sharding.html#how-it-works

任何读取端处理器都会发生同样的情况。我在这里假设您正在使用分片标签。 https://www.lagomframework.com/documentation/current/scala/ReadSide.html#Event-tags

如果不使用分片标签,您将只有一个读取端处理器在运行。在其中一个节点中。

ps:郑重声明,由于上次编辑尚不清楚,因此每个节点不应有专用的 Cassandra DB。所有节点都应连接到同一个 Cassandra 集群。您应该有不同的 Cassandra 节点形成一个集群(不一定是 3 个)。

关于java - 在同一服务的多个实例上操作数据库中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48156685/

相关文章:

java - 如何将EJB3注解转换为ejb-jar.xml文件配置?

java - BoxLayout 中的 createVerticalGlue() 不起作用

Cassandra读取进程

cassandra - stargate rest api 授权 token 在过期前将保持事件状态多长时间?

java - 带有 Getter/Setter 的私有(private)列表与公共(public)列表

java - 使用 Spring XML 配置实现观察者模式?

amazon-web-services - 如何通过 shell 访问 Amazon Keyspaces?

join - Cassandra 非规范化数据模型

cassandra - spark-cassandra-connector 性能 : executors seem to be idle

elasticsearch - 将Cassandra连接到Elasticsearch节点的问题