Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
表格存儲(Table Store)是阿里云自研的NoSQL多模型數(shù)據(jù)庫,提供PB級結(jié)構(gòu)化數(shù)據(jù)存儲、千萬TPS以及毫秒級延遲的服務能力。在實時計算場景里,表格存儲強大的寫入能力和多模型的存儲形態(tài),使其不僅可以作為計算結(jié)果表,同時也完全具備作為實時計算源表的能力。
https://help.aliyun.com/product/27278.html
通道服務是表格存儲提供的全增量一體化數(shù)據(jù)消費功能,為用戶提供了增量、全量和增量加全它量三種類型的分布式數(shù)據(jù)實時消費通道。實時計算場景下,通過為數(shù)據(jù)表建立數(shù)據(jù)通道,用戶可以以流式計算的方式對表中歷史存量和新增數(shù)據(jù)做數(shù)據(jù)消費。
https://yq.aliyun.com/articles/692516
利用表格存儲存儲引擎強大的寫入能力和通道服務完備的流式消費能力,用戶可以輕松做到數(shù)據(jù)存儲和實時處理all in one!
Blink是阿里云在Apache Flink基礎(chǔ)上深度改進的實時計算平臺,同F(xiàn)link一致Blink旨在將流處理和批處理統(tǒng)一,但Blink相對于社區(qū)版Flink,在穩(wěn)定性上有很多優(yōu)化,在某些場景特別是在大規(guī)模場景會比Flink更加穩(wěn)定。Blink的另一個重大改進是實現(xiàn)了全新的 Flink SQL 技術(shù)棧,在功能上,Blink支持現(xiàn)在標準 SQL 幾乎所有的語法和語義,在性能上,Blink也比社區(qū)Flink更加強大,特別是在批 SQL 的性能方面,當前 Blink 版本是社區(qū)版本性能的 10 倍以上,跟 Spark 相比,在 TPCDS 這樣的場景 Blink 的性能也能達到 3 倍以上[1]。
https://help.aliyun.com/product/45029.html
從用戶技術(shù)架構(gòu)角度分析,結(jié)合表格存儲和Blink可以做到:1. 存儲側(cè),使用表格存儲,則可以做到寫一份數(shù)據(jù),業(yè)務立即可見,同時原生支持后續(xù)流式計算消費,無需業(yè)務雙寫;2. 計算側(cè),使用Blink流批一體處理引擎,可以統(tǒng)一流批計算架構(gòu),開發(fā)一套代碼支持流批兩個需求場景。
本文就將為大家介紹實時計算的最佳架構(gòu)實踐:基于表格存儲和Blink的實時計算架構(gòu),并帶快速體驗基于表格存儲和Blink的數(shù)據(jù)分析job。
我們以一個做態(tài)勢感知的大數(shù)據(jù)分析系統(tǒng)為例,為大家闡述表格存儲和Blink實時計算的架構(gòu)優(yōu)勢。假如客戶是大型餐飲企業(yè)CEO,連鎖店遍布全國各地,CEO非常關(guān)心自己有沒有服務好全國各地的吃貨,比如臺灣顧客和四川顧客在口味評價上會不會有不同?自己的菜品是否已經(jīng)熱度下降了?為了解決這些問題,CEO需要一個大數(shù)據(jù)分析系統(tǒng),一方面可以實時監(jiān)控各地菜品銷售額信息,另一方面也希望能有定期的歷史數(shù)據(jù)分析,能給出自己關(guān)心的客戶變化趨勢。
用技術(shù)角度來解讀,就是客戶需要:1. 客戶數(shù)據(jù)的實時處理能力,持續(xù)聚合新增的訂單信息,能大屏展示和以日報形式展示;2.對歷史數(shù)據(jù)的離線分析能力,分析離線數(shù)據(jù)做態(tài)勢感知、決策推薦。
經(jīng)典的解決方案基本上基于Lambda大數(shù)據(jù)架構(gòu)[2],如下圖1,用戶數(shù)據(jù)既需要進入消息隊列系統(tǒng)(New Data Stream如Kafka)作為實時計算任務的輸入源,又需要進入數(shù)據(jù)庫系統(tǒng)(All Data如HBASE)來支持批處理系統(tǒng),最終兩者的結(jié)果寫入數(shù)據(jù)庫系統(tǒng)(MERGED VIEW),展示給用戶。
圖-1 Lambda大數(shù)據(jù)架構(gòu)
這個系統(tǒng)的缺點就是太龐大,需要維護多個分布式子系統(tǒng),數(shù)據(jù)既要寫入消息隊列又要進入數(shù)據(jù)庫,要處理兩者的雙寫一致性或者維護兩者的同步方案,計算方面要維護兩套計算引擎、開發(fā)兩套數(shù)據(jù)分析代碼,技術(shù)難度和人力成本很高。
利用表格存儲同時具備強大的寫入能力、實時數(shù)據(jù)消費能力,Blink + SQL的高性能和流批融合,經(jīng)典Lambda架構(gòu)可以精簡為下圖2,基于表格存儲和Blink的實時計算架構(gòu):
圖-2 基于表格存儲和Blink的實時計算架構(gòu)
該架構(gòu)引入的依賴系統(tǒng)大大減少,人力和資源成本都明顯下降,它的基本流程只包括:
https://www.atatech.org/articles/133106
介紹完架構(gòu),我們就來迅速開發(fā)一個基于TableStore和Blink的日報實時計算SQL,以流計算的方式統(tǒng)計每日各個城市的實時用餐單數(shù)和餐費銷售額。
https://ots.console.aliyun.com
2.在Blink開發(fā)界面,創(chuàng)建消費訂單源表、日統(tǒng)計結(jié)果表、每分鐘聚合視圖和寫入SQL:
---消費訂單源表 CREATE TABLE source_order ( id VARCHAR,-- 訂單ID restaurant_id VARCHAR, --餐廳ID customer_id VARCHAR,--買家ID city VARCHAR,--用餐城市 price VARCHAR,--餐費金額 pay_day VARCHAR, --訂單時間 yyyy-MM-dd primary(id) ) WITH ( type='ots', endPoint='http://blink-demo.cn-hangzhou.ots-internal.aliyuncs.com', instanceName="blink-demo", tableName='consume_source_table', tunnelName='blink-demo-stream', ); ---日統(tǒng)計結(jié)果表 CREATE TABLE result_summary_day ( summary_date VARCHAR,--統(tǒng)計日期 total_price BIGINT,--訂單總額 total_order BIGINT,--訂單數(shù) primary key (summary_date) ) WITH ( type='ots', endPoint='http://blink-demo.cn-hangzhou.ots-internal.aliyuncs.com', instanceName="blink-demo", tableName='result_summary_day', column='summary_date,total_price,total_order' ); INSERT into result_summary_day select cast(pay_day as bigint) as summary_date, --時間分區(qū) count(id) as total_order, --客戶端的IP sum(price) as total_order, --客戶端去重 from source_ods_fact_log_track_action group by pay_day;
使用表格存儲和Blink的大數(shù)據(jù)分析架構(gòu),相對于傳統(tǒng)開源解決方案,有很多優(yōu)勢:
1、強大的存儲和計算引擎,表格存儲除了海量存儲、極高的讀寫性能外,還提供了多元索引、二級索引、通道服務等多種數(shù)據(jù)分析功能,相對HBASE等開源方案優(yōu)勢明顯,Blink關(guān)鍵性能指標為開源Flink的3到4倍,數(shù)據(jù)計算延遲優(yōu)化到秒級甚至亞秒級;
2、全托管服務,表格存儲和Blink都全托管的serverless服務,即開即用;
3、低廉的人力和資源成本,依賴服務全serverless免運維,按量付費,避免波峰波谷影響;
篇幅原因,本文主要介紹了表格存儲和Blink結(jié)合的大數(shù)據(jù)架構(gòu)優(yōu)勢,以及簡單SQL演示,后續(xù)更復雜、貼近場景業(yè)務的文章也會陸續(xù)推出,敬請期待!
1. Blink解密,https://yq.aliyun.com/articles/689117
2. Lambda大數(shù)據(jù)架構(gòu),https://mapr.com/developercentral/lambda-architecture/
作者:竹千代_
.在用戶沒有與因特網(wǎng)連接時,可以正常訪問站點或應用。
2.在用戶與因特網(wǎng)連接時,更新用戶機器上的緩存文件。
原理:HTML5的離線存儲是基于一個新建的.appcache文件的緩存機制(不是存儲技術(shù)),通過這個文件上的解析清單離線存儲資源,這些資源就會像cookie一樣被存儲了下來。之后當網(wǎng)絡(luò)在處于離線狀態(tài)下時,瀏覽器會通過被離線存儲的數(shù)據(jù)進行頁面展示。
如何使用:
一、頁面頭部像下面一樣加入一個manifest的屬性;
二、在cache.manifest文件的編寫離線存儲的資源;
CACHE MANIFEST #v0.11 CACHE: js/app.js css/style.css NETWORK: resourse/logo.png FALLBACK: / /offline.html
離線存儲的manifest一般由三個部分組成:
1.CACHE:表示需要離線存儲的資源列表,由于包含manifest文件的頁面將被自動離線存儲,所以不需要把頁面自身也列出來。
2.NETWORK:表示在它下面列出來的資源只有在在線的情況下才能訪問,他們不會被離線存儲,所以在離線情況下無法使用這些資源。不過,如果在CACHE和NETWORK中有一個相同的資源,那么這個資源還是會被離線存儲,也就是說CACHE的優(yōu)先級更高。
3.FALLBACK:表示如果訪問第一個資源失敗,那么就使用第二個資源來替換他,比如上面這個文件表示的就是如果訪問根目錄下任何一個資源失敗了,那么就去訪問offline.html
三、在離線狀態(tài)時,操作window.applicationCache進行需求實現(xiàn)。
TML本地存儲有cookies、 localStorage 、sessionStorage、Web SQL、IndexedDB。
以下是它們的區(qū)別
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。