快捷搜索:  汽车  科技

北师怎么选课?揭露北师珠选课系统

北师怎么选课?揭露北师珠选课系统另外,网络的一种最普遍的黑客攻击手段叫ddos攻击,这种攻击甚至可以让一个大型网站系统瘫痪,原理是黑客控制了成千上万的僵尸傀儡电脑,让它们同时访问目标网站,导致服务器过度负荷而瘫痪,那想想其实选课的时候就相当于我们几千个学生在同时攻击选课服务器,而学校的服务器和选课系统并没有做高并发的处理。所以出现各种问题是很正常的。提交选课数据,要很久才能成功,或要重新提交,是因为,选课信息的数据包大概有1m左右,然而宿舍的网络上传速度只有几十kb而已,当你点击提交按钮,数据正常上传也需要十几秒的时间,更何况,在选课的时候服务器因为访问量过大,经常会抽风,所以很有可能上传到一半就被中断了,又要重新上传数据。需要排队,是因为选课系统并不是搭载在专业的网络服务器上的,只是一台放在学校机房的普通主机而已,不像大型的网站系统是搭载在成千上万的服务器集群上的,我们的选课系统服务器因为配置有限,不能同时给全校的学生

北师珠最大的学生发声平台

北师怎么选课?揭露北师珠选课系统(1)

通过今天上午的奋战,预先想选的课程选上了几个?网站崩溃了多少次?感觉不会再爱了有没有?心里感觉有一万只草泥马穿过有没有?

北师怎么选课?揭露北师珠选课系统(2)

哈哈,师兄师姐没有夸张吧。大家都是这么过来的,吐槽之余,跟大家来普及下为什么会出现这种情况:

选课系统工作原理

需要排队,是因为选课系统并不是搭载在专业的网络服务器上的,只是一台放在学校机房的普通主机而已,不像大型的网站系统是搭载在成千上万的服务器集群上的,我们的选课系统服务器因为配置有限,不能同时给全校的学生同时提供服务,这时候就需要排队了。

登陆缓慢,一台路由器,一个人上网的时候可能会很顺畅很快,但是如果十个人同时在用的话,肯定会出现缓慢的情况,那选课系统的服务器就像这个路由器,全校几千人同时在往里挤,那它自然就忙不过来了。

网页出错,用户去访问服务器上的网站时会与服务器建立连接,服务器在后台生成你需要的页面然后再展现出来到浏览器,但是服务器的配置有限,它可能已经在给另外的几千人查找数据生存页面了,可能到某一个用户这里因为过长时间没有成功生成正确的页面,也就是未响应状态,所以就只好抱歉的返回一系列的错误状态码,例如500,404之类的,告诉用户,对不起,我现在可能有点忙不过来了。

提交选课数据,要很久才能成功,或要重新提交,是因为,选课信息的数据包大概有1m左右,然而宿舍的网络上传速度只有几十kb而已,当你点击提交按钮,数据正常上传也需要十几秒的时间,更何况,在选课的时候服务器因为访问量过大,经常会抽风,所以很有可能上传到一半就被中断了,又要重新上传数据。

另外,网络的一种最普遍的黑客攻击手段叫ddos攻击,这种攻击甚至可以让一个大型网站系统瘫痪,原理是黑客控制了成千上万的僵尸傀儡电脑,让它们同时访问目标网站,导致服务器过度负荷而瘫痪,那想想其实选课的时候就相当于我们几千个学生在同时攻击选课服务器,而学校的服务器和选课系统并没有做高并发的处理。所以出现各种问题是很正常的。

关于淘宝上的一些代抢课服务和软件,也是这个原理。

说明一下,学校当前的服务器配置是完全可以满足日常的需求的,咱们学校的正方系统是运行在一个服务器组里的,大家能访问到es.bnuz.edu.cn,是由一个内网ip地址为172.16.5.138的服务器上部署的Nginx提供的网页,Nginx是一个负载均衡的服务器软件,在世界上都是排名领先的可以负载几十万的并发,然而毕竟它只是一个代理转发和负载均衡软件,对于系统整体的加速并没有什么卵用,其根本的原因与正方系统的设计上有比较大关联。

以上

北师怎么选课?揭露北师珠选课系统(3)

另外需要大家知情的是:正方教务系统本身设计的问题也导致了选课难的局面,但是在知识和技术落后且匮乏的过去,与很多高校一样无奈选择了正方这个教务系统。关于为什么不替换教务系统?最重要的考量因素是数据迁移可能带来数据丢失等问题,这些数据至关重要,所以不敢轻易尝试。

下面给大家分享一篇信院学生会技术总监七七关于正方教务系统的文章

选课选了三年,一年比一年慢,一年比一年难。正方虐我百千遍,我待正方如初恋。作为一个在北师珠帮n个学妹抢课抢宿舍依然单身的大三信院老学长,笔者想用比较直观的语言来向大家解释一下正方教务系统是什么样的一个瓜皮系统。

对方不想和你说话并且扔了一个正方教务给你.gif

笔者用生活中的例子来简述抢课的流程。

你可以想想一下你现在身处于大操场,你周围有几千个和你一样的同学,操场某一角有几个老师手中拿着选课表发给同学们填写,于是你需要做三件事情:首先,拼命挤出人群,抵达老师的面前,拿到选课表。然后你得填写那个选课表,最后交还给老师。老师要做的是,根据你选择的课程,将手中的“学生选课情况”表上该课程的选课人数 1,并且将你提交的表保存起来。这个看似简单的工作,存在以下问题:

北师怎么选课?揭露北师珠选课系统(4)

一、你怎么挤出人群走到老师(教务系统)的面前,拿到选课表(登录、刷出课程)?方考虑这个问题的方式很直接,你不是要登录吗?你不是要课表吗?我给你就是了。至于我啥时候能给到你?那看你的人品和网速了。

二、你要填写这个选课表。细心的同学可能发现了,好不容易刷出的页面,选了课,点击确定的时候页面迟迟没能反应,而是在左下角出现了一个“上传中…”的字样。没错,解析正方选课页面源代码可以发现,由于系统基于ASP.NET的MVC框架开发,框架自带了一个安全校验机制,防止你篡改表单提交,代价是提交一个长度接近2MB的校验信息(同样,加载页面的时候也会加载这个信息)。

别小看这2MB,对于选课来说,几千人平分几百M的校园网带宽,需要花费数倍的时间去完成提交;而且心塞的是,由于网络极度不稳定,传着传着就断了,于是全功尽弃。

三、老师(系统)要处理你的选课了。如果只是几个人,那老师很轻松的就能把他的工作搞定了。问题是,几千人争先恐后都要让老师来处理选课,老师不仅要一个个给你们查,还要不时的告诉你们,哎呀不好意思,这门课已经选满了。

从专业角度来说,这个操作存在竞争,要保证执行的先后,才不会引发所谓的“脏操作”,系统常见的解决方法就是通过给数据库表加锁来实现,就是谁先到了,谁先处理,没处理到的,都在外边站着排队等。由于处理的人太多了,老师(数据库)忙不过来了(崩溃、死锁),也有些人可能等不及了就走了(超时),于是就有了你们看到的502、404、error等等。

笔者曾经用过sqlmap对教务的一个存在漏洞的页面进行过渗透扫描(该页面已经不存在了,具体细节不方便公开,笔者仅仅研究,没有做任何破坏性的操作)。在这里给大家分享正方的数据库表名的截图片段:

北师怎么选课?揭露北师珠选课系统(5)

神一样的数据库,居然有2000多个数据表?表结构零散就不说了,还全都是拼音首字母?对正方的程序员同行表示默哀三分钟,维护个系统都要拿着一本“字典”来查这个表是干吗用的。“XSXXJLB”还看的出是“学生信息记录表”,其他的,大家有兴趣可以猜一猜,猜对也没有奖,反正还是抢不到课。更搞笑的是,ZF_CXCJTJ_xxx学号?意思是查询一次成绩统计都生成表缓存?不懂,实在是猜不到正方开发者的“良苦用心”,拿关系型数据库当内存缓存用?

至于某选课软件,笔者持中立态度。抢课软件出发点很好,设计逻辑也没有问题。只是在方式方法上,可能该作者觉得这样一个软件对服务器造成不了太大伤害,然而事实上,由于并发请求的数量较高,加上大家都想用,于是就出现了几秒钟内让教务系统负载上万的请求,对于一个设计不佳的系统来说这就是一个毁灭性的打击,再加上用户行为不可控,有些人为了抢到课,开多个程序,把并发请求的数量又提高了多个数量级。抢课页面打不开,在两年前可能是因为太多人在刷新,而在今天,则更可能的是因为那个小助手在疯狂刷新。至于用不用,笔者也无权干涉大家的选择也不会反对使用,笔者更期待的是教务能够改变这个该死的选课系统。

