年会系统-心得体会

2017大型年会互动系统

  很荣幸既SFPP发布上线之后,我们团队又被老大安排到了紧张而又有趣的公司年会互动系统项目中。这次的项目虽然不大,开发时间虽然不长,但成长真的很多。第一次知道前后端数据通信不仅仅ajax好用,还有websocket;第一次知道长连接与长轮训在高并发下对系统影响的差距;第一次那么近距离的体会到我做的系统那么多用户在使用;第一次感受到真实情况4位数的并发所带来的效果(压测不算);第一次感受到一个科技公司原来有这么多的奇葩高手,真的完全没有想到,才知道程序员的公司年会危机感多么严峻(后面会说)。

技术总结和体会

  系统的架构方面来看和之前sfpp采用的一样,微服务、dubbo这一套体系,实际上在这种并不算大的项目中,这套架构并不能体现出什么优势,更多的考虑是为了巩固和加深之前才用了一次的这套东西。比较新颖的是这次的系统需要通过微信这一平台接入,需要从微信中获取用户信息与我们的系统对接,这就需要去了解公众平台开发文档、去了解微信为我们提供的接口、包括第一次接触的摇一摇功能,这些新事物的接触和学习让我收获良多。
  以往的项目中如果有需要页面经常像服务器请求数据的情况,通常采用的是定时每隔几秒发ajax,这种请求他是基于http的,这就意味着浏览器发起新请求前,服务器是不能发送新消息给浏览器的,而这一点对于实时性要求极高的弹幕打赏系统来说是绝对不能满足的。而websocket他跟http完全没关系(除了遵循握手协议),他是一种持久链接,可以理解为一个通道,服务器可以主动推送消息给浏览器,这样就不用傻呼呼的一直刷服务器了,同时也不必因为频繁的建立那种无状态连接而频繁的发送那些冗余到不行的上下文信息了。可我在想这么叼个协议的存在还有那些短连接的生存空间呢,一方面是由于目前不是所有浏览器都支持,另一方面当客户端事件的数量稍微大些时,对带宽和内存的压力就很大,所以我们要根据场景选择使用。
  实际上系统的基本功能我们仅用了不到一星期就搞好了,而之后的近一个月的时间我们做的是更改系统的UI以及系统功能的测试,同时考虑到现场的高并发情况,也在系统的设计时做了很多优化设计。比如:现场会有近700对cp上传他们的图片,现在的图片大小差一些的也要十几M,如果这些图片同时存到数据库里,以我们几十兆带宽的服务器是必炸的,所以我们将它存在了微信的一个临时文件服务器上(虽然只能存一天,但是够用了),他返回个uri图片地址,这一方案巧妙的解决了cp签到的并发问题。再比如:为了进一步减少服务器的压力,我们将js、html、img这些静态资源加载到另一个备用的静态资源服务器上,以分散带宽的压力。再比如:因为所有用户都会初始化一定数量的打赏礼物,为了减轻数据库的读写压力,我们将初始化的礼物存在cookie里,虽然我们意识到这样的做法会带来一定的危险,但一想节目那么精彩怎么会有人无聊到去修改cookie玩,严而事实果然出乎我们之所料,本来应该每人只有一个的火箭,果然有人成功的在大屏上一直刷、好吧,你赢了。
  接下来不得不说一下我们系统的槽点了,强大的民间高手在刷新了我的认知的同时也揭示出了很多我们系统所存在的漏洞。随着年会的成功开始,我们的系统也都很顺利的工作着,可是突然间,各种颜色各种大小的字体爬上了弹幕墙,真是千算万算,没算到这个肯定会发生的代码注入问题,调字体还好些,居然还有人在弹幕中发表单,能填能提交,野式醉了。更有甚者发alter,强行卡断弹幕“**部门最棒!”。这帮高手用各种各样的招数在挑战我们的系统。虽然这些玩法不足以导致系统瘫痪,但也算是UIOC了(果真如我转正答辩时峰哥问我的问题一样,年会现场uioc了怎么办!)结果现场紧张的真的不知所措,还好有冷静而强大的hash,现场改代码,现场运维部署发版,一招暴力解法屏蔽左括号,终于算是缓和了这一问题。又是刷礼物又玩弹幕的,这帮大神真是够了…
  对于这一事件给我的感觉就是,对于一个满是程序员的公司的年会,他们绝不会是奔着节目和吃喝去的,他们的目的只有两个:1.领奖品;2.玩坏你的年会系统….
  除此之外还有一些小的问题,比如顺手付红包的设计,我们是站在程序猿的角度设计的那种用户等待链接改变的方式,而当现场很卡时,用户大多会用后退从进来刷新的方式,这是很不合理的,还有摇一摇屏幕上显示用户摇的次数,这也是会引起争议,这也是不合理的,所以包括以后sfpp接下来的版本也是,我们要多从用户的角度考虑使用习惯。还有那个本来一切顺利但到最后也是全场唯一的重大状况:摇一摇抽奖卡到死。也并不是之前没有压测、只是之前的重点更多的放在了弹幕和打赏上面了,摇一摇压测的还是不够,如果现场网速快些、我们的服务器带宽大些,我们的互动系统肯定会挺过这个难关。

心得

  虽然这个系统还有着这样那样的疏漏和现场发生的一些意外,但是我觉得整场年会下来,它的表现还是没有辜负我们的。对于这种实时类型系统的体验,我要说很刺激很爽,同时也认识到了自己的好多不足。
  那么到最后我不得不隆重的感谢一下我们老大峰哥,是他给了我这种千载难逢的锻炼自己的机会,是他对我们团队充分的认可和信任才给了我们坚持做下去的动力、很幸运工作在这样一个家庭之中;同时也要感谢hash哥对我这种后腿不断的包容与帮助,也感谢hash哥一直以来对我们在技术上的指导和带领,跟着你我成长了太多太多,不得不说hash大神真的真的强到爆表,每次有技术难题或者关键节点时,都是你站出来分分钟解决,跟你还有很多很多很多要学的,希望2017自己一定努力学习,努力缩小和哈神的距离!还要感谢同组的两个小鲜肉,你们不光颜值爆炸而且技术也比别人强那么多,平时不方便问hash的时候,都是你们解救我与水火,真的很感谢平时你们的帮助,你们身上有太多我要学习的东西,技术、态度、为人(颜值这个学不了.5555)、你们都太优秀了向你们学习。
  最后希望自己2017年能向身边每一个优秀的人学习,拉近距离,新的一年,一个新的自己 !


上帝视角!我们的系统还是蛮帅的
上帝视角!我们的系统还是蛮帅的


这一到妹子的节目、打赏的程度比我们压测都邪乎啊,但是顶住了,yeah
这一到妹子的节目、打赏的程度比我们压测都邪乎啊,但是顶住了,yeah


移动端(实际还是web)的首页
移动端(实际还是web)的首页


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章