精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

10萬人的大場館如何“畫座位”?

新聞 開發工具
說到“畫座位”,最常見的場景莫過于影院的在線選座購票。這個場景下的需求,對開發者來說并不難,但你知道10萬座位的大場館該如何畫嗎?座位不固定,場景復雜等一系列挑戰該如何應對?接下來,阿里文娛技術專家莫那和阿里文娛高級工程師土嚎,為你揭秘。

阿里妹導讀:疫情之下,宅在家里就是對自己的保護。我們相信大家能夠共度難關,早日迎來與親友們現場看電影、看球賽的那天。今天,我們就來講講10萬人的大場館如何“畫座位”?懷念過去的歡聚,期待下一次的再見。

說到“畫座位”,最常見的場景莫過于影院的在線選座購票。這個場景下的需求,對開發者來說并不難,但你知道10萬座位的大場館該如何畫嗎?座位不固定,場景復雜等一系列挑戰該如何應對?接下來,阿里文娛技術專家莫那和阿里文娛高級工程師土嚎,為你揭秘。

一、背景

1、網絡售票,需要畫座:購票所見即所得

大麥主要業務是票務,包括演唱會、體育賽事、音樂節等,品類繁多。賣票就要畫場館、畫座位,大家都在網上買過電影票,這不難理解。雖然可以拿電影售票做類比,但底層難度差異很大。沒有10W座的電影院,卻有10W座的演唱會,而且演出/體育類場館變化多,挑戰相當大。 2、大麥繪座演進:從示意圖到實際場景圖

大麥以前的繪座系統,是安裝版的程序,畫座位只能一個看臺一個看臺地畫,看臺之間完全無關聯,畫出來幾乎每個看臺都長一個模樣,座位只有相對位置的示意圖,沒有角度、距離,更談不上精確定位。 

?

??

??

 

圖1:老版繪座頁面(已淘汰) 大麥網從2017年,開始設計新版繪座系統。這里沒有修補,沒有重構,新版繪座完全重來,連技術棧也由.NET換成了Java,由C/S換成了B/S。

新繪座以SVG矢量圖為核心,通過Canvas進行繪制,在演進的過程中攻克了大量的性能卡點和技術難點,最終打造成型,堪以重任。  

?

??

??

 

?

??

??


圖2:新繪座頁面

二、新繪座:Flash走了,Canvas來了

1、Flash已死,來到路口,別無選擇

新繪座已誕生2年多,現在回首,這條路似乎早已注定。

老版繪座和選座是基于Flash的,悲劇的是,Adobe宣稱Flash 2020年后,將不再維護,相關技術會在2020年底全部退役,大麥的繪座和選座系統,都被迫轉型。

Flash只是原因之一,看過競爭對手的產品,會發現SVG是條不錯的道路,即使沒有Flash這一出,大麥網也會朝這個方向邁進。

2、技術選型

1)任何過度使用DOM的應用,都不會快。

經過技術調研,發現國外一些場館座位繪制,選用的是SVG方案,每個座位都是一個獨立的SVG元素。但如果直接把SVG搬到瀏覽器,無法支持幾萬座位的場館,因為瀏覽器無法支持過多的DOM數量,并且,一旦DOM數量太多,操作一定是低效的,“任何過度使用DOM的應用,都不會太快”。

于是,技術同學想到了Canvas,Canvas是瀏覽器上的一個畫布,無論上面繪制多少元素,對于瀏覽器而言,都只是一個DOM元素。

對于不了解Canvas的同學,我們可以簡單做個說明,Canvas在瀏覽器上,就是下面一個標簽:

 <canvasid="myCanvas" width="200" height="100"style="border:1px solid #000000;">
</canvas>

在Canvas上繪圖,就是使用JS獲取Canvas對象,使用封裝好的方法進行繪制。Canvas畫布上的圖形變化,完全通過擦除+重繪的方式展現。

那么新繪座的目標就變得很明確了,我們就是要在Canvas上繪制出想要的場館座位圖,然后以SVG的格式把圖形保存起來,用以選座、售票。 2)Canvas也不是銀彈:單個Canvas的大小是有限制的,超限之后也會卡頓。

