Doris是一款基于MPP技术的SQL分析型数据库系统,能够在海量数据的OLAP场景下提供毫秒级的查询响应性能。Doris的实现架构脱胎自Apache Impala和Google Mesa系统,并进行了大量的改造和优化,最终形成了今天大家看到的这款架构优雅、性能卓越、功能丰富、简单易用的OLAP数据库系统。
01
极简架构
Doris从设计上来说,融合了Google Mesa的数据存储模型、Apache的ORCFile存储格式、Apache Impala查询引擎和MySQL交互协议,是一个拥有先进技术和先进架构的领先设计产品,如图1所示。
图片
▲图1 Doris技术分解图
在架构方面,Doris只有两类进程:一类是FE,可以理解为Doris的管理节点,主要负责用户请求的接入、查询计划的解析、元数据的存储和集群管理相关工作;另一类是BE,主要负责数据存储、查询计划的执行。这两类进程都是可以横向扩展的。除此之外,Doris不依赖任何第三方系统(如HDFS、Zookeeper等)。这种高度集成的架构设计极大地降低了运维成本。
FE节点包含Leader、Follower和Observer三种角色。默认一个集群只能有一个Leader,可以有多个Follower和Observer。其中,Leader和Follower组成一个Paxos选择组,如果Leader宕机,剩下的Follower会自动选出新的Leader,保证写入高可用。Observer同步Leader的数据,但是不参加选举。如果只部署一个FE,则FE默认就是Leader。
FE节点主要包括存储管理(Store Manager)模块、状态管理(State Store)模块、协调(Coordinator)模块