我的用例如下:
我们在自动扩展EC2集群中运行大约500台服务器,需要每秒数百万次访问相同的配置数据(以键/值方式布局)。
配置数据不是很大(1或2 GB)并且不会发生太大变化(在高峰时段每分钟会有几十次更新/删除/插入)。
延迟对我们至关重要,因此需要复制数据并将其保存在运行应用程序的每个实例的内存中。
最终的一致性很好。但是,我们需要确保每次更新都会在某个时刻传播。 (知道服务器可以随时关闭) 跨服务器的更新传播应该是可靠且易于设置的(我们的服务器不能拥有静态IP,或者我们不想在AWS上伪装"伪装#34;多播等...)
以下是我们过去探索过的解决方案:
以下是我们考虑尝试的解决方案:
我想知道这些解决方案是否适用于我们的用例。最终,我可能会遇到哪些问题。
这是我到目前为止所发现的:
谢谢!
答案 0 :(得分:3)
Geode应该适用于您的用例。您应该能够在每个节点上使用Geode Replicated区域。您可以选择执行同步或异步复制。如果出现故障,复制区域将从系统中的现有成员获取数据的初始副本,同时确保不会丢失正在进行的操作。
在配置方面,您必须启动几个/几个成员发现过程(Geode定位器)并将每个成员指向这些定位器。 (我们建议您启动一个定位器/ AZ并使用3个AZ来防止网络分区。)
Geode / GemFire已经稳定了一段时间;在很长一段时间内为印度和中国铁路的预订系统提供低延迟,高可扩展性要求。
披露:我是Geode的提交者。
答案 1 :(得分:1)
Ignite为S3存储上的发现提供本机AWS集成:https://apacheignite-mix.readme.io/docs/amazon-aws。它解决了主要问题 - 您不需要在重新启动实例时更改配置。简而言之,任何成功连接拓扑的节点都会将其坐标写入存储桶(并在发生故障或离开时将其删除)。当您启动一个新节点时,它会读取此存储桶并连接到列出的地址之一。
答案 2 :(得分:1)
Hazelcast的复制地图不适用于您的用例。请注意,它是一个映射,它复制在不在客户端节点/服务器上的所有节点上。另外,正如你所说,它还不完全可靠 以下是Hazelcast解决方案:
IMap
)并调整计数&基于键/值对的大小/数量的驱逐配置。数据在所有节点之间进行分区。NearCache解决方案需要考虑的事项: