发表于: 2018-03-05 23:20:48
1 562
今天做的事情:
看了好多资料文档,感觉收获不大,记住的不多。随便说几点吧。
1 关于秒杀系统
一个Web系统大规模开发--电商秒杀与抢购。高并发的问题,面试一直有问,还有session共享的问题。
一般静态页面都是HTML内容,是通过CDN部署的,压力不大,核心瓶颈在与后台接口请求上,尽可能需要快,接口的后端存储使用内存级别的操作会更好一点,仍然直接面向mysql不合适,使用NoSql比较好。
海量的流量涌来,许多请求到达接口,这时候需要逻辑去判断下,因为用户都喜欢点很多下。。解决方法:同一账号,一次性发出很多请求的时候,只接受一条,其他的请求过滤掉。方案:通过redis这种内存缓存服务,写入一个标签位,只允许一个请求写成功。或者自己实现一个服务,将同一个账号请求放入一个队列,处理完一个再处理下一个。
还有就是可以通过指定机器ip请求,如果发现某个ip请求频率很高,可以弹出一个验证码让他回答,避免恶意脚本一直请求。
2 JVM调优。
Jvm调优的重点就是垃圾回收和内存管理,垃圾回收的时候会导致整个虚拟机暂停服务,因此尽可能地缩短垃圾回收的处理时间。在JVM启动参数中,可以设置跟内存,垃圾回收相关的一些参数设置,让jvm获得最佳性能。
1开启-server模式,虽然启动慢,但是运行效率很高。
2针对jvm堆的设置一般,可以通过-Xms -Xmx限定其最小,最大值。为了防止垃圾收集器在最小,最大之间收缩堆而产生额外的时间,通常将最大值最小值设置为相同的值。
3. 高并发下的Redis和Mongodb。理解的就是个map,以键值对方式存储数据,然后加入消息队列。
消息队列链接:http://blog.csdn.net/seven__________7/article/details/70225830
收获:
如上所述。
评论