Tencent / phxpaxos

The Paxos library implemented in C++ that has been used in the WeChat production environment.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

跨区机房容灾时不可用!

zhengsunf opened this issue · comments

容灾有个很基本的要求,是副本不能都在一个机房。phxpaxos是严格串行,且不支持pipeline,我们部署三台机器,两台同IDC不同机架,一台不同IDC,只要同IDC的备机挂了,延时飙升,几乎不可用。这有可能进行改进吗?难道微信的备份都是在同一个IDC的??

commented

pipeline和batching都是解决节点之间高延时下的吞吐问题。
这里要看不同IDC之间的延时如何,在同城多IDC下,batching几乎可以达到高吞吐要求。
至于你的情况可能是异地多IDC, 由于phxpaxos不支持pipeline,唯一可以调整的就是batching参数(通过node.h的SetBatchCount和SetBatchDelayTimeMs),通过期望吞吐与节点间延时的关系,来调整。

增加pipeline后代码可理解性,维护成本都会大幅提高,这也算是一个权衡。