这样学校没有作为吗?

北师怎么选课?揭露北师珠选课系统(6)

新版教学管理系统:http://tm.bnuz.edu.cn

庆幸的是,他们真的在努力。也许大家听过也见过我们学校的TMS点名系统。不错,它就是未来替代正方的系统,虽然笔者也不能一口咬定,最终的决定权还在学校。这个系统是由学校教务处老师带领几位已经毕业的学生研发的系统,做了好几年了。主持这个工作的杨林老师是我们心中的大神~虽然没能有幸上他的课,不过从别人那儿得知,杨大神上数据库的课经常拿正方数据库做反面教材。在笔者看来,新的教务系统开发工作,绝大多数内容应该都并不难,比教务复杂的MSI信息系统多了去了。有一个值得关注的是要把正方的原始数据库“搬到”新的系统里,这可能要花费大量的人力物力去清洗“脏数据”。据说杨老师用了半年的时间才把数据洗出来一部分,可见其工程的难度。杨老师大多数时间估计都在想,那个表的拼音名字到底是什么意思…

TMS目前是开源项目,其地址为:https://github.com/jwgl,信院有兴趣的同学也可以去看看,学习学习。后端是用Groovy语言开发,前端是Angularjs2

北师怎么选课?揭露北师珠选课系统(7)

所以为什么不换个教务系统呢?

正方教务系统确实不够稳定,现实情况是正方在全国高校占有率超过50%,在知识和技术落后且匮乏的过去,无奈的选择了这个系统。但是从其它选用新教务系统的兄弟院校来看,体验效果并没有很大区别。大家也可以问下隔壁的北理工,他们换了新的教务系统。另外最重要的考量因素是数据迁移可能带来数据丢失等问题,这些数据至关重要,所以不敢轻易尝试。

笔者说了这么多废话,感觉大家最关心的问题依然是:我到底怎样才能抢到课?笔者多年抢课经验,给有需要的同学几个小小的建议:

1.提前30分钟登录系统,提前15分钟进选课页面。虽然说选课有30分钟的限时,然而到时整个系统都濒临崩溃了,系统想踢你出去都是不可能的,因此不用担心。当然,具体情况具体分析。

2.在机房比宿舍快。宿舍网由于电信的原因,上传速度仅有200KB左右,而机房由于是内网对等传输,上传和下载都是百兆,这是你能成功上传选课信息的保证。

3.火狐,不解释,比Chrome好用,IE浏览器劝你还是放弃吧。

4.调整好心态,点击提交后不要看到没反应就狂刷新,你要知道,在浏览器的加载动画还在转的时候,耐心和成功率成正比。

不抛弃!不放弃!

北师怎么选课?揭露北师珠选课系统(8)

5.哪怕是抢不到课,也要保持微笑;心里再多草泥马飞,也要保持微笑。

6.找个人好又厉害还帅的单身学长帮忙抢课,万一抢到了呢,是吧。

第六条很重要!有了他,可以忽略12345.

最后,祝愿大家都能选到心爱的课!

信院学生会技术总监七七 ,2017.6.12,于BNUZ

北师怎么选课?揭露北师珠选课系统(9)

回复“课程名称”或“老师名字”到WeChat北师珠即可查询老师评价,评价数据是最全,最新的。

如果要查询该课程的,挂课率,给分情况,各分数段占比,平均分情况,请扫描下方二维码关注“金凤路十八号”,然后点击菜单栏中的课程数据进入使用。

另外希望大家使用正当途径选课,非正当途径会加重选课系统的崩溃选课页面打不开,在两年前可能是因为太多人在刷新,但基本大多数人都可以在12点前选到一些课程。而在今天,一些同学使用非正当途径选课,实质上对服务器造成了本无必要的负荷。可以与网络的一种最普遍的黑客攻击手段叫ddos攻击相类比来理解,这种攻击甚至可以让一个大型网站系统瘫痪,原理是黑客控制了成千上万的僵尸傀儡电脑,让它们同时访问目标网站,导致服务器过度负荷而瘫痪。第三方软件的多线程选课就是这个流程。所以最近几次史无前例的选课困难,12点前都无法进入系统,与之有一定的关联。

望各位使用正当途径参与选课!以免对他人造成本不应该的影响,损人利己的事情最好还是不要做。

▎投稿/爆料/建议/解答疑问/寻求帮助等所有相关事宜请加小猪猪bnupig

猜您喜欢: