00:00
核心的理念CP加对好,那么呢,还是那句话,学一个新东西肯定要跟我们以前的老东西呢对比着,相互来借鉴和参考一下,而且越学到最后啊,你会越来越体会到,就是我说过的那句话,没有那么多新技术都是在以前的老技术上面的话,干嘛呀,第一个新技术是不是继承于老技术啊,我们大家都学过,继承的话,是不是这个子类比父类更强大,父类有的我是不是都能做呀,但是我子类方法复写了以后,是不是掉自己的有一些更加强的自我性的一些拓展啊好,那么这儿我们来看看什么是CP和贝斯,好这呢请同学们呢,跟着我呢,基本上呢来一是复习,二呢来学习,首先我们传统的RDBMS,就是传统的关系数据库,我们是不是最重要的就是acid啊?
01:00
那么呢,这边好,请同学们连英文连单词连中文请在纸上给我写一遍的话,这个也真的不用了,这个你们数据库肯定也学过,回去翻翻资料吧,好吧啊,毕竟我们今天是noq,主要是CP这些东西哈,那么好,如果说同学们还是有吃力的,我们呢,在这我是不是都给大家整理了一下啊,你也不用,如果你你看你接受程度啊,如果你说诶老师我以前做的笔记,学Oracle的时候有这些,那么你翻,如果你不想回头翻,我这四个是不是也给大家整理好了啊,分别的话呢,简单来说袁子欣没问题吧,好,那么这样的话呢,我问大大家一个D哈,那么可以这么讲,你们班有一半的同学是肯定会碰到这种填空选择面试,而且这些理论知识将会伴随着你后面学。传统的S。
02:00
或者no so来对比参考一定是什么,理论和实践同样重要,OK,来,往下走,下面呢,继续来看看传统的数据库叫AC,那么呢,我们no soq以后是叫什么cap,请同学们继续动手勾写。首先所谓强一致性和可用性和分区容错性分别是一些什么呢?我们呢,先来解释一下,来同学们强一致,这就是我们说的数据上没得商量,现在我提卡密特提交给数据库的话是什么是不是就得是什么呀?就像我们所说一样的假设,对于传统的OA或者考勤系统,我既然刷了卡就是刷了卡,那么一般的公司是不是到公司早上刷卡,比如说九点上班。
03:00
你的进场时间是08:45,下午的话,假设16点下班,你的刷卡时间是06:05,那么是不是代表一个完整的早上上班,下午下班有一个完整的刷卡时间啊,你今天考勤正常,但是呢,如果你今天早上刷了进门卡,下班的时候忘了,那么跟我讲是不是缺这一次了,那么这种强一致性是不是非常的重要,因为到年底的时或者月底的时候是在统计每位统一员工的出勤数啊好,那么呢三来看我们呢,为了讲清楚强抑制性和可可用,也就是我们现在前面所说的三维和三高的什么高可用什么概念呢?哈,还有一个呢,就是说同学们现在你自己做的CRM是不是有时候自己的小系统内部的系统啊,假设内网用了一个哈,也就我们公司这么二三十个人用的一套OA,崩了影响大不大?不大吧,但。
04:00
他突然告诉你双11当天淘宝被人给黑了,你觉得这个影响大不大?好,我们先开头哈,待会儿想说这个,也就是说所谓的高壳用这说明什么?哥们,11那天你是上也得给我上,不能上也得给我上,就是你不能倒,系统不能崩,能理解吗?假设现在你们打开3W点京东点COM404,那是不是我们大家一起帮助强哥上头条啊?好,最后分区容错性又是什么呢?待会说好,现在先开个头CP,那么请同学们现在就记着,对于经典的noq理论,传统的关系数据库是ACD,是不是四个都满足啊?但是非常抱歉,CP你只能痛苦的三选二,清楚吗?这就是那SQ面试中关键的,他不会去问你是吗?
05:00
你对这个noq的更多的理解,就问你CP能不能三个都满足,你说CP不知道,或者你说三个都可以满足,那就不用聊后面的了。好那么我们来看看什么叫CP的三进二,也就是说我们先说图再说理论吧,好,同学们不用记哈,老图书到手了以后都会给同学们,我相信你记得不会,我有我写的好吧?好,大家请看,现在我们就记着CC的核心理论就是一个分布式系统,不可能同时很好的满足一致性、可用性和分区融资性三者同时满足,好,先跟着我走,回头我们来说最多只能满足几个,好那么沿下是CP,那么拆分以后是不是你要么就是C,要么就是CP,要么是不就是AP啊,好,什么概念呢?C,那么呢,我们大家请看CP和AP各自的侧重点。
06:00
CA满足什么?是不是强一致性啊?CP满足是什么?也是满足一致性,但是它呢,分区容忍性必须拿到,也就是这个P被占了,最后是AP,那么言下之意,同学们以淘宝京东这样以就说说者就说,或者就是以你们下个月出去找工作用no用的也就是它好待会我们来说哈,先把这个呢给一个眼熟,待会我会详细拆解,让同学们明白为什么来大家请看C是不是持久,是不是高可用,PA是不是分区容错性,那么大家看c c papa,那么大家请看我们的red是哪一个好?我们的传统的关系据库my Oracle是什么?最终,那么大家看AP是不是就是这些东东啊?
07:00
好,那么言下之意你得跟人家讲,就是从acid给我聊到CP一句话,R dp Ms Oracle是不是C和A呀,好,我们的ready是不是C和P呀,好,那么呢,我们呢,通过图了以后来看,看来C是强一致,A是高可用,P是分区容错性,对于no so q的时代非常抱歉,分区容错性是我们必须要实现。换句话说,三个里面PB站,因为分布式的系统是什么,它有可能不是布在同城,能理解吗?啊,那么这种东西就比如说像淘宝的话,他大家都之间应该有听过一种概念叫CDN吧,就是内容分发,离你最近的,就比如说或者不说这些复杂的高大上的计算机里面,咱们就说一个美团快递或者是顺丰,假设你现在在回龙观,那他恐怕不会。
08:00
安排一个什么一端的一个送货员送给你吧,那你就是耍人了是不是啊,那你是不是会就近最短最优先的路径推送啊,那么好,这个时候类似我们在什么分析容缩性,由于很多服务器它不就说比如说淘宝的服务器不见得全部是放在杭州,全部放在上海或全部放在北京,能理解吗?那么换句话说,比如说像淘宝最搞笑的什么江浙沪包邮的话,是不是在上海江苏那边服务器也有啊,那么这个时候可能你在杭州,在上海的服务器是不是不一不同的机房啊,那么也就是说导致我们什么P分区容错性必须要满足,那么这个时候我们只剩下什么强一致性和什么高可用,那么来同学们,我们来看看哈,传统的,正像我们刚才所说的,这个CA是不是就是我们传统的数据库,它有没有P啊?好,请问数据库。
09:00
里面包括你们现在用的Oracle做的项目,是不是就是就像我们说的,只要卡密特提交就是提交了,没提交是不是没提交数据是不是及时就OK了,好,那么来下面是不是有个AP啊,好,那么好,什么时候选一致,什么时候选高可用呢?来听我分析后两者是不是P都要被占掉了,那么你只能在C前一致和A高可用之间做一个选择,来抬头同学们听我分析,现在你出去外面做的所有的金融系统,电商系统,基本上也是传统这种分布式的,大多数的网站的选择都是AP,什么概念?我们说过noq分布式的话,P与分区容错性是不是被占掉了,没得商量,诶,为什么呢?来同学们请看现在我现在呢强一执行在说就是那些。
10:00
具是不是要极其极其的精确和精准呢?那么现在我们来这么想哈,淘宝双11这个网站上有个女性的包包,大家都去买,都去看,或者有些很多女性的话呢,是等这款包包,假设一款LV的就在双11降价,那是不是蜂拥而至啊,那么这个时候在包包上它会有这样的东西什么呢?第一个有多少个用户浏览过,浏览数是不是比如说136893,好,再来喜欢这款包包的点赞的数,假设有100万,同意吗?好,现在我让你选第一个,如果是C,什么概念,就是强移致性什么概念?哥们儿,我这个包包的点赞数浏览数你绝对不能错,现在是一百四还是101次,你必须要给我精确的知道这是一条需求。第二个我们,当然这个是不是我们。
11:00
保证强一致性,只要有人点过,我们是不是就加个一啊?但是别忘了那天那个数据量可是哗哗哗就跟洪灾一样的,明白吗?你很难在那样高并发属于湿的系统里面严格的保证强日性数据的统一,清楚吗?说难听点,你就是在统一的时候,我这找100个同学在这天天顶着,你说这个数字能统计的出来吗?好,这是第一个,好,假设你要往这边走,那么A是不是就要不了了?A是不是叫高可用啊?Available什么概念?就是这个数字。第二种呢,就是那个点赞数和到底有多少个客户浏览过这个LV的包包,对于广大购物的女性和网民而言不大感兴趣。换句话说,你这个包包到底被别人浏览了100次还是102次,你那会儿你关不关心啊,换句话说,允不允许我们那个数据先不对一点,或者说叫弱一致性呢,但是我保证AG只就是网站别贪两害相。
12:00
居心的原则,第一个点赞数你给我精确统计出来,和网站和崩了瘫痪,你选怎么选?正常人类是不是也会选择高可用A呀,能理解了吗?因为P是不是在分布式的系统已经被占掉了,那么好,这个时候就是我们所说的大多数包括京东淘宝都是CP这种分布式的no数据库理论建立在这个基础上,他们都是AP,明白了吗?言下之一,同学们,你们也知道双11那天购物的时候,真的那个这个点赞数点凑数,那些评价,你关心那些数字吗?你更关心诶,12点他说有打折,要秒杀,要抢一次,赶快给老婆买个IPHONE6,还可以便宜1000块钱,这个是不是你更关心啊?然后突然跟你说,我这守了一半天了,你跟我说网站不可用挂了,希望你明日再来,你说说一句,我养化干你妈呀,好,我操你妈就不用说了吧,好,来。
13:00
同学们再来看哈,现在这个时候我们呢,会有第二个问题,就是假设老板说好双11我们过了,我一定要精确的统计到我们这个数据,那么好,同学们是不是还是想统计一下,到底到底有多少个人浏览过这个包包,为这个包包点过赞啊,那么这个时候我们是不是要有后面在数据慢慢的最终达到一致性啊,所以说现在目前的大多数的电商网站都是什么弱一致性加AP,就是高可用和分区融通性总共来构成清楚吗?好,来,这是我们大多数网站的选择,来看看我们的no,我们说过no这支是不是CP啊,什么概念?它什么叫强益执行,就是你这些数据在我的数据库里面,毕竟我们说过其作用是不是帮买S负啊,那么坦白讲,你数据库里面的东西最终是不是要。
14:00
有一一致性啊,好,那么所以说如果说这款产品出来,那么red是CP,我们用red最终是要保证大多数整体这个网站的AP,最终我们的传统数据库就是C理解这个CP了吧,永远只能保证三进二,而且可以这么讲,大多数网站只能妥协到APOK,好来我们呢,可以看看哈,什么时候选一致,什么时候选可用,那么呢,我们大家都知道,传统的关系数据库,你的事物的提交,你是不是有单利单库啊,你自己跟你自己玩,你肯定是不是要提交要准呢,但是呢,我们说过,现在我们刚才说过在双十一对对那个包包点赞和点称一些数,是不是可以允许你一致性不是这么的实时,不是这么的强啊好再来我们大家看,对于关系型数据库来说的话,你插入。
15:00
一条记录以后,是不是要立刻能查得到啊,那么大家都用新浪微博吧,请问新浪微博你或者就是说你们用过携程啊翼龙啊这些在线的订票右下角吧,弹出来一个窗口,谁谁谁又订了一个飞机票,请问他一定是绝对实施的吗?好,这儿请大家看哈,我们这儿对于比方说对于实时性要求不是那么高的系统,我们发一条信息以后,是不是会过了几秒钟以后,我的订阅者才能看到这条动态的信息啊,什么概念呢?来同学们抬头以后呢,希望同学们呢也要明白哈,基本上很难做到绝对的准实施,来同学们手机打开,我们是不是都用新浪微博,你现在拍照张相,比如说你去五一去旅游了发一下,请问你发了以后一定的原则,就是我刚才所说的,请读这句话发一条。
16:00
的消息以后,是不是过几秒以后你的那些粉丝才能看到啊,但是这儿如果有些较真的,他就希望说我发了以后希望大家都看到,这个是不是我们最终的效果啊,他怎么干呢?基本上都是什么一读己之可写或者叫读己之所写,来听我翻译哈,你自己发一条新浪微博了,然后是不是首先你自己要看到啊,否则哪去了?然后呢,更更幸运的是同小伙伴们看到了,我自己看不到,那你会不会骂娘啊?但不用说你也通不过新浪微博那波专业的测试工程师吧?那么所谓叫读己之所写,就是我发一条微博了,过来以后先保证自己立刻看到,但是慢慢的我的小伙伴从这个no这上是不是要等我传一下呀?那么这个跟我讲一致性是不是稍微有点弱,不是说我能看到,比如说我现再发一条微博,包括我们现在在教,是不是有可能是网络延时。
17:00
嗯,对呀,但是这种一致性,最终大家什么都保证都能看到我的屏幕,那么也就是说,但是我共享,起码我的屏幕先要我自己看到吧,那么好,五六秒钟,三五秒钟以后,同学们全部90个人都看到,那么这个叫什么?首先要保证读几只所写是OK的,明白吗?然后我们完了以后,我们是不是慢慢的在强一之性大家都看到啊,好,然后呢,大家请看,最终对于复杂的SQL查询,多表关联的话,我们说过对于大数据量的这种no CQ的话,非常忌讳什么多个大表的关联查询,明白吗?那么我们把这些数据呢,通通进行整合,与TV建筑的数据干嘛扔到缓存里面,是不是就避免了这个数据库的查询啊?然后我们得到了我们想要的,又不给数据库增加负担,是不是增强了我们数据的高可用啊,OK,那么呢,这个呢,就是我们的什么数据库的CP好。
18:00
那么呢,最后一点点讲完我们再休息,这是不是有个贝斯啊,那么请同学们猜猜看,这个贝斯是啥意思啊,或者就说是一个单词构成呢,还是多个单词构成好,那么呢,Base呢,也就是我们所说的什么好来开头听我说刚才随着我们双11的那个技术支撑,所有的工程师都知道我们这个网站为了保证那天不贪,是不是绝对要AP高可用加分级容错性,但是我们那个时候那会儿四个幺的那一天的话,咱们是不是所有的数据统计是弱一致性啊,但是老板最终比如说财务部数据部的话,是不是需要哥们儿,毕竟今天假设哈有1000万人点了赞。
19:00
你给我统计出来的数据是只有六万人,那这个好,你说你当天你为了AP牺牲一下一致性,是弱一致性,但这个数据是不是不能差的太离谱啊,所以说到最后等高峰过了以后,数据库的数据组的开发工程师兄弟们是不是要保证最终一致性啊?哎,我还是想统出到底有多少人看,那么这个就是CP加base的理论,所谓base就是基本可用软状态和什么最终一致性,最重要的一句话就是最终一致信,比如说你11过了,我给你十天或者更多的时间去统计一下这个数据的精准,这个说得过去吧,好,那么呢,请同学们看一下所有分布式的思想,就是什么,通过让系统放松对某一时刻数据什么的要求来换取什么?说白了,是不是牺牲C来换取了AP啊?OK,那么最终辅以贝的理论。
20:00
基础达到是么?高可用的最终一致性,明白了吗?这些东西就是支撑大家去外面干活的理论的基石,为什么要这么干,否则你永远就是个抄代码的抄抄抄抄抄好这家公司可以抄,你去到下一家公司没得抄了怎么办呢?好,那么呢,最后一点点看一下什么是分布式,什么是集群,当然这个呢,在后面我们的这个JAVA1的二版的升级的课程的话,会专门有课程来介绍高可用,高并发大数据的这些内容,大家呢,回头呢可以保持同步来更新视频,那么这儿为了避免同学们学晕了,我呢会用简单的例子和两句话给同学们先开个头,因为到后面讲是不是就是需要有这么点概念啊,好,可能好现在嗯,有没有同学能完整的说的出来什么是分布式,什么是集群,反正就是至少这个这个词是不是听过呀?好,再来一句话,负载均衡,这个大家知道了。
21:00
哈,就比如说是这样哈,就你你就这么说,现在你们是不是一一个弹不开它,那么所谓的多台了以后,所谓负载均衡,就是流量上来大了以后,我是不是只能就薅羊毛一样的,不能拿着一只羊薅啊,其他三只羊是满毛,这个们被薅的皮都没了,那是不是不大好啊啊那比如说哈,就有点类似于比如说是大家去这个健身房的话,可能进去以后是不是有AB2个柜子,就是你所这个行李和拖鞋的地方啊,原来有一次呢,我们就碰到这么一个情况,新来的那个小姑娘呢,也非常的实在,严格的遵守,来一个发一把门钥匙,来一个发一把门钥匙,那么这个时候他是不是通通罚A呀,就导致我们一堆人是不是全去A那放行李呀,B这块是不是空空的呀,他这么做事一板一眼有没有错,没错,但是如果一种更好的方式是不是来的话,单数是AB数的,顾客是B的话,那么这样分开放是不是就像负载一样就好一点啊,那他太实在了,是不是大家变成全部在那。
22:00
A,那排队呀,哎,好,那么这儿大家请看,这边请同学们呢,可以下去呢,自己呢联系看一下这个在这个边的解释,那么我们简单来说就是这样,分布式是什么?不同的多台服务器上面部署什么不同的服务模块或者工程明白吗?那么集群呢,是不同的多台服务上部署什么?哎,说白了集群是不是就人多力量大呀,他一台SQL搞不定了,我装四台,对外是暴露一个整体啊,但是四个人一块来干活是不是比一个人要强一些,哎,所以说简单来说就是不同的多台机器上部署不同的服务模块,而这个是部署是吗?相同的服务模块OK,好,那么呢,这个呢就是我们数据分布式数据库中的CP原理,这节课呢就到这,大家呢休息一下。
我来说两句