一、引言
2020雙十一順利落下帷幕,這也是雲原生多模資料庫Lindorm參與的第九個雙十一,其作為阿裡經濟體的核心資料庫産品之一,全面支撐了淘寶、天貓、螞蟻、菜鳥、阿裡媽媽、高德、優酷、釘釘、大文娛等經濟體業務的結構化、半結構化資料存儲需求,今年更是為申通這樣的公有雲使用者保駕護航。
在今年的雙十一中,Lindorm整體峰值請求達到了8.8億次每秒,全天吞吐25萬億次,平均響應時間低于3ms,資料存儲量達400+PB,平均壓縮率達5:1,應用在阿裡集團、螞蟻集團、菜鳥、大文娛等各個業務闆塊,是目前為止公司内部資料體量最大、覆寫業務最廣的資料庫産品。
二、雲原生多模資料庫Lindorm
面對多模資料管理的應用需求和雲原生的技術趨勢,着眼于集團雲原生戰略、5G/IoT時代的未來發展,Lindorm在2020年全新更新為适用于任何規模、多種模型的雲原生資料庫服務,支援海量資料的低成本存儲處理和彈性按需伸縮,提供寬表、時序、搜尋、檔案等多種資料模型,相容HBase、Cassandra、Phoenix、OpenTSDB、Solr、SQL等多種開源标準接口,是網際網路、IoT、車聯網、廣告、社交、監控、遊戲、風控等場景首選資料庫。
Lindorm融合了阿裡巴巴過去十年在大規模寬表、時序存儲等領域的技術能力和經驗,同時今年重點在雲原生、多模融合、低成本等方向創新突破,進一步建構海量資料存儲處理場景的競争力,并通過集團雲原生上雲戰役,實作了一套産品同時服務内外客戶,提供穩定、高效、經濟的基礎資料庫服務。

