V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MOONLIGHTT
V2EX  ›  程序员

[实现方案]庞大数据规模系统的热加载的实现

  •  
  •   MOONLIGHTT ·
    Sunnycheey · 2019-11-14 14:29:08 +08:00 · 1381 次点击
    这是一个创建于 1841 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设我现在需要构建一个搜索引擎,并且搜索引擎背后的海量的数据我已经获取了。假设我的搜索引擎使用了 pagerank 类型的图排序算法,则系统可以先利用数据构成一个图(由于数据量较大,构图的代价较高),之后根据排序算法对图中的节点进行排序。为了避免用户在提交检索请求时的长时间等待,上述图的计算结果应该被保存(保存在内存或者磁盘中)

    那么,当搜索引擎所用的数据有所更新(例如增加新数据或者旧数据被修改)时,典型的处理方法是什么呢?

    BTW,我目前主要有两种想法:

    • 每隔一段时间(较长的时间,例如 3 天)重新构图,重新进行相关计算相关内容并将数据保存在数据库中
    • 将图保存在内存中,并且在构图的程序中监听文件系统的改变情况,当监听到文件改变时,程序自动修改图结构(修改图结构之后,又要重新进行排序算法,因此在进行排序的过程中,也要给之前的结果做备份)
    2 条回复    2019-11-15 09:10:21 +08:00
    Raymon111111
        1
    Raymon111111  
       2019-11-14 15:08:57 +08:00
    两种方案都可以, 主要看业务对实时要求怎么样

    主要考虑数据一致性和重启加载的问题
    farseeraliens
        2
    farseeraliens  
       2019-11-15 09:10:21 +08:00 via iPhone
    你看一下 solr cloud 或者 elastic search 怎么实现的不就完了。开源搜索引擎那么多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3117 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:16 · PVG 22:16 · LAX 06:16 · JFK 09:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.