在日前的2021阿里雲金融數據智能峰會——《雲原生驅動數智化運營的“增長黑馬”》專場上,阿里雲數據庫資深技術專家魏闖先 從數據價值鏈路角度切入,為大家解讀雲原生數據倉庫如何支撐數據化運營、全鏈路營銷和阿里集團雙11業務,並展示金融客戶最佳實踐案例和應用場景。本文內容根據演講錄音及PPT整理而成。
阿里雲數據庫資深技術專家魏闖先
一、背景與趨勢
(一)阿里巴巴15年雲計算實踐
回顧阿里巴巴十五年來雲原生髮展的道路,大致分為三個階段。
第一個階段是2006年~2015年的應用架構互聯網化階段,是雲原生從0到1的過程。最早的時候,阿里巴巴在淘寶上做中間件,那是最早的雲的雛形。當時我們研究的是Oracle數據庫和IBM的小型機。但阿里巴巴發現一個問題,就是隨著淘寶流量越來越大,Oracle的機器無法繼續滿足業務需求,三個月之後,我們的數據將存不下也算不了。這是非常嚴重的問題,所以當時阿里巴巴啟動了去IOE的計劃。
這個時候,阿里巴巴發現我們的業務做得非常好,但技術上有很多挑戰。因此,阿里巴巴在2009年成立了阿里雲,自研飛天操作系統,開啟雲化時代,淘寶和天貓合併建設業務中臺,屆時三大中間件核心系統上線。
飛天操作系統基於Apsara,是一個分佈式的操作系統。在基礎公共模塊之上有兩個最核心的服務:盤古和伏羲。盤古是存儲管理服務,伏羲是資源調度服務,飛天內核之上應用的存儲和資源的分配都是由盤古和伏羲管理。飛天核心服務分為:計算、存儲、數據庫、網絡。
為了幫助開發者便捷地構建雲上應用,飛天提供了豐富的連接、編排服務,將這些核心服務方便地連接和組織起來,包括:通知、隊列、資源編排、分佈式事務管理等等。
飛天最頂層是阿里雲打造的軟件交易與交付第一平臺----雲市場。它如同雲計算的“App Store”,用戶可在阿里雲官網一鍵開通“軟件+雲計算資源”。雲市場上架在售商品幾千個,支持鏡像、容器、編排、API、SaaS、服務、下載等類型的軟件與服務接入。
這就是最早的雲的基礎框架,也是一個雲原生的架構。
從2011年開始,我們開始做容器調度,在集團裡面開始做在線業務,在線的業務開始走容器化。到了2013年,自研飛天操作系統全面支撐集團業務。
2015年,阿里雲的雲原生技術不單是給阿里巴巴的內部業務使用,也開始對外做商業化,以上就是第一階段。
第二階段是2016年~2019年的核心系統全面雲原生化階段。
從2017年開始,我們不只做在線了,離線也全部採用了雲原生的技術。雙11購物節有大量的交易數據,這些數據的後臺分析和後期處理都是交給離線完成。我們基於雲原生把在線和離線的底層資源池統一,支撐百萬級規模電商交易。
到了2019年,阿里巴巴核心系統100%上雲,這其實非常難,因為阿里巴巴的業務量非常巨大,任何普通的系統都無法支撐。
第三階段是2020年至今,是全面升級下一代雲原生技術的階段。阿里巴巴成立雲原生技術委員會,雲原生升級為阿里技術新戰略。阿里巴巴核心系統全面使用雲原生產品支撐大促。阿里云云原生技術全面升級,Serverless時代開啟。
(二)阿里雲對於雲計算的斷言
阿里巴巴是怎樣看待雲計算的?雲計算和傳統技術的差別到底是什麼?
舉個例子,在一個家家戶戶都需要挖井的村莊裡,每家根據自家人口數量、大概需要的出水量、是否會有客人來等等因素,決定挖多寬的井。如果遇上家裡客人比較多或者乾旱了等狀況,水可能就不夠用了。除了挖井的成本外,日常維護這口井,也需要很高的成本。
上述場景映射到企業中,就是企業基於自己的IT基礎,還要到運營商那裡買個機房,買幾臺服務器來支撐自己的服務。如果後續這些機器閒置的話,企業仍然需要支付一大筆費用,成本非常高。
雲解決的問題就是通過虛擬化的技術實現資源池化,用上方挖井例子來形容就是建一個自來水廠。自來水廠和井的差別在於,第一,供水量很大,即使來100個客人,供水量也能滿足需求。第二,前期不需要投入大量成本去挖井,而是根據用水需求按量計費。即使接通自來水管道,如果不用,那麼永遠也不需要為它付費。
這為企業帶來了兩大好處,第一個是企業需要做快速決策的時候,不用花大量時間去“挖井”,而是開箱即用。第二是前期投入成本很低。
這就是雲帶來的好處,那麼什麼是雲原生呢?
雲原生是個標準服務,很多東西我們不需要提前規劃。比如我要做數字化轉型,需求很簡單。我需要有人給我提供這個服務,我要多少,他給我分配多少,不需要我去做提前的準備。隨著我業務的增長,它底下的基礎設施能夠隨之一起增長,具有非常好的彈性。這也大大地減少企業成本與精力,可以更加專注地去做最擅長的事情,大幅提升效率。
通過以上的例子,下面這幾點就非常好理解了。
首先,我們認為容器+K8s會成為雲計算的新界面,這是未來的一個趨勢。
其次,整個軟件生命週期也會發生變化。原來軟件的生命週期很長,現在通過雲原生的技術可以做到迭代速度越來越快,向下延伸軟硬一體化、向上延伸架構現代化等都可以去做。
最後,加速企業數字化升級。原來做企業數字化轉型非常複雜,可能要買機器、買數據庫、買應用,需要三年五載的時間來完成。而如今的企業數字化轉型,只花短短數月的時間,便可實現完全轉型。
(三)業界趨勢:數據生產/處理正在發生質變
從業界趨勢上看,未來數據會發生什麼變化,給應用帶來什麼變化?
首先,我們認為未來數據一定會規模爆炸性增長。2020年全球數據規模約為40 ZB。40 ZB是什麼概念?舉個例子,假設每部電影是1GB,假設全世界每個人都去看一部電影,那麼這些數據量加起來大概就是40ZB。
除此之外,我們預計2025年的全球數據規模將會是2020年的430%,全球數據規模每年都在增長。
第二個是數據生產/處理實時化。原先我們可能一個月看一次報表,經過大數據,我們可以每天看一次昨天的數據。數據越來越實時化,能夠實現秒級響應。以營銷場景為例,在雙十一購物節場景,當商家發現店鋪的某個活動不能產生效果,那麼可以在一分鐘或者數分鐘之內調整廣告或投放策略,從而達到更好的營銷效果。如果數據是按天反饋,在11月12日看到數據的時候,做活動帶來的效果已經大大降低了。因此,數據實時化在這樣類似的場景中,扮演著十分重要的角色,數據的實時也會帶來應用的實時。
第三是數據生產/處理智能化。目前在所有數據中,非結構化數據佔比80%,主要包括文本、圖形、圖像、音頻、視頻等,尤其是在當下熱門的直播領域,對非結構化數據進行智能化處理,能夠知道觀眾的喜好與其他信息,方便業務更好地開展。除此之外,非結構化數據以每年增加55%的速度持續增長,未來將成為數據分析非常重要的一個來源。
第四個是數據加速上雲。我們認為數據上雲勢不可擋,正如汽油車終將被電車代替一樣。預計到2025年的時候,數據存儲雲上規模為49%,2023年數據庫上雲規模75%。
(四)業界趨勢:雲計算加速數據庫系統演進
另一個業界趨勢不容忽略:雲計算加速數據庫系統演進。
首先我們看一下數據庫發展歷程。早在八九十年代數據庫就已經誕生,那時候主要是商業數據庫,如Oracle、IBM DB2等,這裡面有些數據庫還佔據這如今的市場。
到90年代,開源數據庫開始湧現,如PostgreSQL、MySQL等。國內用MySQL比較多,國外用PostgreSQL比較多。到90年代以後,數據量越來越大,原來數量小的時候可能用PostgreSQL或MySQL,單機就可以解決問題,隨著數據量爆炸性增長,就需要像分佈式或小型機的方式去解決大量數據和分析問題。
數據分析的重要性體現在哪裡?
舉個例子,有個數據倉庫Snowflake的公司在剛上市的時候就達到1000億美金的市值,如今也有700億美金,對於一個只做一款產品的公司來說,這是一個非常高的市值。為什麼它的市值這麼高?
前段時間和一位老師交流,他說對於現在的企業,尤其是電商或直播等互聯網企業,早先他們企業最大的成本是人力,員工工資佔據主要支出。但如今最大的支出是信息和數據,為了公司未來的發展規劃,需要擁有大量的數據來分析當前客戶最想要什麼,最需要什麼,業界的發展是什麼。因此,公司需要大量購買數據、做大量的數據分析,這方面的成本已經超過了人員成本。這也是為什麼一個只做數據倉庫的公司,市值能夠達到700億美金。
2000年以後大家開始用Hadoop、Spark,2010年開始出現雲原生、一體化分佈式等產品,例如AWS、AnalyticDB等。
(五)業界趨勢:數據倉庫加速從Big Data向 Cloud-Native + Fast Data 演進
上方是數據倉庫的演進歷史,計算方式從離線到在線,再到離在線一體化,然後到分佈式。功能從統計到AI,數據類型也從結構化到結構化與非結構化多模融合,負載從OLAP到HTAP,硬件也升級為軟硬件一體化,交付從On-Premise 到Cloud - Native + Serverless。
在演進的不同進程中,有著各式各樣的產品做支撐。
(六)數據庫系統架構演進
上圖為數據庫系統架構演進,簡單的邏輯可以理解為,原來是一個廠房一個人幹活,後來變成一個廠房十個人幹活,然後再發展成多個廠房多個人幹活,這就是整個數據倉庫的發展歷史,由原來的單機變成分佈式,並且一份數據多個人使用。
數據庫的發展也跟人類工作一樣,原來有的店夫妻二人就可以維持,一個人負責生產,另一個人負責銷售。隨著發展,店裡的顧客越來越多,店還是一個店,但員工可能有十個人了。再後來,業務發展更多大了,一下招10萬個員工,然後在10個場地去幹,這就是分佈式雲原生數據倉庫。
(七)業界趨勢:雲原生數據庫關鍵技術
上方是雲原生數據庫的關鍵技術。
這裡簡單說兩個技術,首先是雲原生,雲原生是什麼意思呢?假如某位用戶買了個數據庫,當業務量少的時候,或者在法定節假日不使用的時候,收費就少,而在業務量大的時候,收費就多一些。按需按量收費,這是我們對數據倉庫的一個要求。
另外一個是安全可信,舉個例子,阿里巴巴有一個投資部,假如給A公司投了500萬,給B公司投了100萬,這些信息都是高度私密,不可對外洩露的。假如這些信息是由員工進行管理,員工存在離職的可能,而一旦離職後發生洩密行為,這在法律層面也很難追責。如何讓這種高度私密的信息完全加密,使得就算是擁有最高權限的DBA也無法查看這類信息,做到安全可信。後文將對此做詳細展開。
二、雲原生與大數據應用
(一)業務面臨的挑戰
業務面臨著許多挑戰,主要有四個方面。
首先是數據散亂、不一致,也有非常多的數據源,把數據收集起來是一個很大挑戰。
其次是系統極其複雜,系統或組件有40+個。原來可能基於Hadoop,現在需要非常多的系統或組件,底下可能是HDFS,上面是YARN、HBase,再往上還有Hive、Flink等許多東西,非常複雜。
除此之外還有分析不實時,它的數據只能做T+1,是傳統大數據架構。
最後是高學習成本,不同技術的版本迭代速度很快,學習成本很高。
(二)雲原生數據倉庫+雲原生數據湖構建新一代數據存儲、處理方案
阿里雲當時採用的是從一個最簡單的架構,通過一個或兩個產品就能解決整套產品的架構,能夠讓用戶用得更簡單,用SQL就可以解決各種各樣的問題。比方原來的OSS數據,各個生產處理的數據大集中分析等。
(三)雲原生數據倉庫:雲原生
雲原生數據倉庫的雲原生特性主要體現在,如果就一條數據,那麼只會分配一條數據的存儲,如果數據量增長,它會自動分配更多的存儲。
同樣的,計算也是這樣,如果沒有計算需求或者分析需求,它不會分配資源,只有來了需求,才會分配資源進行計算或分析,整個做到按需按量付費,加上資源的彈性。
(四)雲原生數據倉庫:數據庫與大數據一體化
上面是雲原生數據倉庫中的關鍵技術,例如行列混存,能夠支持高吞吐寫入和高併發查詢。
其次是混合負載,就是上面既可以跑ETL,又可以做查詢。
此外還有智能索引。數據庫裡面很重要的一個點是需要理解業務,理解Index,要知道什麼對查詢有影響,什麼對寫入有影響,所以我們希望這個東西能夠做得更智能,讓用戶不用管理這些東西。
(五)新一代數據倉庫解決方案
上方為新一代數據倉庫解決方案架構圖。最底層是數倉,上面是數倉模型,阿里在淘寶指數,數據洞察等方面做了非常多的模型,包括通過一個ID把所有的信息關聯起來。這些信息匯聚成模型。模型上有數據構建管理引擎,可以做數倉規劃,代碼研發,數據資產管理,數據服務等。
最上面是業務賦能,有許多的應用,包括監管報送類,經營決策類,風險預警類和營銷與運營類。
(六)雲上數據安全
關於雲上數據安全的問題,我們展開來講。每個公司都有絕密的數據,這些數據面臨著許多安全問題,例如管理員/用戶越權操作,竊取數據備份,惡意修改數據等。除此之外,還有數據在存儲、查詢、共享過程中全程加密,任何人(包括管理員)無法獲取明文數據。保證日誌在不可信環境中的完整性,任何人(包括管理員)無法篡改日誌文件。保證查詢結果在不可信環境中的正確性,任何人(包括管理員)無法篡改查詢結果。
以前的解法很簡單,就是寫到數據庫的時候就把數據加密了,例如寫進去叫123,通過加密就變成了亂序,如213,312等。這個看似是一個很好的方法,但它有什麼問題呢?它沒有辦法做查詢,比方我們要查超過50塊錢的交易,但是因為50通過加密以後就不是50了,可能就變成了500,而原來500加密完就是50,因此這個查詢無法進行,相當於它變成了一個存儲,無法做分析查詢。
(七)雲端全程加密數據永不洩露
有沒有一種方法能讓我們做數據分析,同時既能保密,原來的SQL也都能去做?
這裡面核心的事情就是我們採用的硬件,通過ApsaraDB RDS(PostgreSQL版)+神龍裸金屬服務器(安全芯片TEE技術),可以提前把Key存到裡面去,然後所有的計算和邏輯都在加密硬件中進行。由於整個過程受加密硬件保護,即使有人把系統的內存全部複製出來,複製出來的數據也全是加密過的,這就保證運維人員就算拿到絕密數據也沒有洩露的風險。
三、最佳實踐
下面我們看一下幾個最佳實踐:
DMP:全鏈路營銷
DMP(Data Management Platform)表示數據管理平臺,也叫數據營銷平臺。
營銷最核心的事情是什麼?營銷最核心的事情是找人,找到最關心的一群人,專業詞稱為圈人。
舉個例子,什麼場景需要圈人?比如今天我們想找一下對雲原生感興趣的人來一起討論雲原生。把對雲原生感興趣的人找到,這個過程就叫圈人。
還有一種是類似於天貓淘寶報告,例如在雙十一前的一段時間,商家認為某位客戶今年可能要買個衣服或買一個包,是潛在客戶,於是就去給TA推一些消費券等。
這裡面最關鍵的就是精準人群的定位,能夠精準地把人群區分出來。中國大概有電商消費人群大概有8億人,給對某樣物品感興趣的人群推送消息,這裡面最核心的就是圈人的事情。
阿里巴巴基於數倉去做圈人的事情,首先去找一些種子人群,這些種子人群數量大概為幾百萬人,是我們認為的高優質客戶,比如每個月在淘寶上花5000塊以上或1萬塊以上的人。把人群全出來後,第二步是將群體進行聚類。
聚類的意思是把幾百萬人再分成幾個小類,每一類裡面可能喜歡一個類別,比方這一類喜歡買化妝品,另一類喜歡數碼產品,還有一類喜歡買書。劃分完小類以後,比如愛買化妝品的可能有10萬人,但這10萬人可能大部分之前已經買過化妝品了,這次大概率不買了。
因此,我們需要在在8億消費人群中找到真正可能買化妝品的人,該怎麼做呢?
我們需要把每個客戶的消費行為和歷史購買記錄轉成AI模型的一個向量,如果有兩位客戶的購買行為是類似的,那麼他們的向量距離就會非常小,這樣的話我們的做法就很簡單。例如,我們對數碼產品感興趣的人作為種子放到8億裡面去找,跟這些人種子向量距離最近的假如有1000萬人,然後對這1000萬人去發數碼產品的廣告或優惠券等,用這種方式去做業務營銷。
這個過程最核心的有幾個方面。
第一個是將人群進行聚類,把人群劃分,知道TA的歷史交易,數據必須要能夠支持任意維度多維分析。
第二個是能夠對整個數倉裡面的數據做具體的分析。
第三個是聚類後的向量近似度檢索,找出與每個類向量相近的人群進行消息推送。
這就是我們擁有的能力,目前是基於AnalyticDB實現。
還有一個事情是要做Ad-hoc查詢。例如,我們要找到對數碼感興趣的人群,,且去年沒有買過比如iPhone 12的人,這樣他今年才可能買iPhone12。或者說去年買了iPhone12,同時又買了AirPods的人,那我們認為大概率他可能會買蘋果的鍵盤,或者是蘋果的電腦等。我們需要對這些人做各種各樣的交易查詢,從而精準地找到我們的目標人群。
廣告精細化管理
業務挑戰:
1)投放關鍵詞搜索事件需要高併發實時入庫;
2)所有用戶通過儀表板同時查詢轉化率,複雜查詢 QPS高;
3)響應時間要求高,避免錯過調價黃金時段。
業務價值:
1)多個站點、多個店鋪的關鍵詞統一管理;
2)處理上萬TPS併發寫;
3)海量數據實時分析,按時段智能調價;
4)鍵詞快速識別分析,最大化收益。
在線電商
業務挑戰:
1)傳統MySQL數據庫分析滿,千萬級/億級複雜報表無法返回;
2)複雜報表秒級返回;
3)兼容MySQL生態;
4)業務發展迅速,對計算存儲有不同要求。
業務價值:
1)RDS + AnalyticDB 實現HTAP聯合方案,業務和分析隔離;
2)2-10倍分析性能提升;
3)分佈式架構,橫向擴展,靈活變配,支持數據量和訪問量的不同需求
這就是2020年至今,全面升級下一代雲原生技術的階段----Serverless時代。阿里巴巴成立雲原生技術委員會,雲原生升級為阿里技術新戰略,未來雲原生數據倉庫還會有更多新功能,為行業解決更核心的痛點,敬請期待。
相關閱讀: