久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

數(shù)據(jù)中臺(tái)實(shí)戰(zhàn)指南:從架構(gòu)規(guī)劃到性能調(diào)優(yōu)全解析

數(shù)據(jù)中臺(tái)實(shí)戰(zhàn)指南:從架構(gòu)規(guī)劃到性能調(diào)優(yōu)全解析 1. 數(shù)據(jù)中臺(tái)不是什么神秘架構(gòu)而是一場(chǎng)數(shù)據(jù)治理戰(zhàn)役這兩年“數(shù)據(jù)中臺(tái)”這個(gè)詞被炒得厲害有人把它當(dāng)成數(shù)據(jù)團(tuán)隊(duì)的萬(wàn)能解藥有人覺得它就是一套平臺(tái)軟件買回來就能用。我在多個(gè)項(xiàng)目里做過中臺(tái)相關(guān)建設(shè)從最開始跟著喊口號(hào)到后來自己動(dòng)手梳理指標(biāo)、搭數(shù)倉(cāng)、調(diào)集群、壓測(cè)大屏渲染最大的感受是數(shù)據(jù)中臺(tái)本質(zhì)上不是一套系統(tǒng)而是把企業(yè)散落的“數(shù)據(jù)資產(chǎn)”重新組織、治理、服務(wù)化的一套方法論加工程體系。這次就以一個(gè)零售業(yè)務(wù)的真實(shí)案例為線索把這個(gè)過程完整拆開講包括架構(gòu)選型、集群規(guī)劃、數(shù)據(jù)接入、指標(biāo)治理以及最后落到數(shù)據(jù)大屏上的渲染優(yōu)化。先說清楚這個(gè)案例的背景。一家連鎖零售企業(yè)有線下門店、線上小程序、第三方外賣平臺(tái)三個(gè)業(yè)務(wù)入口每天產(chǎn)生的訂單、庫(kù)存、會(huì)員、商品、日志數(shù)據(jù)量不小。在建設(shè)數(shù)據(jù)中臺(tái)之前他們的數(shù)據(jù)使用方式是很典型的煙囪式運(yùn)營(yíng)部門讓開發(fā)從訂單庫(kù)里拉數(shù)據(jù)做報(bào)表財(cái)務(wù)部門又按自己的口徑統(tǒng)計(jì)銷售額市場(chǎng)部要投廣告效果分析再寫一套腳本去抽數(shù)據(jù)。結(jié)果就是大量重復(fù)開發(fā)指標(biāo)口徑對(duì)不上一套報(bào)表系統(tǒng)改了需求另外三套還要跟著改。數(shù)據(jù)中臺(tái)要解決的就是這類“重復(fù)建設(shè)、口徑混亂、響應(yīng)慢”的問題而不是單純地把 Hadoop 裝上、把 Kafaka 搭起來。這次建設(shè)我不只負(fù)責(zé)其中某一塊而是把從數(shù)據(jù)接入到服務(wù)出口的整條鏈路都走了一遍。文章會(huì)分成幾個(gè)大塊先講整體設(shè)計(jì)與架構(gòu)思路再說數(shù)據(jù)接入和標(biāo)準(zhǔn)化的細(xì)節(jié)接著是集群部署與計(jì)算資源規(guī)劃的實(shí)操方法然后重點(diǎn)聊一下數(shù)據(jù)服務(wù)層和可視化大屏的性能問題尤其是很多人都會(huì)遇到的“Qt 表格加載大數(shù)據(jù)卡頓”這個(gè)坑最后是這些年整理出來的常見問題和排查經(jīng)驗(yàn)。適合看這篇文章的人我默認(rèn)你是已經(jīng)被分配了“我們也要搞數(shù)據(jù)中臺(tái)”任務(wù)、但還沒想清楚從哪下手的工程師或架構(gòu)師或者你在做指標(biāo)管理、數(shù)據(jù)大屏、報(bào)表平臺(tái)想看看別人是怎么一步步把鏈路串起來的。文章里不會(huì)只給概念會(huì)盡量落到可執(zhí)行的參數(shù)、步驟和踩坑經(jīng)驗(yàn)上方便你對(duì)照著自己項(xiàng)目去套。2. 整體設(shè)計(jì)先用業(yè)務(wù)的尺子量完再考慮技術(shù)選型2.1 中臺(tái)要解決的三個(gè)真問題口徑、復(fù)用、響應(yīng)很多團(tuán)隊(duì)第一步就錯(cuò)了上來就選組件、搭集群結(jié)果搭完不知道跑什么業(yè)務(wù)。我做這個(gè)項(xiàng)目時(shí)第一件事不是寫代碼而是跟著業(yè)務(wù)方把現(xiàn)有的報(bào)表、看板、分析需求全翻了一遍。翻完之后發(fā)現(xiàn)他們真正痛的是三點(diǎn)。第一口徑不統(tǒng)一。同樣是“銷售額”財(cái)務(wù)算的是實(shí)收金額運(yùn)營(yíng)算的是訂單金額不含退款市場(chǎng)部算的是支付成功且剔除刷單的金額三套口徑對(duì)不上開會(huì)對(duì)數(shù)能吵半天。第二重復(fù)開發(fā)嚴(yán)重。每個(gè)部門都養(yǎng)著自己的“表哥表姐”腳本互相復(fù)制粘貼數(shù)據(jù)來源還不一樣。第三報(bào)表和臨時(shí)取數(shù)響應(yīng)太慢。遇到大促運(yùn)營(yíng)臨時(shí)要一個(gè)“按小時(shí)、按門店、按品類”的銷售分析數(shù)據(jù)團(tuán)隊(duì)要跑一兩天才能給出來等跑完活動(dòng)也快結(jié)束了。數(shù)據(jù)中臺(tái)的架構(gòu)設(shè)計(jì)本質(zhì)上是沖著這三個(gè)問題去的。它不止要建數(shù)倉(cāng)還要建一套“指標(biāo)標(biāo)準(zhǔn)”和“數(shù)據(jù)服務(wù)”體系。先統(tǒng)一口徑再把數(shù)據(jù)按統(tǒng)一標(biāo)準(zhǔn)接入、分層加工最后以 API 的方式對(duì)外輸出。業(yè)務(wù)方不需要關(guān)心底層數(shù)據(jù)從哪來、怎么算只要按約定好的指標(biāo)名和服務(wù)接口去取數(shù)這就解決了復(fù)用和響應(yīng)問題。2.2 中臺(tái)整體架構(gòu)分層這套架構(gòu)不是憑空設(shè)計(jì)的業(yè)界主流的中臺(tái)架構(gòu)基本都長(zhǎng)這樣我們只是結(jié)合業(yè)務(wù)做了裁剪??偟姆謱邮菙?shù)據(jù)源層 → 數(shù)據(jù)接入層 → 數(shù)倉(cāng)加工層 → 數(shù)據(jù)服務(wù)層 → 應(yīng)用層。每個(gè)層次解決不同問題盡量不讓各層職責(zé)互相滲透。數(shù)據(jù)源層對(duì)應(yīng)三個(gè)業(yè)務(wù)入口的數(shù)據(jù)庫(kù)、日志、第三方平臺(tái)報(bào)表文件。接入層統(tǒng)一用 Canal 監(jiān)聽 MySQL binlog 進(jìn) Kafka日志用 Flume 采集離線批量同步用 DataX 或 Sqoop。數(shù)倉(cāng)層按 ODS、DWD、DWS、ADS 的標(biāo)準(zhǔn)四層模型做加工ODS 把原始數(shù)據(jù)原樣落地DWD 做清洗、去重、標(biāo)準(zhǔn)化DWS 按業(yè)務(wù)主題做匯總ADS 再面向具體應(yīng)用場(chǎng)景加工。服務(wù)層把 DWS 和 ADS 的結(jié)果封裝成指標(biāo) API統(tǒng)一暴露給上層。應(yīng)用層就是數(shù)據(jù)大屏、BI 報(bào)表、自助分析、對(duì)外數(shù)據(jù)接口這些。在這個(gè)架構(gòu)里我最想強(qiáng)調(diào)的一點(diǎn)是數(shù)據(jù)服務(wù)層不能省。很多團(tuán)隊(duì)建完數(shù)倉(cāng)就結(jié)束了應(yīng)用方還是直接連 Hive 或 ClickHouse 查表這是中臺(tái)失敗的常見伏筆。一旦應(yīng)用方繞過服務(wù)層直接觸達(dá)底表口徑控制就失效了中臺(tái)會(huì)慢慢退化成原來的煙囪式開發(fā)。對(duì)比維度傳統(tǒng)煙囪式數(shù)據(jù)中臺(tái)式指標(biāo)口徑各業(yè)務(wù)各自定義經(jīng)常沖突中臺(tái)統(tǒng)一注冊(cè)、統(tǒng)一發(fā)布數(shù)據(jù)加工每個(gè)報(bào)表一套腳本分層加工一次建設(shè)多處復(fù)用服務(wù)方式直接連庫(kù)/提數(shù)標(biāo)準(zhǔn)化API屏蔽底層表結(jié)構(gòu)需求響應(yīng)新需求重新開發(fā)通過已有主題數(shù)據(jù)快速組裝數(shù)據(jù)質(zhì)量無人統(tǒng)一負(fù)責(zé)監(jiān)控、告警、質(zhì)量評(píng)估體系2.3 建設(shè)路徑先治理再架構(gòu)后平臺(tái)我見過不少項(xiàng)目把順序搞反了。正確的路徑應(yīng)該是“業(yè)務(wù)梳理 → 指標(biāo)梳理 → 數(shù)據(jù)模型設(shè)計(jì) → 平臺(tái)搭建 → 任務(wù)開發(fā) → 服務(wù)化”。順序不能亂原因很簡(jiǎn)單如果指標(biāo)口徑?jīng)]定好數(shù)倉(cāng)模型設(shè)計(jì)就是空中樓閣模型沒定好集群和任務(wù)調(diào)度再牛也白搭。在業(yè)務(wù)梳理階段我們把所有業(yè)務(wù)過程的指標(biāo)按“原子指標(biāo) 修飾詞 時(shí)間周期”的方式拆。比如“昨日華東區(qū)門店線下訂單實(shí)收金額”這個(gè)指標(biāo)原子指標(biāo)是“實(shí)收金額”修飾詞是“華東區(qū)、門店、線下訂單”時(shí)間周期是“昨日”。這樣拆完你就能發(fā)現(xiàn)很多指標(biāo)其實(shí)共用同一個(gè)原子指標(biāo)只是修飾詞不同。原子指標(biāo)在數(shù)倉(cāng)里就對(duì)應(yīng)一張唯一的 DWS 匯總表后續(xù)不管哪里要用都是在這張表上組合查詢復(fù)用性一下子就出來了。平臺(tái)搭建階段我們選了 CDH 發(fā)行版作為 Hadoop 底座計(jì)算用 Spark 和 Flink調(diào)度用 DolphinScheduler查詢服務(wù)用 ClickHouse 和 Kafka元數(shù)據(jù)管理掛了一個(gè)自研的元數(shù)據(jù)中心。選型邏輯后面會(huì)詳細(xì)說這里不展開。3. 數(shù)據(jù)接入與標(biāo)準(zhǔn)化ODS 不是垃圾桶DWD 才是清洗主戰(zhàn)場(chǎng)3.1 多源異構(gòu)數(shù)據(jù)怎么統(tǒng)一接進(jìn)來這個(gè)項(xiàng)目的接入層分三類業(yè)務(wù)庫(kù)實(shí)時(shí)變更、日志數(shù)據(jù)、離線批量數(shù)據(jù)。業(yè)務(wù)庫(kù)主要是 MySQL我們用的方案是 Canal 監(jiān)聽主庫(kù) binlog解析成統(tǒng)一的 JSON 消息寫入 Kafka。注意這里有個(gè)細(xì)節(jié)binlog 監(jiān)聽只適合變更數(shù)據(jù)同步如果是線上大表做全量初始化我們還是會(huì)臨時(shí)用 DataX 先拉一次全量再切到 Canal 增量否則 binlog 積壓會(huì)把集群打掛。日志數(shù)據(jù)主要來自小程序前端埋點(diǎn)和后端訪問日志統(tǒng)一走 Flume 采集格式是規(guī)范后的 JSON 行包含 timestamp、event_id、user_id、page_id 等字段。第三方外賣平臺(tái)不提供數(shù)據(jù)庫(kù)權(quán)限只給 CSV 報(bào)表文件我們每天早上定時(shí)用 DataX 拉取到 HDFS。所有接入的數(shù)據(jù)第一道統(tǒng)一處理是補(bǔ)充技術(shù)字段如 source_system、biz_date、etl_time、敏感字段脫敏、統(tǒng)一編碼和時(shí)間格式。這一步在 ODS 層就要做掉一部分。我踩過的坑是一開始把清洗邏輯全部放到 DWD 才做導(dǎo)致 ODS 層接進(jìn)來的原始數(shù)據(jù)“臟亂差”下游開發(fā)還要重復(fù)清洗任務(wù)之間耦合很重。后來改成 ODS 只做最基礎(chǔ)的格式統(tǒng)一和簡(jiǎn)單過濾DWD 做真正意義上的業(yè)務(wù)清洗兩條邊界的職責(zé)才清晰。3.2 Kafka Topic 與數(shù)倉(cāng)分層設(shè)計(jì)的最佳實(shí)踐Kafka 的 topic 設(shè)計(jì)上我們一開始按數(shù)據(jù)源分比如 ordermysql、log_flume、report_csv。后來發(fā)現(xiàn)一個(gè)問題同一個(gè)訂單既要從 MySQL 同步狀態(tài)變更也要對(duì)應(yīng)用戶行為日志分開訂閱容易造成下游 join 時(shí)數(shù)據(jù)時(shí)序錯(cuò)亂。后續(xù)調(diào)整為按業(yè)務(wù)域分訂單域dwd_order、會(huì)員域dwd_member、商品域dwd_product、日志域dwd_log。同一個(gè)域下的實(shí)時(shí)與離線數(shù)據(jù)在這個(gè) topic 正則下統(tǒng)一管理Flink 消費(fèi)時(shí)也能更自然地對(duì)齊時(shí)間窗口。數(shù)倉(cāng)三層模型的建設(shè)我更愿意用“寬化”和“復(fù)用”兩個(gè)詞來概括。DWD 層做的最重要的事是把明細(xì)數(shù)據(jù)盡量寬表化把訂單、訂單明細(xì)、支付流水、門店信息、商品信息等關(guān)聯(lián)成一張大寬表這樣下游 DWS 去聚合時(shí)不需要反復(fù) join。DWS 層按主題域建匯總表比如訂單域日匯總、會(huì)員域日活躍表、商品域銷售排行表。ADS 層再根據(jù)大屏和報(bào)表需求做最終封裝粒度非常靈活。分層主要職責(zé)數(shù)據(jù)形態(tài)典型表ODS原樣接入格式統(tǒng)一全量/增量原始數(shù)據(jù)ods_order_infoDWD清洗、標(biāo)準(zhǔn)化、寬表化明細(xì)寬表dwd_order_detail_wideDWS按主題匯總、指標(biāo)沉淀輕度匯總dws_order_day_summaryADS按應(yīng)用場(chǎng)景定制高度匯總/預(yù)統(tǒng)計(jì)ads_screen_sales_hour3.3 指標(biāo)口徑統(tǒng)一從“吵不完的架”到“一張字典表”指標(biāo)口徑統(tǒng)一是整個(gè)中臺(tái)建設(shè)成敗的分水嶺。我們的做法是建了指標(biāo)字典把每個(gè)指標(biāo)對(duì)應(yīng)到唯一的原子指標(biāo)、修飾詞、數(shù)倉(cāng)表、計(jì)算邏輯、更新頻率。比如“銷售額”只能有一個(gè)定義來自 DWS 訂單日匯總表的實(shí)收金額字段包含已完成和已收貨訂單剔除退款和刷單訂單。任何業(yè)務(wù)方要取數(shù)必須引用字典里已登記的指標(biāo)不能自己另起爐灶。這里有個(gè)很現(xiàn)實(shí)的問題業(yè)務(wù)方已經(jīng)用舊口徑跑了好幾年報(bào)表你說改就改會(huì)有人不服。我們的處理方式是做“新舊口徑并行期”定義一個(gè)舊口徑的表保留三個(gè)月同時(shí)新口徑報(bào)表上線等業(yè)務(wù)確認(rèn)新口徑?jīng)]問題后再下掉舊表。這三個(gè)月里為了對(duì)齊我們做了很多數(shù)據(jù)校驗(yàn)工作隨機(jī)抽 10 天歷史數(shù)據(jù)舊口徑結(jié)果和新中臺(tái)結(jié)果逐一比對(duì)差異超過萬(wàn)分之五就回去查原因。等跑完這輪驗(yàn)證業(yè)務(wù)方心里的石頭才落了地。4. 計(jì)算與集群部署把每一臺(tái)機(jī)器的資源都算明白再動(dòng)手4.1 集群規(guī)模怎么估以數(shù)據(jù)量為起點(diǎn)反推這個(gè)項(xiàng)目的數(shù)據(jù)量日增量大概在 5TB 左右業(yè)務(wù)高峰期大促日能到 20TB總的 HDFS 存儲(chǔ)約半年內(nèi) 1PB。我們當(dāng)時(shí)規(guī)劃集群沒有拍腦袋而是先做了一輪計(jì)算。存儲(chǔ)方面HDFS 默認(rèn)三副本所以 1PB 邏輯數(shù)據(jù)需要 3PB 物理容量。加上數(shù)據(jù)保留策略、中間結(jié)果、臨時(shí)文件我們預(yù)留 20% 冗余物理存儲(chǔ)按 3.6PB 規(guī)劃。單臺(tái)機(jī)器如果配 8 塊 8TB 盤可用容量約 50TB還要扣掉系統(tǒng)盤、元數(shù)據(jù)開銷這樣數(shù)據(jù)節(jié)點(diǎn)大概需要 75-80 臺(tái)。為了應(yīng)對(duì)大促擴(kuò)容我們沒一次買夠而是按“日常 60 臺(tái) 彈性擴(kuò)容到 90 臺(tái)”的方式部署。計(jì)算資源方面Spark 離線任務(wù)主體跑在 YARN 上。當(dāng)時(shí)線上資源基線是 3 萬(wàn)核、200TB 內(nèi)存按每節(jié)點(diǎn) 64 核、512GB 內(nèi)存、50 節(jié)點(diǎn)計(jì)算。我們把任務(wù)分成實(shí)時(shí)、離線、adhoc 三類通過 YARN 隊(duì)列劃分實(shí)時(shí)隊(duì)列 20% 資源離線隊(duì)列 60%adhoc 查詢隊(duì)列 20%。這樣設(shè)計(jì)是為了避免臨時(shí)跑一個(gè) adhoc 查詢把離線核心任務(wù)擠掉。4.2 部署細(xì)節(jié)HA 別省壓縮別亂用批次別貪多集群部署時(shí)的幾個(gè)關(guān)鍵細(xì)節(jié)我直接列出來每一項(xiàng)都是踩過坑換來的經(jīng)驗(yàn)Namenode 和 ResourceManager 一定要做 HA心跳自動(dòng)切換。我們前期圖省事沒配后來一次機(jī)房維護(hù)導(dǎo)致 Nomenode 單點(diǎn)故障整個(gè)集群停了大半天。數(shù)據(jù)壓縮格式我們統(tǒng)一選 ORC Snappy。ORC 列式存儲(chǔ)對(duì)分析查詢友好Snappy 壓縮和解壓速度快壓縮比雖然不是最高但綜合性能最好。不要混用多種壓縮格式否則下游讀文件時(shí)一會(huì)兒解壓這個(gè)一會(huì)兒解壓那個(gè)效率極低。Spark 任務(wù)提交參數(shù)不要亂調(diào)。我們一開始盲目加大 executor memory導(dǎo)致集群內(nèi)存碎片化嚴(yán)重。最終經(jīng)驗(yàn)是單 executor 3-5GB 內(nèi)存、2-4 核比較平穩(wěn)大量大批次任務(wù)比小批次任務(wù)更容易導(dǎo)致資源競(jìng)爭(zhēng)和 task 長(zhǎng)尾。Flink 的 Checkpoint 間隔默認(rèn) 5 分鐘但我們實(shí)時(shí)大屏對(duì)準(zhǔn)確性要求很高就改成了 60 秒一次使用 RocksDB 增量 Checkpoint并且開啟自動(dòng)無鎖恢復(fù)。這樣才能在節(jié)點(diǎn)故障后更快恢復(fù)狀態(tài)。配置項(xiàng)我們的取值說明HDFS 副本數(shù)3常規(guī)數(shù)據(jù) 3 副本臨時(shí)數(shù)據(jù) 1 副本HDFS 塊大小128MB大文件多128MB 均衡了元數(shù)據(jù)和 IOSpark executor 內(nèi)存4GB避免資源碎片和頻繁 GCSpark executor 核數(shù)2提升單節(jié)點(diǎn)并行度避免大任務(wù)獨(dú)占Flink Checkpoint 間隔60s實(shí)時(shí)指標(biāo)恢復(fù)時(shí)間要求高壓縮格式ORC Snappy讀寫性能和壓縮比平衡4.3 調(diào)度與血緣讓任務(wù)“跑得動(dòng)還看得清”調(diào)度我們選的是 DolphinScheduler。選它的原因很簡(jiǎn)單支持中文界面、可視化 DAG 編排、帶告警機(jī)制能直接對(duì)接 Hive 和 Spark部署也輕量。離線任務(wù)每天凌晨跑一個(gè)全量管道白天每小時(shí)跑一次增量管道調(diào)度依賴用時(shí)間窗控制避免任務(wù)之間因?yàn)樯嫌瓮睃c(diǎn)而產(chǎn)生連環(huán)延遲。光有調(diào)度還不夠中臺(tái)的可治理性很大程度依賴數(shù)據(jù)血緣。我們自研了元數(shù)據(jù)中心它會(huì)從 Spark、Hive、Flink 的執(zhí)行日志和 Catalog 中解析出“表 → 表、任務(wù) → 表”的血緣關(guān)系。這樣當(dāng)某張 DWS 表的字段口徑需要調(diào)整時(shí)能快速找到所有下游任務(wù)提前評(píng)估影響面而不是改完再被業(yè)務(wù)方投訴“報(bào)表數(shù)據(jù)怎么突然不對(duì)了”。5. 數(shù)據(jù)服務(wù)與可視化大屏別讓一塊大屏暴露整個(gè)中臺(tái)的性能短板5.1 數(shù)據(jù)服務(wù)層輸出標(biāo)準(zhǔn)化指標(biāo)而不是裸表數(shù)據(jù)服務(wù)層是整個(gè)中臺(tái)對(duì)外輸出的窗口也是最容易被“省掉”的一層。它做的事情是把 DWS/ADS 的結(jié)果封裝成 API提供兩類接口指標(biāo)查詢接口例如按門店、品類、小時(shí)查銷售額和明細(xì)查詢接口例如查某訂單詳情。指標(biāo)查詢的核心是預(yù)聚合。大屏上展示的“今日實(shí)時(shí)銷售額”“本小時(shí)訂單量”這類指標(biāo)我們不可能實(shí)時(shí)去查明細(xì)而是在 DWS 層做分鐘級(jí)預(yù)聚合結(jié)果放到 Redis 緩存接口直接讀緩存響應(yīng)時(shí)間能壓在 200ms 以內(nèi)。明細(xì)查詢則落到 ClickHouseClickHouse 的列式存儲(chǔ)和向量化執(zhí)行在這種場(chǎng)景下特別給力億萬(wàn)級(jí)明細(xì)表按條件過濾也能秒出結(jié)果。我個(gè)人強(qiáng)烈建議數(shù)據(jù)服務(wù)層盡量用統(tǒng)一網(wǎng)關(guān)包一層不要直接把 ClickHouse 或 Doris 的連接信息發(fā)給應(yīng)用方。連接信息一旦擴(kuò)散應(yīng)用的臨時(shí)查詢和報(bào)表直連都會(huì)不受控中臺(tái)的口徑治理就形同虛設(shè)。5.2 數(shù)據(jù)大屏常見卡頓QTableWidget 是怎么一步一步拖垮你的講到可視化數(shù)據(jù)大屏是這個(gè)案例里非常典型的一個(gè)場(chǎng)景。大屏一部分是指標(biāo)卡片和圖表另一部分是實(shí)時(shí)滾動(dòng)的明細(xì)表格展示最近 1000 條訂單記錄。我們用 Qt 做桌面端大屏的客戶端一開始圖省事表格控件直接用了 QTableWidget結(jié)果數(shù)據(jù)一多就卡得不能自理。這個(gè)問題我相信不只我一個(gè)人遇到所以專門拉出來講講。QTableWidget 卡的根本原因是它默認(rèn)使用 QStandardItemModel每一條數(shù)據(jù)都要新建一個(gè) QTableWidgetItem 對(duì)象并塞進(jìn)表格。如果你要顯示 1 萬(wàn)行、每行 10 列意味著你要?jiǎng)?chuàng)建 10 萬(wàn)個(gè) QTableWidgetItem 對(duì)象。10 萬(wàn)個(gè)小對(duì)象的內(nèi)存開銷和創(chuàng)建耗時(shí)不說QTableWidget 還會(huì)為每個(gè)格子準(zhǔn)備畫刷、編輯代理等額外資源內(nèi)存爆炸是必然的。更要命的是QTableWidget 的視圖在沒有優(yōu)化的情況下會(huì)對(duì)可見區(qū)域外的單元格做大量刷新和判空處理尤其是設(shè)置了 alternatingRowColors、豎向滾動(dòng)的時(shí)候CPU 消耗非常大。很多人問“為什么我只看到幾十行也會(huì)卡”那是因?yàn)?Qt 的表格視圖并不是只畫屏幕上那幾十行它內(nèi)部要處理所有“可能的單元格”的取數(shù)邏輯。你的瓶頸其實(shí)出在 Model 承載了太多數(shù)據(jù)而不是 View 畫了多少。對(duì)比維度QTableWidgetQTableView 自定義 Model數(shù)據(jù)存儲(chǔ)內(nèi)部 Item 對(duì)象每條數(shù)據(jù)都要建對(duì)象外部數(shù)據(jù)源Model 按需提供數(shù)據(jù)滾動(dòng)性能全量 Item 參與計(jì)算容易卡頓只渲染可見區(qū)原生支持虛擬滾動(dòng)內(nèi)存占用大小數(shù)據(jù)仍存在業(yè)務(wù)側(cè)不復(fù)制靈活性低高可自定義排序、代理、懶加載5.3 從 QTableWidget 換到 QTableView 自定義 QAbstractTableModel把 QTableWidget 換成 QTableView 自定義 QAbstractTableModel這算是 Qt 表格大數(shù)據(jù)的標(biāo)準(zhǔn)解法。原理很簡(jiǎn)單QTableView 只負(fù)責(zé)繪制可見區(qū)域的單元格通過 model 的 rowCount、columnCount、data 三個(gè)方法按需獲取數(shù)據(jù)而不是預(yù)先創(chuàng)建所有 item。換句話說你的原始數(shù)據(jù)放在自己的容器里Model 只做“取數(shù)映射”視圖滾動(dòng)時(shí)它會(huì)反復(fù)調(diào)用 data 方法讀取需要的那幾十行數(shù)據(jù)。下面給一段可以直接參考的 model 實(shí)現(xiàn)框架。我先定義一個(gè) DataModel構(gòu)造函數(shù)接收外部數(shù)據(jù)源的引用data 方法里按 role 返回?cái)?shù)據(jù)行數(shù)和列數(shù)直接從外部數(shù)據(jù)源獲取。關(guān)鍵點(diǎn)在于不要讓 model 持有超大數(shù)據(jù)副本只持引用即可。class DataModel : public QAbstractTableModel { Q_OBJECT public: explicit DataModel(QVectorQVectorQVariant* dataPtr, QObject* parent nullptr) : QAbstractTableModel(parent), m_dataPtr(dataPtr) {} int rowCount(const QModelIndex parent QModelIndex()) const override { if (parent.isValid()) return 0; return m_dataPtr ? m_dataPtr-size() : 0; } int columnCount(const QModelIndex parent QModelIndex()) const override { if (parent.isValid()) return 0; return 10; // 固定列數(shù)具體按業(yè)務(wù)來 } QVariant data(const QModelIndex index, int role) const override { if (!index.isValid() || !m_dataPtr) return QVariant(); if (role Qt::DisplayRole || role Qt::EditRole) { return m_dataPtr-at(index.row()).at(index.column()); } return QVariant(); } QVariant headerData(int section, Qt::Orientation orientation, int role) const override { if (role ! Qt::DisplayRole) return QVariant(); if (orientation Qt::Horizontal) { // 返回列名例order_idstore_nameamountstatus... return m_header[section]; } return QString::number(section 1); } private: QVectorQVectorQVariant* m_dataPtr; QStringList m_header {訂單號(hào), 門店, 金額, 狀態(tài)}; };換成這個(gè) model 之后你會(huì)立刻感受到滾動(dòng)的順暢。因?yàn)?QTableView 只請(qǐng)求當(dāng)前可見區(qū)域約幾十行的 data即使底層有幾十萬(wàn)、上百萬(wàn)條記錄性能也能保持在很穩(wěn)定水平。視圖一次只顯示幾十行這恰恰是它高效的原因并不是 bug是虛擬化機(jī)制的正常表現(xiàn)。換用 QTableView 之后還有幾步優(yōu)化建議調(diào)用 setUniformRowHeights(true)它假設(shè)所有行高一致可以大幅減少滾動(dòng)時(shí)的布局計(jì)算setVerticalScrollMode(QAbstractItemView::ScrollPerPixel) 讓滾動(dòng)更平滑避免在高頻滾動(dòng)時(shí) setAlternatingRowColors(true)這個(gè)選項(xiàng)在數(shù)據(jù)量大時(shí)反而會(huì)增加繪制次數(shù)。如果還需要更極致的性能可以考慮用 QSortFilterProxyModel 做排序過濾或者把分頁(yè)數(shù)據(jù)源換成真正懶加載每次只加載當(dāng)前窗口范圍內(nèi)的數(shù)據(jù)。5.4 大屏背后還有數(shù)據(jù)鏈路的緩存與降級(jí)方案表格控件優(yōu)化只是大屏體驗(yàn)的一部分更重要的還是保證數(shù)據(jù)接口穩(wěn)定。我們?cè)诖笃练?wù)端做了三層保障Redis 做指標(biāo)緩存接口命中緩存直接返回緩存失效時(shí)才回源查詢 ClickHouseClickHouse 如果也扛不住再走一層降級(jí)策略比如大屏自動(dòng)切換到 DWS 預(yù)匯總的小表而不是讓用戶看到白屏或報(bào)錯(cuò)。這里有一個(gè)小技巧值得提一下大屏接口的響應(yīng)時(shí)間標(biāo)準(zhǔn)是“P95 必須小于 300msP99 必須小于 1s”為了達(dá)到這個(gè)目標(biāo)我們?cè)?DWS 層專門建了幾張“秒級(jí)聚合表”每 15 秒用 Flink 做一次滾動(dòng)聚合把最新 1 小時(shí)的數(shù)據(jù)一次性算出結(jié)果寫入 ClickHouse。這樣大屏反復(fù)刷新的數(shù)據(jù)不會(huì)直接打到明細(xì)層而是打在這張聚合表上查詢壓力小很多。6. 常見問題與排查技巧實(shí)錄中臺(tái)建設(shè)中最容易翻車的地方6.1 離線任務(wù)延遲導(dǎo)致大屏數(shù)據(jù)斷層大屏上“今日銷售額”是一個(gè)小時(shí)級(jí)別的實(shí)時(shí)指標(biāo)和離線報(bào)表的日終結(jié)果偶爾對(duì)不上業(yè)務(wù)方會(huì)質(zhì)疑“你們數(shù)據(jù)是不是壞了”。這個(gè)問題本質(zhì)是實(shí)時(shí)和離線兩套鏈路計(jì)算的邏輯不完全一致。比如實(shí)時(shí)鏈路統(tǒng)計(jì)的訂單狀態(tài)是“支付完成即計(jì)入”離線鏈路要求“訂單完成且退款剔除”兩邊本來就存在時(shí)間差窗口。處理辦法是分場(chǎng)景說明口徑大屏標(biāo)注“實(shí)時(shí)口徑最終以日終報(bào)表為準(zhǔn)”同時(shí)跑一個(gè)每日對(duì)賬任務(wù)把實(shí)時(shí)鏈路前一天的結(jié)果和離線日終結(jié)果做比對(duì)差額超過閾值自動(dòng)告警。這樣數(shù)據(jù)鏈路是否可靠業(yè)務(wù)方可以用對(duì)賬結(jié)果判斷而不是聽我們拍胸脯保證。6.2 集群資源被臨時(shí)查詢打爆中臺(tái)開放了自助分析能力之后總會(huì)有業(yè)務(wù)同學(xué)寫“三表大 join、全表掃描”的查詢把集群資源吃光影響正式調(diào)度任務(wù)。我們解決方法是三管齊下YARN 隊(duì)列做了嚴(yán)格配額adhoc 查詢只分到 20% 資源池超過就排隊(duì)DQC 數(shù)據(jù)質(zhì)量中心對(duì)慢查詢做規(guī)則攔截掃描行數(shù)超過一定量就自動(dòng)熔斷再給每個(gè)賬號(hào)設(shè)定單次查詢最大掃描量避免“一次性全表掃”這種操作。常見問題根因排查思路處理辦法大屏接口慢ClickHouse 查詢掃全表或緩存過期頻繁看慢查詢?nèi)罩尽⒖疵新始?DWS 預(yù)聚合、Redis 緩存、限流降級(jí)實(shí)時(shí)與離線數(shù)據(jù)對(duì)不上兩條鏈路統(tǒng)計(jì)口徑不同抽樣對(duì)賬比對(duì)差異數(shù)據(jù)范圍統(tǒng)一口徑文檔每日定時(shí)對(duì)賬告警Kafka 消費(fèi)延遲分區(qū)數(shù)少、消費(fèi)者并行度低查看消費(fèi)組 lag檢查 Flink 并行度增加 topic 分區(qū)、調(diào)大 Flink 并行度Spark 任務(wù)數(shù)據(jù)傾斜熱點(diǎn) key 導(dǎo)致單 task 處理量大看 task 耗時(shí)分布確認(rèn) task 數(shù)據(jù)量加鹽分桶、廣播小表、改 join 策略Qt 表格滾動(dòng)卡頓使用了 QTableWidget 或 model 不虛擬化檢查 item 數(shù)量和 data 調(diào)用次數(shù)換 QTableView 自定義 QAbstractTableModel6.3 數(shù)據(jù)質(zhì)量監(jiān)控一定要前置不要等報(bào)表錯(cuò)了再救火關(guān)于數(shù)據(jù)中臺(tái)我最后想聊的是“治理”兩個(gè)字。平臺(tái)搭好、任務(wù)跑通只是開始真正決定中臺(tái)能不能長(zhǎng)期活下去的是數(shù)據(jù)質(zhì)量監(jiān)控和治理機(jī)制。我們監(jiān)控體系每個(gè)月能發(fā)現(xiàn)上百個(gè)潛在問題源系統(tǒng)字段枚舉值變化、上游任務(wù)延遲、指標(biāo)翻倍異常等等這些問題大部分都是靠規(guī)則提前擋住的。每個(gè)核心任務(wù)都要配置“主鍵唯一性校驗(yàn)、表行數(shù)波動(dòng)監(jiān)控、字段空值率監(jiān)控”。這些規(guī)則在任務(wù)完成后自動(dòng)觸發(fā)如果異常會(huì)阻塞下游任務(wù)執(zhí)行并告警到責(zé)任人。可以說沒有數(shù)據(jù)質(zhì)量監(jiān)控的中臺(tái)早晚會(huì)退化成“數(shù)據(jù)沼澤”。7. 這個(gè)內(nèi)容后續(xù)還可以這樣擴(kuò)展如果你正在規(guī)劃數(shù)據(jù)中臺(tái)我建議不要把全部精力放在組件選型和集群參數(shù)上。中臺(tái)本質(zhì)是治理工程把指標(biāo)口徑、數(shù)據(jù)模型、質(zhì)量監(jiān)控這三件事做扎實(shí)比堆多少組件都重要。再分享一個(gè)最后才踩到的經(jīng)驗(yàn)第一次建設(shè)數(shù)據(jù)中臺(tái)范圍不要鋪太大。先挑一個(gè)業(yè)務(wù)域比如訂單域做端到端打通從數(shù)據(jù)接入到指標(biāo)展示全部跑通再橫向擴(kuò)展到其他域。不要一上來就規(guī)劃 20 個(gè)業(yè)務(wù)域、50 個(gè)主題那樣項(xiàng)目周期會(huì)被拖到半年以上團(tuán)隊(duì)熱情也會(huì)被消磨掉。一個(gè)小而完整的成功樣板比一個(gè)宏大到不了了之的規(guī)劃有效得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情五月天婷婷| 97视频播放| 日本日逼高清| 狠狠躁伊人中文字幕| 性色乱AV一区二区| 欧美国产伊人久久久久| 日本欧美不卡| 欧美日韩中国x| 日韩精品三区四区| 欧美熟女操屄| 欧美A片中文字幕| 蜜桃视频一区二区三区| 欧美|91色综合| 蜜乳AV免费观看| 另类老少妇| 久久最新视频免费观看| 婷婷综合激情| 亚洲天堂99| 在线一道啪| 国产熟女自拍| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 精品成人亚洲午夜电影| 亚洲天堂精品日韩电影| 黑人性暴力毛片| surenchaopeng| 大香交伊人网| 激情视频网址| 久久无码电影| 在线播放一级无码视频| 精品国产无码中文| 囯产精品久久久久久久久久二区三区| 老熟女阿 国产91| 免费网色网站| 加勒比日本在线| 性色乱AV一区二区| 精品视频123区小说区| 精品一区二区成人动漫| 日韩av乱伦| 国产曰批免费观看久久久| 无码人妻一区二区三区免费九色| 欧美综色欧| 91AV老熟女视频| 丁香五月偷拍| 一起草AV| 一区二区 韩日AV| 国产福利影视| 国产区性爱在线视频秋霞豆| 国产高清在线观看欧美| 啪啪性爱免费视频| 黄片视频,下载| 精品国产91内射久久| 国产91影院| 免费操逼91| 国产偷拍网站| a片偷拍视频| 亚洲欧洲无码bt精品合集| 久久国产AⅤ| aa片毛片| 亚洲最新中文字幕免费| 婷婷综合激情| 丁香五月天婷婷姐| aaa淫乱视频| 日韩丝袜高跟制服在线观看| 亚洲自拍青操视频| 91丨人妻丨国产丨丝袜| 一个色导综合| 婷婷五月综合在线| 亚洲大色堂| 久久超碰大香蕉| A男人的天堂| 蜜桃臀久久| aV中文麻| 成人小说视频在线精品欧美| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产二区三区粉嫩在线| 伊人久久亚洲色欲综合网站 | 欧美高潮| 99热在线播放| 日韩性爱视频在线免费观看| 日本在线不卡v二区| 欧美十八禁在线看| 亚洲综合 欧美| 男人天堂2030| 国产女人与拘做受视频免费| 精品 码产区一区二-1080P高清在线www-B029AV| 韩国轻伦国内自拍一区| 91亚洲最新在线| 亚洲啪啪视频免费| 很很热性爱视频| 久久这里精品国产99丫e6| 伦理弟一页| 国产免费久久精品99re韩国| 精品一区二区三区麻豆| 一区二区视频在线播放| 高凊专区人人操| 东北女人操比视频| 人人摸人人入| 日韩精品一区二区三区色欲| 欧美日韩一二三| 9色国产精品一区粉嫩 | 天天日天天操VV| 久热这里只有精品9| 中文?日韩?免费?精品| 99色热国产视频精品| 综合五月婷婷| 欧美性Fer办公室秘书| 无码高清少妇久久| 97 亚洲 日韩 欧美 在线| 色麻豆AV| 一起草欧美| 99成人| 97超碰这里只有精品| 人妻熟女一区二区三区视频| 亚洲精品美女久久久久久久久| 少妇人妻无码| 青娱乐国产剧情av一区| 91天美传媒在线观看| 97干在线| 视频在线观看一二三区| 久9九综合在线| 尤物一级在线免费观看| 欧美日本天堂| AV一起草在线| 日本不卡二三区| 日本色色色网站免费看不卡| 伊人久久国产免费观看视频| 亚洲色狠| 日韩精品区二区三区不卡| 麻豆av一区二区| 玖玖爱免费观看视频| 亚洲五月丁香花狠狠干一区二区三区 | 久久熟女久| 欧美熟妇成人一区二区| 久久久久久久久久久999| 亚洲欧洲自拍图片专区满春格| 激情综合色| 校园春色亚洲色图| 天天爽天天| 天天欧美| 国产视频一区二区三区久久亚洲天堂| 精品国产乱码久久久久久蜜臀| 六十路日本| 中文字幕日韩情色| 国产黄a三级三级三级av在线看| 性色综合网| 久操视频资源站公开| 校园春色综合香蕉| 午夜影美女日鸡鸡天天视频国产| 人人搡人人肉久久精品| 久久久久九九九| 精品免费成人久久| 超碰人人乐97| 91成人久久| 性生活性生大爱77AV国产| 亚洲日本韩国在线| 亚洲精品97| 欧美男女午夜啪啪| 强奸乱伦AV一天堂网| av亚洲天堂资源网站| 人人操人人操人人人操| 91国产伊人大香蕉| 久久做97| 99热在线播放| 欧美探花网| 5252色欧美在线男人的天堂| 91蜜臀在线久久久久| 亚洲精品一区二区精品| 久久影视二区三区行押| 欧美性暴力猛交XXXX| 欧美日韩精品一区二区三区高清| 网友自拍第1页| 搡老女人老妇女老妇老熟女怎么读| 少妇一级无码精品| 国产不卡的视频| 色色五月天婷婷| 老熟女搡BBBB搡BBBB视频| 人妻人久久精品中文字幕| 红杏大香蕉| 人人插人人摸人人| 免费αV在线视频| 9997se| 国产大片精久久久久久| 久久AV无码网址| 蜜臀久久99精品久久久久久-DVD原版全| 成人一区二区三区四区| 五月激情小说| 综合一区中亚洲国产成人综合精品| 欧美综合色综合| 美女露胸露屁股| 91天堂色男人的天堂| 亚洲少妇视频| 97欧美久久久久久久| 中文字幕第7页| 九九九久久久久| 五月丁香| 国产乱人伦AVA麻豆软件.| 天天躁日日躁狠狠躁| 亚洲综合性网址| 97综合在线观看| 中文字幕 国产区| 人妻献身系列第54部| 超碰97COm中文| 蜜桃臀一区二区aV | 丰满人妻一区二区三区四区| 日日骚精品视频| 欧洲中文字幕| 婷婷国产精品九区| 99婷婷| 国产情侣自拍在线播放| 老司机天天操| 国产51色综合久久免费| 日本中文字幕不卡视频| 99久久久久久亚洲精品不卡| 亚洲av青草久久一区二区| 在线亚洲丝袜视频网站| 自拍亚洲综合| 黑人干亚洲| 亚洲人码13| 美女大乳久久久久久久女人18| 伊人五月天| 色情五月婷婷| 亚洲综合色男人网| 91在线|亚| 男人亚洲91首页在线| 国产又粗又长的视频| 欧洲乱码视频| 欧美97视频| 天天摸天天舔天天操| www.高清无码诱惑一区.com | 欲色影视综合吧| 久久手机视直播| 久久9 9 9精品| 亭亭丁香激情| 亚洲熟女一区| 国产精品97超碰| 91精品操美女| 色欲Av人妻精品一区二| 亚洲欧洲综合av在线| www.av在线视频| 强奸乱伦中文字幕AV| 久久久国产亚洲精品系列| 嫩草影院在线观看精品| 超碰91在线| 91狠婷| 日本少妇va7777| 校园春色亚洲色图| 久草加勒比一区在线| 色妺妺在线视频| 97se综合| 91高清无码下载| 国产精品午夜福利视频| 91制服丝袜中文字幕| 超碰九九| 亚洲国产精品V?在线播放| 国产精品久久久久无码A√| 福利伊人玖玖国产| 综合网,亚洲,欧美| 亚洲污污网站| 国产剧情在线| 成人性爱视频在线看| 91热爆在线| 国产四虎在线| 啊啊啊啊免费视频| 日韩Va亚洲va欧美Ⅴa久久| 五月天婷婷久久| www.丁香五月| 男人的天堂欧美| 青青草原成人| 顶级丝袜熟女一区二区三区| 色综合五月天| 久操| 一级做a爰片性色毛片久久| 在线观看亚洲专区| 亚洲中文字幕乱码无码一区二区| 精彩久久中文| 国产精品美女久久久久久网站| 久久、1234| 欧美性色欧美| 熟女乱伦二区| 少妇蹲下买菜露大唇0| 搡老女人老熟女91| 久久婷婷色| 久久久久久久久久久999| 91性片| 欧美日韩啪啪电影| 91视频成人福利网站在线一区| 午夜福利合集| 亚洲偷拍自拍在线视频| 97视频在线视频| 超碰免费人妻在线| 99热精品在线播放| 99草精| 大香蕉黄色一级片免费看| 久操视频免费在线观看| 99久久久| 伊人女女资源在线观看| 精品美女久久一二三| 人妻一区二区三区四区视频 | 欧美另类色图片| 亚洲天堂少妇| 日本高清一区二区在线| 久久久久9| 国产日韩色综合| 极品粉嫩一区二区| 97视频免费在线观看| 五月天婷婷基地| julia国产在线 | 亚洲熟女国产综合另类| 国内外内射高清视频| 日韩精品 资源| 欧综合网| 青草香蕉网| 国产男女无套97| 97爱爱| 亚洲男人天堂2019| 九九精品无码专区免费| 超碰97最新人妻| 日本黄色大片一级视频免费麻豆| 亚洲。日韩。欧美| 免费久久一级毛片大黄| 夜夜骑天天燥| 91动漫操逼视频| 国产中文字幕在线观看| 九月丁香婷婷| 国产毛片在线| 精品免费囯产一区二区三区| 骚逼高潮久久精品| 99e久久国产精品| 一区二区三区成人| 色色色色电影网| 久久啊啊啊| 在线啊啊啊啊| 精品久久久高清无码| 嫩草 我啊~嗯~在线| 免费的黄片有限公司| 中文字幕久久精品一区| 性爱av网站| 伊人九九九| 色婷婷成人综合| 国产女人与拘做受视频免费| 伊人骚琪琪亚洲天堂网站| 久久婷婷在线观看视频| 中国国产精品一区视频| 午夜经典| 黄色高清久久无码依人| 色色福利| 国产色图乱伦| 人人爽夜夜玩视频| 日本一天色道久久久精品视频| 国模不卡一本二本三电影| 少妇高潮流水av免费| 天堂伊人久久| 色性综合| 最新中文字幕在线亚洲| 国产9熟妇视频网站| 黄色大片一区二区密桃丝袜| 全球成人中文在线| 6080YYY午夜理论片在线观看| 日韩综合色网| 欧美97在线观看| 日本福利社| 97国产高清视频在线观看| 欧美日韩人妻精品一区二区三区| 91人妻丝袜无码| 亚洲乱码国产乱码精网站| 久热一区二区| 久夜操| 精品人妻一二三四区视频| 98一区二区精品| 日本人人操人人操| 日韩美女啪啪一区| AV天堂国产| 亚洲男人的天堂va亚洲男人社| 亚洲色91C| 国产精品久久久亚洲一区| 免费簧片在线观看| 久干9操| 99热在线观看| 日韩精品一区二区人人人| 国产1727欧美| 在线小视频| 久九九九九九九热| 国产怡红院| 中文字幕 人妻不满 在线视频| 秋霞影音一区二区三区| 97人妻免费中文字幕| 日本中文熟女视频| 色牛aV| 四虎精品一区二区| 天天干嫩逼网| 91无码西班牙视频在线| 日韩免费在线观看不卡| 亚洲影院成人| 国产欧美在线观看免费观看| 极品色| 天天插网| 日韩av不卡在线看| 五十路三级片| 熟女人妻一区二区三区| 人人干人人操人人..com| 日本激情免费大片| 国产最新小视频在线播放下载| 国内偷拍精品一区二区| 人人做天天爱| 午夜无码精品免费看性色| 国产精品久久久久久久黄无码| 午夜性生活av免费在线看| 久久永久无码人妻视频| 亚洲第一黄色av网站| 久久久久久国产精品免费网站| 欧美日韩操逼动图| 一级免费啪啪片| 九九热视频在线观看| 久久久97| 中文字幕精品人妻丝袜| 97日本超碰综合| 久久男人网| 91操人| 青草成人免费视频一COm| 92性色国产午夜福利在线661| 免费观看国产不卡av| 另类专区在线观看| 奸色色 男人天堂 天天射| 欧美综合在线91| 国产欧美日产一区二区三区 - 国产欧美日 | 变态乱伦伪娘灌肠一区二区| 国产真实野战在线视频| 国产超碰国产97| 刺激精品视频| 中国和日本人色哪个不下载能放| 福利视频香蕉免费一区二区在线| 色欲无码人妻日韩欧美精品| 色婷婷丁香五月天| av操操不卡| 一本色道久久综合狠狠操| 九九九九精| 超碰国产精品久| 色五月激情综合网| 91日日| 偷拍导航视频网站| 日韩 欧美 另类 人妻| 我要看免费韩日黄片| 一区二区三区 丝袜 高跟 美腿| 97干天天| 东京热双插| 女人 A一级| 日本少妇va7777| 久久亚州大香蕉| 熟女探花啪啪| 国产人伦a片信息免费片| 国产精品久久久三级无码| 久久综合精品一区二区三区| 91色婷婷综合久久中文字幕二区| 欧美视频在线视频免费va| 亚洲视频一二区| 无遮挡男女激烈动态图| 国产精品麻豆成人AV艾秋| 超碰97综合网| 天天干天天狼在线视频| 免费草草草草草视频| 久热在线精品免费观看| 99在线观看无大码| 久久性爱精品一区| 欧美日韩亚洲天堂网| 老司机福利青青草| 精品久久99| 91精品老女人| 婷婷综合在线观看| 干我久操| 精品97久久综合| 欧美亚洲一级在线观看| 亚洲国产精品久久久男人的天堂| 精品人妻1区| 国产精品久久久777| 一二三四视频中文字幕在线看| 色九九九| 国产Aα| 性性久久| 人人看人人摸人人色| 大香蕉日韩欧美| 麻豆这里只有精品| 屁股久久久久久| 厕所偷拍在线| 国产精品福利视频播放| 欧美色图人妻| 综合网色| a级免费在线观看| 97香蕉人人乳| 在线国产一区二区av| 国产精选视频| 欧美天天谢综合网| 色乱二区| 超碰成人人人爽人人爽| 日韩中文字幕2020| 久热免费视频| 天天懆天天日| 九九九九亚洲| 天操老女人| 2024人人操人人摸| 熟妇乱伦一区二区| 人乳av| 欧插网站| 九九黄色视频在线观看| 亚洲黄片免费在线播放| 精久久久| 九月AV| 久久鲁干| 天天做天天爱夜夜爽毛片试看| 少妇第一页| 日本在线一二| 欧美日韩精品一区二区三区高清| 97干97色| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 东京热精品97综合网| 成人国产精品三级A片| 超碰欧美| 天天干夜夜鈤| 夜夜骑操视频| 日韩传媒在线| 午夜人妻精品综合在线| 看日韩操逼| 男人女人18禁片免费看网站| 97操B| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 欧美日韩人人精品| 激情视频网址| 中文字幕日韩人妻视频一区二区三区 | 亚洲清纯唯美| 亚洲综合99999| 亚洲麻豆精品二区三区| 日韩性爱电影一区| 国产91啪| 在线色导航| 九九九精品| 亚洲情色 自拍| 国产精品午夜福利视频| 超碰1997| 欧美日韩精品国产91| 啊啊啊com| 91狠狠色丁香婷婷综合久久| 欧美性爱系列| 国产浮力影院第1页| 无码区蜜乳| 欧美日本成人一区二区| 国产精品播放| 好爽视频在线观看视频| 变态综合色| 国产久9| 蜜臀一二三区| 色综合1991| 中文字幕免费看| 无毛精品| 91天天爽| 97视频播放| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 亚洲精品成人动漫在线| 丰满美女一级毛片在线播放| 91av熟女人妻| 被窝影院午夜看片无码| 老外又粗又长一晚做五次| 无码精品久久久久久亚洲| 91天天综合日韩欧美| 久久精品国产亚洲粉嫩| 超碰97丝袜| 天天综合-91入口| 91综合在线| 婷婷操视频| 欧洲亚洲国产综合在线| 日本东京热加勒比久久| 人人射人人操人人摸| 国产福利精品最新在线| 欧美国产日韩清纯唯美| 欧美三级不卡| 亚洲人妻熟妇三十三区| 久久一本大香蕉 | 欧美性夜| 欧美呦呦性爱| 一区二区三区 日韩欧美| 色久桃花影院在线观看| 国产欧美日韩在线不卡第一页| 伊人久久大香大香线蕉中文| 少妇一线天久久久久久| 一区二区 日韩 欧美 国产 传媒| 久久999久| 日韩专区久久久| 麻豆天美一区二区| 91影库| 久久久久久AⅤ无码免费肉站| 久草大| 国产四虎在线| 一区二区不卡免费| 亚州91| 欧美丝袜制服久久| 黑丝少妇| 激情视频一二三| 欧综合网| 在线综合色| 熟妇高潮一区二区免费视频| 91无摭挡| 秋霞网无码| 亚洲中文字母在线播放| 嫩草 人人网精品| 天堂亚洲精品| 国产乱伦性爱区| 九月婷婷综合| 曰韩香蕉97| 天天看夜夜看日日干| 色噜噜人妻丝袜a∨先锋影| 久久久久久性爱片| 欧美激情 亚洲色图| 亚洲色欲天天天堂色欲网女| 性爱综合网| 东北操逼| 欧美偷拍区| 嗯啊免费视频| 蜜臀Av一区二区三区| 一区二区三区黄色片a| 日韩在线76| 90后后入| 国产97视频免费观看| 蜜臀AV成人精品蜜臀AV久久| 久久色精品视频在线| 秋霞免费AV| 欧美暴力猛交| 黑人精品XXX一区一二区| 青草视频在线看看看看看看看看看| 亚州综合AⅤ| 四虎国产精品永久入口| 久久久久久久久久久久久久久性生活视频 | 亚洲学生妹高清av| 欧美日韩国产在线| 欧美日韩小说| 综合色99| 另类亚洲一区二区三区| 91大胆欧美| 夜夜欧美 | 久久精品国产亚洲粉嫩| 天天操天天舔| 综合熟妇一区二区三区| 日本人人操人人操| 色色青青久久| 探花激情视频| 97日亚洲欧美| 懂色AV一区二区三区| 992视频一区| 狠狠综合| 久久超碰网| 青青11操操操操操操操操| 成人国产二区三区在线,男女精品。| 欧美日韩国产色图在线| 天天影视综合色| 9久久精品| 啊啊啊啊免费视频| 久草成人福利导航| 偷拍偷窥与盗摄视频专区| 国产一区二区三区不卡手机在线| 爱爱动态60秒| 亚洲色图欧美色图制服丝袜 | 97干com| 亚洲天堂在线怕怕视频| 精品一区二区麻豆| 青娱乐国产精品| 91综合天天看| 大香蕉AV丝袜| 欧美性爱91| 中文字幕午夜精品久久久| 色色色色综合网| 欧美乱欲| 98精品国产乱码久久久久久| 97任你吞精| 久久这里只| 麻豆人妻少妇在线免费观看| japan日本高清乱xxxx| 香蕉国产97| 久久精品欧美一区蜜桃| 亚洲激情综合另类男同| 肉丝中文无码高清| 国产欧美日韩女同性恋ww喷水精品 | 亚洲精品人妻在线| 上床啊啊啊| 91欧美长吊| 人人妻人人狠人人| 大香蕉伊利av| 夜间福利片1000无码| 91n处女在线观看| 久久的网站啊啊啊啊啊| 每日更新AV| JIZZJIZZ亚洲女人被躁| 亚洲高清男人天堂| 欧美色偷拍 | 超碰97首页| 91ise欧美| 97欧美性爱| 国产真实子伦对白| 欧美色图亚洲色,麻豆| 久操99| 欧美人人AAA| 免费av在线播放二区| 黄页网站成人免费| www.高清无码诱惑一区.com| 婷婷精品| 成人免费不卡在线视频| 国产精品一二三在线看| 九九九九日本| 免费自拍三级综合| 久久久9品一区二区三区| 五十路六十路素人熟女| 久操免费电影| 动漫av中文| 久久久久性熟视频| 亚洲精品a人片在线观看视| 亚洲色91| 欧美色老汉| 国产十八禁视频| 久久婷婷一区二| 国产一区二区三区导航| 强奸抽插av| 亚洲天堂另类| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 亚欧操逼片在线观看 | 成人无码在线超碰网| 天天92av| 男人的天堂com| 97情超碰色| 国产精品久久久999| 天天看人人操屄犊摸阴| 亚洲天堂色图| 国产玖玖| 亚洲成人碰碰| 天天干天天拍| 六月丁香婷| 婷婷激情四射| 操碰97| www久久99| 综合久久中文字幕综合日韩精品| 黄色小视频日本txt| 免费精品人妻一区二区三| 一区二区三区亚洲| 日本成人A片网站| 大香蕉免费3| 翔田千里爆乳巨臀无码| 亚洲 小说 欧美 激情 另类| 中英熟女操女| 国内精品嫩模A∨私拍小视频| 日本视频在线中文字幕| 农村女一级毛卡片| 囯产精品久久久久久久久久梁医生 | 伊人991| 热久日综合| 精品人妻一区二区三区夜夜| 欧美A√综合网 | 中文一区二区| 日韩本不卡视频在线观看 | 男人a天堂手机在线版| 啪啪啪精品视频| 日本123区操B视频| 亚洲天堂区| 高清不卡国产| 都市激情人妻一区二区青青操视频 | 伊人网在线视频| 97天天插| 欧美爱爱97| 强奸乱伦免费网站| 午夜理论片在线观看免费| 亚洲色诱惑| 日韩性色b| 四虎免费看黄| 97在线播放| 亚洲天天综合| 国产理论视频在线播放| 2024人人操人人摸| 亚洲AV乱码专区国产噜噜亚洲| 超碰99热中文字幕| 青草伊人网| 国产在线视频午夜精华在| 亚洲阿v天堂无码z2018| 久99久视频| 嗯嗯啊啊用力视频免费| 伊人久久亚洲色欲综合网站 | 色综合久| 欧美午夜色妇色鬼| 97国产精品在线观看| 美女被啪到深处抽搐视频| 久草免费福利在线播放| 天天爽天天| 啊啊啊好舒服视频在线观看| 男人天堂2030| 97人妻免费中文字幕| 盗摄 精品 另类 一区| 日韩久久艹| 变态综合色| 久久91视频| 精品精品精品| 人人摸人人舔一区二区| 91社区伊人| 大香蕉丝袜一级片| 性爱欧美五月| 丰满人妻一区二区三区色-百度| 欧美人妻久久精品二区三区 | 东京热双插| 国产精品一区二区 尿失禁| 九久9热| 南澳成人一级片在线播放| 国产又黄又粗的视频| 五月丁香六月激情| 亚洲在钱| 能在线播放的国产三级| 97 亚洲 日韩 欧美 在线| 一区二区三区在线日韩影院观看| 欧美日韩午夜精品一区二区三区| 91啪啪| www.成人无码| 在线观看AV片| 九一精品牛牛一区二区| dy888午夜老子影视达达兔| 久久男女激情视频网站| 国产乱码久久久久久| 黑人精品一区二区在线播放| 国产玖玖| 天天综合网在线91| 91麻豆va国产精品| 香蕉大久久久| 欧美日韩香蕉| 天天天天天超碰| 成人AV超碰免费在线| 69AV女优男人的天堂| 97天堂| 91蜜臀在线久久久久| 啊啊啊啊无码| 99色热| 美欧色综合| 欧美夜夜狠| 91狠狠综| 九久久九精品视频| 国产强奸AV在线| 91殴美大片| 成人26uuu| 亚洲自拍欧美国产首页网曝 | 丁香五月激情五月| 久久久青青草| 一区二区三区在线资源| 火箭成精品视频884必出精品| 少妇超碰在线| 国产一级高清免费观看| juliaann精品熟女一区| 亚洲成人黄色在线观看| 99xav| 久久精品国产亚洲AV嘿嘿| 五月天加勒比啪| 欧美刺激色黄片免费看| 97久久久久| 99热超碰| 午夜激情成人在线观看| 青青草日韩免费观看高清在线| 日本欧美亚洲高清在线看| 老鸭窝在线视频播放| 长长久久免费视频| 99久久亚洲精品无码毛片潘甜甜 | 内射夫妻三片| 欧美成人国产精品| 99操视频| 日韩日本欧美在线观看| 亚洲的天堂网| 久久草大香蕉| 日本国产欧美一区三区二区| 久久啊啊啊视频| 337p大胆噜噜噜噜噜91Av| 日日摸天天爽夜夜欢| 久久天天躁日日躁狠狠躁| 99在线无码精品秘 入口黑人| 综合自拍| 美女97超碰| 影音先锋中文字幕日本好一区二区| 怡红院成人视频| 久久久久一本一区二区青青蜜月| 国产欧美日韩精品中文| 欧美日韩资源| 99日免费视频中文字幕| 加勒比大香蕉视频在线| 久久性生大片免费观看性| 97在线青| 日韩免费人妻色情网站| www.99中文字幕| 亚洲欧美另类图片| 日本孕妇孕交| 性色avv| 99热这里只有精品地址| 九九无码视频| 亚洲精品久久久久毛片A片拉屎| k频道色撸撸| 又大又长又爽| 性色av婷婷久久一区二区点复制| 日本爽爽爽爽爽爽免费视频| 久久中久文96| 97国伦国色| 色色操| 3028国产精品| jizz啪啪| 日韩在线电影| 人人摸人人舔一区二区| 91偷拍欧美亚洲| 99热这里都是精品| 在线无码操| 亚洲无无码αⅴ每日更新| 精品人妻一区二区三区免费视频| A男人的天堂| 蜜臀在线免费观看在线免费观看| 激情四射五月天| 强奸乱伦中文字幕AV| 女性喷水高潮在线观看| 久久久91| 无码二级三级| 日韩熟女视频二区| 97操在线| 老汉网| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91超级碰| 日本在线播放不卡一区| 蜜桃视频成a人v在线| 欧美A片中文字幕| 91麻豆天美| 久久久蜜桃臀无码视频| 国产一线二线三线av| 亚洲AV不卡在线观看| 天天影视射综合网| 中文字幕乱碼在线| 蜜臀精品1区2区| 极品白嫩福利在线| 天天欧美色| 97九色人妻| 狠狠久久亚洲欧美专区| 婷婷久久综合久| AV九九| 色婷婷电影网| 狠狠操天天干| 久超碰在| AV天堂电影网| 日欧美色| 欧美亚洲美少妇一区二区| 欧美91在线+|+欧美| 先锋音影AV| 新视频sss国产| 91超碰在线播放| 伊人久久亚洲色欲综合网站 | 亚洲日本韩国在线| 大香蕉综合网| 国产天美欧美| 久草精品国产蜜臀 | 青青草成人视频在线观看二区| 青青国产在线拍揄自揄拍| 亚洲揄拍网| 日日碰视频网| 国产一线二线三线av| 78超碰| 婷婷av在线中文字幕| 精品毛片av一区二区| 中文字幕一区二区在线日韩精品| 日韩卡一卡二卡三在线| 国产自偷自拍一区| 欧亚综合一卡二卡中文字幕| 欧美熟妇人体| 4虎在线视频| 日韩大香蕉AV影片| 狠狠久久手机视频精品| 99re公开精品免费视频| 日韩电影免费网站麻豆视频| 亚洲猛交| 一区二区三区国产在线播放| 欧美Aⅴ| 免费a在线播放v| 婷婷五月天补不补| 女一区二区| 亚洲一二三四区在线免费看视频| 久久久久久久久久久久97| 啊啊啊啊啊啊在线观看| 午夜.DJ高清在线观看免费7| 国产成人bd在线观看| 欧美激情总合网| 精品无码人妻一区二区免费蜜桃| 亚洲玖玖爱| 精品人妻一二三| 人妻中文字幕日韩电影| 97天天爽| 搡老女人老91妇女熟女| 欧美97爱| 亚洲系列第一页| 久久精品亚洲婷婷| 嗯~啊~快点 死我视频免费看网站| 欧美偷拍| 国产女人与拘做受视频免费| 男人天堂2019亚洲| 欧美性生活内射| 九九九九久久久久| 萌白酱自拍视频| 欧美亚洲国内自拍| 亚洲有薄码区久久在线一区| 操屄日韩| 91九色网| 天天舔天天日天天射| 啊啊嗯嗯好爽| 无码视频黄色网战| 亚洲综合图色在线| 97超碰香蕉| 成人国产精品三级A片| 男人的天堂欧美| 无码人妻精品酒店| 国产女性无套 免费观看| 你草精品在线视频| 中欧人妻丝袜中文字幕| 无码 有码 国产18p| 超碰1024久久| 国产精品视频内谢女人| 国产精品亚洲免费| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 久噜噜| av三级电影在线播放| 67914在线兔费成人视频| 亚洲性爱成人| 天天透伊人| 搡老女人老熟女91老熟女综合网| 久久亚洲精品成人av| 日本东京热大香蕉a片| 人妻三级在线中文字幕| 天天干,夜夜爽| 亚洲区小说| 人人射人人操人人摸| 色眯眯av| 超碰人妻天天干| 午夜后入| 岛国色情视频在线观看| 亚洲 欧美 小说| av毛片aaaaa免费看| 狠狠久久四虎| 91精片| 欧美制服网站美腿丝袜| 97在线免费视频观看| 日日爽夜夜爽| 欧美性暴力猛交| 99久久9| 97伊人| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴| 看看日B真人视频| 国产福利av精彩对白| 91欧美巨乳| 天天躁日日躁XXXXYY| 91网站在线播放| 亚洲最大网站av| 久草色在线观看| 天天插天天射| 九九久久玖玖| 婷婷国产精品九区| 妇女性内射冈站HDWWWCOM| 精品国产99| 亚洲字幕一区二区| 狠狠爱夜夜干| 国产在线精品偷| 欧美综合网A| 97操97色| ,成人免费啪啪视频| 九九热精彩视频| 91在线无码精品秘 软件| 亚洲激情久久久伊人综合| 久久人妻办公室视频| 久久成年片色大黄全免费网站| 欧美狠狠弄| 久久精品国产亚洲AV嘿嘿| 午夜福利一区二区三区四区五区色婷婷| 乱伦系列一区二区| 97chaopengongkai| 国产夫妻一区二区| AV网站高清无码在线观看| 蜜桃网熟妇| 伊人天堂在线| 无码最新| 日韩三级av片| 亚洲综合网图| 丝袜熟女一区二区三区| 日韩无码第3页| 歐美一級亂黃99在綫精品| 久草网站免费在线观看| 日本黄色精品| 天天综合网91入口| 最新中文字幕在线亚洲| 国产传媒一区二区三区| 北京美女一区二区| 婷婷色导航| 尤物网址| 91另类| 91国精产品| 欧亚乱色熟一区二区三四区| 美国人人操人人操| 日韩少妇无码| 亚州色阁| 欧洲Au麻豆| 妺妺跟我一起洗澡没忍住| 尤物av网站免费在线播放| 欧美偷偷网| 人妻一区久久二区三区色播| 人人插人人搞人人操| A一区片| 夜夜性| 男人的天堂无码| 草蕉影视亚洲无码| 色色99| 乱伦系列一区二区| 一区二区免费电影久久| 91老司机精品| 欧美综合色综合| 啊啊啊啊操死我了| 亚洲天堂2020| 国产和美国毛片| 330Dv国产女人终合视频极品人与兽 | 精品国产99| 人妻啊啊人妻啊| 亚欧国产无码精品在线| 17c在线成人免费A片观看| 综合久久少妇中文字幕| 伊人宅男大香蕉| 欧洲亚洲人人爽爽视频| 夜夜騷av、一區二區| 亚洲色图在线视频| 色婷婷视频| 日韩欧美字幕亚洲一区二区| 国产精品点击进入在线影院| 男人天堂网址| 91欧美网| 九九热av| 欧美另类丝袜熟女| 91色人| 亚欧美综合| 肉丝无码中文高清| 超碰伊人在线| 午夜精品久久久99| 91操熟女视频| 欧美爱国产综合、| 日日嗨AV一区二区夜夜| 97精品97| 亚洲视频小说| 久久大线蕉一区| 欧美色图成人网一区二区| 青青草亚洲一区 | 亲子敌伦对白在线播放| 91中文字幕制服丝袜免费视频| 亚州,欧美在线| 国语精品对白| 啊啊啊好大好深| 久9无限国产| 日日摸天天爽夜夜欢| 干超碰碰熟女| 天天干天天操天天操夜夜操天天操 | 伊人一区二区在线播放| 久久久精品中文字幕爱豆| 欧洲黄色网| 韩三级a视频在线观看| 蜜乳AV.COM| 先锋色眉乱伦资源| 99热在线观看| 久久理论字幕视频| 亚州精品丝袜-不卡成人免费| 又摸又舔在线观看网站|