00:00
接下来我们来了解一下Doris的一个架构,那Doris主要呢,有两个角色,第一个叫f fe,第二一个叫be,这两个呢,其实就是什么。Fe就是这个缩写,它呢就是一个前端的意思,Be呢,就是backon的一个后端的意思。那这种架构大家应该很熟。我们这正常在企业里面开发,是不是基本上开发一个项目都是前后端分离啊,对吧,刚好他起的名字一个叫前端,一个叫后端啊,其实它的设计理念是差不多的,那么大家可以想想,我们平时的前后端是分别是干什么的?前端后端啊,咱们现在讲的不是Doris就正常的啊,比如说呃,一个页面吧,Word或者一个APP啊,咱们前端这一块。他是不是主要负责一些页面的展示,还有跟用户的一些交互,对吧,那真正执行一个处理逻辑的应该是谁啊,是不是后端呢?所以我们一般的电路是不是这样,用户在呃网页也好,在APP界面也好,进行了一些操作,点击一些按钮或者怎么样,那他是不是这些东西。
01:13
是不是到前端这里,那前端接收到用户的这些,呃,数据请求。在之后呢,是不是根据这些请求去调用后端对应的接口,说白了就是把请求怎么样发送给后端,对吧,那由后端才真正的去处理啊。执行相应的底层的一个逻辑。之后呢,后端是不是把结果返回给前端,前端呢,可能是在页面上,可能是在程序上做了一个展示,那用户是不是就可以看到了。是不是这么一个过程,那我们对比这种经典的前后端分离,那我们再来看看Doris,它其实也是这样啊。F1B。这两种角色他们都是进程级别,而且呢,大家注意他们不依赖于外部组件,也就是说我们的Doris的部署或者说使用了,并不依赖于说你一定要有哈杜OP1定要有,呃,什么HDFS雅这样的。
02:15
啊,他不需要,他都是自己来啊,那相对应的,比如说我们最很熟悉的一个have,我们知道have。它是一个数仓工具框架,但其实它底层的执行引擎。要么MR,要么Spark,要么T,对吧,那它的存储是依赖于HDFS是吧。像这种hi是跟哈杜这一块是有强依赖关系,但是Doris不用啊,他都是自自个来啊自个来,那我们来看一下f fe啊f fe它负责存储维护集群的什么呢?原数据,这就是F1最大的一个作用,那我们接着往后看,负责接收查解析,查询请求。
03:00
对吧,用户写了一条circle,一条查询语句,那首先接收到的是谁啊?F1他要接收到它,其次呢,他是不是要先解析一下这个请求啊。对吧,哎之后呢,可能会对应的还有一些事儿,像我们一些查询计划,还有一些调度。对吧,事后呢,他会将请求给谁啊,给f be,那be处理完之后,它的结果是返回给F,那f fe呢,是不是一呃之后再返回查询结果,那用户就可以看得见了,是吧?是这么一个过程。这是F1最大的作用啊,记住啊,原数据。再往下看fe,具体细分呢,又分为三个角色,嗯,第一个是所谓的leader跟follow,或者呢,有些人把它统称为什么follow啊,就叫follow。
04:00
第二种角色呢,是观察者observer。一共就两种角色,那这个leader for是不是很熟啊,这个词对吧。他们主要是用来达到一个原数据的,什么呢?高可用,也就是说我出现单点故障,我某个节点挂了,我能够实时的在线恢复。实现一个高可用的效果,那这个大家可以参考什么呢?主keep版,主keep是不是也一样?是不是也有leader follower?对吧,而且呢,刚好fe它leader跟follow之间也是基于什么pars协议来的实现的啊,所以它这一块跟走keepper这一块底层设计是有点像啊。那么另外一个角色就比较特殊了,这个observer它主要是用来扩展查询的。什么意思呢?他不负责写入,仅仅呢是提供查询的作用,同时也相当于说起到了一个备份的作用。
05:04
这种一般在什么时候用呢?如果你发现集群的压力比较大。特别是一这一块,那这个时候你不一定是说要增加follow啊,你也可以只增加什么呢,Observer。对吧,分担一个查询的压力啊,再强调一遍啊,只负责什么查询的扩展,他不负责写入啊,同时前面leader follower的选举啊,他不会参与。也就是说,那是follow的事儿,跟他没关系。好,那刚才我为什么讲说leader follower这两个角色也可以认为是一个呢?因为呢,呃,你也可以这么认为,不管你是叫leader也好,叫follower也好,我通通认为你叫follow,那leader只不过是在众多follower里面选出来的一个master。啊,你也是follower,只不过你是特殊的,你是老大啊,仅此而已,好,这一块呢,概念也比较简单啊,大家了解一下,其次我们来看一看be是干嘛的,Beon它负责我们物理数据的存储跟计算,对吧?真正的存数据,真正的处理和计算数据是由be来完成的,你看这么看起来是不是就像我们日常发的一些应用系统一样啊,前端负责什么,后端负责什么,对吧?相信呃,这个就特别好理解。另外呢,我们。
06:34
之前我们说有一个作用,是不是生成一些计划,对吧?呃,像它的物理执行计划,那be呢,就根据它收到的这些计划,具体的执行查询也就计算。那我们一般数据的可靠性是由be保证的,为什么呢?因为我们说真正保存数据的是be,你当然要看be了,那be呢,为什么能。
07:02
或者说他怎么提供数据的可靠性呢?它有一个机制叫什么副本机制,那至于是几个副本呢,你可以自己调整对吧。多副本或者三副本都行,看你要设置几个。这就很简单了,很直白了。它整个架构。那这最Doris最核心的模块就是这几个,这两个,那其实大家应该发现这里还有一个什么呢?My circle。是为什么会出现MYSQL一时啊,他只利用到了MYSQL的一个客户端而已。一个客户端来,我们看下面。我们Doris其实它借助的是MYS的协议。那我们使用任意my circle的一个客户端都能够直接访问Doris,它就像是一个入口,一道门一样,啊,这道门你走进来就可以了,可以连接Doris。
08:03
对吧,你大家可以想想我们my circleq也好,Have也好,数据库也好,比如我们举个简单例子my circle吧,我们my circle是不是经常,呃,如果不用工具,用命令行是不是杠U对吧?啊,然后用户名。然后杠P回车,然后输入密码。之后就进入一个交互式的命令行,对吧,这个就是所谓的客户端,在客户端里边我们是不是可以去写一些circleq是吧,那为那MYSQL其实也一样,我们的MYSQL。我们具体应该来这么看,是不是有一个MySQL server是服务端的,那同时我们安装MYSQL1定会安装一个什么客户端,那其实我们这个客户端就是我刚才讲的我们通常输入的那个命令啊,比如说MY。杠U对吧?啊,然后用户名啊杠P啊,那主机名端口当然也可以指定是吧,一回车,那这个命令是谁,功能是谁提供客户端提供。
09:04
那我们通过执行这个命令就能访问或者呃去处理。服务端上面的一些数据对吧,执行circleql,那Doris这边又是怎么一个玩法呢?他用了一个MYSQ的协议,所以我们只需要安装一个MYSQ的客户端,那这边是一个do瑞。那通过我们一个命令。就可以连接到Doris。对吧,那这个病例回头会是什么呢?也是一样的啊,我写在这里,呃,写在这吧,My circle也是杠U叉叉叉杠P,但只不过我们会指定什么,指定它特有的端口是不是杠8P对吧?它一默认9030啊。指定Doris的端口,那这个端口是谁?或者说MYS客户端连接的应该是Doris里面的哪个角色?Fe还是be呢?
10:03
啊对,其实通过我们前面的讲解,谁负责交互,谁负责原数据是不是F1啊,啊,就跟外面打交道的事由谁来管,F一来管。所以我们只需要通过MYSQL客户端执行MYSQL这个命令,就能连接上dori,就能去操作dori。很简单,第四呢,还有一个角色叫broker broker呢它是一个独立的一个模块,它是一个独立的无状态进程,它主要是用来干嘛,同步数据从哪同步呢?远端存储系统,比如说大家非常熟悉的HDFS,还有一些比如说亚马逊的S3啊等等,包ER就是一个你可以理解为导入导出功能的一个模块啊,主要是导入啊。
11:00
这个也是可以选择性的,装或者不装都可以。那febe是必须要的。这就是整体一个架构啊,架构也非常的简洁啊,非常的好理解。对吧。
我来说两句