数据存储服务器集群的伸缩性设计
和缓存服务器集群的伸缩性设计不同,数据存储服务器集群的伸缩性对数据的持久性和可用性提出了更高的要求。
缓存的目的是加速数据读取的速度并减轻数据存储服务器的负载压力,因此部分缓存数据的丢失不影响业务的正常处理,因为数据还可以从数据库等存储服务器上获取。
而数据存储服务器必须保证数据的可靠存储,任何情况下都必须保证数据的可用性和正确性。
因此缓存服务器集群的伸缩性架构方案不能直接适用于数据库等存储服务器。存储服务器集群的伸缩性设计相对更复杂一些,具体说来,又可分为关系数据库集群的伸缩性设计和NoSQL数据库的伸缩性设计。
关系数据库集群的伸缩性设计
市场上主要的关系数据都支持数据复制功能,使用这个功能可以对数据库进行简单伸缩。
除了数据库主从读写分离,前面提到的业务分割模式也可以用在数据库,不同业务数据表部署在不同的数据库集群上,即俗称的数据分库。这种方式的制约条件是跨库的表不能进行Join操作。
在大型网站的实际应用中,即使进行了分库和主从复制,对一些单表数据仍然很大的表还需要进行分片,将一张表拆开分别存储在多个数据库中。
NoSQL数据库的伸缩性设计
比较典型的便是HBase。