目前使用 cancal 配合 adapter 把 mysql 数据异步到了 es ,但是我在新增数据和修改数据后,拿到的数据是 更新前的数据,后面我修改了源码,强行带上了?refresh=wait_for ,但是效果还是很差,新增时可以拿到最新了,但是修改还是不行
1
defunct9 2021-10-28 15:32:26 +08:00
我记得有 mysql 的 adapter ,直接送入 ES
|
3
kidlj 2021-10-28 16:18:18 +08:00 1
试试 Kafka + Debezium ?我的使用经验是无延迟。
BTW, Friends don't let friends do dual writes. |
4
pengtdyd 2021-10-28 16:52:34 +08:00
cancal 我用过,但是感觉不是很成熟,不知道你们有没有部署过高可用版本,整体使用感受就是特别像 kpi 项目,cancal 的文档我看了好几遍,就文档本身而言写的挺清晰的,但是写的比较分散。就公司内部使用来看,运维成本也比较高,小公司基本上要用的话,没有深入研究过的人,基本上是抓瞎。maxwell 没有高可用版本,这个不建议使用,国外用 Debezium 的多,我对他不是特别了解,没玩过。
|
5
testtest1987 2021-10-29 10:05:40 +08:00
我用的 canal 1.1.3,延迟感觉还行啊,难道是我 DB 压力太小了?
主 MySQL->从 MySQL->Canal->MQ->Java 数据处理->ES |
6
Saxton OP @pengtdyd 是的 完全就一个 KPI 项目,不知道你有没有去阅读过里面的代码, 我到现在已经修了三个 BUG 了, 里面那些代码完全就是可读性为 0
|
7
Saxton OP @testtest1987 用的是哪一个 MQ 呢,我感觉是我 es 的问题 我分配的内存太小了 数据其实已经过去了 但刷出来的时候太慢了
|
8
Aresxue 2021-10-29 11:27:15 +08:00 1
refresh=wait_for 还是别加了。。,默认 1s 刷新还是能够满足伪实时诉求的,加了之后对整个 es 的负荷更多反而更加影响性能,用 canal 的话就作为一个 binlog 的采集器好了,自带的 adapter 限制和 bug 太多了。。我这边都是 canal 集群->RocketMQ 集群->多 java 应用进程->ES 集群,慢在哪一步也更好分析,目前你这样感觉要筛查下 binlog 自身的延时,还有 es 的写入频率可能要做适当的调整
|
9
testtest1987 2021-10-29 15:05:36 +08:00
@Saxton RocketMQ. 推送到 RocketMQ 应该是用的自带功能,之前是用 Java 解析后直接推 ES,但有个问题导致数据堆积,Cancel 挂了,后来出了个新版本,自带推送到 RocketMQ / Kafka,就直接用了
|