数据库QPS

单机数据库QPS有限,通常使用主从读写分离解决读取压力。

查询压力

单机数据库QPS有限,通常使用主从读写分离解决读取压力。

主从延迟解决,一般从加大数据缓存和解决I/O利用率入手,如:调整innodb_buffer_pool_size,使用SSD、磁盘阵列、物理主机等等。

写入压力

数据库垂直拆分在分布式系统中较为常见,能分摊数据库写入压力。

单表写入压力成为痛点,引入水平分库,水平分库通常按业务数据拆分,如,按地区、主键拆分,前者数据具有强聚合能力,后者数据分布比较均匀。

根据主键做水平拆分首先解决ID生成问题,可借鉴Instagram ID生成算法:前36位使用时间戳,保证ID是升序递增,中间13位是分库标识,后15位是自增序列(由各个库自行维护的自增序列,避免并发问题)。

为方便数据扩容,路由策略通常使用一致性hash算法。