gpt4 book ai didi

java - 如何获取同一服务的多个实例的所有持久实体

转载 作者:行者123 更新时间:2023-12-02 02:23:24 25 4
gpt4 key购买 nike

我对 Lagom 框架还很陌生,我正在寻找获取分布式应用程序的所有用户的最佳方法。

在我的应用程序中,我有一个在 Cassandra DB 上运行的用户服务。因此,为了选择所有用户,我遵循了 UserServiceImpl.java 中的 Lagom Online Auction 示例应用程序:

//...
@Override
public ServiceCall<NotUsed, PSequence<User>> getUsers() {
// Note this should never make production....
return req -> currentIdsQuery.currentPersistenceIds()
.filter(id -> id.startsWith("UserEntity"))
.mapAsync(4, id ->
entityRef(id.substring(10))
.ask(UserCommand.GetUser.INSTANCE))
.filter(Optional::isPresent)
.map(Optional::get)
.runWith(Sink.seq(), mat)
.thenApply(TreePVector::from);
}
//...

我还检查了这个Question就这样

很明显,读取端的想法适用于用户服务的一个实例。但是,在生产环境中,我应该有同一服务的许多实例可能在多个节点上运行。在这种情况下,我认为每个服务都应该有自己的数据库。

所以我的问题是:读取端逻辑是否只能覆盖每个服务实例的所有用户,还是应该覆盖所有服务实例的所有用户?

此外,是否还有其他解决方案来获取所有服务实例的所有用户?

非常感谢。

最佳答案

如果您有相同服务的多个实例,它们应该共享一个数据库。

如果您有多个不同的服务,它们都应该有自己的数据库。

如果您有一个服务拥有的数据,而另一服务必须查询该数据,则可以使用 Lagom 的 Message Broker API将事件从所属服务发布到 Kafka。然后,其他服务可以订阅Kafka主题,将数据复制到自己的读端数据库中。

关于java - 如何获取同一服务的多个实例的所有持久实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com