我希望有经验的Apache Ignite可以帮助指导我的团队找到有关Apache Ignite新设置的答案。
从许多分布式传感器不断生成数据并将数据流传输到我们的数据库中。每个传感器可以每秒传递许多更新,但通常产生<10次更新/秒。
每日数据的大小约为。每个站点有5000万条记录。
每条记录包含以下值
其中1是传感器的ID,2是站点上某点的ID,3是从传感器到点的接近度测量。 每秒都有约。 1000个这样的新记录。记录永远不会更新。
查询相当复杂,具有重要(和动态)回溯的时间。查询可能需要来自一个站点中的多个传感器的数据,但是动态确定所需的传感器。大多数连续查询只需要过去几个小时的数据,但通常需要多天查询。
通常,我们有一次写入查询 - 很多场景。
如果我们将数据加载到例如java中的原始整数数组中,则一周的空间消耗接近5 GB。因为那是&#34;花生&#34;在今天的平台中,我们打算将所有数据加载到Ignite集群/分布式缓存中的所有节点上。换句话说,使用复制的缓存。
然而,持续的更新让我感到困惑。如果我更新整个缓存,我需要每秒钟通过网络传输相当大量的数据。
为每个分钟/小时创建块不一定能够工作(好),因为每个传感器都可以暂时脱机,这将使它在稍后的某个时间点传送过时的数据。
因此,我的问题是如何有效地处理这一更新流,同时保持过去7-10天内数据的一致视图。
我当前的本地实现将数据分块为1小时块。当给定块的新记录到达时,块被替换为更新的块。这在单台机器上运行良好,但在集群中的网络开销方面可能过于昂贵。我还没有Ignite实现,所以我无法测试它。
理想情况下,ignite集群中的每个节点都会在过去X天内维护自己的所有数据副本,并持续应用小型更新工作负载。
所以我的问题是,Igniters会如何处理这个问题?
答案 0 :(得分:0)
听起来您希望扩展多个服务器的负载,但是复制缓存无法实现,因为每次更新都会更新所有节点,而您拥有的网络流量越多,节点越多。我认为您应该使用分区缓存,并尝试添加节点,直到系统能够处理负载。