在最近做的项目中为了提高系统的性能,提高并发和负载能力,减少数据库压力.我们对项目进行了读写分离!
在我们这个项目中,读写分离具体应用为:
1.使用切面类根据service的方法名,来区分使用哪个数据库
2.方法名需要遵循一点的规范
3.统一查询使用一个库,对数据库进行操作使用另一个库
@Aspect
@Component
public class DataSourceAspectUtil {
@Before("execution(* xxx.xxx.service.*.*(..))")
public void setDataSourceKey(JoinPoint point){
String methodName=point.getSignature().getName();
if (StringUtils.isNotBlank(methodName)&&(methodName.contains("get")||methodName.contains("select")||methodName.contains("query"))) {
DatabaseContextHolder.setDatabaseType(DatabaseType.db1);
}else {
DatabaseContextHolder.setDatabaseType(DatabaseType.db2);
}
}
}