1、首先考虑分布式,业务功能服务化
使用阿里的dubbo框架,使用zookeeper作为注册中心;或者spring cloud等;系统灵活部署,在真正消耗资源的服务上,考虑增加实例。
2、打薄网关层
网关层,只做参数校验,和简单逻辑判断。
3、非主业务流程异步化,建议使用mq异步
避免使用进程内异步化,因为虽然减少了单个请求的等待时间,但是异步线程要等待执行完业务,如此,服务本身接受处理请求的可用线程会减少。
进程内异步化方法:
1、手写线程并启动,不推荐,不可控
2、spring @Asyn 配合Future作为返回值
3、google的eventBus基于发布订阅的线程总线
........
4、接口请求频率增加限制
5、梳理业务流程,精简实现流程
实际上,业务逻辑处理,不不涉及大数据计算的情况下,基本上可以忽略耗时,精简实现逻辑,主要目的是增强代码的可读性。
6、数据库索引
即使库表数据量,仅在万级别的,必要的索引还是要加。如果此种情况较多,加之请求量较大,就会把数据库效率拉下一个级别,高频的查询,严重消耗CPU,结果就是系统整体效率下降,CPU也居高不下,CPU报警短信接二连三。
以下两幅图,是在下午3点多,给众多表字段追加必要字段后,数据库CPU已经趋于稳定。
文章先列出大框,后续完善....