精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

云原生大數(shù)據(jù)架構(gòu)中實(shí)時(shí)計(jì)算維表和結(jié)果表的選型實(shí)踐

新聞 架構(gòu) 大數(shù)據(jù) 云原生
隨著互聯(lián)網(wǎng)技術(shù)的日漸發(fā)展、數(shù)據(jù)規(guī)模的擴(kuò)大與復(fù)雜的需求場景的產(chǎn)生,傳統(tǒng)的大數(shù)據(jù)架構(gòu)無法承載。

  [[424013]]

一、前言

傳統(tǒng)的大數(shù)據(jù)技術(shù)起源于 Google 三架馬車 GFS、MapReduce、Bigtable,以及其衍生的開源分布式文件系統(tǒng) HDFS,分布式計(jì)算引擎 MapReduce,以及分布式數(shù)據(jù)庫 HBase。最初的大數(shù)據(jù)技術(shù)與需求往往集中在超大規(guī)模數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、在線查詢等。在這個(gè)階段,很多公司會(huì)選擇自建機(jī)房部署 Hadoop 的方式,大數(shù)據(jù)技術(shù)與需求集中在離線計(jì)算與大規(guī)模存儲(chǔ)上,常見的體現(xiàn)方式有 T+1 報(bào)表,大規(guī)模數(shù)據(jù)在線查詢等。

隨著互聯(lián)網(wǎng)技術(shù)的日漸發(fā)展、數(shù)據(jù)規(guī)模的擴(kuò)大與復(fù)雜的需求場景的產(chǎn)生,傳統(tǒng)的大數(shù)據(jù)架構(gòu)無法承載。大數(shù)據(jù)架構(gòu)在近些年的演進(jìn)主要體現(xiàn)下以下幾方面:

1. 規(guī)模化:這里的規(guī)模化主要體現(xiàn)在大數(shù)據(jù)技術(shù)的使用規(guī)模上和數(shù)據(jù)規(guī)模的增長。大數(shù)據(jù)技術(shù)的使用規(guī)模增長代表越來越多的復(fù)雜需求產(chǎn)生,而數(shù)據(jù)規(guī)模的增長決定了傳統(tǒng)的準(zhǔn)大數(shù)據(jù)技術(shù)(如 MySQL)無法解決所有問題。因此,拿存儲(chǔ)組件舉例來說,通常會(huì)劃分到不同的數(shù)據(jù)分層,面向規(guī)模、成本、查詢和分析性能等不同維度的優(yōu)化偏向,以滿足多樣性的需求。

2. 實(shí)時(shí)化:傳統(tǒng)的 T+1 的離線大數(shù)據(jù)技術(shù)無法滿足推薦、監(jiān)控類近實(shí)時(shí)的需求,整個(gè)大數(shù)據(jù)生態(tài)和技術(shù)架構(gòu)在過去十年發(fā)生了很大的升級換代。就存儲(chǔ)上來說,傳統(tǒng)的 HDFS 文件存儲(chǔ)、Hive 數(shù)倉無法滿足低成本,可更新迭代的需求,因此滋生出 Hudi 等數(shù)據(jù)方案。就計(jì)算上來說,傳統(tǒng)的 MapReduce 批處理的能力無法做到秒級的數(shù)據(jù)處理,先后出現(xiàn) Storm 較原始的實(shí)時(shí)處理和 Spark Streaming 的微批處理,目前由 Flink 基于 Dataflow 模型的實(shí)時(shí)計(jì)算框架在實(shí)時(shí)計(jì)算領(lǐng)域占據(jù)絕對主導(dǎo)地位。

3. 云原生化:傳統(tǒng)的公司往往會(huì)選擇自建機(jī)房,或者在云上購買機(jī)器部署實(shí)例這種云托管的形式,但這種架構(gòu)存在低谷期利用率低,存儲(chǔ)計(jì)算不分離導(dǎo)致的存儲(chǔ)和計(jì)算彈性差,以及升級靈活度低等各種問題。云原生大數(shù)據(jù)架構(gòu)就是所謂的數(shù)據(jù)湖,其本質(zhì)就是充分利用云上的彈性資源來實(shí)現(xiàn)一個(gè)統(tǒng)一管理、統(tǒng)一存儲(chǔ)、彈性計(jì)算的大數(shù)據(jù)架構(gòu),變革了傳統(tǒng)大數(shù)據(jù)架構(gòu)基于物理集群和本地磁盤的計(jì)算存儲(chǔ)架構(gòu)。其主要技術(shù)特征是存儲(chǔ)和計(jì)算分離和 Serverless。在云原生大數(shù)據(jù)架構(gòu)中,每一層架構(gòu)都在往服務(wù)化的趨勢演進(jìn),存儲(chǔ)服務(wù)化、計(jì)算服務(wù)化、元數(shù)據(jù)管理服務(wù)化等。每個(gè)組件都被要求拆分成不同的單元,具備獨(dú)立擴(kuò)展的能力,更開放、更靈活、更彈性。

本篇文章將基于云原生大數(shù)據(jù)架構(gòu)的場景,詳細(xì)討論實(shí)時(shí)計(jì)算中的維表和結(jié)果表的架構(gòu)選型。

二、大數(shù)據(jù)架構(gòu)中的實(shí)時(shí)計(jì)算

1、實(shí)時(shí)計(jì)算場景

大數(shù)據(jù)的高速發(fā)展已經(jīng)超過 10 年,大數(shù)據(jù)也正在從計(jì)算規(guī)模化向更加實(shí)時(shí)化的趨勢演進(jìn)。實(shí)時(shí)計(jì)算場景主要有以下幾種最常見的場景:

  • 實(shí)時(shí)數(shù)倉:實(shí)時(shí)數(shù)倉主要應(yīng)用在網(wǎng)站 PV / UV 統(tǒng)計(jì)、交易數(shù)據(jù)統(tǒng)計(jì)、商品銷量統(tǒng)計(jì)等各類交易型數(shù)據(jù)場景中。在這種場景下,實(shí)時(shí)計(jì)算任務(wù)通過訂閱業(yè)務(wù)實(shí)時(shí)數(shù)據(jù)源,將信息實(shí)時(shí)秒級分析,最終呈現(xiàn)在業(yè)務(wù)大屏中給決策者使用,方便判斷企業(yè)運(yùn)營狀況和活動(dòng)促銷的情況。
  • 實(shí)時(shí)推薦:實(shí)時(shí)推薦主要是基于 AI 技術(shù),根據(jù)用戶喜好進(jìn)行個(gè)性化推薦。常見于短視頻場景、內(nèi)容資訊場景、電商購物等場景。在這種場景下,通過用戶的歷史點(diǎn)擊情況實(shí)時(shí)判斷用戶喜好,從而進(jìn)行針對性推薦,以達(dá)到增加用戶粘性的效果。
  • 數(shù)據(jù) ETL:實(shí)時(shí)的 ETL 場景常見于數(shù)據(jù)同步任務(wù)中。比如數(shù)據(jù)庫中不同表的同步、轉(zhuǎn)化,或者是不同數(shù)據(jù)庫的同步,或者是進(jìn)行數(shù)據(jù)聚合預(yù)處理等操作,最終將結(jié)果寫入數(shù)據(jù)倉庫或者數(shù)據(jù)湖進(jìn)行歸檔沉淀。這種場景主要是為后續(xù)的業(yè)務(wù)深度分析進(jìn)行前期準(zhǔn)備工作。
  • 實(shí)時(shí)診斷:這種常見于金融類或者是交易類業(yè)務(wù)場景。在這些場景中,針對行業(yè)的獨(dú)特性,需要有反作弊監(jiān)管,根據(jù)實(shí)時(shí)短時(shí)間之內(nèi)的行為,判定用戶是否為作弊用戶,做到及時(shí)止損。該場景對時(shí)效性要求極高,通過實(shí)時(shí)計(jì)算任務(wù)對異常數(shù)據(jù)檢測,實(shí)時(shí)發(fā)現(xiàn)異常并進(jìn)行及時(shí)止損。

