天天看點

基于TableStore的資料采集分析系統介紹

在網際網路高度發達的今天,ipad、手機等智能終端裝置随處可見,運作在其中的APP、網站也非常多,如何采集終端資料進行分析,提升軟體的品質非常重要,例如PV/UV統計、使用者行為資料統計與分析等。雖然場景簡單,但是資料量大,對系統的吞吐量、實時性、分析能力、查詢能力都有較高的要求,搭建起來并不容易。今天我們來介紹一下基于阿裡雲表格存儲,以及相關的大資料産品來采集與分析資料的方案。

TableStore(表格存儲)是阿裡雲自主研發的專業級分布式NoSQL資料庫,是基于共享存儲的高性能、低成本、易擴充、全托管的半結構化資料存儲平台,支撐網際網路和物聯網資料的高效計算與分析。

目前不管是阿裡巴巴集團内部,還是外部公有雲使用者,都有成千上萬的系統在使用。覆寫了重吞吐的離線應用,以及重穩定性,性能敏感的線上應用。表格存儲的具體的特性可以看下面這張圖檔。

基于TableStore的資料采集分析系統介紹

一個典型的資料采集分析統計平台,對資料的處理,主要由如下五個步驟組成:

基于TableStore的資料采集分析系統介紹

對于上圖流程的具體實作,網上有許多可以參考的案例,資料在用戶端采集完以後,如果量比較小,我們可能直接在後端的API上做一次透傳,然後持久化到RDBMS類型的資料庫中就好了,通過Sql可以進行資料分析。如果資料量很大,就需要一些中間件來輔助收集和上傳,然後分别将資料寫入到線上和離線的系統中,比如先上傳到Flume,Flume可以做資料的采集與聚合,再将Flume作為消息的生産者,将生産的消息資料通過Kafka Sink釋出到Kafka中,Kafka作為消息隊列的角色,可以對接後端的線上和離線計算平台。如下圖所示:

基于TableStore的資料采集分析系統介紹

引入Flume和Kafka的原因有很多,比如他們可以處理大流量的資料、做資料聚合、保證資料不丢失等,但最關鍵的原因是他們擁有高吞吐的能力。引入的元件多,系統的複雜性和成本也會相應的增加,上圖中,Spark Streaming/Storm分析完成以後,結果資料還需要引入另外的存儲元件進行存儲,比如HBase/MySQL,如果引入MySQL可能還需要再引入Redis做熱點資料緩存,這樣一來就更加複雜了。

我們嘗試一種基于TableStore和阿裡雲其他大資料産品的新方案,我們先看架構圖:

基于TableStore的資料采集分析系統介紹

圖中關鍵路徑分析:

1、Web頁、APP等用戶端先通過埋點系統收集資料,然後通過表格存儲的SDK将資料寫入TableStore的原始資料表。

4、TableStore中的資料可增量同步到Blink/Flink進行分析,分析完以後的資料再寫回TableStore的結果資料表中,DavaV讀取結果資料表的資料進行展示。

新架構優勢分析:

1、用戶端資料直讀直寫TableStore,不需要再引入API層進行資料透傳,降低了複雜度,對于大型應用來說也減少了不少的伺服器成本。

2、TableStore已經對接了豐富了大資料元件,包括阿裡雲的大資料産品和開源大資料産品,資料的同步與讀寫非常容易。

3、實時分析與離線分析後的結果資料再寫回TableStore,DataV直接讀取結果資料進行展示,因為TableStore具備高性能與高吞吐特點,不需要再引入Redis等緩存元件,可以簡化整個系統。

直讀直寫安全問題:

基于TableStore的資料采集分析系統介紹

浏覽器跨域通路TableStore:

如果在浏覽器端直接通路TableStore,由于浏覽器有同源政策的限制,會産生跨域問題。因為TableStore的EndPoint域名與使用者Web站點的域名不同。解決這個問題的思路有兩個:一是Web端不直接通路TableStore,改為先請求自己的Web Server端,Web Server端再使用TableStore SDK來發起請求,這樣其實就是後端通路了,問題解決了但也沒了我們直讀直寫的優勢;二是TableStore服務端通過某種方式直接支援js跨域請求,這條路我們正在支援當中,目前處于開發階段,支援的方式是cors協定支援跨域。但目前也有快捷的支援方式,如果您有浏覽器直接通路TableStore的需求,可以直接聯系我們,支援起來也很快。

繼續閱讀