浅谈高并发编程

1、首先考虑分布式,业务功能服务化

        使用阿里的dubbo框架,使用zookeeper作为注册中心;或者spring cloud等;系统灵活部署,在真正消耗资源的服务上,考虑增加实例。

2、打薄网关层

        网关层,只做参数校验,和简单逻辑判断。

3、非主业务流程异步化,建议使用mq异步

        避免使用进程内异步化,因为虽然减少了单个请求的等待时间,但是异步线程要等待执行完业务,如此,服务本身接受处理请求的可用线程会减少。

       进程内异步化方法:

       1、手写线程并启动,不推荐,不可控

       2、spring @Asyn 配合Future作为返回值

       3、google的eventBus基于发布订阅的线程总线

       ........

4、接口请求频率增加限制

5、梳理业务流程,精简实现流程

        实际上,业务逻辑处理,不不涉及大数据计算的情况下,基本上可以忽略耗时,精简实现逻辑,主要目的是增强代码的可读性。

6、数据库索引

        即使库表数据量,仅在万级别的,必要的索引还是要加。如果此种情况较多,加之请求量较大,就会把数据库效率拉下一个级别,高频的查询,严重消耗CPU,结果就是系统整体效率下降,CPU也居高不下,CPU报警短信接二连三。

        以下两幅图,是在下午3点多,给众多表字段追加必要字段后,数据库CPU已经趋于稳定。

文章先列出大框,后续完善....

 

猜你喜欢

转载自blog.csdn.net/jiahao1186/article/details/83795872