2、Flink SQL 實(shí)時(shí)計(jì)算

實(shí)時(shí)計(jì)算需要后臺(tái)有一套極其強(qiáng)大的大數(shù)據(jù)計(jì)算能力,Apache Flink 作為一款開源大數(shù)據(jù)實(shí)時(shí)計(jì)算技術(shù)應(yīng)運(yùn)而生。由于傳統(tǒng)的 Hadoop、Spark 等計(jì)算引擎,本質(zhì)上是批計(jì)算引擎,通過對有限的數(shù)據(jù)集進(jìn)行數(shù)據(jù)處理,其處理時(shí)效性是不能保證的。而 Apache Flink ,從設(shè)計(jì)之初就以定位為流式計(jì)算引擎,它可以實(shí)時(shí)訂閱實(shí)時(shí)產(chǎn)生的流式數(shù)據(jù),對數(shù)據(jù)進(jìn)行實(shí)時(shí)分析處理并產(chǎn)生結(jié)果,讓數(shù)據(jù)在第一時(shí)間發(fā)揮價(jià)值。

Flink 選擇了 SQL 這種聲明式語言作為頂層 API,方便用戶使用,也符合云原生大數(shù)據(jù)架構(gòu)的趨勢:

  • 大數(shù)據(jù)普惠,規(guī)模生產(chǎn):Flink SQL 能夠根據(jù)查詢語句自動(dòng)優(yōu)化,生成最優(yōu)的物理執(zhí)行計(jì)劃,屏蔽大數(shù)據(jù)計(jì)算中的復(fù)雜性,大幅降低用戶使用門檻,以達(dá)到大數(shù)據(jù)普惠的效果。
  • 流批一體:Flink SQL 具備流批統(tǒng)一的特性,無論是流任務(wù)還是批處理任務(wù)都給用戶提供相同的語義和統(tǒng)一的開發(fā)體驗(yàn),方便業(yè)務(wù)離線任務(wù)轉(zhuǎn)實(shí)時(shí)。
  • 屏蔽底層存儲(chǔ)差異:Flink 通過提供 SQL 統(tǒng)一查詢語言,屏蔽底層數(shù)據(jù)存儲(chǔ)的差異,方便業(yè)務(wù)在多樣性的大數(shù)據(jù)存儲(chǔ)中進(jìn)行靈活切換,對云上大數(shù)據(jù)架構(gòu)進(jìn)行更開放、靈活的調(diào)整。

上圖是 Flink SQL 的一些基本操作。可以看到 SQL 的語法和標(biāo)準(zhǔn) SQL 非常類似,示例中包括了基本的 SELECT、FILTER 操作,可以使用內(nèi)置函數(shù)(如日期的格式化),也可以在注冊函數(shù)后使用自定義函數(shù)。

Flink SQL 將實(shí)時(shí)計(jì)算拆分成源表,結(jié)果表和維表三種,將這三種表的 DDL 語句(比如 CREATE TABLE)注冊各類輸入、輸出的數(shù)據(jù)源,通過 SQL 的 DML(比如 INSERT INTO)表示實(shí)時(shí)計(jì)算任務(wù)的拓?fù)潢P(guān)系,以達(dá)到通過 SQL 完成實(shí)時(shí)計(jì)算任務(wù)開發(fā)的效果。

  • 源表:主要代表消息系統(tǒng)類的輸入,比如 Kafka,MQ(Message Queue),或者 CDC(Change Data Capture,例如將 MySQL binlog 轉(zhuǎn)換成實(shí)時(shí)流)輸入。
  • 結(jié)果表:主要代表 Flink 將每條實(shí)時(shí)處理完的數(shù)據(jù)寫入的目標(biāo)存儲(chǔ),如 MySQL,HBase 等數(shù)據(jù)庫。
  • 維表:主要代表存儲(chǔ)數(shù)據(jù)維度信息的數(shù)據(jù)源。在實(shí)時(shí)計(jì)算中,因?yàn)閿?shù)據(jù)采集端采集到的數(shù)據(jù)往往比較有限,在做數(shù)據(jù)分析之前,就要先將所需的維度信息補(bǔ)全,而維表就是代表存儲(chǔ)數(shù)據(jù)維度信息的數(shù)據(jù)源。常見的用戶維表有 MySQL,Redis 等。

下圖是一個(gè)完整的實(shí)時(shí)計(jì)算示例,示例中的 Flink SQL 任務(wù),這個(gè)任務(wù)的目標(biāo)是計(jì)算每分鐘不同商品分類的 GMV (Gross Merchandise Volume,即商品交易總額)。在這個(gè)任務(wù)中,F(xiàn)link 實(shí)時(shí)消費(fèi)用戶訂單數(shù)據(jù)的 Kafka 源表,通過 Redis 維表將商品 id 關(guān)聯(lián)起來獲取到商品分類,按照 1 分鐘間隔的滾動(dòng)窗口按商品分類將總計(jì)的交易金額計(jì)算出來,將最后的結(jié)果寫入 RDS(Relational Database Service,如 MySQL) 結(jié)果表中。

  1. # 源表 - 用戶訂單數(shù)據(jù),代表某個(gè)用戶(user_id)在 timestamp 時(shí)按 price 的價(jià)格購買了商品(item_id) 
  2. CREATE TEMPORARY TABLE user_action_source ( 
  3.   `timestamp` BIGINT, 
  4.   `user_id` BIGINT, 
  5.   `item_id` BIGINT, 
  6.   `price` DOUBLE,SQs 
  7. ) WITH ( 
  8.   'connector' = 'kafka'
  9.   'topic' = '<your_topic>'
  10.   'properties.bootstrap.servers' = 'your_kafka_server:9092'
  11.   'properties.group.id' = '<your_consumer_group>' 
  12.   'format' = 'json'
  13.   'scan.startup.mode' = 'latest-offset' 
  14. ); 
  15.  
  16.  
  17. # 維表 - 物品詳情 
  18. CREATE TEMPORARY TABLE item_detail_dim ( 
  19.   id STRING, 
  20.   catagory STRING, 
  21.   PRIMARY KEY (id) NOT ENFORCED 
  22. ) WITH ( 
  23.   'connector' = 'redis'
  24.   'host' = '<your_redis_host>'
  25.   'port' = '<your_redis_port>'
  26.   'password' = '<your_redis_password>'
  27.   'dbNum' = '<your_db_num>' 
  28. ); 
  29.  
  30.  
  31. # 結(jié)果表 - 按時(shí)間(分鐘)和分類的 GMV 輸出 
  32. CREATE TEMPORARY TABLE gmv_output ( 
  33.    time_minute STRING, 
  34.    catagory STRING, 
  35.    gmv DOUBLE, 
  36.    PRIMARY KEY (time_minute, catagory) 
  37. ) WITH ( 
  38.    type='rds'
  39.    url='<your_jdbc_mysql_url_with_database>'
  40.    tableName='<your_table>'
  41.    userName='<your_mysql_database_username>'
  42.    password='<your_mysql_database_password>' 
  43. ); 
  44.  
  45.  
  46. # 處理過程 
  47. INSERT INTO gmv_output  
  48. SELECT  
  49.   TUMBLE_START(s.timestamp, INTERVAL '1' MINUTES) as time_minute, 
  50.   d.catagory, 
  51.   SUM(d.price) as gmv 
  52. FROM 
  53.   user_action_source s 
  54.   JOIN item_detail_dim FOR SYSTEM_TIME AS OF PROCTIME() as d 
  55.     ON s.item_id = d.id 
  56. GROUP BY TUMBLE(s.timestamp, INTERVAL '1' MINUTES), d.catagory; 

