随着云计算时代的到来,更多的出于成本控制的考虑(并不是唯一考虑因素), 很多的存储系统都采用存储计算分离架构,这种架构的好处是显而易见的.
解耦计算和存储负载,系统负载均衡调度更加灵活.在存储和计算耦合的架构中,我们很难在存储负载和计算负载之间达成比较好的平衡,原因在于这两种负载对计算机资源的诉求不同. 系统更加的健壮,计算可以认为是无状态的,同时计算本身是比较复杂的,这也意味着存在bug的概率比较高,一般而言,存储的逻辑比较简单,因此出现问题的概率也比较小,因此这种架构下,如果计算层出现问题,可以很方面的进行故障恢复,另外就是系统的弹性比较好,尤其是计算层. 系统的资源利用率提高了,节约成本.
存储计算分离是一把双刃剑,它的好处如上所述,它的缺点也很明显
计算层远离了存储层,存在大量的网络IO.我们知道在计算机世界里,计算里存储越近,性能越好,计算机系统无处不在的cache就是很好的证明. 网络具有不确定,增加了计算层的复杂度,因为需要考虑网络的不确定性,在一些并行计算逻辑中,如果某一条线路上的网络存在波动,那么将会影响整个计算的延迟.另外就是这种网络的不确定性在网络分区的情况下变得更加复杂,需要专门的协议和机制来保证数据的一致性