00:00
OK,那各位同学我们继续,那现在终于我们讲完了U瑞卡,Ukea canl它各自的配置,那么学了这三个配置中心以后,我相信相通相似的东西,你兄弟们呢,应该是不在话下,也应该熟练了吧。那接下来我们呢,简单的做一个小小的总结,那就是我们这三个注册中心的异同点,好,先说结论,我更多的啊,包括当然你这块你可以挖更多的,包括从什么协议啊,FT呀,什么pass ox那些协议啊,乱七八糟的一大堆哈,讲多了同学们记不住,而且那些东东的话没必要。那么首先我们。讲一个精干的,那么这三个圆。Java go Java cp,分布式的CP理论有瑞卡是AP主要保证的是A,高可用,而can和keepper主要保证的是C。
01:04
数据一致,那么服务健康检查暴露的接口这两个有客户端,那比方说我们的cancel和这个U瑞卡都是有这个web界面的,而呢。没有,就是有一个Linux的客户端,那么对于cloud的集成,我们都当场配过,都已经集成,那接下来。后面这些好说,那么接下来我们呢,再捎带复习一下,从CP这一个维度再给大家念叨念叨他们三个有什么区别,U瑞卡主要满足于AP cancer主要满足于cp zie主要满足于CP,那么这张是经典的CP的官方架构图,不用多废话,杨哥在讲给你们班讲red的时候是详细讲过这CP,我们说过他们一个经典的两句话,第一个。CPC代表强一致,A代表高可用,P代表分布式的分区容错性。由于现在。
02:04
我们分布式微服务架构,这个P永远都要保证,所以说我们的系统要么是CPI,要么是API,这是第一句话,第二句话我们说过经典的CP图理论而言,三个里面不可能全占,所以我们三个里面只能占两个,比方说我们的register就是CPI,我们的MYQ就是C,那么其他的就是API。那么由于我们是分布式啊,说过了P永远要保证,对于我们的这些,从现在的分布式架构开始,基本上不是AP就是CP,那它又是一些什么样的东东呢?那么来吧同学们,这张图完了以后。再来看。CP三进二原则只能满足两个,一个分布式系统不可能同时很好的满足一致可用和分区容错性这三大主流的诉求。好,那么这我们先记一个结论,AP是指由如塔,CP是u keep和我们的pencill。那么现在我们呢,先取一个。
03:17
京东的case啊,再到我们的数据库啊,再到我们的分布式服务政策,分布式服务注册中心,先从生活再到理论,你会发现这些道理是一致的。好,那么同学们,我们大家呢,都访问过这个淘宝。现在假设是双11,双12或者元旦促销,我们现在淘宝上面有一款爆款的手机,那么上面。C是一致性,A是高可用,P是一定要满足,所以刚才说过不是CP就是AP,那么下面如果我们在构建一个网站的时候来考虑,你们觉得应该是用CP还是AP呢?简单一句话,CP是数据,就必须要一致啊,不一致啊。
04:01
挂报错,那么现在我们就这么想啊,柔性一点,京东这个网站,淘宝这个网站,在双11的时候主要保证的是要可用,也就是说它必须是一个AP的,至于数据部分不相关的,我们允许它一定范围内出错。比如。这款手机,这款手表爆款热评,它每一秒钟都有人喜欢,都有一个东西叫点赞做好,我们现在就是说话的时候也有人在点赞,但是这一秒我们查出来,假设实际而言,他的点赞数是158,但是我们返回来是145,换句话说,对于这样的数据,我们允许出现一些数据的不一致性,牺牲这个C来保证我们这个A。这么说能跟上,那你反过来讲啊,那么只要数据不一致啊,我们牺牲这个A,那么弟兄们你懂的,现在只要任何一个数据不一致啊,整个淘宝网站不允许买东西了,哎呀,你知道,那第二天绝对是不上头条,那换句话说就是部分情况下,我们对于这个C没有这么重要的要求的话,就要保证这个A,先保证整个系统不垮不塌,保证你可用,而不是先保证数据的一致和正确,后续我们再通过贝斯理论,柔性事物补充,那么来进行数据的恢复和整体的一致性,所以说CP理论它关注的力度是素质,而不是整体系统设计的策略,那么这是第一点,第二个。
05:42
我们呢,回到我们的AP,假设他这个思想呢,是。都是相通的,比方说我们现在呢,是一个数据库哈,也这么回事。当没有出现P的时候,系统A与B的数据是一致的,比方说我们就在一台机器里面,AB2个系统基本上就是数据同步都会一致,但是假设现在我们A系统X修改为2XA系统,这是等于二了,那么出现网络分区的以后,系统A和系统B之间的数据同步数据失败了,比如说我们某个微服务掉了,这个时候系统B它的X还是一,为什么?因为数据同步失败了。
06:23
但是当客户端请求的时候,由于我们现在的架构设计是AP要保证A高可用,你现在让我保证能用,数据错一点就错一点了,我认了,所以说这个时候我们允许系统B先返回什么轨就值。所以说X1。返回至少保证你客户端没报错,实际上而言,我们最新值已经是二了,就像我们刚才说那个点赞数,你这次点开它的点赞数应该是158,但实际而言只返回来了142,没关系,重要的是我能下单买这块手表,买这部手机。至于部分数据,错一点就错一点了。所以说对于AP这样的架构,当我们满足P就是分布式了以后,为了保证高可用,系统B可以返回旧址,保证了系统的高可用性,但是我们牺牲了C,只满足了可用和容错,即保证AP好。那么这是数据上、架构上和网络上。那么我们的有瑞卡,想想杨哥前面是不是讲过一句话叫有瑞卡,有一种东西叫自我保护机制啊,它更强调的是AP。
07:33
保证你微服务的高可用,好死不如赖活着,你就是偶尔宕机掉线了,一时半会收不到,我不会把你立刻删除踢走,那么这就是我们的纽瑞卡,它选择的分支是AP,它的理念就是好死不如赖活着,但是我们的keepper和canl呢,下面兄弟们look,我现在把他这个服务停掉了,大家看我们的cancel,这是不是立刻就打叉叉了,那这个是什么情况呢?我们呢,先从数据再讲到我们的服务注册中心来,这两个的分支选择是我们的CP,那么也就是说我不要高可用,我关心的是数据一致性,有就是有,没有就是没有,对就是对,错就是错,比较生硬,比较真实,那么来。
08:25
还从数据。没有出现网络的时候,系统A和B一样。X等于一,X等于一,AB都同,但是改成分布式以后,假设现在A系统X值修改为二,那么当出现了这个P了以后,分布式了,A跟B之间可能会出现数据的同步失败,失败了以后真实值是二,实际值我们现在B系统还是一,那么客户请求的时候,为了保证一致性,我不想给数,客户拿到错误的数据,此时B系统就拒绝了服务,返回错误码或错误信息。换句话说。
09:01
这个时候同步失败了,我来反问,你直接给我干的事A,那么所以说我们的CP架构就是。保证P分区分布式的话,为了保证什么线。C一致性就必须拒绝请求,否则无法保证一致。我们违背了高可用A只满足一致和分区容错及CP。那么这个时候兄弟们想一下,我们的组keepper还记不记得当时我问你们是临时节点还是持久节点,我们当时故意把那个8004啊给关了,过了一会儿以后,Keepper科就是照章办事。就跟上班打考勤一样,你来了就是来了,没来就是没来,过了一会儿发心跳测试收不到了,迅速就剔除,你再去鲁上去查询的时候,这个服务就已经没有了,等你恢复过来了以后,是不是又重新换了一个service ID新的赋予给你,那么这个时候就比较是么,铁血无情一点冷酷到底,但是AP,但是呢,保证C数据一致啊,比较靠谱,能用就是用,不能用就是不能用,但是我们的有椎卡,我们讲过了,温情脉脉。
10:10
有点什么?人情味,你只要宕机了,它不见得立刻就把你马上删掉,所以说这个就是我们这两三种服务架构在CP这个维度上面的一些选择和他们的追求和定位,那么OK,这三个都给大家做过详细的介绍,以后去到工作当中我们用哪个,我相信都难不倒各位同学,好,那么终于我们的服务注册和发现三个都到这儿,那么同学们注意复习,好,那么大家下课休息一下。
我来说两句