是否有具有 'read your writes' 保证和异步更新传播频繁更改数据的嵌入式复制地图解决方案?

Is there embedded replicated map solution with 'read your writes' guaranties and async updates propagation of frequently changed data?

您好,提前致谢!

问题简而言之:

是否有嵌入式复制地图解决方案'read your writes'保证和异步更新传播频繁更改的数据?

描述:

系统包含两个服务(仅作为示例):

  1. 一个 'importer' - 从外部系统接收数据,通过合并接收到的数据更新系统的数据,并将其传播到 'user_api' 服务。
  2. N 'user_api' 个服务,经常为用户提供数据。

我正在尝试通过在内存中复制地图(历史数据很少请求和 MySQL 使用)中保存最新数据(平均 2GB)来提高 'user_api' 的响应时间.我只需要 put/get/remove 个操作。

我尝试过 Hazelcast 的 ReplicatedMap,其中每个服务都嵌入了 Hazelcast 实例。此外,我还添加了单独的非嵌入式 Hazelcast 实例(使用默认 docker 图像),以便能够在不丢失数据的情况下重启整个集群(防止 MySQL 的初始填充)。它几乎就像一个魅力。但是似乎有一个很大的缺点 - 它通过阻止写入操作来减慢 'importer' 内的导入过程。

我需要的是本地 Map read/writes 的速度以及异步更新传播到其他集群节点的速度。我需要 'read your writes' 保证和异步更改传播到 'user_api' 服务。

我在这里找到了讨论:Replicated caching solutions compatible with AWS。 不同点:提问者对更新频繁的案例不感兴趣

我阅读了一些有关 Ignite 的内容,似乎在这种情况下它与 Hazelcast 的工作原理相同。关于 Geode:无法通过快速查看评论来了解他是否符合所描述的情况 - 需要更多时间进行调查。

总结问题:

我认为 Ignite 可以满足您的需求。有一种缓存属性叫写同步模式。默认值为 PRIMARY_SYNC,它同步写入主数据库并异步写入备份。还有 FULL_SYNC 和 FULL_ASYNC。

Ignite 的工作方式与 Hazelcast 相同,从某种意义上说,您可以拥有一个单独的集群,而不是嵌入您的节点。 Ignite 还具有持久性,因此您也可以重新启动集群并且仍然不会丢失数据。