在同一服务的多个实例上处理数据库中的数据

时间:2018-01-08 19:12:31

标签: java cassandra-3.0 lagom

我是拉格姆的新手,我问的是如何在同一服务的多个实例上操纵数据库中的数据?

读取方支持了吗?

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

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

我目前在Dev中,因此我有一个运行1个用户服务实例的群集节点和另一个运行Cassandra DB的群集节点。

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

我们假设部署如下:

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

用户'SMITH'调用注册Webservice,实例1处理请求。

稍后由于某种原因(例如维护,失败)实例1不再可用。

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

1 个答案:

答案 0 :(得分:2)

这三个节点将形成一个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)。