選型初期,技術同學使用Canvas+SVG做了個Demo,模擬了10W座位的渲染,并實現了拖拽、縮放。但真正作為畫座組件開發的時候,發現座位達到2W就出現了卡頓,因為Canvas的寬高達到一定的數值,就會出現卡頓。于是,沿著化整為零的思路,技術同學將整個畫布,分成了多份Canvas,形成了一個Canvas矩陣,通過對每個Canvas的操作,完美解決了單個Canvas過大引起卡頓的問題。

關于Canvas繪圖組件,大家可以在網上搜到很多資料,這里不再贅述。

3、新版繪座上線初期:青蘋果

剛上線的新版繪座,就像個青澀的蘋果,雖然漂亮,卻沒那么好吃。

最突出的問題有2個:第1個是變形難用,由于算法比較初級,座位矩陣變形很難滿足用戶需求;第2個是接口速度慢,打開一個1W座的場館,好幾分鐘,超過5W,直接崩潰,根本無法支持。

為什么理想很豐滿,結果卻差強人意呢?根源在于第一版只重功能,忽略了算法效率。與服務端的接口調用,都是整個場館級別的,幾萬座位數據,加上關聯的看臺、票、以及狀態等,一個碩大的數據包在前后端丟來丟去,系統不堪重負,用戶受盡折磨。 4、艱苦改進之旅

新繪座上線后,立刻啟動了改進優化工程,主要攻克的難關有三點:1. 頁面響應時間;2. 座位自由組合變形;3. 打印順序計算。

1)交互+接口優化,進入秒開時代

首先要解決接口慢的問題,解決效率低的一大法寶:化整為零。

從一次load一個場館的數據,改成一次load幾個看臺的數據。服務端數據隨著前端視口(頁面可視范圍)的變化,逐漸加載,類似地圖常用的“拉框查詢”。前端交互也從全加載,改為按視口取數據。僅此一項優化,幾萬座大場館的系統響應速度,立刻由幾分鐘,降到了1~2s,小場館更是瞬時打開,系統好用了不少。

這里面最重要的一個技術點,就是視口計算,原理如下:

前端首先獲取到屏幕視口在Canvas畫布上的坐標,然后和看臺的外接矩形進行碰撞檢測,兩個矩形一旦相交,就說明該看臺已暴露在視口之內,于是就加載該看臺的數據。

從接口優化開始,新繪座逐漸走向成熟。

?

??

??


圖3:按視口加載原理圖

2)合并座位矩陣,自由變形

座位自由變形包括傾斜、錯位、排距、座距、旋轉、弧度等多種操作。除了弧度變形,其它基本上是一些數學上的坐標計算,我們不贅述,這里重點說一下弧度變形。

新弧度變形,運用貝塞爾二階曲線原理,根據用戶的數據輸入,計算出相應的貝塞爾曲線,再把每排座位,均勻排列到曲線上。下面是貝塞爾二階公式:

?

??

??


圖4:貝塞爾曲線示意圖

?

??

??


注釋:P0、P2為一排座位的左右端點(一排的第一個座位和最后一個座位)。

看似套公式就可以搞定,非常簡單的樣子。但是這里有一個難點:從圖中可以看出,t為比例值,處在線段P0P2不同的比例,所在的弧度位置也是不一樣的。

如果所有的座位都在P0P2線段上,很好算,但是如果座位之前就是一條弧線呢?

中間所有的座位都不在P0P2線段上,要怎么算出中間座位的每個比例?

我們通過弧線上的每個座位,做一條P0P2線段的垂線,垂線與線段P0P2的交點,就是這些座位所在這一排的原始位置,計算出這些原始位置的坐標,根據這些原始位置,就可以算出中間所有座位的比例了。

這樣,弧度變形問題就通過貝塞爾二階曲線完美解決。

?

??

??


圖5:弧形座位矩陣貝塞爾曲線變形原理圖

?

??

??


圖6:弧度變形實際操作

?

??

??


圖7:座位自由組合,隨意變形

3) 打印順序計算

“打印順序”是個什么鬼?

