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

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

阅读方支持了吗?

EDIT 1: 我正在研究用户管理模块 .

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

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

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

我们假设部署如下:

  • node 1:运行用户服务的实例1及其cassandra DB

  • node 2:运行用户服务的实例2及其cassandra DB

  • node 3:运行用户服务的实例3及其cassandra DB

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

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

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

回答(1)

2 years ago

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