据说,OceanBase的CTO杨传辉曾经说过:“构建一个分布式数据库存储系统是比较简单的,上层一套raft一致性协议,下层接一个RocksDB引擎,一周时间就能搞定,难得是如何保证系统在后续的运行中性能稳定且可靠”。且不论一周时间到底够不够,不可否认的是,Raft协议的出现使得构建一个分布式系统简单了许多。
但即使Raft作者把各种工程问题解决之道都写在了他的博士论文里,真正去实现一个高效稳定的Raft库仍然要费很多心思。此外,库的使用者也必然会遇到各种意想不到的问题。
由于工作的关系,笔者深度使用了braft一段时间。总体来说braft是一个完成度很高的工业级实现,省去了团队不少开发及测试的时间。但是当然也遇到了不少坑。因此本文将分享一些笔者在使用/魔改braft的一些小经验,希望能让你少踩点坑。