本文为您介绍EMR Serverless StarRocks的架构。
StarRocks架构的核心为FE(Frontend)和BE(Backend)两类进程,不依赖任何外部组件,方便部署与维护。FE和BE都可以在线水平扩展,元数据和业务数据都有副本机制,确保整个系统无单点。StarRocks提供MySQL协议接口,支持标准的SQL语法,您可以通过MySQL客户端方便地查询和分析StarRocks中的数据。

说明 该图片来源于社区StarRocks的系统架构。
FE
FE是StarRocks的前端节点,负责管理元数据、管理客户端连接、进行查询规划、查询调度等工作。每个FE节点都会在内存保留一份完整的元数据,这样每个FE节点都能够提供无差别的服务。
FE根据配置有Follower和Observer两种角色。Follower会通过类Paxos的Berkeley DB Java Edition(BDBJE)协议选举出一个Leader。三者详细介绍如下:
- Leader
- 提供元数据读写服务。仅Leader节点会对元数据进行写操作,Follower和Observer只有读取权限。Follower和Observer将元数据写入请求路由到Leader节点,Leader更新完数据后,会通过BDB JE同步给Follower和Observer。必须有半数以上的Follower节点同步成功才算元数据写入成功。
- Leader从Follower中选出,进行选主需要实例中有半数以上的Follower节点存活。如果Leader节点失败,则Follower会发起新一轮选举。
- Follower
- 只有元数据读取权限,无写入权限。通过回放Leader的元数据日志来异步同步数据。
- 参与Leader选举,必须有半数以上的Follower节点存活才能进行选主。
- Observer
- 主要用于扩展实例的查询并发能力,可选部署。
- 不参与选主,不会增加实例选主压力。
- 通过回放Leader的元数据日志来异步同步数据。
BE
BE是StarRocks的后端节点,负责数据存储、SQL执行等工作。
- 数据存储方面,StarRocks的BE节点都是完全对等的,FE按照一定策略将数据分配到对应的BE节点。BE负责将导入数据写成对应的格式存储,并生成相关索引。
在进行Stream Load导入数据时,FE会选定一个BE节点作为Coordinator BE,负责将数据分发到其他BE节点,导入的最终结果由Coordinator BE返回。
- 在执行SQL计算时,一条SQL语句首先会按照具体的语义规划成逻辑执行单元,然后再按照数据的分布情况拆分成具体的物理执行单元。物理执行单元会在对应的数据存储节点上执行,实现本地计算,避免数据的传输与拷贝,从而极大的提升了查询性能。