美文网首页基础原理Spring-Boot转载部分
实战篇:Binlog 的三个业务应用场景

实战篇:Binlog 的三个业务应用场景

作者: 70b39f9dc443 | 来源:发表于2019-07-29 15:32 被阅读69次

前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。

什么是binlog

binlog是mysql的一种二进制日志文件,用来记录数据的变化。mysql使用binlog进行主从复制,如图:

客户端向master的mysql sever写入数据

当数据发生变化时,master将变更的数据记录写入到二进制文件中,即binlog。

slave订阅了master的binlog,所以会通过一个I/O THREAD与master的DUMP THREAD进行通信,同步binlog

I/O THREAD读取到binlog后会吸入到relay log中,准备重放。

slave会通过SQL THREAD读取relay log,重放数据的改动并执行相应的改动。

这里有几点需要注意:

主从复制不是强一致性,只能保证最终一致。

master配合binlog复制会影响性能,所以尽量不要在master上挂太多的slave,如果对时间要求不高,可以在slave上挂slave。

 binlog的业务应用

上面介绍了mysql中应用binlog的场景,而我们的业务可以伪装成master的slave节点,感知数据的变化,这就给了我们很多的业务运用空间。

1、数据异构

经常有这样一个场景:

原来业务是一个很单一的系统,所以表也在一起。随着业务的发展,系统开始拆分,总有一些表是各个业务都关注的表,但是对相关的字段的运用场景不同,所以这样一份元数据怎样更好的为各个系统服务就成了问题。当然,多写或者读写分离可以从物理节点上减少对数据服务器的压力,但是对业务并没有做到足够的支持,因为这些表都是一样的。因此我们可以通过binlog进行数据异构。

如图所示,订单系统生成订单后,通过binlog可以解析生成用户维度的订单信息供用户中心查询、商户维度订单表供运营管理,以及搜索系统的搜索数据,提供全文搜索功能。

这样,我们就通过原始的订单数据异构到三个系统中,提供了丰富的数据访问功能。不仅从节点上降低了数据服务器的压力,数据表现形式也更贴近自己的服务,减少不必要的字段冗余。

2、缓存数据的补充

对于高并发的系统,数据库往往是系统性能的瓶颈,毕竟IO响应速度是远远小于电子的运算速度的。因此,很多查询类服务都会在CPU与数据库之间加上一层缓存。即现从缓存获取,命中后直接返回,否则从DB中获取并存入缓存后返回。而如果原始数据变化了但缓存尚未超时,则缓存中的数据就是过时的数据了。当数据有变更的时候主动修改缓存数据。

当客户端更改了数据之后,中间件系统通过binlog获得数据变更,并同步到缓存中。这样就保证了缓存中数据有效性,减少了对数据库的调用,从而提高整体性能。

3、基于数据的任务分发

有这样一个场景:

 很多系统依赖同一块重要数据,当这些数据发生变化的时候,需要调用其他相关系统的通知接口同步数据变化,或者mq消息告知变化并等待其主动同步。这两种情况都对原始系统造成了侵入,原始系统改一块数据,并不想做这么多其他的事情。所以这时候可以通过binlog进行任务分发。

当原始业务系统修改数据后,不需要进行其他的业务关联。由调度系统读取binlog进行相应的任务分发、消息发送以及同步其他业务状态。这样可以将其他业务与原始业务系统解耦,并从数据的角度将所有管理功能放在了同一个调度系统中,责任清晰。

总结

binlog是mysql提供的数据同步机制,很好的解决了主从分离、读写库分离等业务。而我们可以构建一个中间件系统,“伪造”成master的一个slave。当读取了binlog中的数据变化后,根据相应的业务场景做各种业务处理。而目前我接触到的最常见的就是第一个场景——数据异构,可以异构到其他表中,也可以异构到其他数据引擎中,比如Elastic Search。

相关文章

  • 实战篇:Binlog 的三个业务应用场景

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。 什么是binlog binlog是mysql的一种...

  • Mysql binlog应用场景与原理深度剖析

    本文深入介绍Mysql Binlog的应用场景,以及如何与MQ、elasticsearch、redis等组件的保持...

  • ActiveMQ系列-01 入门

    ActiveMQ - 初步认识 消息中间件应用场景 异步处理 场景说明: 用户注册,需要执行三个业务逻辑,分别为写...

  • 误删了mysql的数据文件?

    在一次业务场景中删除了几条业务数据怎样恢复咧,那就通过强大的binlog日志吧,前提是你的mysql需要开启bin...

  • 实时推荐引擎设计

    一. 系统设计目的 根据实时binlog数据和日志流数据实时更新学习模型,做到在线预测 二. 业务场景介绍 目前...

  • 视频图像侦查科技怎样用在公安案件侦破?

    公安视频应用的业务场景主要包括治安监控、图像侦查、视频指挥。三种应用场景下的用户、需求、业务流程各有区别,治安监控...

  • AI PM诗与远方

    当前AI主要应用到各TO B业务场景,AI PM角色更多是业务负责人角色,去挖掘和探索AI在实际场景下的应用,真正...

  • HttpRunner深入使用总结

    本文主要记录使用HttpRunner进行具体业务场景接口测试的应用。 首先:登录接口,之后所有的业务场景都是基于登...

  • 数据服务基础能力之元数据管理

    一、业务背景 1、应用场景 在多变的数据服务场景中,应用中常见如下的业务需求,通过对多种数据结构的灵活组合,快速实...

  • 如何系统学习ElasticSearch、Kibana、Logst

    一、ELK Stack 的应用场景 场景一:使用 ES 作为业务系统的后端。 此时,ES 的作用类似传统业务系统中...

网友评论

    本文标题:实战篇:Binlog 的三个业务应用场景

    本文链接:https://www.haomeiwen.com/subject/jrvbrctx.html