这种同步方式与业务强绑定,倒如 WMS 系统中的出库单,并不需要非常实时,稍微有延迟也可以接受,每分钟从 MySQL 的出库单表中,把最近十分钟创建的所有出库单取出,批量存入Elasticsearch中,取数据的操作需要执行的逻辑可以表达为下面的 SQL:

select * from wms_orders where update_time >= date_sub(now(), interval 10 minute);

当然,考虑到边界情况,可以让这个时间段的数据与前一次的有一些重叠:

select * from wms_orders where update_time >= date_sub(
    now(), interval 11 minute
);

取最近 11 分钟有变动的数据覆盖更新到Elasticsearch中,这种方案的缺点显而易见,必须要求业务数据严格遵守一定的规范。比如必须有update_time 字段,并且每次创建和更新都要保证该字段有正确的时间值,否则同步逻辑就会丢失数据。

最后编辑: kuteng  文档更新时间: 2022-03-22 19:29   作者:kuteng