我想了解名称空间/主题复制在Apache Pulsar中如何工作,集群大小的变化对现有和新名称空间/主题的复制因子有什么影响。
请考虑以下情形:
我将从具有以下代理配置的单个节点开始:
# Number of bookies to use when creating a ledger
managedLedgerDefaultEnsembleSize=1
# Number of copies to store for each message
managedLedgerDefaultWriteQuorum=1
# Number of guaranteed copies (acks to wait before write is complete)
managedLedgerDefaultAckQuorum=1
几个月后,我决定使用新代理的以下配置将集群大小增加到两个:
# Number of bookies to use when creating a ledger
managedLedgerDefaultEnsembleSize=2
# Number of copies to store for each message
managedLedgerDefaultWriteQuorum=2
# Number of guaranteed copies (acks to wait before write is complete)
managedLedgerDefaultAckQuorum=2
在上述情况下,群集的行为是什么:
请注意,这两个代理节点此时具有不同的配置。
TIA
您要更改的是默认复制设置(集成,写入,确认)。您不应该在不同的代理上使用不同的默认值,因为这将导致不一致的行为,具体取决于客户端连接到哪个代理。
复制设置在名称空间级别进行控制。如果未显式设置它们,则将获得默认设置。但是,您可以使用CLI或REST接口更改各个名称空间上的设置。如果从命名空间上的设置(1个合奏,1个写入,1个确认)开始,然后更改为(2个合奏,2个写入,2个确认),则会发生以下情况:
要注意的重要一点是,代理的数量不会影响消息复制。在Pulsar中,代理程序只处理消息的提供(生成/使用)。经纪人是无国籍的,可以水平扩展。消息存储在Bookkeeper节点(bookies)上。复制设置(集成,写,确认)是指Bookkeeper节点,而不是代理。这是来自Pulsar网站的图表,说明了这一点:
因此,要从(1个合奏,1个写入,1个确认)设置更改为(2个合奏,2个写入,2个确认)设置,您需要向群集中添加一个Bookkeeper节点(假设您仅以1开始) ,而不是其他经纪人。