减少不必要的请求,避免同级别同业务的数据多次请求后端。(控制相对原子,避免接口高度耦合,返回不必要的数据)
接口设计要控制业务原子性,避免单接口返回过大的数据结构,减小数据传输量。(例如大批量数据不分页返回)
非必要强一致或者复杂业务逻辑,可考虑异步处理。
前端资源或者静态资源需要做好CDN加速(就近访问)。
对于需要经过网络传输的静态资源尽可能做压缩处理,非必要,尽可能控制本地访问,规避网络传输资源。
避免过度设计。(简单业务搞复杂架构,导致成本上升,维保困难)
工具类控制继承,工具类当中的方法要根据类名做好归类,防止不同实体的工具方法出现在同一工具类。
涉及到数据处理的复杂逻辑,优先考虑是否可以使用算法降低复杂度。
数据库写动作合理使用batch能力。
数据库表字段索引。(group by、order by、where 后的字段需要加索引)
内存合理分配:合理分配数据库内存,如PGA与SGA设置;不对大数据提供orderby操作,避免PGA被占满。
大任务处理,可以合理考虑多线程处理,线程池处理。
如用MQ(消息中间件)来解耦系统之间的依赖关系,减少阻塞(削峰填谷同样适用)。
jvm配置优化,内存、GC。
连接池选型、参数调优。
线程池使用,参数调优。
缓存机制:通过数据的缓存来减少磁盘读写的压力,缩小存储与CPU的效率差(减小数据库压力)。
数据库连接池优化,当前主要是Druid和hikariCP。
慢查询优化。
tomcat线程池参数优化。
ES参数调优。
分库分表。
服务调用链路优化。
合理使用缓存,实现削峰泄洪。