三、Lindorm面臨的雙十一挑戰
3.1 擁抱雲原生
雲原生上雲帶來的基礎設施的雲化共池,不僅很好的解決成本與庫存孤島問題,也極大的提升了我們的運維效率,免去了過去複雜的IaaS運維開銷。同時雲原生三機房強一緻容災能力首次上線,并在過去一年進行了10+次的斷網演習,確定了機房級别的容災快恢能力,夯實了底盤能力的同時,内外一緻的産品技術棧也增強了我們服務公用雲客戶的信心。
實體機轉變到ECS的形态:ECS具備極強的故障自檢測恢複能力,借助于ECS的主動運維事件透傳,結合資料庫雲管控平台以及Lindorm核心的關聯,提前感覺潛在的ECS節點故障并自動處理下線,減小ECS當機對我們服務的影響。同時針對NC故障多台同叢集ECS受影響當機,我們提前感覺拓撲以及巡檢進行ECS的反親和性打散,避免NC故障導緻的故障半徑放大。
大規模上雲也面臨着海量資料搬遷的效率和穩定性挑戰,Lindorm在經濟内是衆多離線、線上業務資料互通很好的一個載體。業務搬遷透明無感覺、服務不中斷是我們的原則,在這過程中我們通過磨煉LTS(Lindorm Tunnel Service)産品能力解決多種異構産品之間無縫遷移的問題,使lindorm中存儲的海量資料真正的
靈動
起來。
3.2 存儲成本的挑戰
在Lindorm全面擁抱雲原生過程中,我們看到了基于雲存儲技術的多樣化的塊存儲、對象存儲等原子存儲能力,我們期望基于雲存儲資源建構新的資料庫存儲技術的形态,通過雲原生技術的虛拟化、彈性、按需使用等特質,實作存儲計算分離解耦,提高資源使用率,降低Lindorm的總體TCO。
同時,我們看到資料往往呈現出一定的活躍周期規律。将通路頻率低,生命周期長的的資料沉澱到低成本存儲中,并輔以更高壓縮比的壓縮政策來降低總體存儲成本。我們基于不同種類的雲存儲能力,将冷熱溫冰不同成本效益的存儲資源內建到一套系統中,建構一體化的存儲體驗。并提供基于使用者規則、基于智能判斷的政策,使得資料在Lindorm中可以自動進行冷熱分離。
3.3 核心鍊路高可用、穩定性的挑戰
目前Lindorm在集團生态體系下服務了大量核心場景,包括支付寶交易風控、花呗決策、消費記錄,GMV媒體大屏,Sunfire監控,手淘消息,阿裡小蜜,物流詳情等核心系統。與此同時,Lindorm也服務了大量的中小使用者,這些使用者成本更加敏感,業務的不可控性更多,很容易出現大查詢打爆實體資源,多業務互相影響等情況,造成使用者體驗變差。
過去HBase提供的容災恢複能力,單機當機時産生的影響會在3~5分鐘左右,在目前内部的可用性要求下,核心業務很容易出現故障。過去一年,我們從技術演進,部署形态和業務改造三方面全面推進Lindorm的高可用建設:
技術上:Lindorm持續進行可用性改造和演練,利用資料多記憶體副本能力,在故障發生時進行自動容災切換。雙機房最終一緻場景實作10秒内自動容災,三機房強一緻場景實作30s自動恢複。針對使用者經常出現的大請求,分區傾斜,單行熱點等場景,Lindorm核心側也開發了大請求排程,單region并發flush,熱點識别等能力,大大降低了因為使用者請求不合理造成的業務影響。
部署上:推進雲原生三機房強一緻容災,在使用者成本無增加的情況下保證了機房級斷網0 RPO,60s RTO。同時推出Serverless服務模式,多業務在資源上共享降低成本,通過限流,排程,彈性擴縮容等方式進行邏輯隔離,減少使用者之間的互相影響。
業務側:推動Hbase核心業務全面向Lindorm更新,目前全網的Lindorm規模10000+節點,全域的SLA服務能力大幅提升。
3.4 海量離線資料的批量導入性能的挑戰
如何在有限資源情況下支撐數倍流量增長是Lindorm資料回流場景在雙十一面臨的最大挑戰。一方面很多重要業務的批量導入任務在大促峰值期間會執行降級預案并持續數小時,業務峰值過後,導入任務在雙十一當天的産出時間仍然需要保障,是以很多任務需要以數倍的速度去追。另一方面導入叢集的日常水位已經接近飽和,CPU使用率超過80%,但整體上資源預算已經非常緊張,擴容所需資源缺口太大。為了應對這一挑戰Lindorm團隊打響性能攻堅戰役,對導入全鍊路進行優化疊代,最終實作4倍性能提升。特别的在大促當天,風控導入叢集資源不變,總量上漲百分之50的情況下,任務運作時間縮短為三分之一。
Lindorm支撐Velocity 2.0架構平穩度過雙十一,批量回流鍊路的極緻性能優化,為下一代風控業務發展保駕護航。在整個性能優化過程中團隊也沉澱了RowAwareHfileWriter,MultiClusterFSDataOutputStream等專利,陸續還會在CPU cache、異步化等方面釋出新的優化版本。
四、Lindorm全新關鍵技術
4.1 融合多模
過去原生的HBase隻支援KV結構的查詢,對于一些複雜的業務場景,如二級索引、搜尋、時序等需求,需要借用第三方元件組合實作,大幅增加業務的複雜度。
Lindorm支援寬表、時序、搜尋、檔案四種模型,提供統一聯合查詢和獨立開源接口兩種方式,模型之間資料互融互通,幫助應用開發更加靈活、靈活、高效。提供一處寫入,處處可用的能力。同時,Lindorm為開發者提供CQL Driver、Phoenix Driver、HBase API、HDFS API、OpenTSDB API、Solr API、Lindorm API、Lindorm SQL等多種通路方式,友善存量業務無縫切換至Lindorm,其核心能力由四大引擎提供,包括:
• 寬表引擎,面向海量KV、表格資料,具備全局二級索引、多元檢索、動态列、TTL等能力,适用于中繼資料、訂單、賬單、畫像、社交、feed流、日志等場景,相容HBase、Phoenix(SQL)、Cassandra(CQL)等開源标準接口。
• 時序引擎,面向IoT、監控等場景存儲和處理量測資料、裝置運作資料等時序資料。提供HTTP API接口(相容OpenTSDB API)、支援SQL查詢。針對時序資料設計的壓縮算法,壓縮率最高為15:1。支援海量資料的多元查詢和聚合計算,支援降采樣和預聚合。
• 搜尋引擎,面向海量文本、文檔資料,具備全文檢索、聚合計算、複雜多元查詢等能力,同時可無縫作為寬表、時序引擎的索引存儲,加速檢索查詢,适用于日志、賬單、畫像等場景,相容開源Solr标準接口。
• 檔案引擎,面向海量非結構化資料,具備彈性低成本、100%HDFS協定的檔案存儲能力,與多模引擎共享存儲,同時支援外部系統直接通路多模引擎的底層檔案,适用于大資料分析、資料湖等場景,可使用開源HDFS用戶端直接通路。
Lindorm支援多個模型之間的融合打通,包括資料同步、模型轉換、統一通路、統一管理、資源共享等能力,進而将多個系統組合使用的解決方案下沉為資料庫内置能力。對于目前使用類HBase+ElasticSearch或HBase+OpenTSDB+ES的應用場景,比如監控、社交、廣告等,利用Lindorm的原生多模能力,将很好地解決架構複雜、查詢痛苦、一緻性弱、成本高、功能不對齊等痛點,讓業務創新更高效。
4.2 讓資料存得起-極緻成本效益
4.2.1 智能壓縮
基于LSM-Tree的資料存儲,如HBase,在組織檔案内容時經常使用資料分塊編碼壓縮的方式,降低資料檔案的空間占用以減少存儲成本。Lindorm在這項技術上更進一步,Compaction前提取資料樣本進行采樣分析,根據資料特質,智能選擇合适的編碼、壓縮參數,并提取公共字典,降低壓縮算法中的字典結構帶來的額外開銷,進一步提升了資料的壓縮比率與壓縮速度。
4.2.2 冷熱資料一體化存儲
對于類似賬單這種永久儲存的場景,每年數倍的存儲增長,無論是分庫分表後擴容或者曆史庫冷資料的搬遷,都存在較大的運維成本、一緻性風險、并且對業務的侵入性較大。
雲原生的場景下,Lindorm在同一張表裡實作了資料的冷熱分離,系統會自動根據使用者設定的冷熱分界線自動将表中的冷資料歸檔到冷存儲(SSD、高效、OSS等多層存儲)中。在使用者的通路方式上和普通表幾乎沒有任何差異,在查詢的過程中,使用者隻需配置查詢Hint或者TimeRange,系統根據條件自動地判斷查詢應該落在熱資料區還是冷資料區。對使用者而言始終是一張表,對使用者幾乎做到完全的透明。成本最低化。
4.2.3 容量型存儲
容量型存儲是Lindorm今年新推出的一種虛拟化存儲形态。基于對象存儲的低成本特質,我們将對象存儲作為一塊共享磁盤看待,将對象存儲能力融合到LindormStore的内部資料庫塊管理機制中,在上層依然保持檔案系統的全部功能以及API語義,在保持HDFS通信協定相容的同時,使得對象存儲的低成本能力被無縫內建到Lindorm。相比雲盤雙副本存儲方案,容量型存儲降低了80%的存儲成本。更加适合曆史日志、曆史訂單等冷資料歸檔場景。
4.2.4 共享塊存儲降副本
雲盤技術是雲原生存儲的代表之一,雲盤以塊裝置為互動界面,提供了強大的按需使用的彈性擴充能力。但是原生HDFS沒有很好的和雲盤結合,HDFS本身的多副本與雲盤底層的多副本技術重疊,造成了實際存儲資源的浪費。LindormStore基于共享塊存儲(DBFS)開發了一寫多讀共享技術,使得LindormStore在塊存儲上隻需寫入一份資料,就可以保證資料可靠性與可用性。共享塊存儲的彈性擴充,動态挂載/解除安裝等能力,助力Lindorm實作存儲計算分離解耦,使得Lindorm在不搬運資料的基礎上實作計算與存儲資源配比動态調整成為可能。
4.2.5 存儲計算解耦
基于4.2.3與4.2.4的雲原生存儲技術,我們使得計算資源與存儲資源徹底解耦,存儲資源與計算資源的獨立擴容成為可能。我們不再困惑于傳統HDFS生态中的買多少計算節點,每個節點配多少存儲的資源規劃問題。LindormStore相當于一個雲原生存儲網關,資料實際存放在虛拟化的雲存儲資源池中,LindormStore提供HDFS相容的功能語義與通路接口。業務可以根據自身需要調節Lindorm的存儲與計算比例。存儲計算解耦帶來了更高的資源利用比例,減少了傳統IDC時代的機器資源存算比浪費。存儲與計算按需配置,為業務帶來更高成本效益的資源規劃能力。
4.2.6 ServerLess
單純的獨享部署和資源售賣的形态無法滿足所有使用者的需求。特别對于請求量特别低或者波峰波谷非常明顯的使用者,他們希望有比ECS實體資源更細粒度的彈性能力。是以,我們推出了全新的Serverless模式,Serverless是展現雲計算按需計費,極緻彈性的最好形式。利用Serverless,使用者可以使用申明式的API定義對資料庫資源的要求,不需要為未知的業務流量去預估存儲和計算資源。同時,Serverless可以真正實作全托管,使用者無需再關心容量水位,軟體版本等叢集管理問題,讓使用者的精力完全收斂于業務開發。
在Serverless模式下,使用者可以做到0請求0費用,而當業務流量突然增加時,Lindorm自身的彈性能力和Serverless大資源池共享的模式可以為使用者提供極緻的彈性體驗。而在多租戶隔離上,Lindorm原生的多租戶,Quota限流能力能夠保證各個Serverless各個租戶能夠不會互相影響。使使用者的成本,穩定性,彈性達到一個完美的平衡。
4.3 讓資料看得見-豐富索引
4.3.1 二級索引
Lindorm表天然具備主鍵索引,可以很好的滿足主鍵比對,主鍵字首模式的查詢需求。為了解決了絕大多數NoSQL系統查詢非主鍵條件效率低下的問題,在誕生之初Lindorm就引入了全局二級索引,并對TTL,多版本等松散Schema結構提供了很好的支援。Lindorm二級索引目前除了可以通過SQL-like API通路,也可以通過Cassandra Query Language,Lindorm SQL等多種方式讀寫,大大降低了使用者的使用成本。
4.3.2 全文索引
全局二級索引很好的解決了使用者固定通路模式的查詢需求,但對于多元組合查詢存在成本高,不夠靈活的缺點。過去很多使用者自行搭建HBase+ES/Solr的解決方案,通過搜尋引擎查詢rowkey,再通過rowkey返查擷取完整資料。這套方案盡管較好的解決了查詢的問題,但依然存在資料同步複制延遲不可控(極端情況下丢資料),查詢方式複雜,DDL變更導緻資料錯亂等問題。
Lindorm推出原生全文檢索能力,利用Lindorm Tunnel Service可以全自動完成DDL,資料的同步異步建構。與此同時Lindorm CQL還提供了統一查詢能力,基于使用者查詢條件在編譯時決定是否需要通過搜尋進行加速,無需使用者自行判斷,大幅優化了使用者的使用體驗。
4.4 智能化服務
目前lindorm服務了經濟體以及公有雲上萬的開發者,過去的一年我們也圍繞着服務自助化、運維智能化、營運資料化的目标,全新打造LDInsight工具産品服務,降低使用lindorm的門檻以及提升運維效率。LDInsight具備了資訊透視、系統管理、智能診斷等功能,幫助應用開發者/DBA輕松掌握系統運作狀态,白屏化完成常見系統管理和資料通路操作,以及自動診斷使用過程中的常見問題,讓使用者和維護者更加簡單、高效地使用Lindorm,減少服務對人的依賴。
4.4.1 智能診斷
為了讓應用開發者/DBA更放心的使用lindorm,LDInsight 提供了7*24小時的資料庫異常診斷功能,自動診斷生産運維過程中的常見問題、排除潛在風險,比如慢請求、熱點、性能診斷、Schema設計、索引推薦等,讓使用者和DBA更加簡單、透明、高效地使用Lindorm。
LDInsight 會秒級收集各項關鍵名額資訊作為某個時間點的性能資料快照,我們會先結合DBA 的專家經驗将關鍵名額進行分類,接着分析出每個名額的規律性(周期性、平穩性、還是趨勢性等),最後根據名額的不同規律,應用混合模式的時序資料異常檢測模型對名額進行智能化的分析與歸納,進而增強異常發現的成功率。
目前LDInsight已在全網部署對所有開發者開放使用。
4.4.2 熱點識别與自愈
在支援海量資料線上高并發查詢的場景中,業務中天然存在着突發的熱點商品促銷、大V直播帶貨等場景,在熱點的識别設計上,我們運用Sketch-Counting算法統計高頻通路的Key,其核心思想是抛棄低機率的key的詳細資訊,僅保留高機率通路的資訊并進行Sketch樹狀擴充,層層逼近真正熱點,無需對每個輸入key采樣收集,可以極小記憶體與計算開銷統計出熱點,通常運作時單機單表僅占用500B記憶體,運作時常态開啟實時監測熱點。同時再結合Insight控制系統,自動快速隔離熱點,避免影響全局服務。
4.5 資料鍊路生态-LTS
LTS(Lindorm Tunnel Service)是面向Lindorm業務場景特點深度定制的資料生态服務。支援簡單易用的資料交換、處理、訂閱等能力,滿足使用者的資料遷移、實時訂閱、數湖轉存、數倉回流、單元化多活、備份恢複等需求,實作面向Lindorm的一站式資料生态服務。
在集團内部,Lindorm擁有全網前列的離線上資料同步流量。依賴LTS(Lindorm Tunnel Service)服務,每天有接近670+TB,約3.2萬億條記錄來源于其他資料源的導入Lindorm。同時每天有接近549TB資料實時導出到TT、MetaQ、ODPS等其他系統,用于實時、離線計算、資料訂閱、算法訓練、資料備份等場景。
4.5.1 資料生态總覽
下圖展示了LTS功能總覽,其生态覆寫了關系型資料庫、消息隊列、NoSQL資料庫、數倉/資料湖、搜尋引擎等等。典型場景包含了網際網路賬單、低成本曆史庫、離線系統加速、大資料畫像、資料訂閱(CDC)、資料入湖等等。
4.5.2 企業級特性
本節介紹LTS三大企業級特性:Bulkload、Streams、全球多活,打造大資料場景下基于Lindorm的資料閉環最佳實踐。
4.5.2.1 Bulkload
Lindorm Bulkload是由LTS(Lindorm Tunnel Service)提供的低成本、高可靠、高性能的企業級批量導入服務,支援将MaxCompute、Hive等資料源中的資料導入Lindorm/HBase。
Lindorm Bulkload的優勢
• 低成本:Bulklaod模式天然比API模式節省資源,無需日志、事務、RPC等方面的開銷。同時利用外部生成SSTable的特殊性,我們對SSTable Writer進行了優化,使其性能提升2倍以上
• 一緻性提升:我們把表切換的邏輯做到系統内部,對客戶透明,支援強一緻覆寫寫(即将上線)。對于同城多活的執行個體,我們支援多個Zone同時Load資料。
• 防導入抖動:我們提供了多級限速、本地化率、緩存更新優化等多種手段減少導入時的性能波動
• 反資料傾斜:可以自動檢測資料分布,實時調節目标表的分區,并做到分布式導入下的負載均衡
• 易用性:白屏化接入
• 可靠性:系統高可用,有完善的監控報警體系
4.5.2.2 實時資料變更通道(Streams)
Lindorm Streams提供對Lindorm資料變更的實時、保序、高并發的處理能力,同時具備水準擴充、高可用、低成本等特點。可以基于Streams實作資料訂閱、實時流處理、資料備份、異地複制等功能
Lindorm Streams的優勢
• 實時捕獲資料變更:非保序模式下百毫秒延遲,保序模式下秒級延遲
• 保序:支援主鍵級别的保序,同一行的變更有序處理,基于時間戳進行排序
4.5.2.3 全球多活
Lindorm 全球多活的優勢
• 多雲支援:支援IDC與公有雲混布
• 多點寫入:單元化讀寫,異步複制,支援最終一緻性
• 智能路由:用戶端根據延遲自動選擇接入點
• 按需多活:可選擇部分表全球同步,部分表不同步
• 易用性:白屏化接入,拓撲關系展示
五、總結
2020年,是全面雲化的一年,核心鍊路完全雲化,業務形态從Cloud Hosting走向Cloud Native,Lindorm的多模形态也在快速發展,雙十一核心支撐的業務也從阿裡經濟體内部,走向了公共雲企業級客戶。面向未來,我們将繼續往雲原生、多模型、低成本方向奔赴,重點在多模融合查詢、Serverless隔離排程、低成本海量存儲、實時Stream、智能化等技術突破,向着“讓資料存得起,看得見”的使命,全力以赴。
最後,對雲原生多模資料庫Lindorm感興趣的同學,歡迎加釘釘群: 35977898,進一步交流。