年會系統-心得體會

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)的首頁


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