這是一個(gè)很常見的實(shí)時(shí)計(jì)算的處理鏈路。后續(xù)章節(jié)中,我們將針對實(shí)時(shí)計(jì)算的維表和結(jié)果表的關(guān)鍵能力進(jìn)行展開分析,并分別進(jìn)行架構(gòu)選型的討論。

三、實(shí)時(shí)計(jì)算維表

1、關(guān)鍵需求

在數(shù)據(jù)倉庫的建設(shè)中,一般都會(huì)圍繞著星型模型和雪花模型來設(shè)計(jì)表關(guān)系或者結(jié)構(gòu)。實(shí)時(shí)計(jì)算也不例外,一種常見的需求就是為數(shù)據(jù)流補(bǔ)齊字段。因?yàn)閿?shù)據(jù)采集端采集到的數(shù)據(jù)往往比較有限,在做數(shù)據(jù)分析之前,就要先將所需的維度信息補(bǔ)全。比如采集到的交易日志中只記錄了商品 id,但是在做業(yè)務(wù)時(shí)需要根據(jù)店鋪維度或者行業(yè)緯度進(jìn)行聚合,這就需要先將交易日志與商品維表進(jìn)行關(guān)聯(lián),補(bǔ)全所需的維度信息。這里所說的維表與數(shù)據(jù)倉庫中的概念類似,是維度屬性的集合,比如商品維度、用戶度、地點(diǎn)維度等等。

作為保存用戶維度信息的數(shù)據(jù)存儲(chǔ),需要應(yīng)對實(shí)時(shí)計(jì)算場景下的海量低延時(shí)訪問。根據(jù)這樣的定位,我們總結(jié)下對結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)的幾個(gè)關(guān)鍵需求:

(1)高吞吐與低延時(shí)的讀取能力

首當(dāng)其沖,在不考慮開源引擎 Flink 自身維表的優(yōu)化外,維表必須能承擔(dān)實(shí)時(shí)計(jì)算場景下的海量(上萬 QPS)的數(shù)據(jù)訪問,也能在極低(毫秒級別)的延時(shí)下返回查詢數(shù)據(jù)。

(2)與計(jì)算引擎的高整合能力

在維表自身的能力之外,出于性能、穩(wěn)定性和成本的考慮,計(jì)算引擎自身往往也會(huì)有些流量卸載的能力,在一些情況下無需每次請求都需要去訪問下游維表。例如,F(xiàn)link 在維表場景下支持 Async IO 和緩存策略等優(yōu)化特性。 一個(gè)比較好的維表需要和開源計(jì)算引擎有著較高程度的對接,一方面可以提升計(jì)算層的性能,一方面也可以有效的卸載部分流量,保障維表不被過多訪問擊穿,并降低維表的計(jì)算成本。

(3)輕存儲(chǔ)下的計(jì)算能力的彈性

維表通常是一張共享表,存儲(chǔ)維度屬性等元數(shù)據(jù)信息,訪問規(guī)模往往較大,而存儲(chǔ)規(guī)模往往不會(huì)特別大。對維表的訪問規(guī)模極大地依賴實(shí)時(shí)數(shù)據(jù)流的數(shù)據(jù)量。比如,如果實(shí)時(shí)流的數(shù)據(jù)規(guī)模擴(kuò)大了數(shù)十倍,此時(shí)對維表的訪問次數(shù)會(huì)大大提升;又比如,如果新增了多個(gè)實(shí)時(shí)計(jì)算任務(wù)訪問該維表,該維表的查詢壓力會(huì)激增。在這些場景下,存儲(chǔ)規(guī)模往往不會(huì)顯著增加。

所以,計(jì)算最好是按需的,是彈性的。無論是新增或者下線實(shí)時(shí)計(jì)算任務(wù),或者增加訪問流量,都不會(huì)影響訪問性能。同時(shí),計(jì)算和存儲(chǔ)是應(yīng)該分離的,不會(huì)單純因?yàn)樵L問計(jì)算量的激增就增加存儲(chǔ)成本。

2、架構(gòu)選型

MySQL

大數(shù)據(jù)和實(shí)時(shí)計(jì)算技術(shù)起步之初,互聯(lián)網(wǎng)早期大量流行 LAMP (Linux + Apache + MySQL + PHP)架構(gòu)快速開發(fā)站點(diǎn)。因此,由于業(yè)務(wù)歷史數(shù)據(jù)已經(jīng)存在 MySQL 中,在最初的實(shí)時(shí)計(jì)算維表選型中大量使用 MySQL 作為維表。

隨著大數(shù)據(jù)架構(gòu)的更新,MySQL 云上架構(gòu)也在不斷改進(jìn),但在維表的應(yīng)用場景下仍然存在以下問題:

  • 存儲(chǔ)側(cè)擴(kuò)展靈活性差,擴(kuò)展成本較高:MySQL 在存儲(chǔ)側(cè)的擴(kuò)展需要進(jìn)行數(shù)據(jù)復(fù)制遷移,擴(kuò)展周期長且靈活性差。同時(shí) MySQL 的分庫分表每次擴(kuò)展需要雙倍資源,擴(kuò)展成本較高。
  • 存儲(chǔ)成本高:關(guān)系數(shù)據(jù)庫是結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)單位成本最高的存儲(chǔ)系統(tǒng),所以對于大數(shù)據(jù)場景來說,關(guān)系型數(shù)據(jù)庫存儲(chǔ)成本較高。

以上這些限制使 MySQL 在大數(shù)據(jù)維表場景下存在性能瓶頸,成本也比較高。但總體來說,MySQL 是非常優(yōu)秀的數(shù)據(jù)庫產(chǎn)品,在數(shù)據(jù)規(guī)模不怎么大的場景下,MySQL 絕對是個(gè)不錯(cuò)的選擇。

Redis

在云上應(yīng)用架構(gòu)中,由于 MySQL 難以承載不斷增加的業(yè)務(wù)負(fù)載,往往會(huì)使用 Redis 作為 MySQL 的查詢結(jié)果集緩存,幫助 MySQL 來抵御大部分的查詢流量。

在這種架構(gòu)中,MySQL 作為主存儲(chǔ)服務(wù)器,Redis 作為輔助存儲(chǔ),MySQL 到 Redis 的同步可以通過 binlog 實(shí)時(shí)同步或者 MySQL UDF + 觸發(fā)器的方式實(shí)現(xiàn)。在這種架構(gòu)中,Redis 可以用來緩存提高查詢性能,同時(shí)降低 MySQL 被擊穿的風(fēng)險(xiǎn)。

由于在 Redis 中緩存了一份弱一致性的用戶數(shù)據(jù),Redis 也常常用來作為實(shí)時(shí)計(jì)算的維表。相比于 MySQL 作為維表,Redis 有著獨(dú)特的優(yōu)勢:

  • 查詢性能極高:數(shù)據(jù)高速緩存在內(nèi)存中,可以通過高速 Key-Value 形式進(jìn)行結(jié)果數(shù)據(jù)查詢,非常符合維表高性能查詢的需求。
  • 存儲(chǔ)層擴(kuò)展靈活性高:Redis 可以非常方便的擴(kuò)展分片集群,進(jìn)行橫向擴(kuò)展,支持?jǐn)?shù)據(jù)多副本的持久化。

Redis 有其突出的優(yōu)點(diǎn),但也有一個(gè)不可忽視的缺陷:雖然 Redis 有著不錯(cuò)的擴(kuò)展方案,但由于高速緩存的數(shù)據(jù)存在內(nèi)存中,成本較高,如果遇到業(yè)務(wù)數(shù)據(jù)的維度屬性較大(比如用戶維度、商品維度)時(shí),使用 Redis 作為維表存儲(chǔ)時(shí)成本極高。

Tablestore

Tablestore是阿里云自研的結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)產(chǎn)品,具體產(chǎn)品介紹可以參考 官網(wǎng) 以及 權(quán)威指南 。在大數(shù)據(jù)維表的場景下,Tablestore 有著獨(dú)特的優(yōu)勢:

  • 高吞吐訪問:Tablestore 采用了存儲(chǔ)計(jì)算分離架構(gòu),可以彈性擴(kuò)展計(jì)算資源,支持高吞吐下的數(shù)據(jù)查詢。
  • 低延時(shí)查詢:Tablestore 按照 LSM 存儲(chǔ)引擎實(shí)現(xiàn),支持 Block Cache 加速查詢,用戶也通過配置豐富的索引,優(yōu)化業(yè)務(wù)查詢。
  • 低成本存儲(chǔ)和彈性計(jì)算成本:在存儲(chǔ)成本上,Tablestore 屬于結(jié)構(gòu)化 NoSQL 存儲(chǔ)類型,數(shù)據(jù)存儲(chǔ)成本比起關(guān)系型數(shù)據(jù)庫或者高速緩存要低很多;在計(jì)算成本上,Tablestore 采用了存儲(chǔ)計(jì)算架構(gòu),可以按需彈性擴(kuò)展計(jì)算資源。
  • 與 Flink 維表優(yōu)化的高度對接:Tablestore 支持 Flink 維表優(yōu)化的所有策略,包括 Async IO 和不同緩存策略。

方案對比

上面是前文提到的幾個(gè)維表方案在各個(gè)維度的對比。接下來,將舉幾個(gè)具體的場景細(xì)致對比下成本:

1. 高存儲(chǔ)高計(jì)算:維表需要存 100 億條訂單維度的數(shù)據(jù),總計(jì)存儲(chǔ)量需要 1T,盡管業(yè)務(wù)在 Flink 任務(wù)端配置了緩存策略,但仍然有較高的 KV 查詢下沉到維表,到維表的 QPS 峰值  10 萬,均值 2.5 萬。不同維表所需的配置要求和購買成本如下:

2. 低存儲(chǔ)低計(jì)算:維表需要存 100 萬條地域維度的數(shù)據(jù),總計(jì)存儲(chǔ)量需要 10M,業(yè)務(wù)端在 Flink 任務(wù)中的維表配置了 LRU 緩存策略抵御了絕大部分的流量,到維表的 QPS 峰值 1000 均值 250。不同維表所需的配置要求和購買成本如下:

3. 高存儲(chǔ)低計(jì)算:維表需要存 100 億條訂單維度的數(shù)據(jù),總計(jì)存儲(chǔ)量需要 1T,業(yè)務(wù)端在 Flink 任務(wù)中的維表配置了 LRU 緩存策略抵御了絕大部分的流量,到維表的 QPS 峰值 1000 均值 250。不同維表所需的配置要求和購買成本如下:

4. 低存儲(chǔ)高計(jì)算:Redis 作為內(nèi)存數(shù)據(jù)庫,具有超高頻的數(shù)據(jù) KV 查詢能力,僅 4 核 8G 內(nèi)存的 Redis集群,即可支持 16 萬 QPS的并發(fā)訪問,成本預(yù)計(jì) 1600 元 / 月,在低存儲(chǔ)高計(jì)算場景有著鮮明的成本優(yōu)勢。

從上面的成本對比報(bào)告中可見:

1)MySQL 由于缺乏存儲(chǔ)和計(jì)算的彈性,以及關(guān)系型數(shù)據(jù)庫固有的缺點(diǎn),在不同程度的存儲(chǔ)和計(jì)算規(guī)模下成本均較高。

2)Redis 作為內(nèi)存數(shù)據(jù)庫,在低存儲(chǔ)(約 128G 以下)高計(jì)算場景有著鮮明的成本優(yōu)勢,但由于內(nèi)存存儲(chǔ)成本很高、缺乏彈性,隨著數(shù)據(jù)規(guī)模的提升,成本呈指數(shù)增長。

3)Tablestore 基于云原生架構(gòu)可以按量對存儲(chǔ)和計(jì)算進(jìn)行彈性,在數(shù)據(jù)存儲(chǔ)和訪問規(guī)模不大時(shí)成本較低。

4)Tablestore 作為 NoSQL 數(shù)據(jù)庫存儲(chǔ)成本很低,在高存儲(chǔ)(128G 以上)場景下有著鮮明的成本優(yōu)勢。

四、實(shí)時(shí)計(jì)算結(jié)果表

1、需求分析

結(jié)果表作為實(shí)時(shí)計(jì)算完成后數(shù)據(jù)導(dǎo)入的存儲(chǔ)系統(tǒng),主要可分為關(guān)系數(shù)據(jù)庫、搜索引擎、結(jié)構(gòu)化大數(shù)據(jù)離線存儲(chǔ)、結(jié)構(gòu)化大數(shù)據(jù)在線存儲(chǔ)幾種分類,具體差異通過以下表格進(jìn)行了歸納。

對于這幾種數(shù)據(jù)產(chǎn)品,在各自場景下各有優(yōu)勢,起源的先后也各有不同。為了方便探究,我們將問題域縮小,僅僅考慮實(shí)時(shí)計(jì)算的場景下,一個(gè)更好的結(jié)果表存儲(chǔ)需要承擔(dān)什么樣的角色。

上文提到了實(shí)時(shí)計(jì)算的主要幾個(gè)場景中,實(shí)時(shí)數(shù)倉,實(shí)時(shí)推薦,實(shí)時(shí)監(jiān)控三個(gè)場景需要考慮結(jié)果表的選型。我們一一分析。

  • 實(shí)時(shí)數(shù)倉:實(shí)時(shí)數(shù)倉主要應(yīng)用在網(wǎng)站實(shí)時(shí) PV / UV 統(tǒng)計(jì)、交易數(shù)據(jù)統(tǒng)計(jì)等實(shí)時(shí)分析場景。實(shí)時(shí)分析(即OLAP)場景分為預(yù)聚合、搜索引擎和 MPP(Massively Parallel Processing,即大規(guī)模并行處理)三種 OLAP 模型。對于預(yù)聚合模型來說,可以通過 Flink 計(jì)算層進(jìn)行數(shù)據(jù)聚合寫入結(jié)果表,也可以全量寫入結(jié)果表中,通過結(jié)果表自身的預(yù)聚合能力進(jìn)行數(shù)據(jù)存儲(chǔ),在這種形態(tài)中極大地依賴結(jié)果表數(shù)據(jù)查詢與分析能力的支撐。對于搜索引擎模型來說,數(shù)據(jù)將全量寫入結(jié)果表中,通過搜索引擎的倒排索引和列存特性進(jìn)行數(shù)據(jù)分析,在這種形態(tài)中需要結(jié)果表有高吞吐的數(shù)據(jù)寫入能力和大規(guī)模數(shù)據(jù)存儲(chǔ)能力。MPP 模型是計(jì)算引擎,如果訪問的是列式存儲(chǔ),可以更好地發(fā)揮分析查詢特性。實(shí)時(shí) OLAP 存儲(chǔ)和計(jì)算引擎眾多,在一個(gè)完整的數(shù)據(jù)系統(tǒng)架構(gòu)下,需要有多個(gè)存儲(chǔ)組件并存。并且根據(jù)對查詢和分析能力的不同要求,需要數(shù)據(jù)派生派生能力在必要時(shí)擴(kuò)展到其他類型存儲(chǔ)。另外,實(shí)時(shí)數(shù)倉中隨著業(yè)務(wù)規(guī)模的擴(kuò)大,存儲(chǔ)量會(huì)大幅增長,相較來說數(shù)據(jù)查詢等計(jì)算規(guī)模變化一般不會(huì)特別明顯,所以結(jié)果表需要做到存儲(chǔ)和計(jì)算成本分離,極大地控制資源成本。
  • 實(shí)時(shí)推薦:實(shí)時(shí)推薦主要是根據(jù)用戶喜好進(jìn)行個(gè)性化推薦,在常見的用戶商品個(gè)性化推薦場景下,一種常見的做法是將用戶的特征寫入結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)(如 HBase )中,而該存儲(chǔ)將作為維表另一條用戶點(diǎn)擊消費(fèi)行為數(shù)據(jù)進(jìn)行關(guān)聯(lián),提取出用戶特征與行為關(guān)聯(lián)輸入,作為推薦算法的輸入。這里的存儲(chǔ)既需要作為結(jié)果表提供高吞吐的數(shù)據(jù)寫入能力,也需要作為維表提供高吞吐低延時(shí)的數(shù)據(jù)在線查詢能力。
  • 實(shí)時(shí)監(jiān)控:應(yīng)用的實(shí)時(shí)監(jiān)控常見于金融類或者是交易類業(yè)務(wù)場景,該場景對時(shí)效性要求極高,通過對異常數(shù)據(jù)檢測,可以實(shí)時(shí)發(fā)現(xiàn)異常情況而做出一個(gè)止損的行為。在這種場景下無論是通過閾值進(jìn)行判斷還是通過異常檢測算法,都需要實(shí)時(shí)低延時(shí)的數(shù)據(jù)聚合查詢能力。

