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

怎么监听数据库的变化来触发 Lucene 的索引更新

  •  
  •   yanshenxian · 2020-07-08 20:05:05 +08:00 · 1443 次点击
    这是一个创建于 1584 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没有 rabbitmq 等消息队列的情况下...

    8 条回复    2020-07-09 16:19:09 +08:00
    liujan
        1
    liujan  
       2020-07-08 20:07:23 +08:00
    阿里有个监听数据库变化的项目,叫:canal,你可以看下能不能满足你的需求。
    yanshenxian
        2
    yanshenxian  
    OP
       2020-07-08 20:13:37 +08:00
    @liujan canal 支持局部订阅吗 小服务可能压力有点大
    liujan
        3
    liujan  
       2020-07-08 20:17:00 +08:00
    @yanshenxian 你可以看下他们的文档,具体我也不大记得了。
    henyi2211
        4
    henyi2211  
       2020-07-08 20:19:52 +08:00
    查查 binlog 日志 相关资料
    200ok
        5
    200ok  
       2020-07-08 20:25:18 +08:00
    1. 楼上说的监听数据库变化
    2. 你的服务轮询数据库
    3. 数据库写入方在写入数据库同时给你发一份数据
    4. 数据库写入方 pub 你的服务 sub 收到 pub 信号时取查一次数据库,更新 lucene
    能想到的大体是这样
    Cbdy
        6
    Cbdy  
       2020-07-08 20:32:14 +08:00 via Android
    canal 还行
    optional
        7
    optional  
       2020-07-08 22:34:53 +08:00
    无侵入的方法:监听 binlog (最干净),定时扫描(可以根据 updatedAt 优化)
    其次应用 dual write
    sunxiansong
        8
    sunxiansong  
       2020-07-09 16:19:09 +08:00
    之前用 PG 的时候,pg 有个 listen/notify 特性,相当于监听 /通知消息队列

    给表写触发器,数据变动的时候发消息,收到消息后更新 ELK 索引
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2791 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:23 · PVG 21:23 · LAX 05:23 · JFK 08:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.