0

您好,提前感谢!

简而言之:

是否存在具有“读取您的写入”保证和频繁更改数据的异步更新传播的嵌入式复制地图解决方案?

描述:

系统包含两个服务(仅举例):

  1. 一个“导入器”——从外部系统接收数据,通过将接收到的数据与当前数据合并来更新系统数据,并将其传播到“user_api”服务。
  2. N 'user_api' 服务,经常为用户提供数据。

我正在通过在内存复制映射(很少请求历史数据和使用 MySQL)中保存最新数据(平均 2GB)来改善“user_api”的响应时间。我只需要放置/获取/删除操作。

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

我需要的是本地 Map 读/写速度,异步更新传播到其他集群节点。我需要“阅读您的文章”保证并将异步更改传播到“user_api”服务。

我在这里找到了讨论:与 AWS 兼容的复制缓存解决方案。不同之处在于:提问者对频繁更新的案例不感兴趣。

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

总结问题:

  • 是否存在具有“读取您的写入”保证和频繁更改数据的异步更新传播的复制地图解决方案?
  • 如果在所有应用程序重新启动时有现成的可能性不会丢失数据(例如,通过使用默认 docker 映像或定期磁盘备份来保存单独的非嵌入式实例),这也很酷。
  • 也许我什至错过了 Hazelcast 文档中的一些观点?
4

1 回答 1

0

我认为 Ignite 会做你需要的。有一个缓存属性称为写同步模式。默认值为 PRIMARY_SYNC,它同步写入主数据库并异步写入备份。还有 FULL_SYNC 和 FULL_ASYNC。

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

于 2020-11-05T13:19:57.947 回答