星辰大海:阿里数据体验技术揭秘!
在數(shù)字經(jīng)濟時代,數(shù)據(jù)的重要性堪比石油。大數(shù)據(jù)的四個特點:Volume(數(shù)據(jù)體量大)、Variety(數(shù)據(jù)類型繁多)、Velocity(處理速度快)、Value(商業(yè)價值高),只要合理利用數(shù)據(jù)并對其進行準確的分析,將會給企業(yè)帶來很高的價值回報。
在數(shù)據(jù)建設(shè)側(cè),阿里巴巴數(shù)據(jù)體驗技術(shù)團隊完成了大型 Web 應(yīng)用架構(gòu),TypeScript 方案的 Iron-Redux,加 API 服務(wù) Pont。上層特色的服務(wù)編排引擎和 SQL 編輯器的深挖,在工具層體驗?zāi)芰υ錾簧?。在?shù)據(jù)消費側(cè),我們致力于構(gòu)建以 BI 為搭建數(shù)據(jù)報表等核心能力,上層特色的數(shù)據(jù)可視化,數(shù)據(jù)藝術(shù)和數(shù)據(jù)安全都在各領(lǐng)域有深度貢獻。
SQL 編輯器
在數(shù)據(jù)采集,加工,管理,應(yīng)用的鏈路中,編輯器都充當著開發(fā)者最重要的伙伴。在前端領(lǐng)域,編輯器是高復(fù)雜度的領(lǐng)域,而 SQL 編輯器在這個領(lǐng)域中又是垂直領(lǐng)域的建設(shè)。我們在設(shè)計編輯器的過程針對理解語法和理解語境這兩個點作了深入分析和優(yōu)化。
理解語法
回顧人學習一門新語言的過程,無外乎兩種方式,要么翻閱百科字典,從 a 到 z,無論常用字還是生僻字,可以組成哪些詞語,悉數(shù)記于腦中;要么與人交談,記下其他人遣詞造句的習慣,轉(zhuǎn)為己用,與人交談的次數(shù)越多,交談的人群范圍越廣,積累下的話術(shù)也越為豐富,面對同一個問題,心中可供選擇的答案也越多。
編輯器理解語法的過程亦是如此,基于產(chǎn)生式進行分析或是基于樣本進行模型訓練與識別。一門語言的產(chǎn)生式定義可以視為這門語言的百科字典,詳盡的枚舉出詞法和語法的所有場景,清晰的描摹出邊界。SQL 語言的語法相對簡單,結(jié)構(gòu)性較強就比較適合采用基于產(chǎn)生式分析的方案。而對于 Python,Shell 這類語法復(fù)雜,或靈活度高的語言,基于產(chǎn)生式分析提供的關(guān)鍵詞提示,在實際應(yīng)用中難以真正起到提高開發(fā)效率的目的,基于業(yè)務(wù)場景的歷史數(shù)據(jù)進行模型訓練,提供包含業(yè)務(wù)含義的代碼片段的提示顯得更有意義。
理解語法可以說是編輯器最為基礎(chǔ)的能力,不同的編輯器方案均有不同程度的實現(xiàn),在我們的方案設(shè)計與實現(xiàn)的過程中,最為關(guān)注的三個方面分別是可擴展,易維護,高性能三個方面。
可擴展性
編輯器的載體產(chǎn)品經(jīng)常提出一些定制化的需求,譬如支持變量語法,注入全局變量,或者是調(diào)整提示內(nèi)容優(yōu)先級,新增一些快捷鍵操作。盡管最終效果的呈現(xiàn)都是在界面上,實際解決這些問題的原點卻不盡相同。因此,對編輯器作了三層架構(gòu)設(shè)計,產(chǎn)生式層,解析層,組件 UI 層,各層級間明確 API 規(guī)范來保證能力的解耦與擴展性。
易維護
在需求支持的過程中,我們無可避免的要對語言的產(chǎn)生式進行修改,在這個過程中任何思考上的疏忽都有可能引入二義性語法,或者左遞歸語法,導(dǎo)致解析異常,無法提示出正確的信息或是陷入死循環(huán)。于是,產(chǎn)生式調(diào)試是語法拓展的核心工作之一,我們需要追蹤用戶輸入的解析過程,在哪一個子句處沒有匹配到目標產(chǎn)生式,從而去檢查相應(yīng)的產(chǎn)生式定義是否存在問題。
高性能
高性能的保證和提示精度的調(diào)控,提示規(guī)則的設(shè)計是相輔相成的??偰苷业揭惶幷Z法定義是 LL(k) 識別不了,但是 LL(k+1) 可以識別的。性能的要求導(dǎo)致我們不能無限的提高回溯的步長,但是同時還要達到一定精度的要求。
由于 SQL 本身流程控制能力上的局限,在實際開發(fā)中往往需要借助 transform 或 udf 的方案,結(jié)合 Python,Shell 一起開發(fā)。未來,我們也會用機器學習的方案,來支持 Python,Shell 的語法提示能力。
理解語境
為了做到理解語境,在充分理解語法的基礎(chǔ)上,還要進一步對語法所在的上下文進行分析,才能得出最終的結(jié)論。語法解析的過程實際上就是將用戶輸入轉(zhuǎn)化為抽象語法樹的過程,因此理解語境所需的上下文盡在樹中。但是在為編輯器賦予理解語境能力的過程中,我們發(fā)現(xiàn)最大的挑戰(zhàn)并不在于分析邏輯的實現(xiàn)本身,而是在于它的復(fù)制量產(chǎn)。由于業(yè)務(wù)上要求支持的方言眾多,方言彼此間有著或多或少的語法差異,既要保持不同方言間語境理解能力的齊平,又要避免冒煙囪式開發(fā)。經(jīng)過分析我們發(fā)現(xiàn)針對每一種語境理解的實現(xiàn),關(guān)注點都集中在幾個關(guān)鍵的終結(jié)符與非終結(jié)符定義上,圍繞這些關(guān)鍵節(jié)點,建立一個有限狀態(tài)機,新的方言接入時提供一個映射關(guān)系來說明關(guān)鍵節(jié)點之間的映射,語境理解能力就完成復(fù)制量產(chǎn)。這套機制的建立也意味著編輯器能力開放的議題中,語境理解能力的開放已經(jīng)初具雛形。
理解語境的另一方面體現(xiàn)在與數(shù)據(jù)分析能力的結(jié)合。結(jié)合數(shù)據(jù)探查的能力,對于數(shù)據(jù)研發(fā)中一些常見的數(shù)據(jù)質(zhì)量問題可以做到前置檢測,在開發(fā)過程中予以提示并引導(dǎo)解決,從而改變傳統(tǒng)數(shù)據(jù)治理方案流程滯后,導(dǎo)致計算資源浪費的問題。以數(shù)據(jù)傾斜治理為例,當用戶任務(wù)執(zhí)行失敗,經(jīng)過探查分析發(fā)現(xiàn)是由于數(shù)據(jù)傾斜所致,由于數(shù)據(jù)傾斜存在一個持續(xù)期,因此在持續(xù)期內(nèi),用戶開發(fā)中再次操作引發(fā)傾斜的字段時,會將熱值信息予以提示,引導(dǎo)用戶進行改寫。除去這個例子,其他類型的數(shù)據(jù)質(zhì)量問題,諸如暴力掃描,join 兩側(cè)字段類型不一致,以及其他 map join 優(yōu)化場景都可以通過開發(fā)時的檢測與提示進行規(guī)避。
語法提示
別名識別
關(guān)鍵詞修正
BI 平臺
BI 平臺是幫助我們更好地利用數(shù)據(jù)提高決策質(zhì)量的中后臺應(yīng)用架構(gòu)。它是從大量數(shù)據(jù)前端應(yīng)用中沉淀出來的,上層支撐了 Quick BI,Quick A+ 等數(shù)據(jù)產(chǎn)品,匯集并沉淀了數(shù)據(jù)分析的核心能力。
Quick BI 是 BI 平臺支持的核心,也是數(shù)據(jù)中臺拳頭級產(chǎn)品。2019 年,成為中國首個且惟一入選 Gartner BI 魔力象限的產(chǎn)品。BI 是一個典型的重交互場景,整個 BI 的分析鏈路包括數(shù)據(jù)引入、數(shù)據(jù)建模加工、報表搭建、交互分析、訪問分享和集成。
BI 是非常有挑戰(zhàn)的搭建場景,搭建能力對阿里數(shù)據(jù)中臺來說,就像水和空氣一樣重要,搭建能力很大程度決定了數(shù)據(jù)中臺競爭力。大量的產(chǎn)品需要搭建的方式來賦能業(yè)務(wù)人員,類似 Powerpoint 一樣富客戶端的交互方式;動輒百萬條數(shù)據(jù)的加載對性能的挑戰(zhàn),單頁面項目、ISV 開放生態(tài)對接等對工程化充滿挑戰(zhàn)。因此,我們抽象出渲染引擎內(nèi)核 bi-designer 同時支持了兩個 BI 的快速迭代。
目前,我們攜 bi-designer 加入到阿里集團低代碼引擎組織,成為核心架構(gòu)組的一員,專注于數(shù)據(jù)領(lǐng)域搭建方向,正在積極的遞交提案拓展阿里低代碼引擎協(xié)議,并進行 bi-designer 規(guī)范化改造,與 AliLowCodeEngine 引擎進行代碼融合。
bi-designer 數(shù)據(jù)搭建引擎有如下幾個特色:
三合一布局
我們?nèi)N業(yè)務(wù)場景天然需要三套布局的能力:
- 數(shù)據(jù)搭建 - 流式布局
- BI 報表 - 磁貼布局
- 大屏 - 自由布局
bi-designer 通過插件機制內(nèi)置了這三種布局能力,使流式、磁貼、自由布局間可無縫切換,在不同的產(chǎn)品透出不同布局能力。自由布局采用 Keynote 高仿真方案,支持吸附、對齊、組合、鎖定等功能;磁貼布局也做了高度自使用、寬高智能拖拽等體驗優(yōu)化。
數(shù)據(jù)模型驅(qū)動
BI 搭建擁有強大運行時分析能力,比如基于 OLAP 數(shù)據(jù)模型的同數(shù)據(jù)集自動關(guān)聯(lián)功能,在圖表內(nèi)點擊、框選操作觸發(fā)其他組件查詢并自動過濾篩選。
簡單的聯(lián)動配置背后需要一套運行時解析能力,bi-designer 提供了一套運行時事件機制 runtimeConfig ,將任意組件配置映射成復(fù)雜事件關(guān)聯(lián)效果,比如點擊控制圖表屬性變化、點擊控制取數(shù)參數(shù)變化、點擊控制篩選條件值的變化。在取數(shù)上也內(nèi)置了數(shù)據(jù)模型處理,針對篩選條件多對多關(guān)聯(lián)、聯(lián)動、值同步,以及任意組件(如線圖)具有展示與篩選雙重功能的能力。
懶渲染
由于 BI 場景數(shù)據(jù)量動輒上百萬條,我們在做了大量組件優(yōu)化的同時(虛擬滾動、數(shù)據(jù)抽樣等),bi-designer 渲染引擎也內(nèi)置了組件按需渲染的能力。
對于數(shù)據(jù)取數(shù)場景,我們也做了特別優(yōu)化,懶加載的組件不會阻塞取數(shù),而只阻塞組件本身渲染,這樣可以在組件出現(xiàn)的瞬間直接加載數(shù)據(jù),而不是重新取數(shù)。
被集成能力
BI 報表在阿里內(nèi)部和云上市場都有強烈被集成訴求,若干張報表或者設(shè)計器集成到已有系統(tǒng)逐漸成為一種趨勢,我們開發(fā)了 bi-open-embed 并集成 bi-designer 能力,讓渲染引擎可以被輕松集成到任意平臺。我們對 Client、Server 端抽象了三層通用中間層 - PostMessageProxy、Router、EmbedAPI,分別定義了消息派發(fā)、指令接收以及指令執(zhí)行,Server 端底層對接 bi-designer 引擎,Client 端對接接入方應(yīng)用。
被集成領(lǐng)域中,組件安全隔離我們也下了功夫,從組件打包階段開始,就利用構(gòu)建工具進行樣式隔離,組件腳本加載時進行 JS 環(huán)境變量隔離。在集成 API 上我們也從權(quán)限體系開始設(shè)計,到報表區(qū)塊、篩選、主題等模塊的控制,還可支持動態(tài)傳入取數(shù)參數(shù)影響報表取數(shù)結(jié)果等等。
低代碼
低代碼能力也是我們數(shù)據(jù)搭建平臺今年重點建設(shè)方向之一。低代碼包括 NoCode 與 LowCode,NoCode 就是基于模型或者標準化模版,不需要寫代碼即可支持通用場景搭建,LowCode 則是在 NoCode 的基礎(chǔ)上,輔助少量業(yè)務(wù)邏輯代碼,比如變量綁定或者或者動作,實現(xiàn)更多定制業(yè)務(wù)邏輯的覆蓋,其適用范圍更廣。
集團中后臺搭建采用 LCDL(Low-Code Definition Language)描述低代碼業(yè)務(wù)協(xié)議,主要包括應(yīng)用低代碼定義語言、頁面低代碼定義語言、組件低代碼定義語言。圍繞這三個核心協(xié)議,拓展出四個可插拔的核心模塊:
- 入料模塊:讓渲染引擎可接入任何物料,并識別物料特征,自動完成對接。
- 編排模塊:設(shè)計器核心功能,包括組件編排、邏輯編排、事件編排等,是搭建的核心。
- 渲染模塊:搭建產(chǎn)物需要被分發(fā)到不同端,甚至小程序,從安全性到兼容性都是渲染模塊要解決的問題。
- 出碼模塊:所有低代碼搭建產(chǎn)物都可出碼,使產(chǎn)物可二次開發(fā),FY21 還會持續(xù)探索 Pro-Code 與 Low-Code 完全互轉(zhuǎn)。
數(shù)據(jù)搭建場景較為垂直化,且可依賴數(shù)據(jù)模型驅(qū)動,所以很久以來都沒有強烈低代碼訴求。但隨著數(shù)據(jù)中臺業(yè)務(wù)越做越大,盒馬、菜鳥、本地生活、餓了么等等經(jīng)濟體 BU 數(shù)據(jù)團隊的加入,具有低代碼能力的數(shù)據(jù)產(chǎn)品搭建訴求越來越強烈,所以我們今年加入了集團低代碼引擎組織核心團隊共建,向組織輸出數(shù)據(jù)場景搭建能力,從組織獲取低代碼引擎能力。
數(shù)據(jù)可視化
人類在處理信息的能力,視覺遠超其它五感處理能力,在《Information is Beautiful》一書中,作者將視覺類比成計算機網(wǎng)絡(luò)的帶寬,達到 1250MB/s,觸覺排在第二類比成 USB 接口,有 125MB/s,聽覺和嗅覺類比成硬盤只有 12.5MB/s,而味覺就忽略不計了。數(shù)據(jù)可視化,就是在我們清洗關(guān)鍵數(shù)據(jù)之后,將數(shù)據(jù)呈現(xiàn)給用戶,就像一道菜品精美的擺放,給你帶來更多想象。
可視化一直是數(shù)據(jù)分析重點一環(huán),工業(yè)界和學術(shù)界在可視化的研究也有高度重合的部分,脫離了分析的可視化是缺少靈魂的。上圖來自于一家調(diào)研公司,可以看到數(shù)據(jù)分析有一個發(fā)展階段,描述分析,解釋分析,探索分析,預(yù)測分析,規(guī)范分析。規(guī)范分析是數(shù)據(jù)分析的最終階段,它已經(jīng)可以解決我們怎么做的問題,類同于人工智能的終極階段。
而可視化在之前的幾個階段都有一一匹配的能力,這也是可視化與大部分認知不同的地方,可視化遠遠不只是解決數(shù)據(jù)如何展示的問題,更重要的是如何傳遞信息,甚至解決的是如何傳遞更多的有效信息。
基礎(chǔ)架構(gòu)
我們團隊在這四個階段都有布局,在可視化圖表上,也是我們立身之本。我們在 BI 工具發(fā)展上構(gòu)建了整體數(shù)據(jù)團隊可視化能力,基于 D3,G2 構(gòu)建了完善的基礎(chǔ)層。結(jié)合業(yè)務(wù)能力在工具層,擁有完善的交互式分析能力。通過上層圖形語法和數(shù)據(jù)模型標準的映射,我們得以用一套架構(gòu)來實現(xiàn)可視化內(nèi)核,在內(nèi)核層大量增強了基礎(chǔ)庫的能力。
BI 場景有極其豐富的可視化場景,目前 Quick BI 支持 40+ 種圖表,包括用戶最常用的折線圖、柱狀圖、堆積面積圖、條形圖、餅圖和?;鶊D、排行榜、指標卡趨勢圖這些業(yè)務(wù)場景化圖表。
如何讓這些圖表更快速的開發(fā)和擴展一直是我們要解決的問題。因此,我們抽象出了 charts-bi 圖表公共層,它包括統(tǒng)一的數(shù)據(jù)處理層、圖表默認配置管理、圖表極限情況處理、子圖表、子組件包括圖例和 Tooltip 等原生的渲染。盡管,我們圖表渲染底層基于 G2,但可以說我們的 BI 場景圖表是 G2 在集團應(yīng)用最豐富的場景之一,同時我們也深度參與了可視化基建的共建。
經(jīng)過一年多的努力,2019 Quick BI 在 Gartner 象限報告中在數(shù)據(jù)可視化上在滿分 5 分的情況下達到了 4.7 高分,超越微軟 PowerBI,僅次于以可視化著稱的 Tableau。報告稱 Quick BI 在數(shù)據(jù)可視化功能方面被評為杰出。它支持豐富的圖表類型和類似 Excel 的報告。它還為參數(shù)化數(shù)據(jù)獲取和基于表單的回寫提供了專用功能。
智能可視化
智能可視化是一個跨界領(lǐng)域,諸如自動洞察,可視化設(shè)計,可視化配置推薦都是智能可視化的方向。Gartner 預(yù)測,未來數(shù)據(jù)分析是增強分析時代。普通用戶發(fā)現(xiàn)數(shù)據(jù)洞察的成本很高,用戶需要嘗試找到有規(guī)律的一些指標,通過可視化的方式來驗證甚至是發(fā)現(xiàn)規(guī)律,這種反復(fù)試錯的成本非常高。因此,自動洞察可以說是對用戶在基本業(yè)務(wù)洞察之外的補充。
自動洞察能夠在用戶提供的數(shù)據(jù)集上,自動進行特征的分析,數(shù)據(jù)清洗,根據(jù)梳理的 insight 類型進行自動的匹配,找到隱藏在數(shù)據(jù)集中的知識,提供給用戶。這條鏈路的不斷優(yōu)化,最終手工分析的時代也會被自動洞察所替代,只有一個按鍵就可以讓用戶找到最有效的信息。
近幾年,產(chǎn)學研一體趨勢顯著,微軟的 Power BI 在這個領(lǐng)域頗有建樹,推出了 Quick Insight 就是與 MSRA 合作,是自動洞察方向的開荒者之一。今年,團隊在對內(nèi)側(cè)的 BI 工具上已經(jīng)落地了自動洞察功能,提供給小二更智能的數(shù)據(jù)決策工具而為之努力。
在未來布局上,數(shù)據(jù)世界真實的描繪不應(yīng)該是靜態(tài)的,它是真實在變化的,我們在變化中需要呈現(xiàn)一個變化的規(guī)律,這是現(xiàn)代數(shù)據(jù)分析上比較缺失的。未來,在數(shù)據(jù)故事和自動洞察上發(fā)力。將數(shù)據(jù)可視化能力從靜態(tài)交互分析,發(fā)展到動態(tài)交互分析上。進一步,挖掘數(shù)據(jù)中更多有效信息,輔助人作決策。
數(shù)字藝術(shù)
如果說 BI 和數(shù)據(jù)可視化是幫你從數(shù)據(jù)中發(fā)現(xiàn)信息的工具,數(shù)字藝術(shù)則是展示和傳播你的數(shù)據(jù)故事的媒介。無論是一個大屏,還是一個可交互裝置、Web 頁面、富媒體,作為數(shù)據(jù)可視化的延伸,我們始終在探索更新穎的形式,更前瞻的技術(shù),來讓你的故事?lián)碛锈袢恍膭拥牧α?#xff0c;在從紛繁的信息中脫穎而出,無須多言,便能打動聽眾。
團隊與 UED 緊密合作,負責了集團多年的雙十一和九號館的大屏和互動展區(qū)設(shè)計開發(fā),支持了集團 PR、GR 部門眾多的高級接待和對外訪問活動,同時以技術(shù)支持和平臺支持的形式,協(xié)助集團各個BU團隊開發(fā)數(shù)據(jù)可視化、BI、大屏、展示型內(nèi)容和傳播內(nèi)容。
在這個過程中,積累了一套從數(shù)據(jù)處理算法、到渲染引擎、可視化框架,以及搭建平臺的解決方案。
異構(gòu)渲染
為了滿足不同場景和內(nèi)容的展示需求,充分發(fā)揮不同渲染平臺的優(yōu)勢,我們在渲染框架中原生支持了跨平臺渲染。
通過一套統(tǒng)一的數(shù)據(jù)源/數(shù)據(jù)算法,統(tǒng)一的地理空間規(guī)范,和統(tǒng)一的相機狀態(tài)定義,來保證不同渲染架構(gòu)輸出的渲染結(jié)果空間對齊,然后通過實時推流和 WebView 對不同渲染架構(gòu)的內(nèi)容進行融合,實現(xiàn)多種平臺渲染內(nèi)容的合并輸出。
通過異構(gòu)渲染,我們得以在一個場景中,融合來自 Polaris 的實時數(shù)據(jù)可視化能力、UE4 的細節(jié)制作和渲染能力、G2 豐富的可視化圖表、高德龐大的地圖數(shù)據(jù),各取所長,融合為一個可交互的實時渲染內(nèi)容。
Web3D 渲染引擎
無論技術(shù)流行趨勢如何變化,Web 平臺依然承載著我們和核心技術(shù)和產(chǎn)品形式。我們始終相信,Web 平臺有著未被發(fā)掘的強大表現(xiàn)力。受限于設(shè)備性能和兼容性的妥協(xié),大家已經(jīng)習慣將 3D on Web 視為一種能用即可的“降級方案”,然而 Web 技術(shù)的應(yīng)用領(lǐng)域已經(jīng)發(fā)生了巨大的變化,基礎(chǔ)設(shè)施和硬件設(shè)備也不斷的更新?lián)Q代,現(xiàn)代 Web3D 渲染引擎,不應(yīng)該總向十年前的游戲引擎看齊。
我們的渲染技術(shù)始終以 three.js 為根基,作為標桿級的 WebGL 引擎,three 無可匹及的強大社區(qū)支持著我們的快速發(fā)展,當我們試圖擺脫 webgl 的限制時,選擇保留了 three 所有的上層設(shè)計和場景定義,兼容多數(shù) three 接口和社區(qū)插件的情況下,重寫渲染層,實現(xiàn)了(當時)功能最完整的 WebGL2 引擎,顯著提升性能效果,實現(xiàn)在瀏覽器中實時渲染上億頂點的大型場景。同時引入了高效的 GPGPU,來實現(xiàn)更加復(fù)雜的粒子動畫。
從 WebGL2 到未成行的 WebGPU ,限制 Web 3D 渲染能力的已經(jīng)不再是圖形 API,而是渲染流水線和圖形算法,渲染管線不升級,圖形 API 再怎么升級也不會帶來質(zhì)的變化。
在 2019 年,我們作出了一個大膽的嘗試,直接將桌面游戲引擎的高清渲染管線,實現(xiàn)在 WebGL2 之上,并在雙十一項目中使用。
參照成熟游戲引擎的渲染管線設(shè)計,我們使用多種渲染路徑來渲染場景的不同成分,對不能完整支持 Deferred Shading 的材質(zhì),或者需要兼容的現(xiàn)有入庫組件,使用前置渲染或者不完整的延遲渲染,其中基礎(chǔ)場景使用完整的Deferred Shading 管線。Deferred Shading 管線中,除了獲得在 shading 階段強大的性能控制,完整的 GBuffer 更是解鎖了眾多屏幕空間算法,讓我們可以高效的進行 SSAO 和 SSR 等復(fù)雜計算,甚至能在筆記本上流暢運行。
高清渲染管線為 Web 端的渲染能力邁上了一個新的平臺,使得眾多新技術(shù)的引入成為可能,我們能從學術(shù)、游戲、影視領(lǐng)域的最新成果中汲取養(yǎng)分,而不用再受限于實時渲染技術(shù)發(fā)展初期的古老算法。這也將是唯一一個有能力發(fā)揮 未來 WebGPU 潛力的渲染管線。
3D 地理系統(tǒng)
3D 數(shù)據(jù)可視化的場景雖然復(fù)雜而零散,但是多數(shù)和地理數(shù)據(jù)強相關(guān),為了提高開發(fā)效率和服用能力,我們在 three 的通用場景定義之上,設(shè)計了一個輕量級的地理信息系統(tǒng) — Polaris。將視覺效果的開發(fā)和業(yè)務(wù)邏輯的開發(fā),全部簡化為 Layer 開發(fā),符合 schema 的 Layer 可以自由疊加、組合、繼承,然后交由 Polaris 渲染器渲染。同時積累了一套上百種 3D 組件的 Layer 組建庫。
在 Polaris 中,我們按照真實比例和地理位置構(gòu)建世界,可以向 Google Earth 一樣,在一個三維場景中繪制從星系到地球、國家、一直到某個城市的某個樓宇內(nèi)部,通過一個長鏡頭,將所有的場景貫穿起來,形成一個連貫的數(shù)據(jù)故事,而非 PPT 一般的分離圖表。
算法服務(wù)
一個 3D 空間的構(gòu)建,是對大量原始地理數(shù)據(jù)的層層處理,處理的過程往往從高德的原始地理數(shù)據(jù)開始,經(jīng)過過濾、簡化、拔高,變?yōu)?維模型,然后通過算法進行細化、匹配,生成建筑細節(jié),然后根據(jù) DEM 生成地形和山脈,對于特寫區(qū)域,需要通過人工制作高精模型,再通過算法對齊地理空間,如果是城市景觀,還可以通過算法生成車水馬龍、廣告牌、霓虹燈等裝飾內(nèi)容。
所有這些過程都涉及到龐大的數(shù)據(jù)輸入和復(fù)雜的計算邏輯,我們已經(jīng)在不同業(yè)務(wù)場景中生成過 30 多個城市和所有省份的場景數(shù)據(jù),并且數(shù)據(jù)源和場景構(gòu)建的需求在不停的更新著,手工管理將是一筆巨大的負擔。因此我們構(gòu)建了一個地理數(shù)據(jù)算法服務(wù),來為 UE4 和 Web 端渲染平臺提供等效的服務(wù)。
數(shù)據(jù)安全
數(shù)據(jù)產(chǎn)品中有表現(xiàn)力豐富的數(shù)據(jù)可視化能力、有高效的數(shù)據(jù)解讀能力,但背后也隱藏著各種各樣的數(shù)據(jù)安全風險,這些數(shù)據(jù)可能涉及到交易數(shù)據(jù),也可能是行業(yè)趨勢數(shù)據(jù),這些數(shù)據(jù)如果發(fā)生泄漏被不法分子利用極有可能對集團和客戶造成嚴重的損失,所以數(shù)據(jù)產(chǎn)品的各個生產(chǎn)環(huán)節(jié)都需要具備安全防御方案。
對于整個數(shù)據(jù)安全體系,從數(shù)據(jù)生產(chǎn)到數(shù)據(jù)查詢的鏈路需要做數(shù)據(jù)脫敏和差分隱私,前端是數(shù)據(jù)產(chǎn)品向用戶展示和交互的最后一環(huán),也是整個生產(chǎn)鏈路中數(shù)據(jù)安全保障的最后一環(huán)。我們也需要配合全鏈路的數(shù)據(jù)安全建設(shè),做到事前,事中和事后的保障。
數(shù)字水印
數(shù)字水印是在事前環(huán)節(jié),起到警示、震懾的作用,提醒產(chǎn)品的訪問者產(chǎn)品中展現(xiàn)的數(shù)據(jù)屬于秘密信息,不可傳播;以及在事后環(huán)境,幫助案件追查,當訪問者對頁面進行截圖和傳播后,可以準確的定位到案件的當事人,協(xié)助案件偵破。傳統(tǒng)的網(wǎng)頁水印方案是在端上直接繪制水印信息覆蓋在文檔流上或作為背景圖片,但只要是具備一點前端知識的人都可以通過瀏覽器的調(diào)試器對水印信息進行刪除甚至是篡改,所以我們要確保水印的真實性和水印的穩(wěn)固性。
水印生產(chǎn)主要分兩類。明文水印,它是指將可讀的信息(用戶姓名或其他警示信息)生成水印圖片,主要目的是起到警示作用;加密水印,我們團隊和安全專家一同共建的,將水印信息加密為不同形式的圖片方案,比較有代表性的是結(jié)合了文件數(shù)字水印的理論:點陣水印、隱秘水印、浮雕水印,此類水印的特點是信息無法被篡改,主要用于案件追蹤。
水印在生產(chǎn)環(huán)節(jié)進行了加密,由于無法解密,解決了水印的篡改問題。在水印部署過程中需要克服水印被刪除的問題,我們針對常見的水印刪除手段進行防御:
1)網(wǎng)絡(luò)干預(yù),阻止頁面獲取水印資源(圖片和 SDK),對圖片二進制流和sdk資源下發(fā)均采用與業(yè)務(wù)代碼進行混淆,確保水印部署和業(yè)務(wù)邏輯執(zhí)行過程交叉執(zhí)行,無法單獨中斷。
2)環(huán)境及 DOM 干預(yù),通過修改和刪除 DOM,對瀏覽器的 DOM 和關(guān)鍵原生 API進行劫持驗證,確保 DOM 的修改可被監(jiān)聽和復(fù)原,無法復(fù)原的情況將中斷業(yè)務(wù)邏輯。
3)融合部署:對于重要的數(shù)據(jù)信息,通過 canvas 或圖片方式渲染替代原有的DOM渲染,此時數(shù)據(jù)信息和水印信息融合為一個原子節(jié)點,無法單獨刪除。
4)信息差手段:每個數(shù)據(jù)產(chǎn)品的頁面均混合部署多套水印方案,通過虛實結(jié)合(可見水印、不可見水印)的方式確保不法分子無法完全刪除掉頁面中的水印。
除了以上攻防手段,我們還在進行一些新型水印生產(chǎn)及部署方向的研究,目的是從更本質(zhì)的方面對水印進行加固同時降低水印對產(chǎn)品的視覺侵入,目前具備可行性的是邊緣水印(將水印的生產(chǎn)和部署在客戶端進行,強化水印和頁面內(nèi)容的融合)和血緣水印。
數(shù)據(jù)監(jiān)控
監(jiān)控在數(shù)據(jù)產(chǎn)品中不僅是生產(chǎn)安全的重要部分,同時也是數(shù)據(jù)安全的重要保障,通常的監(jiān)控主要關(guān)注 JS 報錯和 API 接口報錯,但數(shù)據(jù)產(chǎn)品需要對數(shù)據(jù)邏輯進行監(jiān)控,例如用戶正在分析自己商業(yè)數(shù)據(jù),突然實時數(shù)據(jù)顯示利潤劇烈下跌,這很容易造成用戶的恐慌。
我們在完成了監(jiān)控平臺 Clue 的基礎(chǔ)建設(shè)上同時也在做很多數(shù)據(jù)場景的垂直建設(shè):
**非法環(huán)境識別
**
因為有數(shù)據(jù)透出,總是有黑灰產(chǎn)不斷生長。他們通過第三方插件爬取數(shù)據(jù)接口,對數(shù)據(jù)進行非法匯總和反推,這時就需要對用戶使用產(chǎn)品的瀏覽器環(huán)境進行檢查,為打擊黑產(chǎn)提供法律依據(jù)。針對這種場景我們會對部分原生 API 進行數(shù)字指紋加持,通過特征匹配,定位非法插件。
診斷報警
監(jiān)控平臺中報警的及時性和準確性是重中之重。對于數(shù)據(jù)展現(xiàn)來說,某些數(shù)據(jù)趨勢跌 0 對于大客戶和來說一定是出現(xiàn)了問題,但對一些小眾客戶或行業(yè)來說,部分指標的跌 0 可能是正常表現(xiàn)。因此,我們需要抽取指標信息、行業(yè)信息、大促信息等在內(nèi)的多種特征對報警模型優(yōu)化,通過報警信息的反饋機制不斷的對報警模型持續(xù)優(yōu)化,通過模型預(yù)測的方式對報警閾值進行動態(tài)調(diào)整,促使報警逐漸趨于準確。
寫在最后
未來,數(shù)據(jù)與智能占據(jù)了風口。依靠著云上計算能力,提供強大的渲染與數(shù)據(jù)分析能力。在流程研發(fā),分析洞察,科學決策等方面都是體驗技術(shù)發(fā)揮至關(guān)重要力量之處。倚靠業(yè)界和學界前沿方向探索,數(shù)據(jù)體驗技術(shù)圍繞數(shù)據(jù)應(yīng)用的全生命周期進行建設(shè)和打造,數(shù)據(jù)的未來是星辰大海,望有志之士一同前來創(chuàng)造未來!
你99%的儲存實力,只差這1%的簡歷投遞——數(shù)據(jù)技術(shù)及產(chǎn)品部【數(shù)據(jù)平臺技術(shù)與設(shè)計-體驗技術(shù)團隊】招人進行中,期待與你一起用創(chuàng)意與代碼為世界做出些許改變。郵箱 arcthur.cheny@alibaba-inc.com
原文鏈接:https://developer.aliyun.com/article/768560?
版權(quán)聲明:本文中所有內(nèi)容均屬于阿里云開發(fā)者社區(qū)所有,任何媒體、網(wǎng)站或個人未經(jīng)阿里云開發(fā)者社區(qū)協(xié)議授權(quán)不得轉(zhuǎn)載、鏈接、轉(zhuǎn)貼或以其他方式復(fù)制發(fā)布/發(fā)表。申請授權(quán)請郵件developerteam@list.alibaba-inc.com,已獲得阿里云開發(fā)者社區(qū)協(xié)議授權(quán)的媒體、網(wǎng)站,在轉(zhuǎn)載使用時必須注明"稿件來源:阿里云開發(fā)者社區(qū),原文作者姓名",違者本社區(qū)將依法追究責任。 如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,歡迎發(fā)送郵件至:developer2020@service.aliyun.com 進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的星辰大海:阿里数据体验技术揭秘!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初次使用 Elasticsearch 遇
- 下一篇: 蚂蚁集团网络通信框架 SOFABolt