我是拉格姆的新手,我问的是如何在同一服务的多个实例上操纵数据库中的数据?
读取方支持了吗?
编辑1: 我正在研究用户管理模块。
我已经安装了一个ReadSide,用于侦听与用户相关的事件并更新其数据库中的数据,并且我正在使用ReadSide来获取所有用户的列表。
我目前在Dev中,因此我有一个运行1个用户服务实例的群集节点和另一个运行Cassandra DB的群集节点。
在将用户服务和Cassandra部署(生产)到多节点集群时,我需要配置/创建多个(目前为3个)用户服务实例。
我们假设部署如下:
用户'SMITH'调用注册Webservice,实例1处理请求。
稍后由于某种原因(例如维护,失败)实例1不再可用。
实例2或3会从这种意外的“情况”中恢复吗? 它们中的任何一个都可以处理与用户'SMITH'相关的ReadSide操作吗?
答案 0 :(得分:2)
这三个节点将形成一个akka集群,当其中一个节点被删除时,居住在那里的实体将被移动到其他节点之一。
有关如何运作的详细信息,请点击此处: https://doc.akka.io/docs/akka/current/cluster-sharding.html和https://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)。