是否有嵌入式复制地图解决方案具有“读即写”的保证,并且可以对频繁更改的数据进行异步更新传播?

问题描述

你好,谢谢!

问题简而言之:

是否存在嵌入式复制地图解决方案,具有“读即写”的保证,并可以异步更新经常更改的数据的传播?

说明:

由两个服务组成的系统(例如):

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

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

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

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

我在这里找到了讨论:Replicated caching solutions compatible with AWS。 区别在于:发问者对频繁更新的案件不感兴趣。

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

总结问题:

  • 是否存在具有“读即写”保证和异步更新传播频繁更改数据的复制地图解决方案?
  • 如果 所有应用程序都有不丢失数据的现成可能性 重新启动(例如,通过持有单独的未嵌入实例 使用默认的Docker映像或定期的磁盘备份。
  • 也许我什至 想念Hazelcast文档的一些观点吗?

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...