Akasaka 发表于 2016-1-8 10:49
没想到把眼镜豪给炸出来了。。。
我记得如果单是数据库的优化的话- -之前读过运维方面的一本书 ...
数据库再怎么改造也解决不了这个问题,只能说想办法减轻数据库的负担。
加一个队列(选课的时候把选课的选择项丢队列里面,然后有一套逻辑不停读队列然后依次处理并且异步返回结果,而不是现在传统开发中的一窝蜂处理[一窝蜂就真堵住了])然后再在选课这边加一个异步结果返回,视情况 Web Server 再加高频率请求自动短时间屏蔽访客(防过度 F5)。
除了队列可以考虑用 Redis 之类的 NoSQL 把课程和余量信息预存下来,这样在队列处理的时候,选课界面也不会因为查询堵塞而无法打开。(由于已经改造成队列了,所以不用担心会爆出余量,只是可能Redis里面的余量可能和实际数据库中的情况有出入,不过这个都不重要,至少用户体验问题已经解决了。)
如果不能拿到正方等系统的源码,也可以自己另外写一套挂接上去,然后在选课的时候把正方停了切到这一套上来,不过前提是,能够拿到数据库的数据字典,并且知道他的验证信息(比如密码)的加密方式。