2、關(guān)鍵能力

通過以上的需求分析,我們可以總結(jié)出幾項(xiàng)實(shí)時(shí)大數(shù)據(jù)結(jié)果表的關(guān)鍵能力:

1. 大規(guī)模數(shù)據(jù)存儲(chǔ)

結(jié)果表存儲(chǔ)的定位是集中式的大規(guī)模存儲(chǔ),作為在線數(shù)據(jù)庫的匯總,或者是實(shí)時(shí)計(jì)算(或者是離線)的輸入和輸出,必須要能支撐 PB 級規(guī)模數(shù)據(jù)存儲(chǔ)。

2. 豐富的數(shù)據(jù)查詢與聚合分析能力

結(jié)果表需要擁有豐富的數(shù)據(jù)查詢與聚合分析能力,需要為支撐高效在線查詢做優(yōu)化。常見的查詢優(yōu)化包括高速緩存、高并發(fā)低延遲的隨機(jī)查詢、復(fù)雜的任意字段條件組合查詢以及數(shù)據(jù)檢索。這些查詢優(yōu)化的技術(shù)手段就是緩存和索引,其中索引的支持是多元化的,面向不同的查詢場景提供不同類型的索引。例如面向固定組合查詢的基于 B+tree 的二級索引,面向地理位置查詢的基于 R-tree 或 BKD-tree 的空間索引或者是面向多條件組合查詢和全文檢索的倒排索引。

3. 高吞吐寫入能力

實(shí)時(shí)計(jì)算的數(shù)據(jù)表需要能承受大數(shù)據(jù)計(jì)算引擎的海量結(jié)果數(shù)據(jù)集導(dǎo)出。所以必須能支撐高吞吐的數(shù)據(jù)寫入,通常會(huì)采用一個(gè)為寫入而優(yōu)化的存儲(chǔ)引擎。

4. 數(shù)據(jù)派生能力

一個(gè)完整的數(shù)據(jù)系統(tǒng)架構(gòu)下,需要有多個(gè)存儲(chǔ)組件并存。并且根據(jù)對查詢和分析能力的不同要求,需要在數(shù)據(jù)派生體系下對存儲(chǔ)進(jìn)行動(dòng)態(tài)擴(kuò)展。所以對于大數(shù)據(jù)存儲(chǔ)來說,也需要有能擴(kuò)展存儲(chǔ)的派生能力,來擴(kuò)展數(shù)據(jù)處理能力。而判斷一個(gè)存儲(chǔ)組件是否具備更好的數(shù)據(jù)派生能力,就看是否具備成熟的 CDC 技術(shù)。

5. 云原生架構(gòu):存儲(chǔ)與計(jì)算成本分離

在云原生大數(shù)據(jù)架構(gòu)中,每一層架構(gòu)都在往服務(wù)化的趨勢演進(jìn),存儲(chǔ)服務(wù)化、計(jì)算服務(wù)化、元數(shù)據(jù)管理服務(wù)化等。每個(gè)組件都被要求拆分成不同的單元,作為結(jié)果表也不例外,需要具備獨(dú)立擴(kuò)展的能力,更開放、更靈活、更彈性。

單就從結(jié)果表來說,只有符合云原生架構(gòu)的組件,即基于存儲(chǔ)計(jì)算分離架構(gòu)實(shí)現(xiàn)的產(chǎn)品,才能做到存儲(chǔ)和計(jì)算成本的分離,以及獨(dú)立擴(kuò)展。存儲(chǔ)和計(jì)算分離的優(yōu)勢,在大數(shù)據(jù)系統(tǒng)下會(huì)更加明顯。舉一個(gè)簡單的例子,結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)的存儲(chǔ)量會(huì)隨著數(shù)據(jù)的積累越來越大,但是數(shù)據(jù)寫入量是相對平穩(wěn)的。所以存儲(chǔ)需要不斷的擴(kuò)大,但是為了支撐數(shù)據(jù)寫入或臨時(shí)的數(shù)據(jù)分析而所需的計(jì)算資源,則相對來說比較固定,是按需的。

3、架構(gòu)選型

MySQL

和維表一樣,大數(shù)據(jù)和實(shí)時(shí)計(jì)算技術(shù)起步之初,MySQL 是一個(gè)萬能存儲(chǔ),幾乎所有需求都可以通過 MySQL 來完成,因此應(yīng)用規(guī)模非常廣,結(jié)果表也不例外。隨著數(shù)據(jù)規(guī)模的不斷擴(kuò)展和需求場景的日漸復(fù)雜,MySQL 有點(diǎn)難以承載,就結(jié)果表的場景下主要存在以下問題:

1. 大數(shù)據(jù)存儲(chǔ)成本高:這個(gè)在之前討論維表時(shí)已經(jīng)提到,關(guān)系數(shù)據(jù)庫單位存儲(chǔ)成本非常高。

2. 單一存儲(chǔ)系統(tǒng),提供的查詢能力有限:隨著數(shù)據(jù)規(guī)模的擴(kuò)大,MySQL 讀寫性能的不足問題逐漸顯現(xiàn)了出來。另外,隨著分析類 AP 需求的產(chǎn)生,更適合 TP 場景的 MySQL 查詢能力比較有限。

3. 高吞吐數(shù)據(jù)寫入能力較差:作為 TP 類的關(guān)系型數(shù)據(jù)庫,并不是特別擅長高吞吐的數(shù)據(jù)寫入。

4. 擴(kuò)展性差,擴(kuò)展成本較高:這個(gè)在之前討論維表時(shí)已經(jīng)提到,MySQL 在存儲(chǔ)側(cè)的擴(kuò)展需要進(jìn)行數(shù)據(jù)復(fù)制遷移,且需要雙倍資源,因此擴(kuò)展靈活性差,成本也比較高。

以上這些限制使 MySQL 在大數(shù)據(jù)結(jié)果表場景下存在性能瓶頸,成本也比較高,但作為關(guān)系型數(shù)據(jù)庫,不是特別適合作為大數(shù)據(jù)的結(jié)果表使用。

HBase

由于關(guān)系型數(shù)據(jù)庫的天然瓶頸,基于 BigTable 概念的分布式 NoSQL 結(jié)構(gòu)化數(shù)據(jù)庫應(yīng)運(yùn)而生。目前開源界比較知名的結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)是 Cassandra 和 HBase,Cassandra 是 WideColumn 模型 NoSQL 類別下排名 Top-1 的產(chǎn)品,在國外應(yīng)用比較廣泛。這篇文章中,我們重點(diǎn)提下在國內(nèi)應(yīng)用更多的 HBase。      HBase 是基于 HDFS 的存儲(chǔ)計(jì)算分離架構(gòu)的 WideColumn 模型數(shù)據(jù)庫,擁有非常好的擴(kuò)展性,能支撐大規(guī)模數(shù)據(jù)存儲(chǔ),它的優(yōu)點(diǎn)為:

1. 大數(shù)據(jù)規(guī)模存儲(chǔ),支持高吞吐寫入:基于 LSM 實(shí)現(xiàn)的存儲(chǔ)引擎,支持大規(guī)模數(shù)據(jù)存儲(chǔ),并為寫入優(yōu)化設(shè)計(jì),能提供高吞吐的數(shù)據(jù)寫入。

2. 存儲(chǔ)計(jì)算分離架構(gòu):底層基于 HDFS,分離的架構(gòu)可以按需對存存儲(chǔ)和計(jì)算分別進(jìn)行彈性擴(kuò)展。

3. 開發(fā)者生態(tài)成熟,與其他開源生態(tài)整合較好:作為發(fā)展多年的開源產(chǎn)品,在國內(nèi)也有比較多的應(yīng)用,開發(fā)者社區(qū)很成熟,與其他開源生態(tài)如 Hadoop,Spark 整合較好。

HBase有其突出的優(yōu)點(diǎn),但也有幾大不可忽視的缺陷:

1. 查詢能力弱,幾乎不支持?jǐn)?shù)據(jù)分析:提供高效的單行隨機(jī)查詢以及范圍掃描,復(fù)雜的組合條件查詢必須使用 Scan + Filter 的方式,稍不注意就是全表掃描,效率極低。HBase 的 Phoenix 提供了二級索引來優(yōu)化查詢,但和 MySQL 的二級索引一樣,只有符合最左匹配的查詢條件才能做索引優(yōu)化,可被優(yōu)化的查詢條件非常有限。

2. 數(shù)據(jù)派生能力弱:前面章節(jié)提到 CDC 技術(shù)是支撐數(shù)據(jù)派生體系的核心技術(shù),HBase 不具備 CDC 技術(shù)。

3. 非云原生 Serverless 服務(wù)模式,成本高:前面提到結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)的關(guān)鍵需求之一是存儲(chǔ)與計(jì)算的成本分離,HBase 的成本取決于計(jì)算所需 CPU 核數(shù)成本以及磁盤的存儲(chǔ)成本,基于固定配比物理資源的部署模式下 CPU 和存儲(chǔ)永遠(yuǎn)會(huì)有一個(gè)無法降低的最小比例關(guān)系。即隨著存儲(chǔ)空間的增大,CPU 核數(shù)成本也會(huì)相應(yīng)變大,而不是按實(shí)際所需計(jì)算資源來計(jì)算成本。因此,只有云原生的 Serverless 服務(wù)模式,才要達(dá)到完全的存儲(chǔ)與計(jì)算成本分離。

4. 運(yùn)維復(fù)雜:HBase 是標(biāo)準(zhǔn)的 Hadoop 組件,最核心依賴是 Zookeeper 和 HDFS,沒有專業(yè)的運(yùn)維團(tuán)隊(duì)幾乎無法運(yùn)維。

國內(nèi)的高級玩家大多會(huì)基于 HBase 做二次開發(fā),基本都是在做各種方案來彌補(bǔ) HBase 查詢能力弱的問題,根據(jù)自身業(yè)務(wù)查詢特色研發(fā)自己的索引方案,例如自研二級索引方案、對接 Solr 做全文索引或者是針對區(qū)分度小的數(shù)據(jù)集的 bitmap 索引方案等等。總的來說,HBase 是一個(gè)優(yōu)秀的開源產(chǎn)品,有很多優(yōu)秀的設(shè)計(jì)思路值得借鑒。

HBase + Elasticsearch

為了解決 HBase 查詢能力弱的問題,國內(nèi)很多公司通過 Elasticsearch 來加速數(shù)據(jù)檢索,按照 HBase + Elasticsearch 的方案實(shí)現(xiàn)他們的架構(gòu)。其中,HBase 用于做大數(shù)據(jù)存儲(chǔ)和歷史冷數(shù)據(jù)查詢,Elasticsearch 用于數(shù)據(jù)檢索,其中,由于 HBase 不具備 CDC 技術(shù),所以需要業(yè)務(wù)方應(yīng)用層雙寫 HBase 和 Elasticsearch,或者啟動(dòng)數(shù)據(jù)同步任務(wù)將 HBase 同步至 Elasticsearch。

這個(gè)方案能通過 Elasticsearch 極大地補(bǔ)足 HBase 查詢能力弱的問題,但由于 HBase 和 Elasticsearch 本身的一些能力不足,會(huì)存在以下幾個(gè)問題:

1. 開發(fā)成本高,運(yùn)維更加復(fù)雜:客戶要維護(hù)至少兩套集群,以及需要完成 HBase 到 Elasticsearch 的數(shù)據(jù)同步。如果要保證 HBase 和 Elasticsearch 的一致性,需要通過前文提到的應(yīng)用層多寫的方式,這不是解耦的架構(gòu)擴(kuò)展起來比較復(fù)雜。另外整體架構(gòu)比較復(fù)雜,涉及的模塊和技術(shù)較多,運(yùn)維成本也很高。

2. 成本很高:客戶需要購買兩套集群,以及維護(hù) HBase 和 Elasticsearch 的數(shù)據(jù)同步,資源成本很高。

3. 仍沒有數(shù)據(jù)派生能力:這套架構(gòu)中,只是將數(shù)據(jù)分別寫入 HBase 和 Elasticsearch 中,而 HBase 和 Elasticsearch 均沒有 CDC 技術(shù),仍然無法靈活的將數(shù)據(jù)派生到其他系統(tǒng)中。

Tablestore

Tablestore 是阿里云自研的結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)產(chǎn)品,具體產(chǎn)品介紹可以參考 官網(wǎng) 以及 權(quán)威指南 。Tablestore 的設(shè)計(jì)理念很大程度上顧及了數(shù)據(jù)系統(tǒng)內(nèi)對結(jié)構(gòu)化大數(shù)據(jù)存儲(chǔ)的需求,并且基于派生數(shù)據(jù)體系這個(gè)設(shè)計(jì)理念專門設(shè)計(jì)和實(shí)現(xiàn)了一些特色的功能。簡單概括下 Tablestore 的技術(shù)理念:

1. 大規(guī)模數(shù)據(jù)存儲(chǔ),支持高吞吐寫入:LSM 和 B+ tree 是主流的兩個(gè)存儲(chǔ)引擎實(shí)現(xiàn),其中 Tablestore 基于 LSM 實(shí)現(xiàn),支持大規(guī)模數(shù)據(jù)存儲(chǔ),專為高吞吐數(shù)據(jù)寫入優(yōu)化。

2. 通過多元化索引,提供豐富的查詢能力:LSM 引擎特性決定了查詢能力的短板,需要索引來優(yōu)化查詢。而不同的查詢場景需要不同類型的索引,所以 Tablestore 提供多元化的索引來滿足不同類型場景下的數(shù)據(jù)查詢需求。

3. 支持 CDC 技術(shù),提供數(shù)據(jù)派生能力:Tablestore 的 CDC 技術(shù)名為 Tunnel Service,支持全量和增量的實(shí)時(shí)數(shù)據(jù)訂閱,并且能無縫對接 Flink 流計(jì)算引擎來實(shí)現(xiàn)表內(nèi)數(shù)據(jù)的實(shí)時(shí)流計(jì)算。

4. 存儲(chǔ)計(jì)算分離架構(gòu):采用存儲(chǔ)計(jì)算分離架構(gòu),底層基于飛天盤古分布式文件系統(tǒng),這是實(shí)現(xiàn)存儲(chǔ)計(jì)算成本分離的基礎(chǔ)。

5. 云原生架構(gòu),Serverless 產(chǎn)品形態(tài),免運(yùn)維:云原生架構(gòu)的最關(guān)鍵因素是存儲(chǔ)計(jì)算分離和 Serverless 服務(wù)化,只有存儲(chǔ)計(jì)算分離和 Serverless 服務(wù)才能實(shí)現(xiàn)一個(gè)統(tǒng)一管理、統(tǒng)一存儲(chǔ)、彈性計(jì)算的云原生架構(gòu)。由于是 Serverless 產(chǎn)品形態(tài),業(yè)務(wù)方無需部署和維護(hù) Tablestore,極大地降低用戶的運(yùn)維成本。

方案對比

舉一個(gè)具體的場景,結(jié)果表需要存千億級別的電商訂單交易數(shù)據(jù),總計(jì)存儲(chǔ)量需要 1T,用戶需要對于這類數(shù)據(jù)進(jìn)行查詢與靈活的分析。日常訂單查詢與數(shù)據(jù)檢索頻率為 1000 次/秒,數(shù)據(jù)分析約每分鐘查詢 10 次左右。

以下是不同架構(gòu)達(dá)到要求所需的配置,以及在阿里云上的購買成本:

五、總結(jié)

本篇文章談了云原生大數(shù)據(jù)架構(gòu)下的實(shí)時(shí)計(jì)算維表和結(jié)果表場景下的架構(gòu)設(shè)計(jì)與選型。其中,阿里云 Tablestore 在這些場景下有一些特色功能,希望能通過本篇文章對我們有一個(gè)更深刻的了解。 

 

責(zé)任編輯:張燕妮 來源: 阿里技術(shù)
相關(guān)推薦

2019-11-21 09:49:29

架構(gòu)運(yùn)維技術(shù)

2022-12-29 09:13:02

實(shí)時(shí)計(jì)算平臺(tái)

2021-03-10 14:04:10

大數(shù)據(jù)計(jì)算技術(shù)

2021-07-05 10:48:42

大數(shù)據(jù)實(shí)時(shí)計(jì)算

2017-01-15 13:45:20

Docker大數(shù)據(jù)京東

2016-11-02 09:02:56

交通大數(shù)據(jù)計(jì)算

2020-09-11 10:19:03

騰訊云大數(shù)據(jù)數(shù)據(jù)

2024-09-26 17:42:48

2022-11-07 18:19:14

Arctic大數(shù)據(jù)

2012-08-31 09:48:12

云計(jì)算大數(shù)據(jù)

2019-02-18 15:23:21

馬蜂窩MESLambda

2022-12-23 09:29:52

大數(shù)據(jù)

2021-05-08 09:14:55

云計(jì)算大數(shù)據(jù)人工智能

2018-01-04 13:39:34

大數(shù)據(jù)云計(jì)算IT行業(yè)

2017-01-04 10:29:37

Spark運(yùn)維技術(shù)

2021-02-28 13:45:12

邊緣計(jì)算云計(jì)算Kubernetes

2023-07-18 18:14:51

云原生軟件架構(gòu)

2021-06-03 08:10:30

SparkStream項(xiàng)目Uv

2021-07-16 10:55:45