這得從大麥的業務特點說起,主辦有時候會批量出票并將票配發給相關人群,有時整個看臺一起打印。在配票的時候,需要按照座位的物理位置關系排序,避免座位沒挨著、“2個情侶”被“拆散”的情況發生。舉個例子:下圖中,主辦期望打印票的順序是“5-3-1-2-4-6”,而不是“1-2-3-4-5-6”,這樣他們就可以按打印順序配票,而不用擔心兩張票不挨著。那么,在繪座過程中,我們就要計算出座位的順序,看似簡單,實現起來有難度很大,原因只有一個,場館形狀各異,座位排列多樣。

?

??

??


圖:8:北京奧體中心的某個看臺

如果說,上圖還能按照座位Y坐標對比進行排序,那么下面的幾個情形,就不那么好處理了:

?

??

??


圖9:各種特殊的座位排列場景

打印問題,我們通過場景匯總,對場館進行分區,最終找到了排序的規律,得以解決。打印問題技術方案原理:

第1步:將場館分成8個象限,象限內的座位,已標識出該如何排序(標識出了應該對比X坐標還是Y坐標來進行排序);

第2步:每一組座位矩陣,取出首排,求首尾座位連線的斜率,然后根據斜率將座位矩陣劃分到對應象限;

第3步:按照對應象限的排序標識,對比座位的X坐標(或Y坐標),進行座位排序。

?

??

??


圖10:座位排序原理圖

4)小彩蛋之“沙發、角度”

效率、變形和打印3個主要問題根解之后,隨之出現了大量的產品優化需求,開始著眼于細微之處,小沙發和座位角度就是2個典型的功能。這兩個功能雖然難度不大,但卻在體驗上有了一大步的提升。

?

??

??


圖11:圓點、沙發效果對比

5)小彩蛋之“撤回”

經過不斷優化和添磚加瓦,大麥的繪座系統,越來越像一款專業的繪圖工具。好的繪圖工具一定需要“前進&撤回”功能。

新繪座系統的撤回功能實現原理:設計一個“歷史數據”數組,數組里的每個元素,記錄一個操作步驟對應的被編輯座位數據以及座位位置信息,回退時,找到對應操作步驟的數組元素,重繪座位位置,這樣就回退了整個操作。因為無論座位相對位置如何變形,本質上,其實都是坐標數據的改變,通過記錄和重繪歷史坐標信息,就達到了撤回操作的目的。 三、 在正確的路上繼續前行

到目前為止,新繪座系統已能夠承接國內外任何大型場館的繪座工程,各種細節的優化也日臻完善,效率大幅提升。但產品和技術同學的努力,并沒有終止,而是在正確的道路上,繼續前行。

以下簡單列舉幾個很實用的功能,供大家參考:

1)區域編輯:自由繪制矩形、圓形、多邊形等各種形狀,并自由變形;

2)一鍵自動變形:全選看臺內的座位,點擊“一鍵變形按鈕”,座位瞬間適應看臺形狀,自動排列。

?

??

??


圖12:一鍵變形效果圖

3)座位復制、鏡像:區用戶可以自由復制選中座位,并且支持鏡像、翻轉等多種復制模式,排號、座位號根據設置自動處理;

4)一鍵朝向舞臺:用戶選中一個看臺的數據,點擊“一鍵朝向舞臺”,系統會自動計算舞臺方向和座位角度,瞬間將整個看臺座位“擺正”。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2019-12-30 12:18:15

戴爾

2019-12-16 17:25:04

Python微信群同步直播

2017-10-15 21:19:19

科技盛會

2021-11-11 11:38:56

Robinhood數據泄露網絡攻擊

2013-06-20 09:30:41

華為數據中心萬人桌面云華為

2010-01-06 09:16:10

MySQL

2020-03-17 09:51:21

在線流量崩了

2010-09-14 09:11:00

2021-06-09 12:04:44

比特幣黑客

2009-03-10 08:20:35

鴻海招募軟件代工

2011-11-02 09:20:26

華為云計算

2018-10-16 09:35:25

Facebook攻擊漏洞

2010-09-09 15:16:03

郭臺銘

2010-05-11 10:35:56

IT企業招聘

2023-08-31 00:03:28

2012-06-01 14:46:13

華為裁員

2018-12-07 09:50:36

裁員失業中年人

2023-08-29 22:43:53

