1.数据库表增加关联冗余字段,避免关联查询,在关联数据更新时更新冗余字段。以此解决分布式数据库的关联查问题。
2.增加日志跟踪系统,可以在日志中查看业务执行轨迹,特别是分布式服务器
3.service分成维护接口和对外接口两种,service层不直接调用其他业务的dao层而是调用对外接口,这么做的好处是便于微服务的代码拆分。另外也便于日志跟踪(使用aop)
4.建立事件中心,比如更新冗余字段,或是计算中间报表,在相应的事件发出后(如用户新增或编辑),在事件中心处理。好处是与主要业务隔离不相互影响,增加响应速度,并且在编程时将事件功能提出来也便于清晰业务的功能和后期的代码修改。现在暂时使用rocketmq消息队列,要注意消息重复消费的问题,保证幂等。
5.统计数据分为两部分,一部分实时计算,在数据到达时叠加,另一部分统计计算,又称为数据校正,根据数据库的数据进行统计计算。前者保证数据实时显示,后者保证数据的准确性。比如每模数据收到时增加一条每模数据,同时在机器生产数量上叠加,然后在一定条件下再根据每模数据统计生产数量。数据校正可以使用定时器定时校正,或者是增加一个字段记录数据处理数,到达一定值后校正。
6.数据统计与拆分,在统计报表时,按天或按时间对数据进行统计。按天统计好理解,按时统计就是设置时间间隔,按照时间间隔对数据统计,优点是将数据的数量固定在一定程度,缺点是查询时有个最短时间间隔的限制。
7.使用缓存时,将对象中经常改变的字段和比较固定的字段分开,这样固定不变的部分缓存就不会受到业务的印象,比如用户的最后操作时间,如果放在用户表里,那么用户缓存变更会十分频繁