天天看點

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

SLS提供對海量日志資料進行聚合計算的 分析能力(SQL) ,日志資料一旦寫入,使用者即可開箱即用地使用SQL進行計算分析,所見即所得。

一、痛點

使用者在使用SLS查詢分析時,當資料規模(100+億行記錄)越來越大,查詢時間範圍(30+天)越來越長時,可能會遇到“查詢結果不精确”或者直接“執行逾時”的尴尬;或者在中小資料規模(1~10億行記錄)下,希望擁有更高性能的分析能力,查詢延時更短,為了解決使用者的這類痛點和需求,我們推出“SQL獨享版”功能,為SLS分析提供加速能力。

二、實作原理

圖1是典型的分布式計算架構,存儲層負責資料的讀寫,計算層負責計算和分析。

SLS中将存儲層抽象為

分區(Shard)

,同時将計算層抽象為SQL,對使用者提供免費的計算資源,以實作查詢分析能力。

針對上述痛點,想要實作SLS的分析加速,從本質上來說,是要提升計算層的計算能力。在實踐和使用過程中,也産生了如下幾種實作方案,我們分享在此,并與SQL獨享版做對比,希望讀者更清楚地了解SQL獨享版的實作原理。

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

圖1

1、擴充分區(Shard)實作一定的計算能力擴充

當分析能力不夠的時候,我們可以通過手動分裂Shard來擴充一定的計算能力,如圖2所示

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

圖2

然而這種方式并非完美,存在諸多不足:

  • 首先,Shard分裂對曆史資料無法失效,隻對新寫入資料生效,當使用者對曆史存量資料進行統計分析,通常情況下使用者往往無法做到提前的準确規劃和部署
  • 其次,活躍Shard會産生額外的租用費用(詳見 《為什麼會産生活躍Shard租用費用?》 ),使用者為了少量的超大規模的查詢分析而長期持有大量活躍shard,對成本造成一定的浪費
  • 此外,Shard分裂對計算能力的擴充有限,其本質上是擴充存儲層的能力,計算層由于是多租戶分時租用,為了保障多租戶間的隔離性,會對單次查詢的計算資源做限制(如查詢并發數、掃描資料量等)
  • 最後,Shard分裂、合并操作均需要使用者手動處理,且僅對新資料生效,很難滿足使用者彈性多變的查詢分析需求

2、大查詢分割成多個小查詢,進行二次聚合

針對大規模資料無法計算精确的問題,很多有經驗的SLS使用者使用了這種方式:既然一次查詢計算不了,那就将單個大查詢切分成多個小查詢,然後再進行二次聚合,最終得出需要的分析結果。

但是這種方式弊端也很明顯:

  • 上層有維護和開發成本,需要儲存小查詢的計算結果,并進行二次聚合
  • 次元爆炸,業務的分析需求往往是複雜多變的,每當分析次元變化,都可能帶來二次聚合的變更成本
  • 資料規模本身非常大,切分粒度已經控制得很小了,但是計算仍然比較吃力

3、SQL獨享版,彈性擴充計算能力

上述兩種方式均不完美,為了真正解決使用者對計算資源的需求,我們提供了“SQL獨享版”功能,當使用者需要大規模計算分析能力的時候,為使用者提供彈性的獨享計算資源,實作真正的彈性擴充計算能力、按需使用。

圖3為SQL獨享版的實作原理,當使用者在查詢時開啟SQL獨享版後,SLS會根據本次查詢的實際計算需求,合理排程獨享資源參與計算,加速整個查詢分析過程。

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

圖3

相比以上兩種方式,SQL獨享版實作了真正的計算能力的彈性擴充,且有以下幾點優勢:

  • 計算資源彈性擴充,按需使用
  • 計算與存儲(Shard)無強制綁定,無需使用者提前規劃和運維管理
  • 突破免費資源的分時租用限制,享受獨享資源
  • 免除額外的開發和運維成本,不管什麼資料規模(從幾萬-千億級别),一條SQL幫您搞定分析,無需再做上層二次聚合

三、普通SQL和SQL獨享版的特性對比

下表列舉出目前普通SQL和SQL獨享版在各個次元上的對比:

普通SQL SQL獨享版
并發查詢數 單個Project支援的最大分析操作并發數為15個 單個Project支援的最大分析操作并發數為150個
掃描資料量 單個Shard單次僅支援分析1GB資料 單次分析最大支援掃描2000億行資料
計算資源

