异构数据
如:在数据存贮的时候,主要数据会存储在mysql中,例如用户新增记录。在商品查询的时候,大量的数据直接查询mysql的速度会比较慢。引入Es搜索引擎可以实现全文检索,但是mysql与ES的存储结构不同,因此,需要将mysql数据存储格式转换为es的格式数据。如何实现数据的准时候同步,还要团队之间解除耦合。
mysql的主从同步机制
当向mysql中插入/删除一条数据的时候,会在主库的binlog日志中新增记录,然后传输binlog日志文件到从库,从库接收到binlog后,会写入relaylog中,从库执行relaylog中的记录到binlog中。
Canal
Canal 是阿里巴巴旗下的一款开源项目,纯Java开发,基于数据库增量日志解析,提供增量数据订阅&消费,目前支持了mysql/mariaDB。阿里的Canal的机制相当于代替了从库的位置,收集到了relaylog的日志后,不进行本地重放,而是自动触发java代码实现向ES的同步。自动触发java代码可以通过配置文件指定。Canal实现了监听的机制,但是没有实现团队间解耦的问题,可以通过引入MQ的方式实现解耦合。
//插入图片
测试环境及背景
背景:1. 在商品查询的时候,大量的数据直接查询mysql的速度会比较慢。引入Es搜索引擎可以实现全文检索,但是mysql与ES的存储结构不同,因此,需要将mysql数据存储格式转换为es的格式数据。2. 保证数据库中数据与Redis缓存中数据的一致性。3. 业务系统A的某一个业务涉及的数据变动,需要同步数据到业务系统B。
环境:
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~