zookeeper中,任何节点的写都会影响到整体的读。
这个怎么理解呢,任何一个节点的更改,都会block各个follow的queue,只有此次两阶级提交完成之后,follow收到leader的commit后,这台机器上的后继的操作才能进行。
情景假设
leader:A
follow: B,C
client向及提交一个更改请求,后面两阶段提交(leader发propose, 等待follow ack,leader收到ACK后,向所有follow发送commit),
在两阶段提交中,C接到A的propose,然后放入队列后,这时假设client向C发出读请求,这时C会将读请求放入队列,要等到前面的propose收到A的commit才会执行,所以任何节点的写都会影响到整体的读。
所以zookeeper只适合写少读相对多的应用场景。
这个怎么理解呢,任何一个节点的更改,都会block各个follow的queue,只有此次两阶级提交完成之后,follow收到leader的commit后,这台机器上的后继的操作才能进行。
情景假设
leader:A
follow: B,C
client向及提交一个更改请求,后面两阶段提交(leader发propose, 等待follow ack,leader收到ACK后,向所有follow发送commit),
在两阶段提交中,C接到A的propose,然后放入队列后,这时假设client向C发出读请求,这时C会将读请求放入队列,要等到前面的propose收到A的commit才会执行,所以任何节点的写都会影响到整体的读。
所以zookeeper只适合写少读相对多的应用场景。