Doris--基础--1.3--理论--架构

Doris–基础–1.3–理论–架构


1、名词

1.1、FE(Frontend)

  1. Doris 的前端节点。
  2. 开发语言:以 Java 为主
  3. 功能
    1. 接收和返回 客户端请求
    2. 元数据 管理
    3. 集群 管理
    4. 生成 查询计划

1.2、BE(Backend)

  1. Doris 的后端节点。
  2. 开发语言:以 C++ 为主
  3. 功能:
    1. 负责 数据存储
    2. 负责 数据管理
    3. 执行 查询计划

1.3、Tablet

  1. 是一张表,是实际的物理存储单元
    1. 一张表按照分区和分桶后在BE构成分布式存储层中以Tablet为单位进行存储
  2. 每个Tablet包括元信息及若干个连续的RowSet

1.4、Rowset

  1. 是Tablet中一次数据变更的数据集合
    2. 数据变更包括以下
    1. 数据导入
    2. 数据删除
    3. 数据更新
  2. Rowset按版本信息进行记录。每次变更会生成一个版本

1.5、Version

  1. 由Start、End两个属性构成,维护数据变更的记录信息。
  2. 通常用来表示Rowset的版本范围,在一次新导入后生成一个Start,End相等的Rowset,在Compaction后生成一个带范围的Rowset版本

1.6、Segment

  1. 表示Rowset中的数据分段。
  2. 多个Segment构成一个Rowset

1.7、Compaction

连续版本的Rowset合并的过程成称为Compaction,合并过程中会对数据进行压缩操作

2、整体架构–主要技术

2.1、主要技术

在这里插入图片描述

Doris主要整合了以下技术

  1. Google Mesa(数据模型)
  2. Apache Impala(MPP Query Engine)
  3. Apache ORCFile(存储格式,编码和压缩)

2.2、为什么要将这三种技术整合?

  1. Google Mesa:可以满足我们许多存储需求的需求,但是Google Mesa本身不提供SQL查询引擎。
  2. Apache Impala:是一个非常好的MPP SQL查询引擎,但是缺少完美的分布式存储引擎。
  3. Apache ORCFile:
    1. 存储层对存储数据的管理通过storage_root_path路径进行配置,路径可以是多个。
    2. 存储目录下一层按照分桶进行组织,分桶目录下存放具体的tablet,按照tablet_id命名子目录。

因此选择了这三种技术的组合。

3、整体架构–极简架构

在这里插入图片描述

  1. Doris的架构很简洁,使用MySQL协议,用户可以使用任何MySQL ODBC/JDBC和MySQL客户端直接访问Doris,只设FE(Frontend)、BE(Backend)两种角色、两个进程,不依赖于外部组件,方便部署和运维。
  2. FE(Frontend),即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作
  3. BE(Backend),即 Doris 的后端节点。主要负责数据存储与管理、查询计划执行等工作。
  4. FE,BE都可线性扩展
  5. FE主要有两个角色
    1. 一个是follower,另一个是observer。
    2. 多个follower组成选举组,会选出一个master,master是follower的一个特例,Master跟follower,主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。
  6. bserver节点仅从 leader 节点进行元数据同步,不参与选举。可以横向扩展以提供元数据的读服务的扩展性。
  7. 数据的可靠性由BE保证,BE会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整。

4、整体架构–MPP架构

4.1、各个数仓架构对比

在这里插入图片描述

4.2、MPP架构

假设我们有个如下的SQL语句

SELECT k1,SUM(v1) FROM A,B WHERE A.k2=B.k2 GROUP BY k1 ORDER BY SUM(v1)


该语句包含了合并、聚合计算、排序等多种操作;
在执行计划的时候,MPP 将其拆分成多份,分布到每台机器执行,最后再将结果汇总。
假如有10台机器,在大数据量下,这种查询执行方式可以使得查询性能达到10倍的提升。

在这里插入图片描述

4、整体架构–数据分布

在这里插入图片描述

  1. 从表的角度来看数据结构,用户的一张 Table 会拆成多个 Tablet,Tablet 会存成多副本,存储在不同的 BE 中,从而保证数据的高可用和高可靠。
  2. 数据主要都是存储在BE里面,BE节点上 物理数据 的 可靠性 通过多副本来实现
    1. 默认是3副本
    2. 副本数可配置且可随时动态调整,满足不同可用性级别的业务需求。
    3. 如果说用户对可用性要求不高,而对资源的消耗比较敏感的话,我们可以在建表的时候选择建两副本或者一副本。

5、整体架构–数据可靠性

在这里插入图片描述

  1. Doris采用 Paxos协议以及Memory+ Checkpoint + Journal的机制 来确保元数据的高性能及高可靠。元数据的每次更新,都会遵照以下几步:
    1. 首先写入到磁盘的日志文件中
    2. 然后再写到内存中
    3. 最后定期checkpoint到本地磁盘上
  2. Doris 内部自行管理数据的多副本和自动修复。保证数据的高可用、高可靠。在服务器宕机的情况下,服务依然可用,数据也不会丢失。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值