Java项目中高并发问题的解决方案
这道题是比较典型的题吧,也是我第一个公司入职的时候,面试官问我的,当时我回答只能说是星星之火,还不能燎原那种,差点被面试官给浇灭。
1、采用缓存技术
这是最简单的一个回答,用户缓存、页面缓存等一切缓存。使用特定的机制来进行刷新,利用消耗内存空间来换取用户的效率,同时减少数据库的访问次数。
2、优化SQL语句
把数据库的查询语句进行优化,一般复杂的sql语句就不要用ORM框架自带的做法来写,采用自己来写sql,hibernate中的hsl语句就会很耗时。
3、优化数据库的表给构
在关键字、主键、访问率校高的字段中加入索引,但尽量只是在数字类型上面加,因为使用字段 is null 的时候,索到的效果就会失效。
4、使用定时任务
报表统计的模块,尽量使用定时任务执行, 如果非要实时进行刷新,那么就以采用缓存来做数据。
5、增加指定业务服务器
可以使用静态页面的地方就使用静态页面,这样可以减少页面解析时间,同时页面中的图片过多时可以考虑把图片单独做成一个服务器,这样就可以减少业务服务器的压力。
6、采用服务器集群
采用集群的式来解决单务器的性能问题。
7、采用微服务与分布式
把项目标按照业务分成多个,再用小型服务器的形式来进行部署。采
用数据同步机制(可以使用数据库同步形式来做),达到数据一致性。
8、使用负载均衡
使用负载均衡模式来让每一个服务器资源进行合理的利用。
9、使用Redis
可以使用Redis来做内存数据库缓存,也可以使用镜像分担,这样可以让两台服务器进行访问。