您好,提前感谢!
简而言之:
是否存在具有“读取您的写入”保证和频繁更改数据的异步更新传播的嵌入式复制地图解决方案?
描述:
系统包含两个服务(仅举例):
- 一个“导入器”——从外部系统接收数据,通过将接收到的数据与当前数据合并来更新系统数据,并将其传播到“user_api”服务。
- N 'user_api' 服务,经常为用户提供数据。
我正在通过在内存复制映射(很少请求历史数据和使用 MySQL)中保存最新数据(平均 2GB)来改善“user_api”的响应时间。我只需要放置/获取/删除操作。
我已经尝试过 Hazelcast 的 ReplicatedMap,其中每个服务都嵌入了 Hazelcast 实例。此外,我添加了单独的非嵌入式 Hazelcast 实例(使用默认 docker 映像),以便能够重新启动整个集群而不会丢失数据(防止 MySQL 的初始填充)。它几乎就像一个魅力。但是似乎有一个很大的缺点 - 它通过阻止写入操作来减慢“导入器”中的导入过程。
我需要的是本地 Map 读/写速度,异步更新传播到其他集群节点。我需要“阅读您的文章”保证并将异步更改传播到“user_api”服务。
我在这里找到了讨论:与 AWS 兼容的复制缓存解决方案。不同之处在于:提问者对频繁更新的案例不感兴趣。
我读了一些关于 Ignite 的文章,似乎它在这种情况下与 Hazelcast 的工作方式相同。关于 Geode:无法通过快速查看评论来了解他是否符合所描述的案例 - 需要更多时间进行调查。
总结问题:
- 是否存在具有“读取您的写入”保证和频繁更改数据的异步更新传播的复制地图解决方案?
- 如果在所有应用程序重新启动时有现成的可能性不会丢失数据(例如,通过使用默认 docker 映像或定期磁盘备份来保存单独的非嵌入式实例),这也很酷。
- 也许我什至错过了 Hazelcast 文档中的一些观点?