Doris3 FE(Frontend) 的架构中,Observer 是一个重要的角色,主要用于高可用性(HA)和负载均衡。以下是关于 Observer 的详细介绍:


Observer 的角色与功能

  1. 非选举节点
  • Observer 是 FE(Frontend) 的一种角色,属于 非领导者(Non-Leader)节点,不参与 Leader 的选举(与 Follower 不同)。
  • 主要用于扩展读能力,分担元数据读取的压力,但不参与写操作和选举投票。
  1. 元数据同步
  • Observer 会异步地从 Leader FE 同步元数据(metadata),保证数据的最终一致性。
  • 由于是异步同步,Observer 上的元数据可能比 Leader 或 Follower 稍有延迟(通常很短)。
  1. 读请求处理
  • 可以处理用户的 只读请求(如查询表的元数据、展示集群状态等),减轻 Leader 和 Follower 的负担。
  • 适用于读多写少的场景,提高集群的整体吞吐量。
  1. 高可用性与扩展性
  • 由于 Observer 不参与选举,即使大量 Observer 节点宕机,也不会影响集群的写可用性(只要 Leader 和足够 Follower 存活即可)。
  • 可以通过增加 Observer 节点横向扩展读能力,而不会增加选举的复杂性。

Observer vs Follower vs Leader

角色

参与选举

处理写请求

处理读请求

数据同步方式

数量建议

Leader




同步(强一致性)

1(唯一活跃 Leader)

Follower


否(可容灾切换)


同步(强一致性)

通常 2~3(保障 HA)

Observer




异步(最终一致性)

可多个(按读需求扩展)


配置与使用

  1. 添加 Observer 节点
    在 Doris 集群中,可以通过以下步骤添加 Observer:
ALTER SYSTEM ADD OBSERVER "host:port";

(需在 Leader FE 上执行)

  1. 适用场景
  • 需要扩展元数据读取能力(如大量并发查询 information_schema)。
  • 跨地域部署时,可通过 Observer 提供本地读服务,减少延迟。
  • 避免过多 Follower 导致选举性能下降(Observer 不参与选举)。
  1. 注意事项
  • Observer 的元数据可能不是最新的,不适合对一致性要求极高的场景。
  • 如果 Leader 宕机,Observer 不会参与故障切换(需依赖 Follower)。

总结

  • Observer 是 Doris FE 的“只读副本”,通过异步同步元数据提供读扩展能力。
  • 适合横向扩展读性能,同时不增加选举复杂度。
  • 在高可用架构中,通常搭配 1 Leader + 2 Follower + N Observer 的部署模式。

如果有更具体的 Doris 版本或使用场景,可以进一步探讨!