免費資源,分時租用有使用限制

與分區Shard數有一定的配比關系

獨享資源,資源上限由使用者自定義

與分區Shard數無綁定關系

費用 免費

目前公測免費

後續計劃根據實際使用的CPU時間付費,更多資訊,請參見計費項

更多增強特性,敬請期待。。

四、什麼場景下推薦使用SQL獨享版

我們推薦在遇到如下場景時,使用SQL獨享版:

  • 超大資料規模的計算分析(如SLS報“計算結果不精确”)
  • 曆史周期長且資料規模大的計算分析(如SLS報“execution timeout”)
  • burst高并發查詢(如定時告警、定時排程等,可能一次性同時觸發多個SQL請求,如SLS報“user can only run 15 query concurrently”)

五、使用實踐

為了讓讀者更真切地體會SQL獨享版,我們提供了一個1000+億行Nginx通路日志的

模拟環境

,供SLS使用者免費線上體驗,享受SQL增強帶來的極緻加速感。

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

接下來,我們分别在不同資料規模(1000+億、10+億、1+億)下示範SQL獨享版的使用實踐

我們使用上述模拟環境,選擇查詢時間段為3天,對1000億行日志資料進行計算分析,使用SQL測試用例如下:

* | select sum(request_length), avg(request_time), avg(upstream_response_time)      

1000+億資料規模下的計算分析

使用普通查詢

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

使用SQL獨享版

使用SQL獨享版非常簡單,隻需要在SLS控制台查詢頁面右側,點亮“SQL增強”按鈕即可。

如果您是開發者,使用SDK或者API調用,也可以開啟SQL獨享版,詳情請參考

GetLogs

的powerSql參數。

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

下表是普通SQL和SQL獨享版,在1000+億資料規模、同樣SQL下的執行表現對比:

提升效果
日志總條數 100,000,863,644
查詢狀态 查詢結果不精确 結果精确
掃描行數 9,084,644,562 10X
查詢時間 3,054ms 7,258ms 10倍資料掃描量,僅增加了1.38倍延遲
消耗CPU時間 392.759s 9,459.867s 23X

可以看到,開啟SQL獨享版後,能夠在7.3s内掃描1000+億行資料,并完成精确計算。相比普通SQL,計算結果精确、掃描行數提升10倍、運作CPU時間提升23倍,延時僅增加了1.38倍。

10+億資料規模下的計算分析

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考
SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

下表是普通SQL和SQL獨享版,在10+億資料規模、同樣SQL下的執行表現對比:

1,006,371,097
2,176ms 1,692ms 延時縮短了22%
60.18s 93.517s 提升了55%

1+億資料規模下的計算分析

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考
SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

下表是普通SQL和SQL獨享版,在1+億資料規模、同樣SQL下的執行表現對比:

123,306,893
1,036ms 831ms 延時縮短了20%
7.183s 11.021s 提升53%

結合上面三種不同資料規模下的使用實踐,可以看到,在超大資料規模(1000+億)下,SQL獨享版通過提供額外的獨享計算資源,可以完成普通SQL無法完成的精确計算任務,并大幅提升了計算效率;而在10+億和1+億資料規模下,普通SQL和SQL獨享版均可完成精确計算,但是SQL獨享版可以投入更多CPU資源(約50~55%)加速計算,使計算延時縮短20%左右。

控制和管理SQL獨享資源使用上限

在提供了SLS分析加速能力的同時,我們還貼心地為使用者提供了獨享資源使用上限(SQL獨享執行個體CU數)的設定,預設值1000,該值表示一次查詢可并發運作的任務數,它有效控制了計算核時的資源,避免意外造成的計算資源使用過量,産生不必要的費用。使用者可以前往目标Project的概覽頁面中進行自定義的配置。

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

進一步參考

歡迎釘釘掃群加入阿裡雲-日志服務(SLS)技術交流, 獲得第一手資料與支援

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

更多SLS的系列直播與教育訓練視訊會同步到B站,SLS的相關文章會同步到微信公衆号與知乎敬請留意

SLS分析加速-SQL獨享版實作原理和使用實踐一、痛點二、實作原理三、普通SQL和SQL獨享版的特性對比四、什麼場景下推薦使用SQL獨享版五、使用實踐進一步參考

繼續閱讀