StarRocks案例
本項目由StarRocks投遞並參與“數據猿行業盤點季大型主題策劃活動——《2022中國企業數智化轉型升級創新服務企業》榜單/獎項”評選。
在傳統的保險售賣場景中,保險公司主要通過承保利潤和投資收益兩部分獲得盈利,而保險金融的行業特殊性致使保司對公司整體的數據、安全、風控等持有高度敏感性,因此一款保險産品從市場投放到銷售、核保及理賠,每個環節都需要嚴格監測業務走向和數據變化。
並且隨著時間的沉澱和業務拓展,保司所涉及和積累的相關數據越來越多,其中既包含保司自營的業務數據,也有合作渠道的電商銷售、醫療健康等數據以及第三方的信貸評級、核保風控等數據。在日益激烈的市場競爭和技術變革這兩大背景下,基于大數據、人工智能等技術的商業模式創新,以及數字化轉型升級已經成爲保險機構的必然選擇。
因此在以上背景下誕生了專門針對保險金融行業的相關技術和産品,通過大數據、人工智能等相關技術加持,保障保司在每個業務環節中做到費用可控數據可經營的目的。常見的例如營銷場景中的渠道投放、用戶觸達、活動監控;信貸場景中的授信、支用、還款、防止逆選擇風險等場景。
當然面對保險金融行業如此大的數據量和業務複雜度,既有挑戰也有機遇,但需要將這些數據進行充分整合並有效利用,才能更好地使其轉換爲企業自己的數據資産,從傳統的運營方式過渡到數字化在線經營。讓數字反映出真實的運營狀況,及時控制産品風險和調整策略,以實現保費收入的正向利潤,達到精細化運營。
衆安保險作爲一家互聯網保險公司,海量保單規模背後離不開科技能力支撐,在“保險+科技”雙輪驅動下,衆安將自身沉澱的保險科技能力和先進的商業模式向行業和海外輸出。催生出數字化轉型中專門針對業務數據管理和分析的系統産品——集智。
集智是衆安保險的一款可視化智慧經營分析平台産品,集成了人工智能+商業智能+可視化數據倉庫技術,智能整合來自不同場景的數據,規範企業數據池,完成繁雜的數據治理和智能決策環節。
集智秉著“助力企業實現智慧經營”的願景和“從數據到價值,從看見到預見”的理念,依托豐富的可視化圖表組件以及底層的大數據處理能力,實現零代碼拖拽式分析與億級數據的秒級響應,幫助企業戰略規劃⼈員、財務企劃人員、銷售管理人員、業務運營人員及數據人員等全面提升信息效率、資源效率及決策效率。
實施時間:
開始時間:2022年1月12日
上線完成:2022年3月29日
業務遷移:2022年4月20日
系統集成:2022年5月10日
截止時間:2022年5月30日
客戶的數智化(數字化)轉型升級需求
目前在衆安保險內部,數字生活、健康險、金融、直營、車險各個業務線,以及 HR、運管、風控等中後台部門,超過3000人都在使用集智平台,平均日活可達2000+,提升超過50%的數據分析效率,降低了公司40%的人力成本。
一款好的數據分析産品離不開底層的數據引擎,集智平台的幾大使用場景對底層的數據架構提出了不同的要求:
可視化分析→需要有豐富的函數庫支持不同類型圖表的數據計算;
交互式分析→需要分析結果的快速響應來保障用戶流暢的分析思路;
多維透視分析→需要大數據量的明細數據來支撐不同維度的篩選和下鑽;
實時數據分析→需要支持數據的實時寫入、實時查詢。
針對上述的幾個需求,衆安保險在平台建設的初期選用了ClickHouse作爲底層統一的OLAP引擎,數據鏈路如下:
離線的數據會通過DataX統一采集到MaxCompute或Hive數倉,在離線數倉內部完成數據ETL的工作,數據加工完成後,再次經由DataX輸出到 ClickHouse中,ClickHouse中的數據直接提供給看板或者第三方系統做數據查詢。
實時的數據會通過Binlog監聽或者日志采集工具同步到Apache Kafka,再經由Apache Flink完成實時的數據ETL,最終落到ClickHouse中。值得一提的是,這裏爲了應對一些業務場景中數據需要實時按主鍵更新需求,衆安保險采用了ClickHouse的Replacing Replicated MergeTree引擎。由于ClickHouse對數據更新操作的支持還不夠成熟,因此在使用Replacing引擎的過程中遇到很多問題,這也是衆安保險尋求新的OLAP技術選型的主要原因。
面臨挑戰
集智上線後采用的是ClickHouse,並且已經伴隨業務運行了一段時間,但隨著使用平台的用戶日漸增多,業務方需要查詢的數據量也越來越大,業務場景變得複雜後,很多特定場景ClickHouse無法滿足,面對不同人員角色的需求時也遇到一些瓶頸。同時衆安保險分別從業務用戶的角度,以及平台運維的角度發現了以下問題:
從用戶角度
一頁分析看板上往往有6-8個圖表,這些圖表的查詢請求都是同時發給ClickHouse的。但是在多並發的場景,ClickHouse的查詢性能下降的很快,平時一個1-2s左右的查詢,在8個並發下就可能把CPU吃滿,平均響應時間退化4倍左右,降到8-10s,對看板的首頁加載時間,以及交互分析的體驗影響都比較大;
平台支持數據表的關聯查詢,但是ClickHouse的多表關聯查詢性能欠佳,涉及Join的查詢往往都需要10s以上,數據量大的查詢甚至直接超時無法返回結果。
從運維角度
ClickHouse不支持事務性的DDL與DML操作,而且多副本模式的元數據管理強依賴于Apache ZooKeeper,表結構變更時常常出現不同副本之間元數據不一致的問題,往往定位到最後都是Apache ZooKeeper的原因,排查、運維的成本都比較高;
隨著數據量的增多,集群需要擴容時,ClickHouse缺少自動的Resharding機制,橫向擴容時需要借助第三方工具或者手動Reshard,成本比較高。
針對前面提到的實時場景,衆安保險在使用ClickHouse的Replacing引擎中也遇到一些痛點:
查詢慢,Replacing引擎使用的是Merge-On-Read的模式,數據寫入時保存多個版本,在查詢時需要指定FINAL關鍵字進行去重取出最新版本的數據。這導致對于Replacing引擎表的查詢,SQL中的謂詞無法下推,同時在低版本的ClickHouse中,對于FINAL語義的查詢也不支持多線程處理,幾乎每次查詢都需要單線程掃描全表數據,涉及Replacing引擎的查詢響應時間往往在10s以上;
Replacing引擎只支持數據的更新,並不支持數據的刪除。對于Delete操作,當前的做法是通過額外字段來標記當前數據是否已經被刪除,同時借助TTL 功能來定時清除已經被刪除的數據。這樣一方面需要額外的定制處理,另一方面新增的標記字段進一步拖慢了查詢的性能;
Replacing引擎只能對同一分片上同一分區的數據去重,這意味著衆安保險在設計表分區時,以及寫入數據時,都需要做小心的處理,增加了開發的成本。
上面描述的問題中,有一些涉及ClickHouse底層的缺陷,有一些場景利用ClickHouse提供的其他引擎或者Materialized View等特性可以做一些定制的優化,但是掣肘于平台分析查詢場景的多樣性,衆安保險很難做一些通用性的優化。
實時數倉的場景對OLAP引擎提出了許多挑戰,也是之前衆安保險基于ClickHouse架構遇到的一大難題場景;
業務同學需要根據實時看板隨時調整投放策略,要求看板數據實時更新,快速響應;
實時看板的查看頻率比離線看板普遍高出3-5倍,並且查詢結果無法做緩存處理;
爲了聯合查詢不同主題的數據,DWS層的寬表之間往往還需要在OLAP層做關聯操作;
爲了滿足多維分析的需求,落在OLAP層的是明細數據,數據量大;
爲了保障數據的可維護性與數據快速修正的能力,這些明細數據需要支持按主鍵更新。
本就不擅長多並發與多表關聯查詢的ClickHouse,再疊上Replacing引擎的 Debuff,導致許多實時的看板常常需要十幾秒才能返回查詢結果,不能很好地滿足業務的需求。同時給集群的CPU負載也造成了不小的壓力,有時會造成集群整體查詢性能的波動。
數據支持
衆安保險搭建了包含數據倉庫、數據工具以及前端支持的成熟的數據處理體系,支撐每日上億數據量的處理。衆安服務超過5億用戶,累積出具約427億張保單,平均日新單承保近2000萬,平均日批單量60多萬,平均用戶訪問日志2億多條,用戶訪問請求量每秒30多萬,數倉日處理任務2萬多個。這些數據既有保單數據、埋點數據,也有來自第三方的數據,經過脫敏、采樣、數據訪問控制,在智能資源調度平台進行調度,構建從ODS到EDW再到DM的數據倉庫分層,形成用戶、保單、理賠、産品、視圖等模型,在DM層形成壽險、意外險、健康險、車險、農險、企財險、家財險、信用險、責任險等行業數據模型,依托數據管理體系與數據流通體系,在保證數據質量的同時,快速響應業務需求。
應用技術與實施過程
StarRocks是一款高性能分析型數據倉庫,使用向量化、MPP架構、可實時更新的列式存儲引擎等技術實現多維、實時、高並發的數據分析。StarRocks既支持從各類實時和離線的數據源高效導入數據,也支持直接分析數據湖上各種格式的數據。StarRocks兼容MySQL協議,可使用MySQL客戶端和常用BI工具對接。同時StarRocks具備水平擴展,高可用,高可靠,易運維等特性。廣泛應用于實時數倉、OLAP報表、數據湖分析等場景。
衆安保險通過調研發現,對于許多遇到的痛點,StarRocks都提供了對應的解決方案:
1、支持數千用戶同時分析,支持高並發,部分場景每秒可支持高達1萬以上的QPS,TP99可控制在1秒以內;
2、支持Shuffle Join,Colocate Join等多種分布式Join方式,通過CBO優化,可以自動選擇性能最優的查詢計劃,多表關聯性能更優;
3、支持事務性的DDL與DML操作,兼容MySQL協議。StarRocks整體對外暴露的是一個MySQL協議接口,支持標准SQL語法。用戶通過已有的MySQL客戶端能夠方便地對StarRocks裏的數據進行查詢和分析;
4、StarRocks的架構簡潔,整個系統的核心只有FE(Frontend)、BE(Backend)兩類進程,不依賴任何外部組件,方便部署與維護。同時,FE和BE模塊都可以在線水平擴展,元數據和數據都有副本機制,確保整個系統無單點;
5、數據支持多副本機制並且支持自動均衡,集群隨業務增長水平擴展方便,支持在線擴縮容,不影響業務使用。
對于實時的場景,StarRocks在1.19版本發布了Primary Key模型。對比ClickHouse的Replacing引擎與StarRocks自身的UniqueKey模型,Primary Key模型通過在內存中維護主鍵索引,支持頻繁實時更新的同時,保證同一個主鍵下僅存在一條記錄,解決了Merge-on-Read方式讀取時在線合並,並且謂詞無法下推和索引失效的問題。通過犧牲微小的寫入性能和內存占用提升了查詢的性能,非常符合衆安保險實時數倉的場景。
調研之後,衆安保險也對StarRocks和ClickHouse,使用SSB數據集做了相應的性能對比測試。一共使用到四台8c32g的機器:StarRocks 1FE/4BE混部,ClickHouse兩分片雙副本。StarRocks使用的版本是2.1.0,ClickHouse使用的版本是21.9.5。測試中爲了屏蔽掉系統緩存的影響,對于無並發的場景,每次查詢前都會通過往drop_cache文件中寫入來清除緩存。
測試的結果驗證了StarRocks在多並發與多表關聯場景下強悍的性能,同時也發現了目前StarRocks不足的一些地方:
單表無並發的場景,除個別SQL外,StarRocks的查詢速度與ClickHouse基本持平,但是StarRocks的CPU負載偏低,是ClickHouse的25%-50%;
單表多並發的場景,除個別SQL外,StarRocks的平均查詢速度比ClickHouse快1.8倍;
多表關聯無並發的場景,StarRocks平均比ClickHouse快1.8倍;
多表關聯多並發的場景,StarRocks平均比ClickHouse快8倍;
數據實時寫入實時查詢的場景,不同的查詢場景下,StarRocks的Primary Key模型查詢速度比ClickHouse的Replacing引擎快3-10倍,且查詢性能較ClickHouse更加穩定(Replacing引擎由于後台不斷地Merge操作,查詢的性能會隨底表數據量的起伏對應地波動);
數據批量導入的場景,衆安保險比較了不同批次大小下的寫入性能,StarRocks的寫入速率平均比ClickHouse要慢20%-30%左右。
基于上述的幾點考慮與測試的結果,衆安保險決定在平台的OLAP架構中引入StarRocks,並優先在實時數倉的場景落地應用。
在集智平台的實時數倉裏,業務庫的Binlog數據與日志、事件數據會首先經由采集工具發送到Apache Kafka裏,中間通過Apache Flink完成初步的數據清洗、轉換,再次輸出到Apache Kafka作爲DWD/DIM層。這一層的數據再次經過Apache Flink處理,完成數據的關聯、聚合,最後在DWS層生成不同主題的多維度明細寬表與指標彙總寬表。DWS層的寬表會同時實時同步在OLAP引擎裏,通過實時看板提供給業務同學查詢。
在上述數據流轉過程中,借助于StarRocks提供的多種導入與連接方式,可以很好地滿足數據寫入與查詢的需求。
(1)數據導入層面:
a.存儲在Apache Kafka中的實時數據,可以通過StarRocks的routine load直接消費Apache Kafka的數據,不依賴Apache Flink/Apache Spark等流式處理系統;
b.存儲在Hadoop或S3中的離線數據,可以通過StarRocks的broker load等方式,大批量的將數據同步拉取到StarRocks中;
c.對于本地數據文件,或者存儲在內存中的數據,可以使用基于HTTP協議的Stream load方式,將數據導入到StarRocks中;
d.對于DataX、FlinkX、Apache Seatunnel等數據同步工具,StarRocks也開發了一些插件,可以通過這些同步工具,將其他數據源的數據,批量通過到StarRocks中。
(2)流式系統兼容
a.StarRocks開發了Flink-connector插件,支持Apache Flink將數據sink到StarRocks中;
b.StarRocks有spark-connector,Apache Spark可以批量讀取寫入StarRocks的數據;
(3)StarRocks還支持MySQL、ElasticSearch、Apache Hive等系統的聯邦查詢,StarRocks遠程讀取這些系統中的數據,在內部再進行Join等內部處理操作;
(4)StarRocks的查詢接口兼容MySQL協議,使用MySQL Connector就可以對接查詢StarRocks,因此上層各類BI應用,只要能對接MySQL,基本就可以對接StarRocks。
衆安保險使用 StarRocks的Primary Key模型來替換ClickHouse的Replacing 引擎,針對線上的實時看板,衆安保險模擬了真實的場景,選取了一個4張寬表關聯的複雜查詢,對兩種不同的引擎做了對比測試,結果如下:
從結果中可以看到,在沒有並發的場景下,StarRocks的查詢速度是ClickHouse的2倍左右,在多並發的場景下,StarRocks的查詢速度是ClickHouse的3-3.5倍左右。
除了查詢性能提升之外,Primary Key模型也可以支持數據的刪除,並且不用數據開發額外地維護分片與分區的寫入規則,降低了數據開發的成本。
從以上的調研和測試結果來看,StarRocks的單表查詢性能和ClickHouse不相上下,在多並發與多表關聯查詢的場景下性能明顯優于ClickHouse,特別是針對實時數倉的高頻更新場景,StarRocks的Primary Key模型能很好地解決ClickHouse的Replacing引擎遇到的一些痛點。此外,StarRocks DDL/DML和數據導入具備事務保證,兼容MySQL協議,集群相對ClickHouse也更容易運維,對于研運同學來說更加友好。
基于上述方案,衆安保險在集智平台引入StarRocks,支撐理賠風險洞察、精細化運營分析、營銷實時效果追蹤等方面的應用,賦能戰略決策人員、財務企劃人員、營銷管理人員、數據運營人員、數據分析人員。
爲了提升集智在查詢加載方面的性能,同時將StarRocks極速查詢及高並發相關能力更好地賦能給業務同學,集智在産品側深度集成了StarRocks,用戶可以在平台上快速完成一站式的實時看板搭建。
在集智平台中,搭建一個分析看板前需要先創建數據模型,當數據開發同學面對業務方較爲複雜或查詢量較大的分析需求時,可在創建數據模型時選擇StarRocks的優化方式,除了基礎的索引字段、數據分布字段以及時間分區等字段外,還可選擇對應的模型引擎以及填寫數據保留的時長。
實時模型創建成功後,用戶可以在模型的詳情頁拿到對應的StarRocks表連接信息,以及自動生成的Flink SQL Sink語句。
之後,用戶可以在平台的數據ETL模塊新建一個實時Apache Flink任務,往對應的實時模型中寫入數據。
數據寫入模型之後,用戶就可以在搭建看板時使用了,可以在模型上做一些字段的數據格式調整、字段編輯、基于原始字段新增複合字段等操作,以及圖表樣式的調整,滿足業務方不同場景下的業務口徑與展示需求。
看板搭建完成後可以進行發布操作生成一個固定鏈接,就可以提供給業務同學使用。
商業變化
衆安保險集智平台通過引入StarRocks解決了極速查詢和高並發等數據問題,提升了集智平台整體的數據支持能力和市場競爭力,全面升級數字化經營能力。
以保險産品中線上渠道投放場景爲例,當保險産品開始對外發售前後,市場人員會將産品投放到多個渠道進行推廣曝光,通過經營的核心報表實時核算每個渠道的投放成本以及其對應的ROI,根據數據表現情況實時調整投放策略,控制渠道營銷流程中的獲客單價和投放費用。
因此數據反饋的快慢也會決定業務人員在定位問題、調整策略等事件上是否占據最佳時機。
而集智使用StarRocks的模型作爲實時報表的底層數據支撐後,在業務場景中的數據查詢表現會怎麽樣,以下爲真實場景測試結果:
(1)在報表數據加載速度方面:過去業務方打開報表需要加載10s+,常常因爲打開速度過慢致使業務偶爾在關鍵節點上無法及時得到事故反饋,導致投放成本難以控制,嚴重影響後續的投放策略;
而使用StarRocks後加載速度只需3s左右,這樣的響應速度讓業務同學可以很快抓准業務實時的變動節點,及時對活動策略做出調整優化。
(2)在查詢數據量支持方面:過去使用ClickHouse的實時更新模型只能支持較爲有限的數據量,更大數據量的實時更新+查詢常常超時,嚴重影響業務進展,也會因此錯過一些關鍵時機;
而使用StarRocks後可支持近億級數據量,能夠適配更多大數據量下的業務場景,同時也能更好地維持業務穩定性,增加了業務同學對平台的信任和粘性,大大地提高了生産效率。
關于企業
·StarRocks
StarRocks創立兩年多來,一直專注打造世界級的新一代極速全場景MPP數據庫,幫助企業建立“極速統一”的數據分析新範式,助力企業全面數字化經營。
當前已經幫助騰訊、攜程、順豐、Airbnb 、滴滴、京東、衆安保險等超過 110 家大型用戶構建了全新的數據分析能力,生産環境中穩定運行的StarRocks服務器數目達數千台。
2021 年 9 月,StarRocks源代碼開放,在Github上的星數已超過3000個。StarRocks的全球社區飛速成長,至今已有超百位貢獻者,社群用戶突破5000人,吸引幾十家國內外行業頭部企業參與共建。
·衆安保險
衆安保險作爲一家互聯網保險公司,秉持“科技驅動金融,做有溫度的保險”的使命,從用戶的互聯網生活切入,滿足用戶多元化的保障需求,爲用戶創造價值。區別于傳統保險公司的運營模式,衆安保險業務流程全程在線,不設任何分支機構,通過互聯⽹進⾏承保和理賠服務。
衆安在線財産保險股份有限公司(以下簡稱“衆安”)是中國首家互聯網保險公司,于2013年11月6日揭牌開業,2017年9月28日在香港聯交所主板上市,股票代碼爲6060。
衆安總部位于上海,不設任何分支機構,完全通過互聯網展業。由“保險+科技”雙引擎驅動,衆安專注于應用新技術重塑保險價值鏈,圍繞健康、數字生活、消費金融、汽車四大生態,以科技服務新生代,爲其提供個性化、定制化、智能化的新保險。
網上保險買衆安,5億用戶的選擇。截至2021年底,衆安服務超過5億用戶,累計出具約427億張保單。
在科技賦能保險的同時,衆安將經過業務驗證的科技對外輸出。2016年11月,衆安成立全資子公司衆安信息技術服務有限公司(以下簡稱“衆安科技”),將技術方案産品化,向海內外市場輸出科技産品和行業解決方案。截至2021年底,衆安的科技輸出累計服務企業客戶數超過600家,海外合作夥伴包括日本財産保險公司SOMPO、東南亞領先的O2O平台Grab、新加坡綜合保險機構Income等知名企業。
以“科技驅動金融 做有溫度的保險”爲使命,秉承“簡單、快速、突破、共贏”的價值觀,衆安將繼續乘風破浪,砥砺前行,開啓真正的新保險時代。