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

关于kv数据库使用多group的问题

Tachone opened this issue · comments

phxpaxos给出的性能测试数据:
在数据大小>100KB 单个Group下的qps在280左右。

在大规模写请求的情况下, 这个写的效率还是低了一些, 官方推荐可以使用多个group来提高写的性能, 但是我理解需要上层应用做业务的拆分来适配多个group的应用。

于是有一个问题一直困扰我, 如果我是一个kv数据库(类似etcd), 根据业务的需求抽象出不同的表, 表之间有关联。如果我根据表拆分成不同的group的话, 很难解决表之间数据一致性的问题, 某个group数据落后有可能导致业务逻辑混乱。又由于是kv数据库, 所以不能靠事务解决这个问题。

那么我该如何正确拆分,以使用多个paxos group来提高写请求的qps?请问有好的想法或者通用的解决方案么?

以phxsql的实践为例,目前phxsql内部是使用单个paxos group的。如果使用多paxos group,需要额外的二阶段提交机制处理分布式事务,不仅实现复杂,吞吐瓶颈还可能转移至分布式事务层。

建议用pipeline提高单paxos group的性能。

@unixliang 官方目前有计划支持pipeline么

参考tidb, 这种场景需要引入分布式事务