1.分库分表产生背景
让我们先来回顾一下一般系统架构的发展
往往我们刚上线的系统都采用了单数据库实例的分布式服务架构(如下图所示),上线初期,随着业务量的快速发展,系统的瓶颈主要在于上层应用的计算能力不足,我们可以简单的通过水平扩展来解决这个问题。
在上层应用的不断水平扩展的同时,系统的压力开始逐渐下移,单机DB的压力越来越大,这个矛盾逐渐转变为主要矛盾,因此我们采用了读写分离的主从DB分布式服务架构(如下图所示)。让非重要的读操作直接访问从库,从而减轻主库的压力。
但由于主从延迟的存在,能够直接访问从库读操作并不多,并且写操作还是全量作用于主库。当业务量量级再次增高时,写已经变成刻不容缓的待处理瓶颈。这时候,分库分表(本文中的分库分表特指水平分库分表)方案出现了,即分库分表的分布式服务架构(如下图所示):