00:00
好,我们继续往后说啊。呃,刚才我们把这个业务数据的采集和分流啊,它的这个整体架构呢,我们嗯,做了一个分析啊,然后下面我们就呃逐步来去实现好吧。首先呃,这个里面我们用到了一个主架,叫这个Maxwell。啊,不过这个Mac的话,大家这个之前已经用过了啊,所以说我们也不用这个,呃,这个这个给你展开来说啊,我们就再来这个简单过一下。那行吧,一起来看啊,呃,那你要先明白这个Maxwell他是干什么事的。它其实是一个买搜的这个变更数据的一个抓取软件。那这个是什么意思呢?说白了啊,他会去实时的监控你这个MYSQL数据库的一个数据的变更的一个操作,比如说你做了insert,做了update,做了delete。只要你这个买SQL的数据呢,做一个变更,那么他就能够把这个变更的数据呢,给你抓取到。抓取到以后呢,它会以这个诶摘的这个格式呢,发送给一些这个流数据处理媒体处理处理平台。
01:03
那当然他要发送给谁呢?就看你配的是什么呢,比如说我们配一个卡不卡,那么他就把数据呢发给这个卡不卡,如果你要配的是这个别的,那我就把数据呢发给这个别的平台。对吧,这个简单啊,两句话就是它就是监控你的my soql的数据的一个变更,当我监控到你变更以后,我就把监控到的数据,然后呢,以Jason的格式呢,发送给我们的,诶某一个平台,比如说你配一个卡布卡,那我就发送给卡不卡。对吧,就是来做这个事的,好行,那么他到底是怎么做到的这个事情呢?诶,那我们就不得不去说一下这个买soq的一个主动复制了。嗯,它其实就是什么,基于这个MYSQL的一个主成复制,然后呢,去完成了这个功能。OK,来把这个聊一下啊呃,首先啊,这个主从复制我们其实。不是很陌生哈,虽然说我们没有讲过买搜狗的主从复制,但是呢,我们讲过red的一个什么主从复制。对吧。
02:00
讲你们肯定讲过主成复制吧。啊,那这个主从复制我们主要想做到什么事情呢?啊,无非就是两件事情,第一件事情。就是给你的主机啊,做一个什么热备,就当我们这个主机,然后呢,出现这个故障以后呢,我们可以什么呀,迅速的切换到你的这个重机上,然后呢,继续什么进行工作,就说白了,你有这个主啊,有虫,然后有虫啊,那么正常情况下我的主机呢,在对外提供服务。那假如说呢,我的主机呢,诶因为这个压力过大对吧,顶不住了啊故障了,这个时候呢,如果说你没有重击的情况下,那你的整个服务就完了,但如果说我有重机的情况下,那我可以这么迅速的把某一台重机呢,切换成什么主机,然后呢,接着对外提供服务。对吧,就是做一个容灾啊这样的一个,呃,效果啊好,还有一种情况就是做这个读写分离。呃,这个读写分离是什么意思呢?啊,还是我们用这个主机有这个重机对吧?因为首先你做了主从复制,那我的重机呢,就会从你的主机里面来去复制数据,就你主里面有什么数据,那我的重里面也就会有什么数据。
03:07
好,你比如说在我们这个MYSQL中啊,我们将来对这个数据的这个读和写。对吧,读和解操作是特别特别多的,特别是读操作是更多的写操作的话呢,相对于这个读操作来讲还好。那如果说你的这个所有的这个读写操作啊,都打给同一台机器,比如说我都打给这个主机了,那么有可能它压力比较大。特别是什么,在这个高并发的这个场景下面啊,如果说你都打给这个主机的话,那它的压力是还是非常大的。那我们怎么去分摊这个压力呢?我们可以这么去做。我们把这个读和写的给它分开。你所有的写操作我们都打给这个主机。对吧,这个可能你会想,那为什么不把写头打给重击呢?重击不负责写的过程,你能明白吧,重击他只负责读,然后呢,只负责从你的主机去同步数据,所以它是没有写的资格的啊,所以说我们把这个所有的写操作呢,都打给这个主机,那么所有的读操作呢,我们都从这个重机里面去读,这个所谓的什么读写分离。
04:10
明白吧,读写分离,你的主机呢,我们一般情况下只有一台,那我就负责你的写操作,因为你的血呢也并不是很多,说它呢肯定是绰绰有余的,而你这个读的操作呢,特别特别多。对吧,那你从你的这个重击里面去读,而且我重击的话是有多台的,那你可以什么通过这个合理的一个这个负载均衡,然后呢,去做到让我的这个读请求呢,可以打到不同的这个冲击上去,分摊你这个毒的一个压力。明白吧,这也是我们这个主虫呢,哎,能够这个做到的事情。啊行,那你先把这个明白一下啊行,你这个知道以后呢,我们就得知道一下,那你的主机和重机,它到底是怎么去做这个复制的呢?对吧,我重启怎么就能够把主机的数据给它复制过来了呢。啊,我们来看说一下啊呃,这个就要说到这个买so的一个这个blog了啊,买so的blog啊,就是这个主机呢,它有一个非常好的习惯,对吧,就这个大哥啊,他有个非常好的习惯。
05:06
他会把他这个平生所经历的事情呢,诶写到你的日记本里面,就是他会什么写日记啊,写日记日记本能听到吧,就是我经历过什么事,比如说诶,我今天写了一个什么数据,我今天改了一个什么数据,我今天删了一个什么数据等等等等,所有什么经历过的事情,我都什么记录到这个日记本里面,这个日记本我们叫blog。对吧,就像这个图里面啊,就是主机啊,它会把这个所有的修改操作啊,就是数据改变的操作都记到日记本里面。好,那我记到这个日记本里面以后,你比如说啊,现在我想知道一下你都经历了哪些操作,那我是不是只要翻阅一下你的日记本,我看看你里面都记得什么东西,不就OK了吗?所以说我们的重机哈,它是这么去做的,重机呢,他会派一个线程去什么呀,到你的主机里面去抄什么呀,抄这个日记。啊,去抄日记,能听到吧,就你里面记录了什么东西,我就原封不动的抄过来。
06:03
呃,抄过来以后呢,他为什么先把这个抄过来的日记呢,先放到一个,就是你可以理解为是重记的一个日记本,好吧,重记的一个日记本它叫什么,它叫中记日志。叫这个东西叫中继日志里面。就说白了啊,我把你的日记呢,先抄到这个本本里面对吧,抄到这个本本里面以后干嘛呢,那我再去派一个小弟,把你这个日记本里面所有记录的事情呢,我重做一遍。就说白了,我学你的主机哈,你做了什么操作,我也学你,我也做一个什么操作。那你就想想吧,只要你们经历的事情是一样的,那你说我最后能不能保证我们两个里面的数据是一样的呀?肯定是可以的吧,对吧,这就是my soql的一个组成复制啊来再来整体说一下啊,主机把所有写的操作记录到一个blog里面,这是一个二进制文件啊二进制文件,然后呢,重击它会有一个线程呢,去抄你的这个blog,把抄到的blog呢记录到一个他的中继日志里面,然后呢,他再派出一个线程去把这个中继日志里面所有的这个过程重放一遍,就重做一遍。
07:12
就说白了,你里面做了点啥事,我里面也同样要做一个什么事,这样我们就能够保证我们之间的数据是同步的,就做到了这个主重的一个复制。好吧,这是我们这个MYSQL的一个组成复制的原理,OK,行,那你这个知道了以后呢。我们其实就可以去说一下这个Maxwell来,我们先来到这啊,我们就可以说一下这个Maxwell的一个工作原理,对吧,很简单,它怎么就能够监控到你这个买soql的数据的改动了呢?他其实就是把自己呢,伪装成一个slave,就伪装成一个重击啊,说这个大哥啊,我是你的小弟,你让我抄一下你的日志。对吧,抄一下你的日记。对吧,说他要什么遵循买搜狗组成复制的协议,从这个master同步数据啊,我们给了一个图,大家可以来看一看。
08:00
好,打开。行看了啊,首先这是我这个买货的一个什么主机啊,转ma,然后呢,这是我的Maxwell Maxwell说了哈,说大哥啊,我是你的小弟。对吧,我是你的小弟,那既然我是你的这个小弟了,那我就可以什么呀,去抄你的日记对吧,说是你看啊大哥呢,把这个平生所经历这些事情呢,诶记录到这个日记本里面呢,叫lo。好,那这个ma的话,那你看啊,我既然是作为你的小弟了,那我就能够去看一看你这个平时这个所发生的事情,对吧,看一下你这个辉煌的经历啊,他就会过来什么呀,去读。明白了吧,去把这个东西呢给他读过来。抄过来呗,啊,但是呢,毕竟我是Maxwell啊,我是伪装成你的这个什么重击的,我并不是你真正的一个重击,你能理解吧?如果我要是你真正的重击的话,那我不仅要把你这个试题读过来,我还得学习你。对不对?我把你作为我的榜样,我还得学习你,我要去把你所有做过的事情呢,我再次去做一遍。这是真正的虫,但我的Maxwell呢,毕竟他不是真正的一个虫啊,他只是伪装成了一个虫,那么他把这玩意读过来以后呢,他可不会自己学习啊,他会干嘛呀?他会把这个消息呢给你发走啊,把这个什么学过来的东西呢给你卖出去,卖给谁呢?卖给这个后面你所配置的一个主件。
09:17
比如说我配了一个卡夫卡对吧,那么相当于这哥们什么呀,这哥们伪装成这个MYS的重击,然后呢,诶把他的blog读过来以后呢,再把这个b logg里面的数据呢,诶以Jason的格式,然后呢,发送给这个你后面所配置的这个主件,比如说卡不卡,这样的话呢,我就可以只要你的MYSO里面的数据发生了写操作,我就可以把它同步到我的卡卡中。就这么一个过程。好吧,来这个原理大家之前应该都是讲过的啊,就算你这个忘了啊,这个原理也是很简单的,你一看你就能够看明白。OK吧,这是这个Maxwell啊,它要基于这个MYSQL的一个主重复制,然后呢去展开这个工作。
10:01
明白吧,啊,展开这个工作啊,OK。行,呃,那么这个说明白以后呢,呃,这里面ma这个MYSQL主动复制里面其实还有一个事儿,我们需要去聊一聊,就是这个blog的一个,呃,叫什么叫这个级别吧。对吧,Blog的一个什么级别,我们要给大家去简单说一说啊,那我先停一下。
我来说两句