首页 文章

关于Apache Ignite的频繁更新

提问于
浏览
1

我希望有经验的Apache Ignite可以帮助指导我的团队找到关于Apache Ignite新设置的答案 .

整体设置

数据从许多分布式传感器不断生成,并流入我们的数据库 . 每个传感器可以每秒传递许多更新,但通常会产生<10次更新/秒 .

每日数据的大小约为 . 每个站点有5000万条记录 .

数据描述

每条记录包含以下值

  • 传感器ID

  • 点ID

  • 时间戳

  • 接近

其中1是传感器的ID,2是站点上某点的ID,3是从传感器到点的接近度测量 . 每秒都有约 . 1000个这样的新记录 . 记录永远不会更新 .

查询工作量

查询相当复杂,具有重要(和动态)回溯的时间 . 查询可能需要来自一个站点中的多个传感器的数据,但是动态确定所需的传感器 . 大多数连续查询仅需要过去几个小时的数据,但经常需要查询多天 .

通常,我们因此具有一次写入查询 - 许多场景 .

初步战略

如果我们将数据加载到例如java中的原始整数数组中,则一周的空间消耗接近5GB . 因为在今天的平台中它是“花生”,我们打算将所有数据加载到Ignite集群/分布式缓存中的所有节点上 . 换句话说,使用复制的缓存 .

然而,持续的更新让我感到困惑 . 如果我更新整个缓存,我需要每秒钟通过网络传输相当大量的数据 .

例如,每分钟/小时创建块不一定能够正常工作(因为每个传感器可以暂时脱机),这将使其在稍后的某个时间点传送过时的数据 .

因此,我的问题是如何有效地处理这一更新流,同时保持过去7-10天的数据的一致视图 .

我当前的本地实现将数据分成1小时块 . 当给定块的新记录到达时,块被替换为更新的块 . 这在单台机器上运行良好,但在集群中的网络开销方面可能过于昂贵 . 我还没有Ignite实现,所以我无法对此进行测试 .

理想情况下,点火集群中的每个节点将在过去X天内维护其自己的所有数据副本,并持续应用小更新工作负载 .

所以我的问题是,Igniters会如何处理这个问题?

1 回答

  • 0

    听起来你想要跨多个服务器扩展负载,但是复制缓存是不可能的,因为每次更新都将始终更新所有节点,并且您拥有的网络流量越多,节点越多 . 我认为您应该使用分区缓存,并尝试添加节点,直到系统能够处理负载 .

相关问题