00:03
OK啊,大家都进来直播间里面啊,能看到我的桌面,并且能听到声音的同学,在我们直播间回个666。啊,我看大家回忆的话,我就马上开始了。啊,他进入直播间的同学。OK,我看到有人回六了,说明这个声音和这个桌面啊,这个桌面啊,可视化这个是没问题的啊。OK,那我们开始。好,各位同学啊,大家晚上好啊。非常啊高兴啊大家来参加这个腾讯云数据库TTC口的这个训练营啊,我是郭一军,那今天呢,我给大家分享的是这个TTC口产品架构啊,这也是我们入门TTC口啊。
01:01
必修的啊,一节课啊,所以大家呢,一定要好好去学这门啊,这节课啊,因为我们后面所有的这个内容都围着这个产品架构展开去讲啊,所以呢,我们一定要把这个。啊,产品的一些概念啊,搞清楚啊。这个产品底层组结的,呃,底层的组建啊,逻辑关系,底层基础是什么。好,那我们来看一下,就是说一,我们要了解啊,TTC产品的一些基本概念啊,以及呢,它的应用场景啊,它用的一些功能。啊,那么在这里呢,我会对整个TC的整个架构啊的一个介绍,以及各个模块的功能进行介绍,那么我们TT这是一个分数据库是吧?那当然会对分布数据库的一些分布数啊,这些呢会做一定的介绍。好,那我把它分为五个啊,部分来讲,首先第一个啊,我们来看一下这个产品介绍。
02:01
那产品介绍,我们首先大家经常会听到这个腾讯云啊,TTC口,那么TTC口呢啊,我们有的时候也叫这个全称叫分布式数据库啊,叫tencentt distributed的SQL啊,那么减轻TTC口啊,那TT呢是。国产金融级的分布数据库。它呢是金融马SQ的,因为马SQL我们前面也讲过,它是一个关系数据库是吧,是开源的,在全球排名第二,那实际上这个TS呢。它底层的存储用的马SQL啊,当然对马SQ接容啊,基本上是高度兼容的。那么对于这个,因为是腾讯这个。根据这个马啊做了一些这个二次开发,所以说是可以自主可控的,所以在国产数据库里面,我们大家一定要记得国产数据库有两大特性,一要自主可控。
03:02
啊,第二呢,要可开源啊,那它还有是高一次性啊。这分布式数据库,那么为什么现在会出现大量的分布式数据库啊,而且用在很多金融的场景。那么在呢,2013年之后啊,这个我们这种单体的数据库,像Oracle啊这种数据库呢,已经满足不了一个实例啊存储这个啊,几十个T,几百个T,虽然虽然说也能啊存放,但是它的性能。这个就比较差了,所以呢。推出这么分布的数据库,那金融行业为什么这么多呢?因为随着这个金融行业,这个互联网产品越来越多的话,金融啊,他要的是两个特性,第一呢,要有关系型数据库这种支持事物的,第二呢要支持可扩展。啊,就是说我底层的容量可以水平扩展啊。
04:00
我上层的这个计算啊,CPU内存可以水平扩展,那分布式就很好的解决这样的一个问题。那么我们这今天我讲的这款数据库呢,它是支持啊,主要是支持这个OLTP。OATPOATP主要是用在这种,呃,交易场景下面,Online transaction process啊,就交易场景,就大家理解为就我银行啊存款这种交易的这种场景。那我们可以看到TDCQ在这个。呃,2020年底啊。的统一命名为啊T,其实T有好几个产品啊,那今天我讲的这个T呢,是t formma版的是分布式里面的,那其实这个for PG版里面也有一个分布式的啊,这里呢,肯定我先给大家这个解释一下啊。就TC口分布式的有两款啊,一款呢是这个。
05:05
就我在讲的TDCQ。For。马版的。啊。那这一款呢,是我们现在主流的啊,就早期我们叫T,其实就是指的是TC form马版的。那。还有一款呢,是t for版的。Pau。啊,这个我们啊之前讲过在全球啊这个排名是吧。呃,分数排名是第四是吧,Po那这一款呢啊,分布式有两款啊。那。这是呃,分布式的,那分析型的,分析型的主要也是两款。
06:00
一款呢是TTC口。主推的TDCQ。For。哎,那这个地方大家可能有点晕了,诶这里你怎么有两款这个这这个呢?啊,这一款是基于光系数据库的。行存储。啊,那这一款呢,是基于这个劣势存储,大家说劣势存储的,它的这个分析能力特别强啊,大数据里面,比如说那个哈杜布的h base啊,这都属于劣势存储。劣势存储。那么。还有是这个。Hospital。啊,就是大家做过大数据的同学可能说数据分析同学肯定比较熟啊click house啊是分析型的,针对场景是这个o lap啊,简称这个OLA啊,那它这个呢。是OLTP啊,OL是online的意思啊,在线的意思啊,就是我这个,呃,这个这个数据库是个在线操作的啊,T就是trans事误啊trans。
07:10
那A呢,A是什么分析啊处理OK,所以你可以看到TT它既支持。Oltp也支持o lap。啊,大家还记得我们的这个第七次人口普查吗?第七次人口普查。啊,就是用了这个TTC,它是用了这个双引擎的,什么意思呢?就是我们TTC口,它这个在D7是能够普查里面啊,它用了双引擎的TTC什么意思呢?就是他用了两套TC的引擎。一套呢,是基于这个TC分布式的这马版的。啊,这一套主要是什么呢?数据入口就是我数据写进来的话,很快的就写进数据了啊写到这个里面去了,这个就是啊,就是这个方法这个版的,因为我们的终端啊非常非常多是吧,有几百万700万万个终端,就是APP啊,各种啊快速的输入啊,我们这个人口的信息啊,普查的信息,然后还有这个个人信息输入是吧,这需要。
08:12
啊,这个TPSQPS百万级千万级的啊,那这个我快速响应,所以我底层呢,是要分布式的这种架构快速的去啊写进去。那么基于这个分发,这它不善于这个什么分析,那怎么办呢?那我们中间通过一个桥梁啊,通过一个工具,比如说我们啊。填充自己的DB。啊,DB啊。第一条。数据呢,通过这个写进去之后,时准时时的啊,同步到我们的。这个T啊。分析版的啊,这个里面啊,就是OLA这个里面啊,就是O啊LTP的啊,然后把这个数据。同步到这个里面那。
09:02
我们后面要做各种数据的统计,比如说我要查我们啊全国啊,本科的有多少人,存男性有多少,女性有多少。各种纬度的查询,那这个是很快的,那相互不影响,所以呢。第四啊,人口普查就用这样的一套啊,这个架构来做的,那也可以看到啊,我们同时啊TC都支持,所以呢,有的时候我们也把。这个T啊,看作是一个什么呢?一个h tap这样一个。混合型的啊,既可以做。OATP也可以做o lap这样架构。那第这个呢,还有一个版本呢,是云原生,什么叫云原生啊,这个是很火是吧,云原生它有十几大特点啊。就是我可以在云上直接开发啊,减少开发人员的这种代码啊。那云原生我们有个TC-C啊,这个C呢,早期它是叫CCD啊,它的历史来啊,那云原生态的架构。
10:06
主要是融合了传统数据库。我们的这个云计算,加上我们的这个。啊。啊,这样的技术进行融合。就是底层是用了这个T叉CQ这样啊,腾讯自己的T叉CQ的啊。替代,这个可以替代马克。这样一个架构。那这是呢啊。TC整个的一个啊,产品的理解啊。那我们说T口啊,那今天呢,我给大家讲的这个TCQ就是腾讯主推的啊,这个TS也是现在金融行业用的最多,因为金融行业它主要是用什么。OLTP,当然OIP也有,OIP的解决方案非常非常多,但是啊,OIP这种交易型的这种数据库啊,除了AC啊马啊马慢慢也融入到啊这样的场景里面啊,那所以呢,T啊确是。
11:01
Form板啊,这个客户用的最多了,那么TC口它整个架构啊,它底层呢,是基于这个分片啊,作为一个单位,就是说它底层这个分片是它最小的存储单元,那每个分片呢,我们要采取这种组成架构的。这样的一个。啊。嗯,框架。所以呢,有由于这样的价格的话,它提供这个啊资源是非常非常方便,它可以弹性的提供这个扩展,就是你要资源要的时候我就可以弹啊,快速的弹开啊,然后数据呢,可以均匀的是吧,去分布啊,那对于这个备份恢复也是非常方便的,一键备份一键恢复啊,对整个啊这个。数据库的运维啊,运维啊,通过这个监控可以对我们所有的啊,从你安装到我们使用到整个过程啊,传承监控啊这样的方案,所以对于我们啊,一个入门DBA或者一个资深级别来说啊。
12:06
我们的学习成本是比较低的啊。当然因为这里面的组件非常多,那我们去使用这个呢,可能也会有些这个挑战,特别是分布式里面的一些特性。啊,所以呢,我们来看一下这个啊,我们在讲这个之前,我们这里有一些这个专业的术语啊,来给大家描述一下,因为我今天主要是讲这个,其实这个分布式的一些特性,以及这个整个的一个架构啊,那我们经常听到这个集群。这个集群,比如说在Oracle里面,肯定大家可以听到这个Oracle的RA技术是吧?啊Oracle RA技术就是说诶,我两个计算节点,然后挂一个什么共享存储这样一个架格是单体架构啊,那还有在马Q里面集群啊,早期我们是有这个业务,业务单位这种叭如说这种。啊,这种这个这个一组一从,其实我们也叫这个这个集群,或者说我们啊多个组这种分库分表的这种也是一个集群,实际上单啊这个我们的业务业务啊,这个单元为重啊,这叫集群,那么TTC里面集群是怎么理解呢?
13:05
TD里的激情。一般包括啊,管理节点、计算节点和存储节点这三大组件所组成的这么一套底层的资源。那么我们用这个集群的话,我们是通过在这个集群上面去分配实力的方式去使用啊,这样的这个啊数据库。所以你可以理解它的底层,底层的底层就是云计算啊,底层就是一堆资源,然后我要用这个的话,我通过我们上层的可视化界面去点这个按钮,那这个资这个资源就可用了啊。这是整个集群。那么我们说集群,有了集群我要去用的话,我就分配实例。实例怎么理解呢?你可以理解实例是我们啊这个TTC数据库里面最小存现单元啊,你可以把这个实例叫做一个分片。
14:02
一个分片。啊,一个分片,一个实例可以叫做一个分片啊,一个分片其实在我们这里也叫一个set啊,这里叫节点组啊,叫节点组OK。那么我们的一个我们的这个实力啊,可以是一个分片啊,也可以是多个分片啊,如果说你的一个实例是多个啊分片的话,那么就是分布式实例。如果你的一个实例是一个分片的话,OK,那么它就是非分布的实力啊,所以呢,非分布实力它就是单个啊set,我们也这里叫set。分布式时间呢,我们叫多个set。那么分布式的我们叫多个set呢?我们简称什么呢?Group啊,所以这里概念特别多啊,分布式我们叫group,就是一组set。啊,也就是说一个分布式要一个group,那一个group里面有多个set,当然它最少要一个set,当然很奇怪了,一个set不是一个,呃,非模式嘛,也就是我group可以扩展,我最少一个set,我可以扩两个扩张啊,扩四个扩五个啊,所以在TC内部呢,我们如果看到这个实例的名字是group开的,OK,那么它就是分布式实例。
15:24
啊,那刚才讲的set set啊是最小的数据单位,其实就是啊,一个一个实例看作是一个分片一个实例是吧,那么这一个实例。它是一个分片啊,那我们要保证一个分片的数据不会丢的话,那我们分配的底层呢,是这种架构,这种高可用的架构,那高可用架构的底层呢,是用到这个复制的技术,所以呢,它是一组。多层的这种啊结构,所以我们在TCQ里面,我们可以看到这种实力啊,是基于这个set开的,那就是非同布的实力,好,我给大家看一下我的环境啊,我要结合起来让大家理解啊,彻底的理解我们的啊数据库啊。
16:04
那我给大家看一下环境,这是我的一个环境,那么这个是一个TC口的一个可视化界面,也就是说我们DBA百分之八十九十的工作都在我们的测试里面去完成的啊,那么刚才我讲的实例很简单,你到这个实例资源里面就能看到,你看group开采的这种啊以上数字这个就是分布式实例。那么对于这种开头的是set,开头的就是非分布式,这个中文字也可以看得到,那么我们非分布式,我们分布式点进去可以看到我这么多啊实例你看有这么多,一组两倍,一组两倍一两是吧,有几个实例,有两个分片,有两个set,就两个分片,然后每个分片里面有啊,每个分片里面是这种啊,一组多重的,一组多倍的这种架构,OK,这是一个实例,这是分布式的啊,那么对于这个非分布式的话,你点进去之后,它就是啊,这个菜单没有啊,没有set,它就是这个一组多重的这么一个。
17:02
啊,架构。OK。那么。分片啊,刚才讲了分片下定。下定是指的是什么呢?啊,我们要啊,要把一个数据库啊,把一个表啊,进行这个水平拆分啊,然后水平拆分后的表呢,可以变成这个放到多个这个分片里面,多个啊多个那个set上面去啊,组成一个逻辑的一个实例,那需要这个下定进行分片。那你分片的这个到底是用我们这个表里面哪一个字段呢?我们这里就叫分片界,注意,分片界其实就是。啊,我们的表里面的一个字段,一般是用组件来实现啊,用key。Key啊,来实现了。好。
18:00
那么分片。非常非常关键,那么分别怎么体现出来呢?我们在路由里面去体现啊,什么叫路由呢?这里就是说我们去执行一个CQ啊,啊你这个CQ。要发到我后端的分片,哪个分片里面去,那通过路由告诉这个CQ你要去哪个分片,因为我们说一个分布数据库,它底层有多个分片啊,那路由里面其实就是一张啊,一张什么呢?一张映射表,一一张map,一张地图啊,一张地图,这个地图里面呢,记到我们的分片键和我们后端的。Set这个封闭的物理地址。啊。好,那我们的分片。底层就是这种一组多层的架构,这个就是马的组成啊,这样的一个架构啊,这种架构,这是这些专业术语啊,大家要做这个啊。了解。啊。啊,那我们来看。
19:01
TTC数据库啊,它这个呃,它的优势为什么说,诶现在腾讯啊在啊。TOP20的这种金融行业,这种银行做了60%啊到70这种大啊头部客户,因为它有非常多的优势啊,我这里把它总结为什么四高两低啊,这也是银行经常讲的四高两低,怎么理解这个四高两低呢?是吧?呃,首先我们来看一下高可用。高可用指的是我这个数据库的这个。一直可用的是吧,我要高可用,那说明这个,呃,不是100%可用的吧,高可用那说明这个,呃,我们的可用性可以达到什么呢。五个九。因为我们说可用是指的我们的应用啊,能访问数据库能可以访问到啊,那我们应用就可用了,比如说我们手机打开那个APP能用,如果不能用,那说明有可能有很多情况,有可能是APP本身有问题,那有可能是他去取数据库里面数据取不出来,数据库挂了,这个时候就不可用了,那我们要保证五个九。
20:09
金融行业里面啊,它包括我们很多这个去考核这个,这个我们的系统O不OK的话,我们看高可用几个九。五个九预示着什么呢?这个一年我的数据库啊,不可用5.3分钟,5.3分钟怎么计算这个五个九呢。它是以这个一年为单位啊,一年为一个,一年为单位,一年是365天啊,一年365天,365天除以一个啊,作为一个分子除以一个什么呢?365天加上。数据库挂的时间啊,数据库宕机的时间啊,就是不可用的时间。就是分母要大一点,如果说不可用的时间为零的话,就是我都可以的话,那就100%可用了啊,所以呢,当我的这个不可用的。
21:05
这个值越小的话,那接近100%。那我们把这个365天转换成秒对吧?秒,然后把下面三转成秒,那么可以算这里多少秒是吧?我们可以算出这个5.3分钟左右啊,一年单机时间,这个就是几个九啊,五个九已经非常非常高了啊。因为我们想一下我们的数据库。宕机的可能性有非常非常多的,什么呢?这个。可能性,因为数据库,大家想一下,你这是一台服务器对不对,一台服务器,你这台服务器,那数据库要装在服务器里面,首先是不是要操作系统啊,是不是,然后有操作系统我才能装DB吧?好,那我们想一下,你这是外面是一台服务器,链接服务器,如果说从这个服务器里面看的话,如果说操作系统挂了。数据库是不是可以挂了,就比如说操作系统这个。
22:01
出现这个内核bug,或者说这个系统内核这个资源啊,用的非常非常多,他没法提供是吧?因为操作系统的核心就是驱动底层的硬件,为我我上层的应用提供服务的应用,其实DB就是个应用,对不对,好可以,第二呢,就是DB本身有问题的是吧?啊包括他自己的这个软件有bug,或者说这个DB调用资源调不到IO啊什么等等是吧,包括DB不可用了,提供不了服务了,那DB挂了,那也不可用是吧?从这里来看的话,就从操作系统DB来啊,都有可能DB会挂掉。不可用好,那我们再从。服务器本身来讲的话,如果说诶这个服务器的这个啊,主板坏了,CPU坏了啊,那内存有问题了,那这个服务器也啊提供不了服务,这个服务器也是有问题了,那这个DB肯定不能用了,对不对?好,那我们再看那服务器放哪里,服务器是放在我们的一个机柜里面嘛,这个机柜大概两米高吧,在机房里面对不对,可以这个一个机柜可以放这个啊十台啊八台,看我这个服务器的大小是不是,那么大家想一下,那么机柜这个上层是叫什么交换机是吧。
23:06
电源是不是是不是,那我如果我我这个交换,呃,这个机架的这个电源都坏了,那不能提供电了,那我服务器是不是也不能用了,是不是。啊,还有就是我的交换机啊断掉了,然后网络不能提供网络了,那我应用过来访问数据库是不是也不能访问了,所以机架也是会导致有问题的话,也会导致我这个啊。这个数据库不能用了,那我们再看,那就是这个机架外面的话,就是我们的机房,就是这个机架是放在一个机房里面,房子里面,这个房子的这个光纤被挖了,那是不是也不停供,不能提供风了,或者这个房子里面的这个电不能提供了,风火水电啊,大家玩过这个IDC的同学可能对风火水电这块比较熟是吧?那都会导致这个房,所以呢,我们要考虑这个机房本身,这个时候呢,我可能在一个城市里面,我住两个机房是吧,这两个机房相差这个40公里是吧,是不是?OK,那有的时候更考虑考虑的话就是说,哎,这个城市如果有出现水灾了,出现这个自然不可抵抗自然灾害,整个两个机房都有问题了,是吧,比如说这个哪个城市是吧,那这样的话要考虑什么,我服务器还要放到什么另外一个机房,比如说上海有两个机房,那我上海要保证,上海如果有问题的话,我要数据,有的话我北京还要放放一套是吧,这两地三中心是不是,那我要保证这么多,可能的话,OK,那我要怎么打到九是不是好,那我们先来抽一波奖吧,我看大家也这个。
24:26
比较认真去听啊,然后我们先来这些福利啊,第一波奖我们有三波奖啊,我们先来抽一波奖奖品。当然,我觉得我这样讲不OK啊,我们抽第一波奖来就是啊。QQ啊,家庭版的啊。毛绒公仔摆设的一个事啊。有三个大家。来,手机扫一扫。啊,找找。啊,大家手机扫一扫啊。
25:01
OK。赶紧啊,给大家一分钟时间。好,我接着讲啊,同学大家对着这个扫,那么大家想一下,那我们说有这么多种可能性的话,我TTC要保证它一年之内啊,只。只有5.3分钟不可用,那就很牛逼了是吧,说明这个那这么多现象是吧?哇,可能还有一些是不可预估的是吧,那要不这个的话,那他能做到这个五个九的话,就是一年只停机5.3分钟的话,那这个架构又做的非常的牛逼,对吧,如果做到这个同情双中心啊,两地三中心啊这样的一个啊架构。啊,这是。第一个高啊。高可用。OK,大家扫好了没?你中奖了。这个我上次好像看到过你中奖啊,嗯,自己抽到了是吧,OK,好,那这个没有啥的,同学这个就。呃,我就那个了啊,我们继续啊。
26:03
太难了是吧,嗯,下次我送你一个吧,嗯,OKOK,好好好,我们再来讲啊,我们再讲,我们再来讲这个高性能,哎,那我们说你高可用没问题,是可以解决我这个数,呃,这个服服务器一直提供服务没问题,但是我可能我我们现在这种互联网的场景啊,我要的是是吧,我搞双11啊,我搞大促是吧,你满足我的话,那我们啊。我们从我们说我们底层是用了这种云云的这种架构是吧,那我们把云计算啊,然后呢,把传统数据库的这种优点,然后结合我们现代的这种啊硬件结合起来啊,然后我们在部署我们的这个TTC的时候,我们对这个。大量的内核做了优化,就是说我们对于我们操作系统啊,尽量发挥它的资源,压榨我们整个的这个操作系统一些资源,同时我们对我们TC的内核做了一些优化,把有些啊这个参数啊啊做到这个最佳实践啊,这样的话能支持比如说我们架构里面执行这个读写分力啊,所以呢,对秒杀红包啊。
27:11
等等,这样的场景我们都能满足啊,就是高兴了。高性能它的另外一个核心就是它底座有高弹性这么一个支撑,那么高弹性是什么呢?就是说我一台服务器我支撑不了的话,OK,我水平弹出一台新的服务器出来,然后你再用的话,那我的性能又翻了一倍,从理论上来说,我一台服务器我的性能是100,我再加一台服务器我的性能是200啊这种线性增长啊,那我们这个基本上是做到啊弹性,那这个呢是其实它也应用了这个云的这样的啊,非常重要的特点叫凹凸skin啊弹性啊。那我们说弹性那肯定是啊,通过这个啊一个按钮是吧,来触发或甚至说啊,我们如果做的更智能的话,哎,达到一定的话,它自动就弹是吧。
28:03
这是,呃。第三个搞第四个稿呢,就是我们在应用的时候呢,我们有一套这个高规范,就是你按照我的标准来做,我给你划好这个框架。你可以理解。我第这个我就是一个总架构师是吧,我你按照我的价格来的话,你造这个大楼肯定是没问题的啊,不像这个小作坊是吧?呃,肯定要造个房子,我就自己家里画块地,我自己造是吧,那肯定造个两层就够了,三层是吧,那我这个呢,可以啊,你按照我的标准规范来的话,那我这个啊。资源可以实现,比如一个集群1万台服务器我都没问题,OK,就是一定要进行这个规范,所以大家在如果是大家都是在搞马的啊,DBA同学都啊,每个公司有自己的什么那军规啊,这个呢,就是我们也会把这套规范啊,融合到我们的T里面去,好,那么。两个低风险。第一个低风险指的是我们的数据强一致性。
29:01
我们说特别是金融业务。数据的强一致性非常非常重要,比如说我们举个场景,比如说我今天啊。啊,我在我的账户里面存了一笔啊,一笔交易啊,这笔交易有可能是一分钱,那有可能是一个亿。那我要保证我存的这笔款不会丢失,哎,今天我突然间银行里面发现我存在一个亿没了,那这个数据啊就不一致了是吧,那这个就出大问题了是吧?所以TT这个事情保证这种数据是绝对不会丢,也不会错的啊,那怎么保证呢?我们用强一致性这个方啊来实现这个啊,数据不会丢不会错啊。那低成本就是说我们一我们有一套规范,然后呢,我们有一套自动化运维的工具,就是刚才我给大家看到的啊,我们自动化运维的赤兔来扁鹊啊,赤兔主要是用在我们这个日常运维当中,可能我们80%的工作都是通过赤兔界面叠叠叠就可以了啊,另外一套呢,就是我们通过我们的扁鹊去做一些什么性能优化的一些建议啊,以及这个健康的啊,这个检查以及高可用的啊一些啊诊断啊,那。
30:12
这个呢,就是我们T这个的啊。四大优势啊,四高两低啊,这是我一个总结,OK。好,那么我们来看一下刚才啊讲的这么牛逼是吧,那我们看看这个整个产品的架构功能是怎么来实现的啊,这个肯定大家比较有兴趣是吧,这怎么来实现的,我们来看,我把这里的这个技术站全部拉出来,大家一看啊,这是数据库嘛,这个这么多技术合在一起是不是。好,那这个呢。啊,我们融合了第一个,我们基于这个开理论啊,就是一致性可用性啊。这个分区浓缩性这样的分布式理论基础,以及两阶段提交的理论支撑。是吧?然后呢,我们整个管控通过租keep来做协调啊,所有的这个租keep周边的全是租边的客户端,把原数据注册给租keep租客来控制整个集群。
31:10
啊,那么我们的底座呢,是基于基于这个云云架构的,所以TTC的部署由独立部署,也就独立部署,就你自己可以买上台服务器,或者我通过虚机来部署,你也可以在公有云上面买到这个TTC的资源啊,非常非常方便,也可以在我们的T啊,T就是我们的这个呃,一体机里面啊,也可以这个布STTC口啊,所以它非常灵活啊,它的公云私有云的各种架构,所以底层呢,是基于这个云的架构啊,有弹性的这种能力。那么我们首先来看第一个呢,就是我们的loss。IOS用或者是负载均衡,那如果说你们公司有F5的话也是可以的,那首先我们提供了iOS作为一个业务的接入口,可以负载均衡,把流量用户过来访问的流量打到我们的pro,也就是我们的计算节点。
32:05
我们的计算节点,一般我们建议是多个节点,防止单体故障计算节点,它一听计算就很清楚,计算主要是解析C口,对C口的一系列的处理,包括执行计划的生成啊,那后面我会详细讲这个。解析完之后呢,然后最后要去获取数据,那我们看到这里有个MYQMYQL去获取的时候,底层就是数据存在MYSQL这边啊。啊。啊,这个拿到数据之后呢,然后数据汇聚到我们的pout,然后pro,最后把数据返回给我们的应用,OK,这是非常核心的组件啊,那。这是刚才讲的这一套,是从这个用户啊,应用这边角度来看这个TC口,那么作为DBA运营人员的话,我们可能会用到赤兔可视化界面啊,来做一个平时的日常运维,比如说诶,我的业务部门要要我提供资源,那我通过赤度界面一一见就可以创建个实例出来给到业务部门,哎,给他创建账户是吧,包括各种监控啊,那我在车队里面就可以完成,包括备份恢复啊。
33:14
这个SQ优化等等啊,全部在这个车里面就可以搞定。那么里面还有什么其他的一些啊可选的,比如说我们用多元同步,就是说我想把T同步到Oracle po Mo,我们通过多元同步的机制,当然我们有还还有其他的一些解决方案,比如通过我们啊,我们自己的DB也是OK的,当然我们把这个卡夫卡也可以集成到我们的这个里面去,那我们看到诶这里这个数据库里面怎么还有哈杜呢,这个哈一看啊,这不是大数据吗?是吧,这个是主要用在我们提供了一套这个备份的方案,因为经常我们听到这个数据库啊,DBA啊,这个会这个什么。这个商库跑路就是把库删了是吧,然后跑路了,那我们说数据库里面数据就是,哎,银行对银行来说这里面就是钱是吧,你删掉了跑路了,那不就完麻烦了吗?那我们这个T这个人做到安全性,就是说我们把备份的跟DBA的权限分离,那管控备份的,他只要管他这就可以了,因为我们在gba这边,哪怕是管理员的话,也删除不了他杜破这边的数据,OK。
34:24
OK,那还有我们利用了这个非常有名的这种日志的这个。数据库啊,Electric search,它主要用做这个CQ的审计,就是说我们有的时候为了这个数据库的安全,我们要进行对这个数据库进行审计,比如说经常有黑客啊攻击数据库,那我通过一这个设取这个上层的K8呢,就能看到,诶我这个上面有啊访问量这么大,那这个是不是有异常,或者说我要去审计一下啊,经常去访问比较关键的表的一些敏感的字段,那到底是哪个用户,哪个客户端,诶我通过这个界面就可以访问啊,就可以看到快速的看到啊,那么整个啊这个。
35:04
啊,这样的一套架构技术站的话,其实。啊,你作为一个DBA可能要学的东西就很多了啊,所以我之前讲过一个啊,这个TTC是百万年薪的DBA啊,这个不为过,因为为什么你要全部都要会啊,从这个数据库只是其中一块,所以我们说T这个它不单单是个数据库,它是一套整体的端到端的解决方案,对吧。啊,所以呢,我们不但有DBA的技术,我们还要有其他的啊,这个分布式的一些理论支撑啊,一些互联网开源的一些技术,LVS卡夫卡设计等等啊,这里我们全部列出来那。这是这个架构,OK,那我们看一下这个架构,我把它分成按功能来分,按功能来分啊这个呃,我们说我们来看这个功能分怎么分呢?也就是说我们在部署DDC的时候,我们从从底层往上看。
36:00
在这个。这个啊,资源池这边我们部署的话,我们建议真正的生产环境,我们建议是全部用物理机啊,当然你可能哎说那如果说你的成本有限的话,你要一部分虚拟机也是可以OK的,比如说我们的管理节点可以用虚拟机,但是物理机,比如说我们推荐我们的计算节点,我们的存储节点是吧,我们的LS使用物理机。好,那有了这个资源准备好之后,那。那我要提供这些资源提供啊什么呢?我觉得这些资源提供两大作用,第一呢,要存储数据啊,第二呢,要对这个我应用层访问过来的数据啊。进行一些计算处理,所以呢,我们可以看我们的存储,我们的存储分两种形式,一种是非分布式的和分布式的,那可能很多人会问,诶,那你这个数据库既可以实现非分布式的,又可以实现分布式,怎么做到?那难道要带两两套环境吗?
37:02
啊,这个有很多客户问过我,因为我呃去的那个金融客户啊,这个比较多啊,那这样就是各种各样的客户,其实我们只要搭一套环境,那我能提供两种形态的这个服务,一种是非分布式,因为非分布式你解就是我们传统的集中式数据库,比如说一个马赛克实力,一个奥AC克实力,就是非分布式的,那分布式的那就是多个实力,那我们也可以在我们的赤度界面啊。也可以看到。我们我们在车度界面里面。是吧,我们也能看得到我一个。实例,我在这个实例里面,我要创建一个非分布式的,我就点这个按钮就可以了啊,我然后我写一下,哎,这个资源是给哎哪个用的,比如说给我的这个OA用的是吧,我OA啊。我A系统,哎,那我用马赛克8.0还是5.7对不对,哎,然后我需要什么样的机型,哎,下面的机型规格啊,CPU啊这个。
38:02
内存磁场相当于就是我们云里面是吧,这个实力的规格资源好选好之后。然后。我这个模式啊,就是我们的高可用模式,就是一个分片。啊,一个分片它到底一组多重可以实现啊,一组零重到一组五倍就是六个镜像啊,然后还有一些各种复制的啊,这个特性啊,以及我数据库要怎么分布的几个机房是吧,我这里有三个机房啊。包括是怎么接到负载均衡。啊,然后。点创建一个实例就创建出来,这个就是我不创建了啊,然后呢分啊分布式呢也是一样,分布式你就跟那个一模一样操作就可以了啊。只是说这里多了我一个多少个分片,然后我自己要创建几个分片啊,这样的一个界面是一模一样的点就行了是吧,点下一步,然后点创建就OK了啊,其实说啊,他这个就跟云计算一样啊。
39:03
这是。啊,这样的一个两种存储方式啊,你分别不同的方式去存储,那么它的架构啊,就是啊,这种实力的方式就不一样了,那整个底层啊资源是一样的。那么再往上呢,就是我们的计算节点,我们原来在MY里面,我们计算很多的操作全部马服务层来实现是吧?S这个我们讲过,我在这个啊,这个上次讲马赛克架构的事是吧,我们说马赛克架构有接入层,S层和存储层是吧,那我们现在的马赛克只做存储,那么马赛克的service呢,由我们的这个po,我们po是单独开发,是用CC加加写的,那计算级点,计算节点这一块呢,我们把马赛克做干的活呢,我们都在这个pro里面把它做掉了,比如说SQL语句的解析啊,语法词法的解析啊,全新的教练这个用户他去这个执行这个啊,这个语句里面对象这个表有没有权限,能不能执行这个表是吧?包括这个读写分离,我这个C口如果是只读的话,那我可以发到这个背库去是吧,截清这个主足够的压力啊,以及这个路由选择,比如说我是个分布式的,那我通过这边路由来判断我这个CQ发到我后端存储的哪个分片啊,以及啊。
40:18
那我要启动分布的事物是吧,那这样保证我事物是一致性的,原子性的啊全体递增,那如果说你这个表我就是插入的时候,我要保证这个表的这个数据是有这个唯一性主机的,这那因为我这个表可能水平上面的各个分片,那我保证全局唯一的话,那我要那个的话,我需要全局啊这个唯一的这种啊来实现啊,还有等等其他那些。啊,这是这个计算节点,那刚才讲了我们的管控节点。管理决定呢,主要以租keep为首的啊,这个原数据啊,相当于是这个奥克里面控制控制文件一样,控制整个的这个整个呃,这个整个集群的啊,它这个租Q吧,有两个作用,一个呢是存储整个集群的原数据,第二呢,它起到一个通知系统,你所有的这个客户端只要注册进来,它就啊能监控啊,相互监控,我取,然后有什么事情,有什么任务的话,就发送给对应的这个客户端去执行啊,那对应还有其他一些组件,什么OSSOSS个A是吧,通过我们测试界面啊,执行的话啊,然后调用这个apipi这里啊,访问我们的keep,然后还有我们的schedule啊,做主备切换等着调度的用的,然后manage只要管理整个资源,包括创建资源,销毁资源,还有整个监控啊,整个监控我们整个的这个。
41:32
资源啊,那这商品就是我们可视化,刚才看到的测度的可视化界面,有它有这个两大块,一块就是我们日常运维的操作啊,比如平时我们要对这个整个啊集群啊,系统的一些权限分配啊,整个集群的管控是吧,然后实力的一些创建啊,资源的一些销毁啊,资源上报等等啊揭露这个LS的。啊,那还有一块呢,是这个啊,这个扁鹊的啊,它主要在数据库呢啊几个方面,一个是高可用的分析,因为高可用啊,实际上这个大家注意啊,这个。
42:05
数据库啊,这个。数据库。如果我们是分布式的,那分布式呢啊,我们说它有开发理论啊,开普理论啊。一致性,可用性和分分片啊,那我们这里呢,实际上就是我们增强了我们的。一致性。牺牲了我们的可用性。因为这三个里面只能选两个,我们选的是C跟P,所以呢,它牺牲了可用性,也就是说我们的数据库啊,一旦节点有问题的话,那我们就要切换,切换的时候数据库可能啊,那那个时间点啊,那几秒那几十秒可能就不可用了,所以呢,我们要这个。高可用切换的时候进行分析,避免下次的一个切换,所以我们用我们的扁鹊来实现这个啊,自动化的这个来监控来。告诉你是怎么回事啊,然后还有性能分析啊,所得分析啊,C个优化等等,这个都是由扁鹊来干啊,包括这个故障诊断啊。
43:08
这是这个整个这个。功能啊,大家可以看到从资源的整个管理上报资源整个管控,然后存储节点,计算节点和管理节点,以及上层的可视化的自动化运维工具。好,那我们把刚才就比较复杂的这样一层层,那我把它化成一个更简化的这样一套工具,我们可以看。我们从两个维度去看,第一个呢,就是从应用的角度去看,就是从我们应用啊,应用角度啊。应用的角度,我们这个应用你可以理解就是一个啊Java程序APP啊,一个应用程序啊,一个手机端,或者说一个应用程序,我要去访问数据库,那它是通过LS。IOS这个负载均衡大家知道负载均衡它只要做转发用的,对吧,它不做任何处理,它只要通过转换,它为什么这里要加个负载均衡呢?它因为为什么不直接去访问负呃这个pro呢?原因在于就是说我pro是多个的,我是有好几台,比如说我这里有三台,那如果你三台的话,那我要提供三个地址给应用的话,那应用就啊要填三个地址。
44:12
啊,这个太麻烦了,另外的话填进去的话,如果说其中一个一个有问题,我这个LV这个应用还去判断。那如果是从中间通过iOS透明转发的话,那iOS首先它啊会转发自动转发,另外iOS也可以判断,如果他挂了,IOS就不往这里转发了,因为他们之间是有关联的啊,所以呢,他就往这个地方去转发啊。所以呢,这个中间最好加一个负载均衡,那如果我们有些客户是采用这个F5啊,这个硬件F5 F5也可以做一组多倍啊这样的方式啊,那么啊,那po呢,接收到这个应用这边发过来的CQ啊,然后在这里做CQL解析等的啊一些这个一系列的操作,那这个解析,那当然如果说如果说这里面是个分布式的一个的话,那他要还要去看看这个表的分布式的一个架构,就是这个表的分片,那分配的信息呢,是从这个租keep叫过来的,他这个pro这边有个进程,每几秒钟就去刷一次把。
45:11
这个路由的信息缓存在pro这边,然后通过pro这个里面啊,缓存在这个路由,就是那个key啊,相当K的值啊,映射到我们的set,那他知道好,我这个是要发到set几去,如果是发到SET1通过分配键那就找出来,那我们这个啊,它就发送的时候呢,它有根据我们现在版本有三种算法,一种是基于哈希的算法,那哈希触摸大家肯定比较熟悉吧,还有屡矩范围的这种。Region啊,还有一个是那个list啊,这是三种算法都可以作为分片的这种啊,算法都可以做面啊,算法来啊发到不同的分片啊,这个呢,具体后面如果大家再往后听的话啊,可能那个啊胡老师会给大家讲到这个啊,开发这一块啊,这个我们借表有哪些这个有哪些这个。这个这个算法啊,OK。
46:02
好,那这个就是整个的这个业务来访问啊,只要这条线不不没问题的话,那基本就没问题,你访问访问到这个DB层马赛克层的话,然后。然后这里取数啊进行处理,处理完之后的数据再回到pro,返回个应用,这是这条线啊,那么还有一条线呢,就是我们DBA是吧,经常要运维这个数据库,就日常运维,日常运维经常会什么,我要创建一个实例,我要创建一个实例呢,通过可视化界面1.1个按钮,好,他给到oss,那OS会告诉主keep创建个任务,他创建任务之后,他就会告诉他,诶你去直接执行,他执行的时候可能还调到这个具体的DB啊。啊,那么整个过程操作的整个过程呢,都有监控都记下来,那整个监控呢,最后呢,记在我们的监控库,就是我们TTC的监啊这个测作的监控库支撑库里面啊,这是这个TT这个的一个啊核心啊核心啊好啊,那我们讲一个比较具体一点的,刚才把刚才那个讲的那套这个整整个操作过程给啊给大家这个讲下与理论理论,那比如说啊,比如说举个例子,比如说比如说这个时候我要在这个测度界面里面去创建一个分布式实例,我点这个按钮,那这个按钮里面不是里面有很多参数嘛,那点下一步,点好这些参数之后,是不是就是点下一步,那点下一步,那点下一步一点创建,它自动创建了,那里面不是有很多选项吗?对不对,OK,那么这个操作,那你只要点完之后,它自动创建好了,那整个过程是怎么做呢?我们来看这个图。
47:36
我们来看这张图怎么看呢?比如说刚才我大家看的这个是刚才我在车度里面去操作点的按钮点点点点好了,点串去点好,那车速这边会通过HTTP请求这个协议啊,发送给我们的oss这个API接口。啊,那么在发送到OS接收到的时候,它是以记以接生的这种请求啊,这种key value的方式来啊保存啊,那它这个地方其实会调用一个oss这B的创建实际这个函数。
48:09
串这个函数之后呢,最后呢,这个函数呢,要。请求这个租keep,因为OS跟租keep之间是客户端啊,跟这个啊这么一个关系,它有监控,然后租keep这里会创建一个人一个任务,交付一个任务,就是要创建实际的一个任务。然后。他拿到这个任务之后呢,他会把因为朱keep他只收啊收到这个信息之后,创建任务啊,会在一个他的一个节点里面啊创建任务,任务创建好之后,那么他会把这个任务下发给他的manager啊,Manager收到这个任务之后,然后进行处理,那么manager处理的时候肯定会调一些这个具体的比如创业实力的过程,比如说诶,我要去看看这个我所找的这个啊,我去找资源,我要找IDC里面去找资源,我的服务器能不能满足我的需求,我这个因为我发过来这个请求里面有CPU,内存,磁场是吧,能不能满足好能满足的话。
49:06
OK,那我就开始创建,那创建的时候呢,实例是吧,分为这个计算A群的啊吧,那整个创建创建过程整个过程是吧,那如果创建完了,那么他会把这个创建完了这个状态告诉JK啊主keep,那朱keep呢,最后通过这个状态呢啊再通过oss再去。给到测度,测度界面里面看到好,创业成功了,那么整个这个操作过程都是由我们一套监控来监控整个,所以我们在创建整个过程当中啊,都会看到整个创建过程的状态啊,非常非常清楚的看到。啊。这是。这个,那么这个状态创建过程的话,这个我创建我这里切波也是,但是我之前创建过,可以调出之前的啊,创建的这个啊,他这个任务啊,创建这个,比如说创建一个啊实力的这个任务可以在这里。啊,可以简单的看到啊,创建这个实例的时候,这里面能看到啊,对应的信息是怎么创建的,哎,它这个里面看到啊。
50:06
也可以通过这个。Oss的那一款。OS这块啊。好,那我这里先,嗯。好,这些不看了啊,这个人可以看得到啊,好,就是整个过程是呃,可以在这个车度里面都可以看到的啊,现在我就不串建了啊。然后我们接着往下看啊,这里概念比较多,接着往下看网关啊,网关就是我们说pro啊,我们刚才讲了我们的iOS把流量打到网关的,整个网关到底啊能做什么呢?哎,这个就内容比较多了是吧,那网关其实呃,我们的应用啊,从los这边过来,直接比如透产到呃,LSLS把流流量打到那个,然后po啊,因为po主要做计算,那么他收到这个马这个请求过来的话,他会去是吧?对这马S协议啊,编码啊,转换成这个SQL语句,这个语法数,那么对这个语SQ呢,进行这个什么解析啊,进进行这个比如说s select克的几个列啊是吧,后面的表啊,VR后面的条件啊啊然后这个CQ,我们其实还有一个功能叫CQ防火墙,这个也注入在我们的这个计算节点里面,其实在我们的测试界面也是啊,也是您。
51:41
配置的就是我这个C口满不满足我这个防火墙,比如说。我防火墙里面可以设置,到底哪个用户可以访问,哪个用户不可以访问,如果这个用户可以访问,那哪些语句可以访问,哪些语句不可以访问,比如说VR条件里面没有加VR条件的不能访问,那我在这个防火墙规则里面,我都能去设置,都能去设置,OK,好,然后如果这个过来访问的这个表是一个分布式的,那我要去申成一个分布式的一个执行计划,哎,分布式执行计划,而且如果你执行的比如说是个in色彩操作的话,往里插入数据的时候,我可能还要调用这个全局序列,拿到一个唯一的值,因为我表示水平拆分的各个分片的OKOK,那呃,这个时候如果说你过来执行的这个用户,还要判断一下这个用这个用户他的权限,如果这个用户是个读写分离的账户,那如果是个子读账户,那我就要分发到子读的备控上面去执行其以这里还有读写分离的逻辑的一个判断啊,那呃,那分布式是吧,他还要把分布式的这个路由的信息发过来,因为他路由的信息拿过来之后,他最后呢,要把这个信息这个SQ语句啊发到我。
52:46
底层不同的分配上面去执行啊。那还有些实锁的检测啊,用户认证啊是吧,用户认证主要是这个用户过来是吧,有没有权限去访问啊这样一套,那如果后端的存流程分配性,把这个CQL通过这个里面啊取出来,过滤完之后呢,它把这个CQL再返回过来啊,然后在这里发给我们的应用程序啊,那么它整个过程呢,操作这个SQL语句啊,就是流式计算这种啊方式什么意思呢?也就是说我们这个po,它会在这里做SQL语句的这个转。
53:19
定价。啊转换啊,然后呢,你写的CQL,它可能会把进行优化,内部优化,然后这个CQL呢,它自动就取完一部分数据,它就马上返回应用,然后再去一部分返回应用,这样循环的做,那你就觉得这个哎,这个CQL语句啊,这个CQ执行的比较快,就类似于两种算法,在大家如果在学过Oracle的话就知道一个是。All low,这种是看这个什么吞吐量的啊,还有什么for low for low就是我看了什么是响应时间啊,那这个流失计算就是我执行完之后马上给他,就是类似于百度里面的分页是吧,第一页第二页马上出来,第一页你去看,看完之后第二页慢慢就过来了,那他可以做到这个啊。
54:01
啊,这是这个,呃。网关啊,那网关这个呢,是非常非常关键的啊,网关非常非常关键,那那么我们网关都是部署多台,然后每个网关多台的话,都是水平对等的,OK好,我们再来第二波啊,大家肯定听的是不是比较累啊,它是听的比较累啊,因为这个啊,这个东西啊,这个概念特别特别多是吧,当然你如果你把我讲的东西能吸收掉,我觉得你可以去啊Miss Miss Tencent啊OK,好,我们来发第二步啊,第二波啊福利啊。第二步,来。好,第二波是啊TC啊。无门槛的代金券,就是你拿到这个代金券,可以在腾讯云啊,就可以去这个啊,学习这个啊TC。大家来,赶紧刷,赶紧刷。
55:00
啊,大家赶紧算。嗯。好,这个这个代金券还是比较有用的啊,大家可以拿着这个代金券去学习TC。啊,有没有同学抽到奖了?所讲的在这里。这个可以在这个。啊,互动窗口发看啊,谁知到啊。好,赶紧的。嗯。OK,没收到是吧,没收到明天继续OKOK。嗯,抽中了是吧,有些人抽中了啊,恭喜恭喜啊。看来你这个是吧。多发几个,那个大拇指可能就抽到了是吧,OK,好的好,我们继续OK。
56:02
好,我们继续啊,我们继续。啊,这是这个网关啊,大概有个了解啊,因为今天毕竟时间有限是吧,如果大家啊,要给大家做演是啊做那个是啊,这个可能后面看看时间啊,我们再来看存储节点,那么我们说存储节点其实就是你可以理解就是底层的ma克数据库,那么存储节点有个非常重要的特性,就是说因为我们数据是存在磁盘,那磁盘一般比内存是要大的,那也就是说我们真正数据库去操作的时候,是要去操作内存,但数据不可能全部缓存在内存里面是吧,比如说我内存是500G,我磁盘的数据可能两个G是吧,那我只能是吧,放这个百分之这个。啊,百分之呃,这个这个二十二十的数,呃,这个两两个T是吧,20%多的25的数据是吧,1/4,所以呢,我们最好这个磁法的数据不要太大是吧,那尽量的把我们的数据都缓存在我们的内存里面,但如果真的在磁盘里的话,我们去取的时尽量的磁盘快一点,所以我们最好要把这个DB的磁板换成什么SSD,所以。
57:07
为什么?啊,这个马赛克这么火,那离不开这个sid的呃作用啊,那么它解决了我们数据库IO的问题,其实我们以前这个优化啊,Oracle数据库最核心的思想就是优化什么优化IO啊,就是大家一定要记得啊,一定优化IO啊,所以呢,这个呢就啊一定要用这个,先要保证这个硬件架构没问题,再来考虑我们数据库和操作系统。那么那么这个DBDB里面我们也注入了,我们也注入了我们的一个agent啊。这个A呢,属于这个DB的一个盘路模块啊,它主要是负责什么呢。负责对这个整个数据库的一个监控。以及。我们底层这个数据库啊,所在的服务器的啊,基础监控,比如说CPU内型磁场啊,以及这个DB的监控啊,以及呢,我要保证DB啊不要挂,我还要怎么去做一个心跳啊存活啊这个炭火,所以呢,你可以理解一个马赛克实力上面肯定会有一个A的装在同一个机器上面的啊,当然它这两个模块是分离的,没有把啊马赛克源码里面没有说A写成一个A的,A是单独一个模块啊。
58:23
单独一个模块,然后因为分开的好处在于就是说我A卷的啊,要修改,要进行这个功能的一个一个修改的话,可能我一个月只带一次,但是我马Q内核代码可能我一年或者半年更新一次啊,所以呢,它是分离的啊,分离的这样就比较灵活啊,这是这个架构啊,这个架构啊,那我们可以看到马他不会直接去跟朱keep进行通讯,它有agent啊,那所以呢,Agent会收集马的状态,然后每三秒会汇报给。Keep啊。啊,然后马注意我们说一个分片一个实力啊,我们说一个啊,然后它底层就是高可用的是吧,一组多重的这样的架构啊,那比如说像我这个里面画了三台物理机,就是一组两重,OK,那就是一个数据三个副本,OK。
59:18
嗯。是老A周处吗?老A,嗯,好,数据备份,数据备份。啊。呃,数据备份这个也比较灵活,它有三种备份方式,一种呢可以把数据备份到什么HGFS啊,就是备份大数据啊,大数据啊那。备用当时就刚才讲了这个好处在于什么数据库啊,这个DBA商商户跑路也没用啊,因为DBA是不能删除HDFS的啊,数据的它没有权限,我们只要做好权限分离啊,那还有一个呢,我可以备份到我们本地的纳斯服务器纳斯大家听过吗?纳。放到本地的那。
60:02
我个大行就是这么干啊,不拉,但拉呢,可能不太好的一点,就是我在我数据库服务器啊,那我可以直接去操作这个拉上面的词饭上面是吧,那还有我们可以放到什么对象存储啊,Cos是腾讯云的啊,对象存储的啊这样的一个名字啊,那如果很多这个用户是用的这个私有云的啊TCE的同学啊,这个这个客户的话,他可能啊可能会考虑啊TCE的就是腾讯的啊,这个cloudpr就腾讯的专有云下面的啊,它对象存储放在这个里面啊,都是可比较灵活的啊,然后我们备份有两种方式,一种是物理备份,一种是逻辑备份啊这两两种方式啊都可以,那么呃,底层啊用了这用这种开源的技术啊,物理的用backup逻辑的举码单多线程的种备份。然后实时的B是实时的备份啊,那我们物理备份,我们也可以做增量的备份啊,那整个备份都是全自动的,我们在我们的后端啊,都可以去设置整个的这个备备份啊,就每个实例啊,可以去设这个。
61:08
就我们每个实例啊,里面都可以去设这个备份的啊,这个都有一套这个备份的一些方案设置啊,这都是可视化的啊。啊,那我们在扩展性啊,扩展性代表什么呢?我们说呃,数据库扩展有一般是有两两种方式,一种是我我垂直扩啊,扩容就是我们的啊,纵向扩就是我这个,嗯,实力呢啊,可能这个资源不够了,CPU内存或者磁场,那我比如说我它所在的物理机这个资源是OK的,那我可以水平就扩啊,比如像像这个磁法或者CPU都是秒级的一点就扩好了,那内存呢,可能扩啊,他要去找一个新的实例啊这样的方式,那还有呢,就是比较主流的这个就是我们的。分布式数据库的扩容,那我们可以做水平的扩容啊,水平扩容。这是这个水平扩容的基本原理。比如说。
62:02
我现在我现在有这个ABCDEF6个分片,六个分片,那这六个分片里面的数据呢,可能A的分片数据快满了,快满了之后呢,那这个时候我要添加一台新的分片,那大家注要刚才讲的分片是一组多重的对吧?啊,那我添一个新的分片进去,这个时候我创建一个啊,这个实里面创建一个新的分片啊,也在界面里面,我点一下那个按钮,点一下那个按钮,就是我点一下那个。嗯。点一下这个,比如说这是我的一个分布式是吧,那我点一下这个这个按钮添加一个分片是吧,是两个是吧,我添加一下,点一下创建啊,就添出来一个,那它出来的过程是什么过程呢?我们来看。那么他呢,是找这个分配里面比较大的那个数据,那首先呢,他会把这个A的数据呢,全部拷到一个新的分配上面去,那这样的话,这个A分配的数据呢,跟新的分配数据就一模一样了,当然我们是在线操作的,那么A这个分配数据肯定会不断进来,那这个时候当A。
63:05
这数据全部考到B分配的时候基本一样的时候呢,因为我保证拷贝啊。之后产生的B劳日制,这个时候A分片跟G分片会生生成一个什么自动生成一个组从啊,然后把后面呃这个备份之后产生B劳日制会同步过来啊,会同步过来,同步过来之后等它两边同步的基本啊接近就是延迟比如小于五五秒的话,OK,那另外两边数据基本一样了,基本一样,那就把这个主从停掉,组成停掉,主从停掉之后,那么我这个时候啊,这个时候两边数据基本一样了,基本一样的时候呢,然后我再啊去修改一下路由,就是告诉路由告诉我们的猪keep我现在啊。是七个分配了啊,ABCDEFG了七个分配了,那我把六个七个分片,把这个G的属性加到主QB里面,那OK,我的业务这个时候过来访问,那就你访问到七个分片,当然这个啊。
64:05
更改路由这个过程可能会锁一下表,因为我相当于我要把这个六改成七的话,那你不锁的话,你大家同时去操作的话,肯定会有问题,对吧?数据库都是用锁来啊,解决这种共享资源的问题啊,这是这个啊扩容的这个原理好。好,那我们再来看一下这个比较重要的一点,就是我们说基于这个数据库能保证数据的啊强一致性,那它是怎么实现呢?首先就是我们说这个数据库啊,它的这个一致性啊,它的数据的高可用啊,那首先呢,肯定会有这个数据的复制,那我们说数据库的复制有三种方式,一种是异步,异步就是说。我在主库提交了,那不一定要经过这个重库的确认啊,是否收到那个我主库的B日志,那我啊主库就提交掉了啊,那这个信息是比较快的,但是这种这种呢,这个数据肯定会丢失的,那半同步呢,就是设了一个超时时间啊,这个超时时间之内呢啊,我只要保证这个呃,主库的。
65:06
B到是能同步过来,那我就啊认为这个事物啊,然后重库这边返回给AC确认的话,我认为这个事物就是一个事物就完成了,但是问题在于就是说如果这个超时时间比较长,或者说诶我这个已经超过了超时时间,这个时候主库会转换成异步,这个时候依然会丢出去,那很多同学说,那我把操作时间设大一点,设大一点的话,从比如说从五分钟设为十分钟,设为50分钟,那你这个一一笔交易就要等50分钟,假设这个组成之间网络断了,那不是一直要等这个交易就没法完成了是吧,那心里就是么大打折扣啊,所以呢。你半桶步呢,可能要多要多谈,这样会比较好一些啊。那嗯,那我们用的是强同步啊,强同步的核心就在于就是说我们啊怎么能保证。我一笔交易下来之后,我数据一定是两个副本,那像马的GRR就用了什么帕的技术,那我们是用了啥呢?我们是用了这个啊,这个marr啊,什么是AMR呢?现在啊,先卖个关子啊,后面我有一张胶片,那我们先来看一下,就是说强同步,强同步的核心就是说哎,我一笔交易的话,我要保证它落在主库的同时还要落在另外一台备股,一定要保证数据是两份。
66:20
或两分以上啊。那我要这样保证的话,你看那我整个架构里面,我一组啊,最好是最好是一组两倍,你一组一倍的话,其实也可以,就是说我一个可命的下来之后,我b blog日志落到master,然后master下面的b blog日志发送到重库,然后重库返回一个确认AC告诉主库我已经收到B到录制,那这笔交易完成那两台是可以的,但是大家有没有听过100万小时的理论,100万小时的理论就是说你一个机房啊,1万台机器啊,1万台机器在100个小时之内肯定会坏掉的,那也就是说我如果说一组一倍的话。
67:02
那万一呢,刚好我是在这个100个小时之内坏掉了,OKOK,那如果说我是强同步的话,那我们这里有个保护机制,就是说如果说我这个时候有一笔交易过来,一个亿进来的话,一个提交下来写到这里了,那这个这个挂掉了,那我这个这个这个时候其实如果他监测到这个重复挂了,只有一个master的话,这笔交易是没法写的,他毕竟只读库了。所以呢,为了保证我这个墙同步啊,是不会出问题,或者这个出问题的几率很小的话,那我们建议是一组两倍,因为同一时刻两台机器同时挂了,这种可能性几乎为零啊,几乎为零,当然这个如果你把这两台机器放在同一个机架,这个机架如果挂了,那这个那就不是为零了,是吧,那很有可能这这是呢,就是这么一个架构啊,这么个架构。那么我们说我们的数据一致性啊,我们用的是这个ML,什么叫ML呢?叫multi啊,就是多线程异步的复制方式啊,其实还是在这个马异步的基础上,我们做了内核的优化啊。
68:08
优化啊这种方式。大家了解一下就行了啊那。那么大家在思考一个问题,大家在思考一个问题,大家思考一个问题,就是说大家想一下,大家想一下大家还回到的图,那大家想一下,我如果我银行里存一笔钱,我这笔交易啊,我写下来的话,写到这个主库,那这个如果是强能库的话,这个主库必须要把这笔交易发送到这个备库,那我们其实我们在实际的环境里面,我们这个主备之间啊,可能是两个机房,这两个机房在同城市可能相当50公里,那些传过来其实还是一来一回。一个trip的话还是需要时间的,也就是说这一笔交易啊。如果说我没有组成的话,我只有master的话,可能一毫秒就搞定了,哎,那那如果说我有备库,我必须要放到备库再回,可能这样一来回加起来可能啊,加上路由的消耗的话,可能我多出一毫秒啊,那这个时候我一笔交易从一毫秒变成两毫秒了那。
69:06
对于这个用户来说,这个时间增加了。但是我们看一个数据库的性能,我们一般来说不是看一笔交易。啊,大家知道,大家在数据库优化的时候,一定要注意这个性能的两个非常重要的指标,一个是什么呢?吞吐量。啊,一个是吞吐量,一个什么,一个是什么食盐。这是这个,这是这个优化。这个数据库的啊,天平的两端啊,那我们最好是什么呢?吞吐量很高,就是我的并发用户数很多,然后同时呢,我的响应时间很短,就是我应用层发出一个命令,然后接收到的话时间很短,这么一个过程啊那。那大家想一下,我一笔交易从一毫秒到两毫秒,对于我们用户来说有感觉吗?没感觉,因为对人来说它的单位是什么,是秒级的,那对数据库呢,是毫秒级的是吧,是不是,所以我们看这个性能的话,我们看吞吐量O不OK,我们一般是不看一秒钟你这个。
70:10
服务器零交易几笔?啊,几笔啊订单。对不对啊,那我要实现这个的话,我们说在马里面半同步可能会有超时,可能心里会有影响,但是我们啊要保证这个,那怎么做,我们引入了这个用户现成预补机制,这个架构图。啊,那么对这个架构图啊,可能这个有些同学是啊研究过这个是吧。核心思想就是我们要压榨我们的CPU,让他100%的跑马,不要让它斜着。市场是怎么做呢?就是我一个一个用户一个提交下来之后。那么我把日志写到我主库本地的b blog之后。这个时候我CPU线程释放掉我这个线程,把线程提供给别的用户去使用。
71:01
啊。那么呢,那么呢,那CP既然释放掉,那我要保证这个B劳录制刚才操作的这个这个对应的什么,这个线程跟绘画要要放着,要保证有关联,有关联就是我这个,呃,放到我的内存里面啊。那这个时候CPU释放掉之后呢,然后这个CPU就被别的用户拿去用了啊,那这个时候这笔交易只写到我们主库的一个master,那这个master呢。通过本地的当普斯特线程把它发送到我们贝库的啊,通过IO线程来接收到我们啊,我们备库的瑞拉日志啊,瑞志写进去之后,然后返回一个确定AC给到我们的主库,主库这个时候接收到这个。备库的A确认之后,然后这个时候再去取一个CPU线程啊,然后到缓存里面拿下这个啊,这个会号和线程号来确保,就刚才那个标日志,然后再啊应答给我们的应用说提交成功,这就是这笔交易的一个啊这样一个过程可能需要两毫秒。
72:10
那大家想一下,那在这个过程操作中,我的CPU,我的CPU有没有卸载没有,因为为什么,因为我这里所所有整个操作,我到这个地方,我CPU就释放掉了,然后呢。把它发给我们从库存库人员操作完之后啊。可以理解,这个时候它就不是啊,这个同步它是一种异步的方式,OKOK啊。好,那通过这个我们来比较,就是说如果你采用马C半同步的方式,可能我们一秒钟我的TPS就是2万,但是我异步的方式呢,就是6万的交易笔数,那强头部呢,跟异步的啊,性能是一样的啊,我们看我们的交易都是按秒来讲的啊,TPS1秒钟啊有几笔交易啊。这是就是我们优化后之后的强同步的性能跟我们异步是完全一样,就是说我们实现了我们的强同步数据不进不错,同时我们还能保证我们整个交易的笔数的性能和我们异步完全一样啊,这个就还是比较强的啊。
73:13
那么。我们怎么来保证说我的这个切换过程当中,我的数据不会丢啊,也不会错。那断了吗?那这个呢,是整个数据库切换的一个过程啊,切换的过程就是说那。呃,这个。怎么切换呢?大概讲一下啊,这是我比如说我这是伪套库,那呃,这是我的master,我master挂了啊,每个master每个库上面都有个agent,好master挂了之后,这个时候那我们进行切换,切换这么几个步骤,六个步骤切换的时候呢,要什么主库要降降级啊,降级的时候,这个时候整个数据库都啊一组两倍啊变这个主张也变成倍了,都不能写数据了,都不能显示只读啊,整个业务也不能访问了。
74:01
然后应用也也因为他没有这个新的这个数据进来之后,他也没有这个轮度别到知了,那这个时候。我们。这个schedule啊,他会啊,他会下来什么呢?要去啊。去这个,呃。两个重库上面去啊,找一下这个B劳兹的位置,通过这个A群的上报,B劳兹越大,说明跟我们原来的主库的这个数据去接近啊,那它可以选为主库,比如说S1,那这个候我们要选S1啊,作为一个新的主库,然后重新组成一个新的组存关系,最后呢,因为这个组存关系变了,那这个时候我们要去修改路由啊,最后呢,路由修改完之后,那业务也可以进去了,那这是整个的这个组成切换的过程。那么这个组成切换的过程当中,我们怎么保证数据是不会丢也不会错,那实际上数据丢失的情况有两种情况,一种说是MYQL实例挂了,一种是说MYSQ所在的服务器挂了,没法用了啊那我们来看,比如说这是我的A是我的主库,B跟C是我的存库,OK,那A上面有三笔交易好,A加一,A加二两笔交易已经写到我们的C上面去了,那B上面只有A加一这笔交易好,那这个主库发起个A加三写进去之后呢,发现。
75:17
好蛋鸡了,发现A蛋鸡了。A账机之后呢,我们可以看那B那个我们的schedule呢后判断他们两个B劳志发现C的日志会多一点,两笔这里一笔,一共这里三笔,那OK,选C为新的主库,C型的主库之后呢,那C上面多出A加二会同步给BB,没问题,然后后面新加的事物也会写进来啊好写进来好好,那这个时候这个时候假设我A是。呃,马SQL实例挂了服务器没问题,这个时候我重启马SQL实例之后呢,然后把A作为一个重库指向我们新的主库C啊,那发现AA上面有多出一批A加三怎么办?因为我这个时候要把数据抹平的话,保证一致的话,OK,我调用我一个我们的客户端agent的,然后把它清除一下,相当于手工的去把它交本,交本掉,这个这这个这个多出的数据delete掉就OK了,就OK了,这是这个处理这样一个啊清理啊第二种情况呢,就是说哎,我的这个A所在的服务器啊,没法没用了啊,这个时候我加入一台新的服务器去啊加进去之后,那OK,那我重新做一个主从啊,从B拷贝一个镜像过来,然后再进行主从应用,最后挂过去,这是。
76:26
啊,这样的一个,呃,整个全自动化,所以我虽然说的这么复杂,全自动化你点按钮就可以了,不用这么这么麻烦。好啊,那我们再来看,我们再来看分布式事物的一个介绍啊,分布式事物,分布式事物实际上我们真正去开发的时候啊,那啊我们去用单机版或者分布式的话。跟单机版是一样的,对于我们用户来说,我客户端或者我手工去发起命令的时候,也是这么去发起的,我发起一个事物begin,然后啊。执行我们的d mi语句,然后commit,这个从begin到commit,这是一个一个事物,一个TPS。
77:06
那么我在发这个事物的时候,首先我们要用变begin,因为MYQ里面一般都自动提交的啊,这个为什么自动提交我这里不说了啊,大家有兴趣可以看看我之前讲的视频,那begin下去之后呢,这个时候其实begin呢,他要跟我们的这个进行交互,这里我们画了这么复杂这个,呃,其实他要找我们的pro啊,这里我只发了发了两个DB,找我们pro这边开辟块内存啊,那没问题的话可以返回啊,这个客户端说OK,可以理我,那pro这边呢,会把这个CQ呢,呃。通过这个C解析,然后发给我们的,比如说发给我们第一个分片啊C1。那么C一经收到这个pro发布了这个这个这条C呢,它会启动一个失误,注意X is start这个全这里面是一个ID号,这个ID号是个全局唯一的啊,这个ID号是个全局唯一的啊,因为我要保证啊,因为实际上分布的数据库里面有两个两个东西,一个是保证这个有一个啊全体唯一号,就类似人的身份证,第二个呢,他保证一个实接错啊,全体时接错,那给到一个呃全体唯一号,然后再执行这条CQ啊,那么这一条C个呢,呃,他发到第二个分配上面,也是其中同样的一个ID号,因为它是同一条同一个事物啊,一同一个这个ID号的,然后就往这里去执行啊。
78:21
OK,那执行完之后,这个时候我们发起commit命令,这个时候就执行什么一个两阶段提交啊,两天提交就是结束刚才那个事务,然后这个时候做。这个也做普罗派,普罗派的核心思想就是写入什么,我们的热度在写劳志。写完之后,那我要把这两个分片写完的状态记到我们的啊,这个我们的这个这个。一张表里面去啊,这保存这两个状态,万一其中一个分片出问题了,我通过这个表的状态来做回滚,如果说每个分片提交都是OK的,好,那我再发起一个科密的命令,然后。
79:02
对所有的啊,分片啊,做一个commit啊,这样的话,整个事物就可见了。啊,那它也释放了锁了啊,到commit完之后才释放整个锁,否则的话在prepare时还是加锁也是不可接的,虽然是十句化接到磁上。啊,这是两阶段提交啊,看到的这个SQL语句,那么我们从这个啊图里面也可以看到我一个应用啊,发起SQL语句执行完之后呢,发起commit命令的时候呢,那它要啊往多个分片去发起这个什么准备提交啊,准备提交就是XX就是往组上面写入B劳制和铝度,同时把B劳志发生了我们的背库啊,只要其中一个背部收到AC,收到那个B劳志,取到劳之后,然后返回一个AC告诉主库,然后主库呢告诉这个pro pro就会把这个第一个是分片执行的这个commit的状态写进去,代表是可以commit啊,依次的把第二个分片也是这么做,如果说第三个分片出问题了,那它会about那这个状态的时候,那么它会。
80:02
这如果说第三个分别是啊,没法提交,这个时候要内部要做个回滚,如果说所有的分配全部是commit,这个时候最后发起什么第四步的X commit啊,整个啊,这个操作就解锁,然后事物就可接了啊,这是这个分布式事物啊这样的一个过程。那这个过程。那么我们经常会说客户会面临到什么呢?就是说到底我这个业务系统是用分布式还是非分布式。我认为你用。分布式还是非分布式,从他的这个性能上来考虑,这是最核心的,就是说我用户,我的应用去访问的数据库,我的响应时间能不能达到我用户的需求,能不能接受我这个延迟,比如说我一笔交易原来是一秒钟,我能不能接受,现在一一笔交易是三三秒钟,如果能接受也OK,就用就可以了,如果说我不能接受,这个时候我们就要考虑我是不是采用分布式,因为你的单机这个啊,这个资源已经被压榨完了,就是CPU、内存全部用完了,哪怕把哪怕是这个64核的CPU 88靠的CPU啊,这个530G内存,以前我们这个奥acle就用了最高的啊,这个在一六年的时候,88靠176个现存的510G内存,两块SD 3.2个T的奥acle可以支撑到我们最大三11的时候,可以支撑到4万的TPS 30万的KPS啊,最高的时候。
81:24
那么当然这样高的这个啊,机器如果业务上来再上来的话,你这种肯定会扛不住的,这个时候我们就要考虑这个分片,所以呢,我这里有个简单的指标,就是说我们的数据量小于两个T,我们的TPS小于1万的时候啊,这个时候啊单机版问题不大啊,可以不需要,那如果说我的数据量比较大,我的这个TPS啊已大于1万了,那这个时候需要考虑扩容,所以我们在架构设计的时候,我们要考虑我的系统未来的啊两年啊,未来的五年,那会不会打到这个,如果达到这个的话,我提醒做好布局,省得就是说我啊地基没打好,地基打好了后面要打扩容,那很方便是吧,所以呢,这个时候你在选型这个数据库的时候,一定要站在架构师的角度来考虑你的这个整个容量啊,这个计算的容量和存储的容量啊。
82:14
那么。还有要考虑的是我们的这个数据存储。那么我们说数据存储,你的磁盘数据量,我们说这个呃,马Q的这个in DB啊,它的单个实例存储可以达到六个四个T,那我们说我们借一个实例啊啊。放这么大的数据有意义吗?一点意义都没有,为什么?因为我们让用户,让我们应用跑得快的话,我们应用最好在内存里面能全部命中这个数据,那64个T的数据放在磁盘里面,那我也只有,比如说我的这个内存只有一个T的,那我这个整个命中率只有1/64,对不对,那整个系统是很慢的,那这个不适合这样的,所以呢,我们尽量要把我们的这个实力放的小一点,最好是一个T啊,那一个T的话,这个数据的话,那如果说我的内存是外设机,那全部啊把它缓冲去的话,也就50%命中率,对不对,所以呢,这个其实一个实力真正的环境里面不要这么大,200G300G是吧,就可以了,就OK了啊对吧,所以这里呢,大家一定要去看看你的整个的这个,呃,存储容量以及呢,你的这个计算啊,就是我们响应时间啊。
83:19
就是这里大家要考虑的,OKOK。这是这一个好,我看这个还有最后一个模块,我们再来第三波的啊抽奖好不好,来第三波抽奖啊,看看大家谁能中啊。好,大家来啊,这是CSDN的程序员杂志啊,里面有很多这个啊。技术啊,各种各样的技术啊,都可以在这里面啊,可以看大家。
84:00
赶紧出。OK。好,我们最后还有一张是可选的啊,简单给大家讲讲就行了啊,因为今天内容还是比较多啊,然后概念特别多啊,然后大家有兴趣的话,可以搭一个环境啊,那么可能这个啊,下节课明天啊可能就讲这个啊,这个会讲这个环境安装啊这块。OK,大家有有有去那个吗?大家有去这个有没中奖的同学有没有抽到啊。抽的同学在那个里面回一下,看谁抽到了。OK。有没有吃到?一次也没抽到,好吧,OK,好,明天继续抽吧,OK,好。
85:00
好,那我们继续啊,我们继续,我们还有一张,我们还有一张啊,我们快速的结束啊。好,提示可选的模块,也就是说刚才我讲的那个核心组件啊,我们的管理节点,我们的计算节点,我们的存储节点,这是我们的核心组件,那么。我们的可选,如果你不用的话,整个数据库是可用的,是没问题的,基本都可用了,那我如果说想想用更多的功能,那可能我要根据我自己的一个这个啊。具体的这个。业务来看我要不要用到它,我们来看几个,我画了几个,因为这里可选的有很多,我只画了几个,第一个有卡夫卡。卡夫卡主要我们用在两个场景里面,第一个呢,我们用的这个多元同步啊,所谓多元同步就是我把数据库从比如说我们TC可以同步到我们的Oracle,同步到我们的呃po screen啊,同步到我们的马SQ啊等啊,同步到我们的C卡夫卡,那它能同步的话,那我们通过这个呃卡夫卡的技术,但卡夫卡是吧,卡夫卡啊两端,一端是我们的生产者啊,另外一端是我们的消费者,对不对啊,那生产者当然很很显然就是我们要去解析我们这个TC的日志是吧,把它转换的这个接成格式是吧?啊然后消费端就是我要去消费这些数据啊,就是通过不同的线程或者组,然后呢去消费,把它转换成我匹配的,比如说Oracle马或者匹对不对。
86:29
那么因为卡夫卡我要保证数据不丢啊,那我要卡夫卡,我要需要什么做高可用,所以呢,卡夫卡里面有什么有这个follow和啊这个leader啊,如果说你是三台卡夫卡的话,那是一个leader多个follow啊,那卡夫卡leader是可以写数据的,然后它这个数据里,它的这个服务器呢,它里面叫什么BLOCK1BLOCK2,呃BLOCK0啊,那就三台机器,就三台服务器。然后这个他在这里面我们要用到这个卡夫卡,我们需要什么,需要去创建卡夫卡的里面的这个topic topic你理解就是一张表啊,那topic呢,那我们保证这张表这张topic数据不丢的话,那我们这个topic呢,要做多个副本啊,比如说我TOPIC0啊这个啊消息是吧,那我做一个副本啊,然后因为topic呢,可能啊比较大,那我们也可以把topic进行什么,进行part进行分区啊,这个很像是吧。
87:21
这么一个啊,那卡普卡呢,它用到我们的嗯多元同步,那我们其实还有一个是那个我们的这个日志,那个S审计是吧,把我们呃pro这边产生的这个日志啊,我们要嗯,放到我们的这个electric search,那我们这个在跟我们的electric search中间,我们放到卡夫卡来采集这个我们的用户端发过来S语句来进行这个啊也就我们这个。在这个界面里面啊,我们给大家看一下这个这个界面里面啊,界面里面就是我们这里采集的数据,我用了这个啊。Search就来采集啊,那就这装好之后你看到啊,我采集过来,比如说这个啊,是哪台服务器是吧?拿这个实例啊,这哪个客户端是吧,怎么连的,然后个客户端ID号啊,然后包括里面的SQL语句是吧?里面如果执行到SQL语句,它这边会有这个SQL语句,然后对应的topic是什么。
88:15
啊,执行这个,比如说这个S语句是吧,S语句对吧,就都有这样的一些信息来看到这个就是我们的,呃。这个社区,那我中间用了这个卡夫卡,那这个我们这个界面里面,您看到啊,我的这个架构里面啊,我卡夫卡在哪呢?我卡夫卡。这个啊,就卡夫卡三台是不是啊。好,那还有就是HDFS啊,HDFS我们是这个可以搭为分布式一台,当然我们最好是高可用三台或者五台这样啊,管理的两台数据级的三台是吧,这样的一个架构啊这样,那这个呃大数据其实我们在呃页面里面其实也是可以看到的啊,其实我这里也装了一下。
89:04
大数据,我这个这个是大数据大号的啊,当然你也可以用什么,用命令的方式去操作这个大数据,比如说我,呃,我这个大数据里面。我大数据里面,我数据是怎么放的是吧,那我这个地方,哎,我可以看到我用这个HHDFSHDFDFS是吧,杠S啊,然后可以看到我这个数据是怎么存的啊,那我就可以一层一层的。背后我可以看到,我比如说我要看这个实例是吧,那我就看到这个数据啊,做了一个啊,这个下面是吧,放了什么数据我就看到啊,这是个物理备份,备份这些数据在我的HDS,就你看到的后端,当然我需要有HDFS账号才能看到,这是这个。HDFS啊。好,那还有一个是我们刚才讲的EK啊,那么EK呢,我们现在这个,那之前的话是用这个lock sta去采集数据,然后采集的数据呢,写到我们的社,其实在我们可以看作是个数据库,它是是日志数据库做持久化的,那最后呢,通过这个P8呢,通过页面来展现出来啊,那这个呃。
90:10
这个elect公司呢,它现在主要主推是bit bit里面有很多很多种啊,比如说我们要采集日志,用five bit去采集,采集的数据呢,比如说你写好脚本,直接写到我们的啊一赖这个社区是OK的,那我们现在采用这种轻量级的bit来采集,然后写到我们的一一这个社区里面持有化,然后通过K8呢来展现出来啊,这是我们这个呃,EK啊,刚才我们也看了,看到这个EK。好,这是我今天讲的啊主要内容啊,呃,今天呢,讲的内容主要是基本概念比较多啊,大家呢,有对这个数据库有一个基本的理解啊,基本的理解,那么呃,大家如果说你呃有这个实验环境的话啊,你可以装好之后可以尝试的去连接数据库啊,比如说我想去连一个数据库,比如说我连想连一个分布数据库,比如说我连进去了马SQ这个啊这个呃。
91:02
Pro的地址,然后端口,然后用户没密码是吧,然后连进去,比如说你连是怎么连的,连进去,那连进去之后呢,那他操作这个数据库也是一样的啊,这个操作数据库跟马西克的面积基本上一样,比如说我连到我这个库下面,我看一下我这个表,诶我这个表里面比如说有这么一张表,对吧,你可以去光光才发现这个用起来跟这个我们这个没啥区别啊,这是个分布式的一个数据库啊,分布式的。分布式,你看这个数据也没什么区别,那如果说哎,我想看一下我资料数据,哪些数据分配分布在第一个分片,哪些数据分布在第二个分片,对不对,怎么看呢?你可以用过它有这样的一些特殊命令啊,比如说。啊。比如说像前面加一个这样提示符,然后再去再去查别这个表,那你肯定看到可能会,诶我想看一下这个数据。到底分布在哪几个分片,它会诶翻译个啊发现诶这个数据里面后面多了个in for,哎这个就比较特别了是吧,这个我们常规的看到那看到诶这个ID这个你是啊分数75的放在这个分配里面啊set要什么16638杠三,哎这里面杠三尾号杠三的几条,123455条记录,那杠一的呢,杠一的有五条记录啊就是说我16数据分别放在我两个分片水平拆分了啊,每个分别五条,那么对于这个。
92:31
对,这个分配到底有几个可以通过类似这样命令也可以啊,非常方便的,在这个命令里面也可以。也可以看到,哎,我这个整个集群,我这个当然这个集群这里指的是一个分,一个分布式的分,呃分布式实例,那这个实例里面有是吧,对应的这个分片,那这个分配的IP是吧?分布在这个哪三个副本上面,然后对应的端口是什么,然后它是这个第一个分配是零到七啊,然后第二个分配是八到15啊,那这个就是通过这个命令,当然你也可以什么,通过这个可视化界面里面可以看到好这个,比如说这个是呃这个是吧,GROUP1616444。
93:09
啊,4996694杠三,那对应的就是我们看到的啊,他是不是,然后这两个。分片啊,什么三八杠三,什么零五杠一是吧,那你在这个里面点进去之后,你发现这两个分片是不是就我们看到这两个分片是吧,不要杠三这里也可以看到啊,这个呢,就是大家如果用的话,后端可以有环境的话,那理解起来就比较好理解了。OK,好。好,那么今天的内容啊。我就分享到这里啊,感谢大家的啊。啊观看啊,谢谢大家。大家看一下有没有什么问题啊,我看看那个。呃,有没啥问题没有。我看一下。OK,那大家明天继续。
94:07
我看大家有没有啥问题没有。是啊,明天继续吧,如果中不了的话,就明天继续。嗯。Mar是吧?啊,它其实就是马斯克的异步复制啊,只是做了一些改造,这个异步大家知道吧,异步异步复制,多线程的,多线程的异步复制。啊,怎么看分配G,怎么看分配剂啊分配G这样看,呃。那比如说像这个表啊,比如说我这个表怎么分配了,你可以看一个方法是这样看啊,一个是修table,然后这个表啊,这个game。然后。可以看到这个分配下key是等于IB的I这个表有ID name score,那分配这个还有一种方法啊,呃,去看的话,那比较底层的就是你我通过什么,通过那个zoo keep,通过zoo keep的命令,然后去找这个分配的那个啊这个呢就是比较底层,我要我要去看一下这个猪keep里面怎么存的是吧?那大家租keep搜索,那你看租keep里面分片是怎么存的,你要找到对应的,比如说那个那个分片对吧。
95:27
比如说我要找那个啊,我这个分布式,这个分布式的实例。对吧?啊,然后你一层一层的往下看啊,那它这边有这个对应的啊应的数据啊,可以看到这个你分配是怎么存的,对这个路由路由。就是你看要你要看到底要找哪个信息是吧,找哪个信息。比如说那那我要看什么,看这个这个这个表呗,对吧。其实其实这个难在于就是你要把这个zoo keep看懂,然后它里面有很多很多目录对应的原数据,这这看到没有,就是这个啊,这个这张表是吧,这张表,然后它分片K是等于ID是吧啊。
96:14
它这里还缓存了一个为界,是缓存1000个值。嗯,同样的事得。对对,同样的上可以使用都是啊对的没问题。那。啊,如果是虚拟机的话,你只要四颗CPU,然后8G内存啊就可以了,就跟我这个一样。四颗CPU 8G内存。啊,一台一台4C啊,四个CPU8G6型就可以了。啊Mar呃,把科的分成两阶段,那分布的数据库就是两阶段提交了嘛,啊你所以说我们磁盘里面要用s sad嘛,因为提交的话要落盘,那个要落盘,你都要落盘,Sad的话,这个也是很快。
97:20
对。呃,主机要三倍以上,就是你要三台或者四台啊,四台呢就可以搭的更多了,四台的话呢,你可以搭大数据啊,这个search啊,然后你取。嗯。我这个就是我这里虚机搭档,你看我我的虚机啊,我的虚机我就四台,然后每台就是这个。嗯,我每台就是四颗CPU啊,然后是那个。嗯,对,8G内存啊这样。啊,其实我这个我这个台式机配的比较好啊,大概我配台式机是64个G内存的。
98:04
然后16县城的啊。嗯。对,我我是64级的,嗯,我是64级的那个,我配了个64级的那个单,呃,这个这个。PC机。必须有司机的吧?啊,六六十四级的啊。然后所有的款全部是SD的。笔记本也能装,但是笔记本配置要比较大才行嘛,这个可能这个跑起来比较。我建议大家做实验的时候啊,就不用用那个笔记本电脑,就是你比如你想做一个实验,临时测一下的话,你买一个那个什么这个腾讯云的这个腾讯云的这个这个这个云就可以了,因为我一般喜欢用这上面用好之后,比如说用个一个小时是吧,两毛两毛钱,然后删掉就可以了。
99:05
大家可以看一下啊,其实在进腾讯云就可以了,腾讯云然后你明天会讲吧,明天那个胡老师会讲,然后这个进去之后,然后在腾讯云里面买买机器就可以了,很便宜,腾讯云这个像云上的机器都很贵的啊,都都很便宜的。你在上面买就可以了。我就我就不解释了,这个你大家云上买一下就可了,可能这个一个小时就几毛钱吧,然后做两个小时的时间,一个小时的时间就可。OK,好,那我们。啊,今天就到这里吧,啊,谢谢大家。
我来说两句