+-
同步Postgres和ElasticSearch的最佳方法是什么?

我可以选择在我的Postgres DB上同步ES和最新的更改

1- Postgres收听/通知:

我应该创建一个trigger - >使用pg_notify - >并在一个单独的服务中创建监听器。

2-对ES的异步查询:

我可以在更改DB后异步更新ElasticSearch。即:

model.save().then(() => {model.saveES() }).catch()

哪一个会扩展得最好?

PS:我们在生产中尝试过zombodb,但效果不佳,它减缓了产量。

2
投票

我建议你考虑https://github.com/debezium/debezium。它具有Postgresql支持并实现了在其他帖子中提出的change capture模型,而不是dual write模型。

debezium的好处:

低延迟变化流 存储复制日志中的更改以确定持久性 仅发出可以被消费并通过管道传输到其他系统的写事件(创建,更新,删除)。

UPD。 Here is a simple github repository,展示了它的工作原理

1
投票

正如你要求的方法,我想你想知道应用更好的架构的可能性,我希望你提出一个由汇合给出的建议:

enter image description here

enter image description here

这里https://www.confluent.io/blog/bottled-water-real-time-integration-of-postgresql-and-kafka/