JAVA高性能高并发解决思路

1、代码质量,不要性能低下的sql和代码。有的一条sql搞定的事,有人用了多个循环才能搞定。取决于程序员的经验!
2、项目前期的规划,由于java历史多用于企业开发,导致好多团队至今依然思想僵化。其实并发最高的是互联网,他们有很多非常好的实践经验和架构是可以直接照搬过来用的。tomcat的并发取决于每个请求执行的占用时常,如果一个请求耗时1秒,那按tomcat开启的线程数默认就几十个。江湖谣传tomcat并发400/秒左右,但是我又看到有的人说单机过万/秒,其实就是测试场景中请求执行时间不同,结果不同。

那么重点来了,项目前期的规划很重要。我们可以预测下将来的场景,目的不是为了现在实现。而是为了将来留有余地,太早实现会增加项目的复杂度和实现难度,前期出结果很重要。当然如果公司能忍受慢工出细活也行!

web高并发的核心肯定是集群,前面有人回答了。这个不用怀疑!所有公司都是这么实现的。
那么,为了现在活着将来的集群,我们要做什么准备?大概说一些会用到,希望对你有所帮助。
1、动静分离,静态资源请求与动态请求分离,项目中需要访问的图片、声音、js/css等静态资源需要有独立的存放位置,便于将来实现静态请求分离时直接剥离出来,比如nginx可以直接配置图片文件直接访问目录,而不需要经过tomcat。这样tomcat就可以专注处理动态请求,操作数据库数据处理之类的。静态请求代理服务器性能比tomcat高很多。
2、引入缓存,数据库缓存、页面缓存,这东西好用不复杂,搞明白什么地方适用最重要。简单的例子是频繁读取,不修改的地方最适用。也是后续集群做数据共享的一个方式之一,集群环境下,经常会碰到数据共享问题。
3、如果将来数据量大,单一数据库成为瓶颈时,数据库的读写分离来了。数据库集群,读写分离,分表分区。mysql对读写分离这些还是有点支持的,没仔细用过。
4、如果项目发展壮大了,已经过亿用户了,ok系统拆分来了。用户管理系统、订单系统,或者体育新闻系统、娱乐新闻系统等。保证一个系统当掉时不影响另一个,同时分担单系统压力。每个系统之下是前面3条!!
如果这一切都还搞不定,那你公司一定比谷歌还牛B了,哈哈……可喜可贺!

前期做下1和2就可以了,集群不一定要增加服务器,一台服务器如果配置好,多开几个tomcat就可以了。1个400,10个tomcat就是4000呢!其实这些,看阿里巴巴的云服务就知道,他们就是这么用的,有谁比它对高并发更有发言权!以上不是广告……
什么cdn、lds之类的都是为了高并发,更快处理用户请求而生!

文章引用:https://www.cnblogs.com/kisswind/p/6476021.html

猜你喜欢

转载自blog.csdn.net/qq_37557563/article/details/89675298