在 Doris3 FE(Frontend) 的架构中,Observer 是一个重要的角色,主要用于高可用性(HA)和负载均衡。以下是关于 Observer 的详细介绍:
Observer 的角色与功能
- 非选举节点
- Observer 是 FE(Frontend) 的一种角色,属于 非领导者(Non-Leader)节点,不参与 Leader 的选举(与 Follower 不同)。
- 主要用于扩展读能力,分担元数据读取的压力,但不参与写操作和选举投票。
- 元数据同步
- Observer 会异步地从 Leader FE 同步元数据(metadata),保证数据的最终一致性。
- 由于是异步同步,Observer 上的元数据可能比 Leader 或 Follower 稍有延迟(通常很短)。
- 读请求处理
- 可以处理用户的 只读请求(如查询表的元数据、展示集群状态等),减轻 Leader 和 Follower 的负担。
- 适用于读多写少的场景,提高集群的整体吞吐量。
- 高可用性与扩展性
- 由于 Observer 不参与选举,即使大量 Observer 节点宕机,也不会影响集群的写可用性(只要 Leader 和足够 Follower 存活即可)。
- 可以通过增加 Observer 节点横向扩展读能力,而不会增加选举的复杂性。
Observer vs Follower vs Leader
角色 | 参与选举 | 处理写请求 | 处理读请求 | 数据同步方式 | 数量建议 |
Leader | 是 | 是 | 是 | 同步(强一致性) | 1(唯一活跃 Leader) |
Follower | 是 | 否(可容灾切换) | 是 | 同步(强一致性) | 通常 2~3(保障 HA) |
Observer | 否 | 否 | 是 | 异步(最终一致性) | 可多个(按读需求扩展) |
配置与使用
- 添加 Observer 节点
在 Doris 集群中,可以通过以下步骤添加 Observer:
ALTER SYSTEM ADD OBSERVER "host:port";(需在 Leader FE 上执行)
- 适用场景
- 需要扩展元数据读取能力(如大量并发查询
information_schema)。 - 跨地域部署时,可通过 Observer 提供本地读服务,减少延迟。
- 避免过多 Follower 导致选举性能下降(Observer 不参与选举)。
- 注意事项
- Observer 的元数据可能不是最新的,不适合对一致性要求极高的场景。
- 如果 Leader 宕机,Observer 不会参与故障切换(需依赖 Follower)。
总结
- Observer 是 Doris FE 的“只读副本”,通过异步同步元数据提供读扩展能力。
- 适合横向扩展读性能,同时不增加选举复杂度。
- 在高可用架构中,通常搭配 1 Leader + 2 Follower + N Observer 的部署模式。
如果有更具体的 Doris 版本或使用场景,可以进一步探讨!
















