我正在开发一个分布式数据库系统,假设每个表在不同的机器上有3个副本,如果有写入请求,复制层的工作就是将该写入数据复制到其他节点。问题是如何在吞吐量方面提高复制效率?网络带宽为10Gbps。
示例:
cmd1: write on table 1
-> send to node A and node B
cmd2: write on table 2
-> send to node B and node C
cmd3: write on table 1
-> send to node A and node B
cmd4: write on table 3
-> send to node B and node D
cmd5: write on table 2
-> send to node B and node C
上面的示例显示了复制命令队列。要实现高性能,那么使用多线程网络复制呢?但是如果有两个写入同一个节点,最好将两者结合起来并完全发送?
并且假设这些写入最终将存储在磁盘上(考虑旋转磁盘),因此为了加快存储过程,在进行复制时是否可以做任何事情? (如果每个表都已映射到存储在节点上的特定磁盘上,则写入仅附加)。