1.每次接收到用户请求,在处理完业务逻辑后,将用户业务量记录数据库
问题:
- 每次请求过来都会操作一次数据库,频繁操作数据库,造成数据库压力过大;
- 每次请求过来都会操作一次数据库,会影响业务逻辑接口的性能,造成响应时间过长;
- 业务逻辑程序和业务量统计程序不解耦。
2.每次接收到用户请求,在处理完业务逻辑后,将用户业务量记录redis
问题:
- 每次请求过来都会操作redis,频繁操作redis,会造成redis压力过大;
- 每次请求过来都会操作一次redis,会影响业务逻辑接口的性能,造成响应时间过长;
- 业务逻辑程序和业务量程序不解耦。
3.每次接收到用户请求,在处理完业务后,将用户业务量记录本地一个变量中,定时将变量中的数据同步到redis中
问题:
- 每次请求过来都需要将业务量记录本地变量,也会影响业务接口性能;
- 业务逻辑程序和业务量统计程序不解耦。
4.使能 Tomcat Accesslog ,将需要统计的信息添加到 Tomcat Accesslog,通过独立的程序定时统计Tomcat Accesslog中业务量信息,并存入redis
优点:
- 业务逻辑程序和业务量统计程序解耦;
- 异步处理业务逻辑和业务量统计逻辑,不会影响业务接口性能。