数据库读写分离化
但随着访问量的继续提高,数据库成为了性能瓶颈,这时我们可以优先考虑使用读写分离和主从复制的方式。读写分离后的系统结构如下:
此时也会带来两个问题
1、主从数据库之间数据同步问题。
2、应用对于数据源的选择问题。
解决方法如下:
SqlServer 自带读写分离,主从复制功能,还可以选择其他三方数据库中间件。
用搜索引擎缓解读库的压力
数据库常常对模糊查找力不从心,即使做了读写分离,这个问题还是无法解决。此时我们可以使用搜索引擎来完成。搜索引擎能够大大提高查询速度和搜索准确性。但是引入搜索引擎会带来大量的维护工作,我们需要自己实现索引的构建过程,同时需要维护搜索引擎集群。搜索引擎并不能替代数据库,它解决了某些场景下的精准、快速、高效的“读”操作,是否引入搜索引擎,需要综合考虑整个系统的需求。此时系统结构如下:
用缓存缓解读库的压力
对于一些比较热门的内容,没必要每次都从数据库读取。我们可以使用缓存技术,缓存能够减轻数据库的压力,大幅度提高访问速度,缺点是需要维护缓存服务器,提高了编码的复杂性。加入缓存后的系统结构如下:
常用的缓存机制包括页面级缓存、应用数据缓存和数据库缓存。
值得一提的是:缓存集群的调度算法不同与上面提到的应用服务器和数据库。最好采用一致性哈希算,这样才能提高命中率。