Bifrost Document

Version 1.6.x

Bifrost ---- 面向生产环境的 MySQL 同步到 Redis,MongoDB,ClickHouse 等服务的异构中间件

文件队列

Bifrsot Diagram

image

Bifrost 在整个链路中,只有一个 Binlog 解析器,多个表同步配置 并行同步。Bifrost 为了提升性能,采用了 通道队列缓存 , 同步队列缓存 两层队列缓存来实现 多个表同步配置并行运行。

多个表同步并行运行,同步性能最大化,但是在某一个表同步出现了数据转换或者目标库故障连接不上等情况下,那可能会出现当前表同步队列缓存,间接影响了binlog解析阻塞,影响其他同步空闲状态。

Bifrost v1.2.1 版本开始 , Bifrost 新增了一个文件队列功能,在表同步出现阻塞的时候,自动启动文件队列,并不影响 Binlog 解析,也不影响其他表数据同步。

文件队列配置

#是否开启文件队列功能 true|false
file_queue_usable=true

#统计是否启文件队列的时间,单位毫秒
file_queue_usable_count_time_diff=5000

#file_queue_usable_count_time_diff 时间内内存队列被挤满的次数
file_queue_usable_count=10

假如配置 file_queue_usable = false ,不管什么情况,都不会启用文件队列

默认情况下,文件队列是在 5000ms 内 内存队列连续被写满10次,自动启动,不需要人为在管理界面任何操作

文件队列,是按表的同步配置为单位启动的,也就是说,假如一个表配置了 10 个同步, 其中第一个配置同步是同步到 Redis, 在这个同步到 Redis 的同步中同步慢了,出现了内存队列阻塞的情况下,则启用一个文件队列,用于缓冲 同步到当前这个表同步到 Redis

Last updated on 11 Aug 2020
Published on 11 Aug 2020
Edit on GitHub