Java Gemfire对冲突和重复条目的抵抗力如何?

Java Gemfire对冲突和重复条目的抵抗力如何?,java,gemfire,Java,Gemfire,我正在为一个Java应用程序编写设计文档,其中两个冗余进程从消息队列中读取项目,我们希望它们都使用相同的密钥将项目存储到gemfire存储中,其目的是让许多运行连续查询的应用程序处理这些项,然后将结果存储到另一个Gemfire区域 我刚开始接触Gemfire,目前还没有能力设置多服务器测试台,所以我想在我进行研究时问几个问题 假设两个进程同时将项目存储在gemfire中,这会导致任何问题吗 如果一个密钥被写入两次,该项会被覆盖吗?如果密钥被锁定,我会遇到性能或其他方面的问题吗 如果我有一个连续的

我正在为一个Java应用程序编写设计文档,其中两个冗余进程从消息队列中读取项目,我们希望它们都使用相同的密钥将项目存储到gemfire存储中,其目的是让许多运行连续查询的应用程序处理这些项,然后将结果存储到另一个Gemfire区域

我刚开始接触Gemfire,目前还没有能力设置多服务器测试台,所以我想在我进行研究时问几个问题

假设两个进程同时将项目存储在gemfire中,这会导致任何问题吗

如果一个密钥被写入两次,该项会被覆盖吗?如果密钥被锁定,我会遇到性能或其他方面的问题吗

如果我有一个连续的查询运行,该项目将匹配,我会得到两个点击/事件吗?在查询中,还是仅第一个查询会产生命中率


如果我有4个进程使用相同的键将相同的项目写入存储,这会有什么不同?

如果要写入的区域已分区,则您概述的场景将正常工作。在这种情况下,主键上的锁定时间仅为在不同节点上创建对象副本所需的时间。这里主要考虑的是网络的速度。第二次写入将覆盖第一次写入。至于这对您的性能是否合适,将取决于每秒有多少个对象流入

以下是需要考虑的一些备选方案: 1您可以创建一个持久队列并仅在一个客户端上运行CQ。如果客户端失败,您只需重新启动它,就仍然具有一致性。 2在服务器上创建分区事务区域。在客户机上,将从CQ返回的对象放入事务区域,并添加CQ时间戳作为密钥的一部分。在事务区域的异步事件侦听器中,更新目标区域并删除事务区域中的对象。
3创建与目标区域位于同一位置的事务分区区域。在RegionPartitionedTransactionRegion.withFilterkey.withArgumentsobject和CQ时间戳上创建函数。您的客户机使用上述签名调用函数。该函数检查是否已在事务区域中添加密钥+时间戳。如果是,请忽略该操作。如果没有,则在事务区域中设置key+CQ时间戳并更新目标区域。将交易区域上的过期策略设置为在一小时、一天或您的偏好后过期。

谢谢您的确认。