Pulsar集群中Bookie节点下线如何保证数据不丢失?

Viewed 110

Pulsar中,数据是按照数据段(segment)来存储的, 对应在Bookie节点上为ledger.

假设场景:
Bookie1: ledger1, ledger2
Bookie2: ledger3, ledger4

如果Bookie1节点down掉了, ledger1/ledger2的数据是否就丢失了??

1 Answers

我们先 define 下“down 掉”的定义:机器损坏,无法恢复:

  1. 毋庸置疑,Bookie1 节点本身存储因为损坏且无法恢复,节点自身的数据是丢失了,这将包括 ledger1 和 2。
  2. 那 ledger1 和 2 内部的消息,在集群整体维度会丢失嘛?不会的。因为 Pulsar 本身的副本机制,通过冗余的方式将消息存储在多个 Bookie 中(不同 Bookie 的不同 ledger 中),因此只要该消息的所有副本所在的 Bookie 节点有可访问的,那消息都将存在。
  3. 同时,为了补齐副本数,会有涉及到另一个进程: Autorecovery。恢复程序在检测到副本丢失会,会从已有的 Bookie 节点,获取消息,存储到其他的 BK 节点上。

至此,保证了存储层面的冗余和整体的高可用。

嗯,感谢回复. 之后也在官方文档中找到了关于ledger副本冗余存储的说明.

https://pulsar.apache.org/docs/3.0.x/concepts-architecture-overview/#persistent-storage