Aurora要解决的是什么问题? 实际上它认为网络是瓶颈 ( Paper里的原话我附在最后边),该文就是要解决这个瓶颈。 为什么网络是瓶颈?
在Aurora的模型中,只有一个写者(Primary Instance),这个也很重要。
假设用户随机插入一条1KB的记录(与近期写的其他记录不在一个page),我们分析下它引起的网络写的数据量:
1) 6副本,即6倍写数据传输;
2) 即使忽略binlog和double write,只考虑写redo log和一个16 KB的page。 至少17KB (17倍)网络传输量。
注意,二者是乘法关系,即17 * 6 = 102倍。如果用户写的记录更小,那么倍数更高。
考虑25Gbit/s 的以太网,实际的用户数据传输能力不会超过 3GByte/s。
那么: 3GB/s 除以 102 <= 30 MB/s。
按照这个模式,假设写者有一个25GbE的网口,用户数据写性能不会超过30MB/s。
如果在考虑跨AZ,AZ间带宽更是个问题(AZ间带宽不是Aurora独占的)。
当然实际情况可能没那么遭,不会都是随机插入。但是当数据库规模巨大时,应该不会有太好的局部性。另外,用户写的记录也可能远小于1KB。
如果不复制page,只复制redo log,让存储节点自己apply redo log产生page data,大家可以算下倍数。
至于Aurora为什么觉得后端存储不是瓶颈,那是因为它认为存储节点可以大量扩展,每个节点承载的负载并不高。而写者就一个哦。