00:00
我们知道了买cat是什么啊,什么数据库中间键啊,咱们还得再了解一下买cat能干什么啊,首先第一个。读写分离啊,那这块呢,哎,读写分离非得用my cat吗?哎,我这块用Java程序能不能实现啊,咱们试一下看看,哎读写分离首先啊,咱们试下哎不用买catd可不可以啊,首先第一个哎得有什么,是不是咱们的Java程序啊。啊,这块呢,哎,我得什么呢?连上咱们的数据库啊,咱们的诶MYSQL数据库,而且这块咱们说了这块呢,呃,一个系统来说,它的读请求跟写请求数据量是不一样的,读请求更多,写请求相对少一些,那这块呢,哎,咱们我这块不需要买cat,我就搭一个读写分离一个数据库专门负责用来什么呢?读请求,一个数据库专门负责什么呢?写请求。
01:10
对,第二个数据库,咱们专门用来负责写请求,好,那这块呢,哎,首先咱们的Java程序得能连上这两个数据库,对吧?诶,连上两个数据库。啊,那言下之意,各位,我在咱们的账号程序里面是不是得有什么呢?配置信息啊,而且什么呢,读数据库的配置信息要有写数据库的,呃,信息也要有啊,那这块还没完,咱们是不是还得在Java程序里面写程序进行判断啊,那所有的什么呢?Select,哎,咱们的select查询的请求要发给咱们的读数据库,而咱们的什么呢?哎,比如说哎,咱们的。像update啊,哎update哎什么的,哎咱们的insert啊,咱们的delete啊,咱们的哎create这些,诶对应的什么呢?相的写请求是不是要发给写数据库啊,那这块呢,各位啊,这块呢,既有什么呢读请求,又有什么写请求,咱们要进行区分,在账号程序里面也得写对应的什么呢?相应程序进行判断,那这块呢,哎问题就来了,各位是不是又紧耦合到一块儿了,那这块呢,但凡啊这块呢,咱们要做一些改变啊,这块设计的改动太大,那这块咱们说了,哎咱们看看啊,如果中间我不仅耦合啊,那这块呢,放一个什么呢?放一个咱们买KD进去,各位效果会怎么样啊买K咱们说了是什么,是不是数据库中间键就在中间待着,对吧?那咱们放谁my cat好放个my cat进去,各位看看效果怎么样。首先。
02:58
呃,第一个好处是不是我账号程序不需要管,哎到底连几个数据库对吧?数据库所有的配置信息诶他不用管了,交给咱们的maca,还有就是啊,咱们对应的什么呢?哎,我判断是,哎查询的请求是读的请求还是咱们的什么呢?Update更新啊这种写的请求我是不是也不需要找va程序管了,它只需要把S扣传给咱们的my cat就可以,咱们把什么呢?哎这些语句直接传到mycat里面,由my cat去什么呢决定?哎这个请求到底发给哪台机器,这样什么呢?Java程序是不是又轻松了很多呀?啊可以说哎,咱们的Java程序哎跟咱们后面数据库真正的做到了解耦啊,这就是咱们所说的哎读写分离啊,为什么要用到买CA还没完,咱们但凡要诶做好读写分离,你这个读数据库跟写。
03:58
数据库的数据是不是得保持一致啊,怎么保持一致啊,咱们可以用到MYSQL数据库的基本功能之一什么呢?哎,咱们的主从复制,咱们可以在这儿实现主从复制。
04:13
哎,主图复制啊,说起来很简单,就是把什么把咱们的哎写数据库跟咱们的读数据库哎搭起关系,让什么呢?写数据库里面对应的哎表的数据更新啊咱们诶所有的写操作都能什么呢?把数据复制到咱们的读数据库,那这样可以保证两个数据库数据数据是一致的,那这样各位是不是也可以实现咱们的这个高可用性啊,咱们的读写分离了,有同学说老师啊,那这块难道数据库就不会有风险吗?啊,肯定会有啊,有什么风险,比如说哎我不小心啊,或者说哎,我主机出问题了,哎我的这个什么呢,写数据库如果挂了,那怎么办啊,各位有没有好的办法。
05:05
啊,我听到了啊,有同学说到了一个好办法了,什么我是不是可以给我这个写数据库,咱们是不是可以来个备机啊,啊我有个备机啊,专门什么呢?备份咱们这个写数据库啊这样的好处是什么?是不是但凡写数据库挂了,是不是可以主备切换啊,那咱们啊,既然都已经有被机了,咱们能不能再扩展一点,哎脑洞再开的大一点,我能不能再来一个哎读哎一个我背击的一个什么呢?从积咱们这样去做。哎,这样的好处是什么?各位是不是,哎我这块哎多台机器,也就是咱们所说的什么呢?双主双重,这样的好处是什么?哎,首先抗风险能力增加,再一个各位我读的哎负责毒的主机是不是更多了啊,各位这是不是缓解了更多的压力啊,所以各位这块呢,呃,咱们不得不说的另外一种情况,咱们的my cat也可以实现高可用性,那也就是咱们的什么双主双从。
06:11
好啊,有同学说老师啊,赶快咱们动手吧,搭起来啊,别着急啊,咱们呢,哎,先了解一下们看看能做什么,嗯,他可以实现读写分离,那这块呢,呃,至于双主双从啊,各位别着急,咱们之后就会什么呢?一个一个搭,咱们先从简单的开始,咱们先搭什么呢?哎,咱们的哎。两台机器的咱们的什么单主单从啊,这块呢,双哎单单写单独的这种情况啊,之后呢,咱们再搭起双主双重啊,这种读写分离啊,各位这块呢,之后咱们都会实现它,好啊以上就是咱们的读写分离,好再来咱们再看啊,除了读写分离啊,这是读写分离的架构啊,咱们来看一下,来进行一个封装,封装了后面的多台数据库啊,多个主机实现什么呢?读写分离跟你的Java程序进行一个诶解耦操作啊以上就是咱们的读写分离,好再往下,哎,咱们的买cat的第二个功能,数据分片啊各位这块呢,怎么进行数据分片,也就是咱们的数据库分布式啊,咱们这块呢,首先第一个垂直拆分什么呢?分库啊,还有什么呢?水平拆分分表啊,一般公司啊,都是什么呢?垂直加水平拆分和。
07:36
合到一块用,那这块呢,哎,为什么要做这个事情啊,咱们再去看看,好再开一个图,咱们要做什么呢?哎,说说数据库分布式了。好,咱们看一下数据库分布式啊,这块怎么去实现,首先各位啊,咱们都知道一个数据库啊这块,哎,比如说一个大的数据库里面有很多的什么呢?很多的表啊,这块呢,哎,比如说哎表一表二哎表三啊表四啊,这有很多很多啊,咱们啊都会有很多的表,那这块各位都知道,每张表是不是都有它的什么呢?一个查询的瓶颈啊,那这个哎,单张表的查询瓶颈啊,比如说一张表数存的数据达到千万级了,你查询就会很慢了,那这什么呢?哎,那这块怎么办?
08:26
啊,单张表的什么呢?哎,这块它有一个瓶颈啊,这块呢,哎,但凡我有很多的表达到瓶颈了,我这个库的压力也非常大,那这块怎么办?各位咱们可以做一个什么呢?垂直拆分啊,这叫什么呢?分库操作啊垂直拆分分库啊我怎么做,我把这块呢,一个库我给拆分成多个模块,每个模块包含对应的一些表,把它分到多台主机上面啊这块呢,咱们啊举个例子,这块呢啊,比如说咱们先来什么呢?说我这有三台主机,三台主机分别是什么呢?哎,咱们分别有对应的数据库,比如说咱们的DB1 DB2 DB33个数据库。
09:13
这是啊,咱们叫DB1吧,哎,再来,哎,DB2。第二。还有什么呢?IDB3,咱们所说的分库操作,就是把咱们这一个库拆分成多个数据库啊,每个数据库分别存不同的表,这样缓解了咱们什么呢?数据库的一个压力啊,那还有啊这块呢,这是垂直拆分,还有什么呢?哎,咱们可以再做一个事儿,比如一张表已经什么呢?达到千万级了,那这个咱们都知道,达但凡达到瓶颈,那查数据库查询的效率会非常低,也就是非常慢,有可能甚至啊,你根本查询不出数据了,那这块怎么办?咱把这个什么呢?哎,我这个数据库表啊,咱们写下这是什么呢?咱们的表。
10:19
咱们的表如果达到什么千万级的数据,千万级的数据量。哎,咱们哎怎么进行优化这块呢?哎有一个非常好的手段,它叫什么呢?水平拆分,哎分表操作,咱们啊这块也可以进行分表。分表操作是什么啊,这块同样是啊,咱们把一张表哎拆成多张表,那这块呢,数据各位切记也不是在一个数据库里面,咱们要什么呢?哎,把它分到什么呢?多个数据库啊,这就是咱们对应的什么呢?分表操作。
11:04
那这块问题又来了啊,如果是咱们直接连咱们的Java程序的话,那这块Java程序又需要配多个数据源,你还得判断,哎,我这一张表到底哪些数据在,哪个数据库又是强耦合了,那怎么办?哎,各位啊,都已经猜到了,咱们是不是可以用什么再次请出my cat出山对吧?让他什么呢?哎,把咱们的数据库,哎,全都是分布式的数据库给封装一下。哎,这样同样是啊,我的账va程序只需要访问我的什么呢?买cat就足以了,哎,至至于你这个数据库啊,哪些表在哪个数据库啊,你这个表里面的哪些数据在哪个数据库里面啊,由谁来操心?各位啊,由咱们的my cat去操心就可以了,这块呢,由买cat来做这个事儿,他可以把什么呢?咱们对应的这些啊,请求按按照什么呢?分片规则,哎,分到什么呢?各个数据库里面,然后去查询它的数据,做Java程序只需要传查询S口就可以了,这就是咱们的数据库分布式,也是MACA1项非常重要的功能。好,再往后咱们还得再了解一下买凯的另外一项重要功能叫多数据源整合,它怎么做的?哎,各位咱们看一下这个架构图可以看到啊这块,诶咱们客户端。
12:33
访问咱们的买cat啊,一个但凡一个系统里面啊,比如说咱们的电商系统,它的什么设计数据量非常多啊,这块呢,诶咱们为了哎实现它的,比如说多个主机同时写入数据啊,什么意思,有一定备份的,咱们可以实现高可靠性啊这块呢,哎,比如说像一些啊关键的什么呢?诶关键表,比如说哎咱们的财务表啊,还有咱们的订单表啊,这些非常关键的系统表,我可以做什么高可性,高可靠性的一个什么呢?诶一个设计方案什么呢?我买cat可以接入一个整个的数据库集群啊,这个集群对这重要数据进行一个高可靠性的一个实现啊咱们什么呢?备份多个啊,这是诶它的一项功能,还可以怎么做,比如说像一些什么呢?呃,用户表啊,字典表啊,常规数据可以怎么做?哎,我可以写入到多个关型数据库里面。
13:33
比如说咱们这个数据库里面做什么呢?呃,比如说做一个主存复制啊,然后呢,诶,但凡出现故障也可以自动做切换的这种模式,当然这块除了mexicole诶别的关性数据库也可以介入啊,比如说咱们都知道的,哎Oracle公司的Oracle数据库,还有咱们的什么呢?诶,IBM公司的啊,跟Oracle公司老对手了谁DB two啊也可以通过maca介入啊,还有什么,哎,各位像什么呢?哎,我存储大量的,哎一次性的,比如说非业务数据这个哎只存储一段时间就可以了,那这块呢,哎,比如说日志类的数据,咱们可以用到谁?No s数据库咱们知道的,哎这块呢,非常常用的是不是咱们的啊,也可以接到my cat里面啊,这就是买另外一项重要功多数据源的整合,各位以上啊,就是咱们买cat的三个非常重要的功能。
14:33
无写分离,数据分片,也就是数据库分布式,还有咱们的多数据源整合,这是啊们看它的三项非常重要的功能啊,有同学说老师啊,那这买cat既然功能这么强大啊,这块呢,哎它的原理一定很复杂了啊,比如说哎这原理啊有分成什么呢?哎多种啊,多种因素,然后呢,多种架构啊这块呢非常晦涩,非常难理解,各位不是啊,这个my cat的它原理非常的简单啊,咱们呢,哎了解my cat是干什么的之后,咱们就进入学习它的什么呢原理。
我来说两句