數(shù)倉一體Flink SQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产精品乱码| 午夜精品福利在线观看| 两性午夜免费视频| 第一福利在线视频| 国产日本欧洲亚洲| 91九色在线视频| 国产精品theporn动漫| 五月国产精品| 欧美高清dvd| 欧美日韩性生活片| 99中文字幕一区| 懂色av一区二区三区免费观看| 精品日韩成人av| 成人免费在线小视频| porn视频在线观看| 波多野结衣中文一区| 国产精品视频网址| 日韩免费黄色片| 久久中文视频| 亚洲开心激情网| 特黄特色免费视频| 亚洲毛片在线免费| 在线视频综合导航| 男人用嘴添女人下身免费视频| www.久久久久久| 日韩精品乱码av一区二区| 久久久久久美女| 欧美人与禽zoz0善交| 日韩极品少妇| 精品免费日韩av| caoporm在线视频| 日韩一区二区三区免费| 欧美日韩国产在线| 精品国产一区二区三区无码| 黄色免费网站在线观看| 中文字幕乱码亚洲精品一区 | 欧美日韩国产精品一区二区三区| 国产精品一区二区三区av| 色婷婷激情一区二区三区| 精品丰满人妻无套内射| 羞羞网站在线免费观看| 中文字幕亚洲电影| 日本一区二区三区www| 深夜福利视频在线观看| av在线不卡免费看| 国产免费一区二区三区| 性欧美videos另类hd| 国产精品一卡二卡| 91成人免费观看| aaa一区二区三区| 国产一区二区导航在线播放| 成人性生交大片免费看视频直播 | 91老司机福利在线| 樱桃国产成人精品视频| 国产女人18毛片| 国产原厂视频在线观看| 自拍偷拍亚洲激情| a级网站在线观看| 在线观看小视频| 亚洲自拍欧美精品| 日本中文字幕网址| 欧美a级在线观看| 欧美日韩免费观看中文| 国产一区二区三区精彩视频| 精品91久久| 色菇凉天天综合网| 欧美成人三级在线播放| 国产精品日本一区二区不卡视频 | 亚洲系列第一页| 美女在线视频一区| 91久久中文字幕| 成人黄色免费视频| 成人免费视频视频| 久久久人人爽| 午夜伦理在线| 亚洲一区二区三区中文字幕在线| 欧美日韩在线观看一区| 欧美日韩国产亚洲沙发| 中文字幕欧美区| 高清无码一区二区在线观看吞精| 成全电影播放在线观看国语| 亚洲欧洲性图库| 91精品一区二区三区四区| 91丝袜在线| 在线欧美日韩国产| 久久精品无码一区二区三区毛片| 欧美艳星kaydenkross| 欧美系列在线观看| 中文字幕avav| 精品伊人久久久| 色偷偷偷综合中文字幕;dd| www.超碰在线观看| 午夜在线播放视频欧美| 国产精品网红福利| 免费观看成年人视频| 久久久久国产精品免费免费搜索| 国精产品一区二区| 黄色片免费在线| 亚洲免费av高清| 波多野结衣家庭教师视频| 国产福利亚洲| 亚洲成在人线av| 人成免费在线视频| 一本色道精品久久一区二区三区 | 精品一区二区三区电影| 殴美一级黄色片| 国产精品美女久久久浪潮软件| 欧美黑人狂野猛交老妇| 麻豆精品久久久久久久99蜜桃| 99精品国产福利在线观看免费| 欧美国产欧美亚洲国产日韩mv天天看完整| 性の欲びの女javhd| 亚洲香蕉网站| 成人精品视频久久久久| 天天操天天射天天| 亚洲精品欧美专区| 999精品视频在线| 青青草久久爱| 久久久久久中文| 一卡二卡三卡在线| 国产亚洲福利社区一区| 黄色国产一级视频| 91亚洲无吗| 久色乳综合思思在线视频| 免费精品一区二区| www.视频一区| 亚洲熟妇无码av在线播放| 欧美天堂一区二区| 亚洲视频欧洲视频| 日本三级一区二区| 成人精品小蝌蚪| 大陆极品少妇内射aaaaaa| 成人国产精品入口免费视频| 亚洲人成电影网站色xx| 日韩欧美一区二区一幕| 粉嫩13p一区二区三区| 黄色一级视频播放| 精品国产亚洲一区二区在线观看 | 国产精品久久久久久久龚玥菲| 久久精品一区四区| 成人黄色av片| 精品国内亚洲2022精品成人| 欧美区二区三区| 精品人妻aV中文字幕乱码色欲| 99久久99久久精品免费观看| 日b视频免费观看| 99久久免费精品国产72精品九九| 日韩激情在线视频| 日本一区二区免费在线观看| 粉嫩aⅴ一区二区三区四区五区| 久久综合福利| a国产在线视频| 日韩精品福利在线| 无码人妻精品一区二区三区9厂| 国产一区二区在线视频| 亚洲一区二区在线看| 欧美在线se| 久久久电影免费观看完整版| 999久久久久久| 亚洲自拍偷拍欧美| 一本加勒比波多野结衣| 亚洲欧美日韩在线观看a三区| 91深夜福利视频| 在线三级中文| 亚洲国产福利在线| 韩国av中文字幕| 久久精品日韩一区二区三区| 国产wwwxx| 一区二区三区四区在线观看国产日韩| 热久久这里只有| 国产黄在线播放| 欧美精品一卡两卡| 欧美成人一二三区| av资源网一区| 日本熟妇人妻中出| 永久91嫩草亚洲精品人人| 国产精品一区二区a| 日韩国产激情| 欧美久久久精品| 色久视频在线播放| 欧美老女人第四色| 日产亚洲一区二区三区| 国产人成亚洲第一网站在线播放| 五月丁香综合缴情六月小说| 蜜乳av综合| 91麻豆国产精品| 国产直播在线| 日韩视频亚洲视频| 刘亦菲久久免费一区二区| 一本一道久久a久久精品综合蜜臀| 亚洲精品激情视频| 男女性色大片免费观看一区二区| 看欧美日韩国产| 日韩五码电影| 97免费在线视频| 色大18成网站www在线观看| 亚洲成人av中文字幕| 中文字幕视频在线播放| 亚洲大片一区二区三区| 超碰97av在线| 99精品视频在线观看免费| 久久久久久久久久一区二区| 国产欧美短视频| 9191国产视频| 国产一区二区三区天码| 国产精品一区在线播放| 天天综合91| 国产精品久久久久久久av电影| 黄色影院在线播放| 日韩欧美成人一区| 在线观看视频二区| 一本到一区二区三区| 久久人人爽人人爽人人| 国产精品二区一区二区aⅴ污介绍| 色综合色综合色综合色综合| 亚洲精选成人| 毛片在线视频观看| 97精品一区| 日韩av一区二区三区美女毛片| 日本在线视频一区二区| 久久久久久这里只有精品| 麻豆视频在线免费观看| 亚洲图片欧洲图片av| 亚洲 欧美 自拍偷拍| 日韩欧美在线网站| 国产精品九九九九| 欧美视频一二三区| 天天射天天干天天| 午夜精品一区二区三区电影天堂| 久久人妻少妇嫩草av无码专区 | 亚洲三级性片| 国产九区一区在线| av不卡一区| 成人国产1314www色视频| 国产电影一区二区| 国产综合视频在线观看| 精品国模一区二区三区| 日韩免费高清在线观看| 成人av观看| 日本亚洲精品在线观看| 亚洲最大网站| 日本国产高清不卡| 26uuu亚洲电影| 欧洲亚洲女同hd| 欧美理论影院| 国产成人综合精品在线| 精品欧美一区二区三区在线观看| 久久久精品亚洲| 超碰在线观看免费| 美女啪啪无遮挡免费久久网站| 隣の若妻さん波多野结衣| 精品国产凹凸成av人网站| 亚洲女同志亚洲女同女播放| 精品处破学生在线二十三| 精品国产999久久久免费| 日韩一区二区不卡| 全部免费毛片在线播放一个| 亚洲高清久久久久久| 亚洲人成色777777老人头| 亚洲美女av电影| 国产乱子伦三级在线播放| 中文字幕综合一区| 黄色片免费在线观看| 欧美激情伊人电影| 国产va在线视频| 国产成人精品综合久久久| 99只有精品| 99国精产品一二二线| 国产 日韩 欧美 综合 一区| 精品一区二区三区自拍图片区 | 国产91在线播放九色| 国产精品每日更新在线播放网址| 高清中文字幕mv的电影| 91在线观看下载| 在线观看日本黄色| 一区二区三区四区中文字幕| 日本五十熟hd丰满| 色吊一区二区三区| 国产强伦人妻毛片| 亚洲成人精品视频| 加勒比一区二区三区在线| 俺去亚洲欧洲欧美日韩| a'aaa级片在线观看| 日韩美女在线观看一区| 99久久久国产| 欧美成人第一区| 91精品啪在线观看国产81旧版| 欧美黑人3p| 久久久五月天| 乱妇乱女熟妇熟女网站| 久久成人羞羞网站| 亚洲观看黄色网| 中文字幕欧美一| 国产女同在线观看| 欧美日韩在线播放| 色婷婷视频在线| 日韩在线观看视频免费| rebdb初裸写真在线观看| 国产精品永久在线| 国产精品极品在线观看| 一区二区在线不卡| 亚洲欧美日韩专区| 亚洲最大视频网| 中文无字幕一区二区三区| 日韩 欧美 亚洲| 制服丝袜国产精品| 国产高清一区在线观看| 国内精品国产三级国产在线专| 美女航空一级毛片在线播放| 国产精品久久久av| 风间由美性色一区二区三区四区| 国产伦精品一区二区三区免| 欧美黄色大片在线观看| 国产日产欧美视频| 成人免费毛片片v| 精品国产欧美日韩不卡在线观看| 日韩一区日韩二区| 国产污视频网站| 精品粉嫩aⅴ一区二区三区四区| 午夜影院免费体验区| 欧美成人手机在线| 欧美日韩伦理一区二区| 欧美最大成人综合网| 日韩一级网站| 青青草视频网站| 亚洲一区二区综合| 97人人爽人人爽人人爽| 伊是香蕉大人久久| 日韩成人高清| 欧美日韩一区在线视频| 亚洲欧美久久久| 日本黄色录像片| 午夜精品久久久久久久久久久| 日韩精品一区不卡| 亚洲成人激情在线| 日本高清在线观看| 亚洲xxxx视频| 欧美xxx在线观看| 两女双腿交缠激烈磨豆腐| 亚洲欧洲综合另类| 99精品在线视频观看| 久久精品国产综合| 伊人久久大香线蕉综合影院首页| 91视频在线免费观看| 亚州av乱码久久精品蜜桃| 中文字幕永久视频| 中文字幕免费在线观看视频一区| 九九视频免费观看| 日韩一级大片在线观看| av在线免费观看网址| 亚洲已满18点击进入在线看片| 久久精品国产亚洲5555| 成人午夜精品久久久久久久蜜臀| 日韩精品亚洲一区二区三区免费| 51自拍视频在线观看| 亚洲美女少妇撒尿| 精品人妻少妇AV无码专区| 欧美www在线| 2023国产精华国产精品| 免费看又黄又无码的网站| 99久久99久久精品免费看蜜桃 | 久久久精品久久久久久96| 中文字幕第一页在线视频| 亚洲免费资源在线播放| 亚洲黄色在线观看视频| 97在线观看免费| 精品日本12videosex| 中文字幕精品一区二区三区在线| av一区二区三区黑人| 日本视频在线观看免费| 国产亚洲精品久久久| 小说区图片区亚洲| 久久国产精品网| 国产亚洲欧洲一区高清在线观看| 国产精品第九页| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 蜜桃91丨九色丨蝌蚪91桃色| 国产天堂av在线| 亚洲精品久久久久久下一站| 日韩美女在线看免费观看| 在线观看成人一级片| 丁香亚洲综合激情啪啪综合| www.久久久久久久| xxx一区二区| 欧美一区 二区| 一区二区在线免费看| 亚洲国产一区二区三区青草影视| 91片黄在线观看喷潮| 欧美极品在线播放| 欧美一区三区| 在线观看免费视频国产| 欧美日韩一区三区| 国产精品186在线观看在线播放| 国产精品亚洲第一区| 在线欧美不卡| 国产喷水在线观看| 日韩黄色在线免费观看| 少妇高潮一区二区三区99| 久久成人免费观看| 亚洲人成网站精品片在线观看|