【发布时间】:2015-11-24 19:02:25
【问题描述】:
我正在从事一个项目,该项目涉及许多客户端连接到包含一堆图形信息(节点属性和边)的服务器(如果需要,服务器)。他们可以随时选择引入新节点或边,然后从整个图形中请求一些信息(两个节点之间的最短距离、图形着色等)。
这显然很容易开发幼稚算法,但是我正在尝试学习扩展它,以便它可以处理同时更新图形的许多用户,许多用户从图形请求信息,以及处理非常大(500k +)节点的可能性,也可能处理大量边。
我可以预见的挑战:
- 使用不断更新的图表,每次有人请求信息时我都需要处理整个图表...这会大大增加计算时间和延迟
- 对于一个非常大的图表,计算时间和延迟显然会高很多(我读到一些公司通过批处理大量结果并将它们与索引一起存储以供以后使用...但是那么由于我的图表在不断更新并且用户想要最新的信息,这不是一个可行的解决方案)
- 大量用户请求信息,这将对服务器造成相当大的负载,因为它必须多次处理图表
我该如何开始面对这些挑战?我查看了 hadoop 和 spark,但它们似乎具有高延迟解决方案(使用批处理)或解决图形不经常变化的问题的解决方案。
我的想法可能是处理图表的不同部分并为其编制索引,然后跟踪图表的更新位置并重新处理图表的该部分(一种分布式动态编程方法),但我没有确定这是多么可行。
谢谢!
【问题讨论】:
-
您研究过 Giraph 吗?我真的认为您不需要像其他人那样尝试自己解决这些问题。
-
我调查过了,但它似乎是基于批处理的...如果我错了,我会再调查一次
-
还有 Spark 图表工具。
-
很好,我也会调查一下
标签: hadoop web graph apache-spark