2009-11-30 09:17:00

IBM員工數量
點贊
收藏

51CTO技術棧公眾號

九色porny在线| 深夜福利影院在线观看| 亚洲人体视频| 国产午夜三级一区二区三| 国产日韩专区在线| 国产亚洲小视频| 国产伦精品一区二区三区千人斩| 色婷婷综合久久久| 色乱码一区二区三区熟女| 黄色一级大片在线免费看国产| 国产亚洲网站| 色偷偷综合社区| 在线黄色免费网站| 丁香婷婷久久| 午夜精品福利一区二区三区蜜桃| 欧美一区免费视频| www.国产区| 日本在线视频观看| 成人高清视频免费观看| 国产精品免费久久久久久| 激情五月少妇a| 美女网站视频一区| 一区二区三区不卡在线观看 | 精品99999| av免费观看大全| 黄色免费在线看| 久久一日本道色综合| 成人性生交xxxxx网站| 亚洲 欧美 日韩 综合| 久久精品一区二区不卡| 91高清视频免费看| 麻豆传媒网站在线观看| 99se视频在线观看| 久久亚洲二区三区| 国产一区二区三区奇米久涩| 999精品国产| 日本美女一区二区| 欧美一级电影久久| 久久久久人妻一区精品色欧美| 日韩欧美精品| 亚洲天堂一区二区三区| 成年人在线观看av| 丁香五月缴情综合网| 在线观看亚洲一区| 波多野结衣乳巨码无在线| 黄色小说在线播放| 亚洲欧美乱综合| 国产系列第一页| 在线中文资源天堂| 久久综合九色综合97婷婷女人| 国产精品二区二区三区| 成人激情四射网| 国产激情精品久久久第一区二区 | 免费福利在线观看| 99精品国产99久久久久久白柏| 97久久精品午夜一区二区| 极品颜值美女露脸啪啪| 日韩电影免费网站| 深夜福利91大全| 正在播放国产对白害羞| 欧美午夜精彩| 最近更新的2019中文字幕| 成人小视频免费看| 欧美艳星介绍134位艳星| 亚洲女人被黑人巨大进入al| 亚洲欧美另类动漫| 欧美极品免费| 欧美日韩中文一区| 欧美激情国内自拍| 成人影音在线| 图片区日韩欧美亚洲| 欧美二区在线视频| 一区二区三区四区日本视频| 色伊人久久综合中文字幕| 午夜欧美福利视频| www.久久草.com| 日韩欧美一区二区在线视频| 97人妻精品一区二区三区免费| 伦理一区二区三区| 亚洲午夜性刺激影院| 蜜桃av免费在线观看| 亚洲大全视频| 97免费中文视频在线观看| 日本在线播放视频| 日本三级亚洲精品| 91影院在线免费观看视频| 性欧美18一19性猛交| av欧美精品.com| 欧美视频观看一区| 91在线中字| 岛国av一区二区在线在线观看| 亚洲免费精品视频| 国产黄a三级三级三级av在线看| 亚洲一区二区三区四区中文字幕| 国产深夜男女无套内射| 在线一区视频观看| 91精品国产91久久综合桃花| 亚洲精品第二页| 欧洲毛片在线视频免费观看| 免费av一区二区| 亚洲GV成人无码久久精品 | 亚洲精品久久久久久国产精华液| www.xxx麻豆| 国产综合色区在线观看| 日韩亚洲欧美中文三级| 亚洲精品国产熟女久久久| 欧美一区亚洲| 国产精品视频午夜| 黄片毛片在线看| 国产精品国产a级| 鲁一鲁一鲁一鲁一色| 精品视频一区二区三区| 亚洲色图美腿丝袜| 久久久久久天堂| 精品中文字幕一区二区| 免费久久久一本精品久久区| 在线观看男女av免费网址| 色诱视频网站一区| 国产免费a级片| 7777久久香蕉成人影院| 日本久久久久久久| 手机看片1024日韩| 国产精品一级片在线观看| 欧美lavv| 17videosex性欧美| 日韩欧美一级二级三级| 男人天堂资源网| 美女黄网久久| 精品国产一区二区三区麻豆小说| a在线免费观看| 精品视频一区 二区 三区| 国产精品无码在线| 国产专区一区| 亚洲综合色av| 国产日产一区二区| 欧美日韩国产一区二区三区地区| 男人天堂av电影| 国产中文精品久高清在线不| 欧美交受高潮1| 日韩激情一区二区三区| 极品美女销魂一区二区三区免费| 91免费看片网站| yw在线观看| 日本国产一区二区| 91成人破解版| 久久久久久9| 免费久久99精品国产自| 欧美调教sm| 日韩精品免费综合视频在线播放| 国产午夜激情视频| 成人午夜在线视频| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 成人欧美一区二区三区视频| 黄色网页在线播放| 在线综合视频播放| 丁香花五月激情| 国产一二精品视频| 日韩a级黄色片| 国产极品人妖在线观看| 日韩丝袜美女视频| 久久影院一区二区| 成人avav影音| 1024av视频| 精品一区三区| 国产精品一区二区三区久久久| 成人18在线| 欧美精品在线一区二区| 黄色一级片中国| 成人免费精品视频| 国产成人黄色片| 精品一区二区三区在线| 国产在线不卡精品| 91一区二区三区在线| 精品国产91亚洲一区二区三区婷婷| 国产无遮挡aaa片爽爽| 97国产精品videossex| 国产a级片免费观看| 久久在线视频| 成人激情av| 在线免费看h| 综合激情国产一区| 蜜桃在线一区二区| 中文字幕欧美日本乱码一线二线| 性欧美极品xxxx欧美一区二区| 98精品视频| 春色成人在线视频| 中文字幕成在线观看| 国产亚洲精品日韩| 国产特级aaaaaa大片| 黄色91在线观看| 成人一级片免费看| 成人激情文学综合网| www.欧美日本| 好看的日韩av电影| 日韩欧美一区二区视频在线播放| 精品一区二区三区中文字幕在线| 97成人在线视频| 性开放的欧美大片| 欧美va日韩va| 亚洲午夜在线播放| 亚洲大片免费看| 欧美人与禽zoz0善交| 成人手机在线视频| 一区二区三区视频在线观看免费| 亚洲国产老妈| 日韩精品一区二区三区四区五区 | 日韩一区二区久久| 亚洲精品在线免费看| silk一区二区三区精品视频| 国产激情综合五月久久| 成人av影院在线观看| 日韩中文字幕av| 午夜激情在线视频| 日韩欧美一区在线观看| 亚洲字幕av一区二区三区四区| 亚洲地区一二三色| 欧美黄片一区二区三区| 国产欧美日韩精品一区| 999精品免费视频| 国产精品羞羞答答xxdd| 邪恶网站在线观看| 欧美中文日韩| 欧美日韩性生活片| 欧美亚洲不卡| 香蕉视频在线网址| 日韩国产在线| 日本精品国语自产拍在线观看| 久久365资源| 97se国产在线视频| 国产亚洲高清在线观看| 国产精品流白浆视频| 小黄鸭精品aⅴ导航网站入口| 欧美激情精品久久久久久| 精品国产999久久久免费| 欧美在线观看一区二区| 91看片在线播放| 午夜视频在线观看一区二区三区| 欧美日韩一级在线观看| 亚洲欧美日韩小说| 91精品人妻一区二区三区蜜桃2 | 国产区精品区| 蜜桃欧美视频| 亚洲69av| 日本一区二区三不卡| 免费欧美一区| 欧美午夜精品久久久久免费视| 日韩深夜影院| 女人一区二区三区| 波多野结衣在线观看一区二区三区| 欧美日韩国产精品一区二区| 性人久久久久| 欧洲国产精品| 日韩大片在线播放| 一区二区三区四区久久| 91精品一区二区三区综合在线爱| gogogo免费高清日本写真| 国产精品91一区二区三区| 不卡一区二区三区四区五区| 亚洲精品国产九九九| 国产高清精品一区二区| 久久精品国产亚洲blacked| 精品在线一区| 黑丝美女一区二区| 亚洲啪啪av| 国产精品不卡| 无码日本精品xxxxxxxxx| 亚洲国产美女| 黑人糟蹋人妻hd中文字幕| 天堂av在线一区| av亚洲天堂网| 成人深夜福利app| 日本xxx在线播放| 国产日韩欧美在线一区| 91麻豆精品久久毛片一级| 亚洲美女免费视频| 日本高清www免费视频| 一本久久综合亚洲鲁鲁五月天| 成人小视频在线播放| 欧美久久一区二区| 狠狠躁夜夜躁av无码中文幕| 亚洲视屏在线播放| 国产91在线视频蝌蚪| 韩日精品中文字幕| abab456成人免费网址| 亚洲一区二区在线| 亚州综合一区| 只有这里有精品| 美女诱惑黄网站一区| 免费成人黄色大片| 93久久精品日日躁夜夜躁欧美| 免费看的黄色录像| 亚洲成人av中文| 中文在线免费观看| 精品日韩在线观看| h网站在线免费观看| 久久久久久久激情视频| 国产精品亚洲一区二区三区在线观看| 91色琪琪电影亚洲精品久久| 日韩三区视频| 免费看污污视频| 久久久www| 亚洲精品激情视频| 国产精品第13页| 国产成人精品一区二三区| 欧美精品粉嫩高潮一区二区| 午夜视频www| 欧美贵妇videos办公室| 精品网站在线| 美媛馆国产精品一区二区| 亚洲欧洲日韩| 欧美一级特黄a| 92国产精品观看| 欧美日韩精品在线观看视频 | 黑森林福利视频导航| 国产精品中文字幕一区二区三区| 国产激情在线免费观看| 亚洲国产综合色| 国产精品久久久久久无人区 | jizz日本免费| 夜色激情一区二区| 一区二区日韩在线观看| 亚洲视频电影图片偷拍一区| 91美女精品| 91精品入口蜜桃| 亚洲成人精品| 日本三级黄色网址| 国产欧美精品一区aⅴ影院| 国产香蕉视频在线| 精品成人佐山爱一区二区| caopo在线| 91精品视频一区| 国产精品久久久久一区二区三区厕所| 蜜臀久久99精品久久久酒店新书| 99热精品一区二区| 国产在线拍揄自揄拍| 日韩欧美在线123| 污影院在线观看| 亚洲在线一区二区| 亚洲精品a级片| 天天色天天干天天色| 亚洲日本在线观看| 国产乱人乱偷精品视频a人人澡| 中文字幕视频在线免费欧美日韩综合在线看 | 日本亚洲视频| 懂色av粉嫩av蜜臀av| 国产一区二区三区不卡在线观看 | 五月天视频在线观看| 亚洲国产精品激情在线观看 | 日韩三级av在线播放| 国产黄色在线网站| 亚洲一区二区三区乱码aⅴ| 欧美超碰在线| 99精品视频国产| 亚洲美女区一区| 亚洲av无码乱码国产精品久久| 色综合久久久久久中文网| 日韩高清一区| 日韩久久久久久久久久久久| 成人黄色一级视频| 欧美一级视频免费观看| 日韩久久免费电影| 亚洲综合av一区二区三区| 午夜精品亚洲一区二区三区嫩草| 日本女人一区二区三区| 999精品在线视频| 欧美大片国产精品| 无遮挡爽大片在线观看视频| 日本欧美色综合网站免费| 久久精品国产免费| 伊人在线视频观看| 亚洲成人精品久久| 在线天堂新版最新版在线8| 日韩中文一区| 国产一区二区三区蝌蚪| 日韩三级小视频| 一本色道久久88精品综合| 97色婷婷成人综合在线观看| 黄网站色视频免费观看| 91麻豆国产自产在线观看| gv天堂gv无码男同在线观看 | 亚洲精品一区二区三区新线路| 久久久免费电影| 久久av导航| 天天操夜夜操很很操| 激情亚洲一区二区三区四区| 成人亚洲综合天堂| 97神马电影| 视频一区视频二区中文字幕| 26uuu成人网| 亚洲欧美精品一区| 国产成人视屏| 久久久一本二本三本| 亚洲图片欧美激情| 婷婷亚洲一区二区三区| 国产欧美精品va在线观看| 亚洲二区在线| 久久噜噜色综合一区二区| 亚洲激情国产精品| 24小时成人在线视频| 69堂免费视频|