数据库读写分离
在大型电子商务系统中,大都采用读写分离技术,一个master数据库,多个slave数据库。master数据库负责数据更新和实时数据查询。slave数据库负责非实时数据查询。
在实际应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),读取数据通常耗时较长,占用CPU较多。
把查询从主库中抽取出来,采用多个从库,使用负载均衡,减轻master数据库压力。
有两种方式可以实现读写分离:
第一种是我们常用的方式,定义2个数据库连接,一个是masterDataSource,另一个是SlaveDataSource。更新数据的时候我们读取masterDataSource,查询数据时我们读取SlaveDataSource。
第二种方式:动态数据源切换,在程序运行时,把数据源动态织入程序中,选择读取主库还是丛库。使用的技术有:annotation,Spring AOP,反射。