国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Oceanus的實(shí)時(shí)流式計(jì)算實(shí)踐與優(yōu)化

共 8920字,需瀏覽 18分鐘

 ·

2021-05-23 16:54


導(dǎo)語 | 隨著互聯(lián)網(wǎng)場(chǎng)景的不斷深化發(fā)展,業(yè)務(wù)實(shí)時(shí)化趨勢(shì)越來越強(qiáng),要求也越來越高。特別是在廣告推薦、實(shí)時(shí)大屏監(jiān)控、實(shí)時(shí)風(fēng)控、實(shí)時(shí)數(shù)倉等各業(yè)務(wù)領(lǐng)域,實(shí)時(shí)計(jì)算已經(jīng)成為了不可或缺的一環(huán)。在大數(shù)據(jù)技術(shù)的不斷發(fā)展的過程中,F(xiàn)link已經(jīng)成為實(shí)時(shí)計(jì)算的工業(yè)標(biāo)準(zhǔn),越來越多的公司正在使用 Flink作為自己實(shí)時(shí)計(jì)算的工具。本文由騰訊云實(shí)時(shí)計(jì)算Oceanus專家工程師杜立在 Techo TVP開發(fā)者峰會(huì)「數(shù)據(jù)的冰與火之歌——從在線數(shù)據(jù)庫技術(shù),到海量數(shù)據(jù)分析技術(shù)」 的《實(shí)時(shí)流式計(jì)算實(shí)踐與優(yōu)化》演講分享整理而成,為大家詳盡介紹在使用Flink SQL開發(fā)計(jì)算作業(yè)過程中,針對(duì)遇到的痛點(diǎn),騰訊云實(shí)時(shí)計(jì)算服務(wù)Oceanus所進(jìn)行的優(yōu)化與擴(kuò)展,以及實(shí)踐總結(jié)。


點(diǎn)擊可觀看精彩演講視頻


一、騰訊云流計(jì)算服務(wù)


今天的內(nèi)容主要分兩大部分:第一部分向大家快速介紹現(xiàn)在騰訊云上流式計(jì)算服務(wù)的基本情況,后一個(gè)較大的重點(diǎn)分為三個(gè)部分——我們?cè)趯?shí)時(shí)的業(yè)務(wù)過程中針對(duì)Flink SQL所遇到的技術(shù)上的痛點(diǎn)、在改造這些痛點(diǎn)的過程中所遇到的技術(shù)挑戰(zhàn),以及在整個(gè)實(shí)踐過程中所做的技術(shù)方案和內(nèi)容。


這是現(xiàn)在騰訊云實(shí)時(shí)計(jì)算服務(wù)的運(yùn)營(yíng)情況,目前在客戶方面我們既有內(nèi)部客戶,也有外部客戶。在外部客戶方面,像B站、叮咚買菜等互聯(lián)網(wǎng)公司都使用了我們的實(shí)時(shí)計(jì)算服務(wù)。內(nèi)部業(yè)務(wù)像比較重要的微信、QQ、QQ音樂、騰訊視頻等都已經(jīng)使用了我們的實(shí)時(shí)計(jì)算服務(wù)。目前整個(gè)實(shí)時(shí)計(jì)算的計(jì)算規(guī)模已經(jīng)超過了3萬核,每天的數(shù)據(jù)接入量超過5PB,日實(shí)時(shí)計(jì)算量超過50萬/次,而且這個(gè)規(guī)模還在不斷地增長(zhǎng)。



我們整個(gè)服務(wù)的研發(fā)方向也分為四塊:首先是想降低用戶在使用我們的計(jì)算服務(wù)以及開發(fā)他自己的Flink實(shí)時(shí)計(jì)算任務(wù)時(shí)的接入和學(xué)習(xí)成本,所以我們提供了一站式的開發(fā)平臺(tái)。同時(shí)用戶開發(fā)完自己的Flink job之后,可以直接在這個(gè)平臺(tái)上進(jìn)行線上測(cè)試,保證實(shí)時(shí)部署前的數(shù)據(jù)正確性。其次我們提供了一站式的部署功能,能夠讓實(shí)時(shí)的計(jì)算任務(wù)直接部署到騰訊云的TKE容器上。最后是運(yùn)維工具,任務(wù)部署到TKE之后,需要實(shí)時(shí)掌握實(shí)際運(yùn)營(yíng)情況,包括它的失敗告警以及實(shí)際的運(yùn)營(yíng)指標(biāo)等,我們提供了一系列的運(yùn)維工具,幫助用戶快速解決線上的問題。



整個(gè)云上生態(tài)中,實(shí)時(shí)計(jì)算更多擔(dān)當(dāng)?shù)氖且粋€(gè)通道的角色,我們?cè)谏舷掠蔚纳鷳B(tài)和數(shù)據(jù)打通上花費(fèi)了非常多的精力,包括修復(fù)了社區(qū)connector相關(guān)的一些bug、基本能支持大數(shù)據(jù)生態(tài)和騰訊云上所有基本組件的數(shù)據(jù)打通,目前我們也已經(jīng)在內(nèi)部測(cè)試的CDC Source、ClickHouse 等connector,最近應(yīng)該會(huì)上線跟大家見面。


接下來的內(nèi)容是今天的重點(diǎn)——我們?cè)贔link SQL上所做的工作,在展開之前,我?guī)Т蠹铱焖倩仡橣link SQL的基本概念和情況。


二、Flink SQL概況


首先看Flink的編程模型,F(xiàn)link本身提供了三層編程模型供大家使用,最底層的是Data Stream和Data Set API,是一個(gè)java API,往上Table這一層是它基于類似于DSL的領(lǐng)域建模語言,再往上是它的Flink SQL,越往上它的抽象層次會(huì)越高,也就意味著用戶在使用不同的編程接口的時(shí)候,越往上所需要花費(fèi)的學(xué)習(xí)成本和接入成本會(huì)更低。所以在實(shí)際接入過程中還是希望用戶能夠使用我們的Flink SQL,因?yàn)楸旧鞸QL的特點(diǎn)也是非常明顯的,首先它是標(biāo)準(zhǔn)化的語言,不同背景的人員來使用SQL都能夠快速閱讀當(dāng)前這一段SQL所表達(dá)的業(yè)務(wù)邏輯,同時(shí)它底層跟計(jì)算引擎和版本可能都是解耦的,所以后續(xù)的版本升級(jí)、平臺(tái)遷移都是比較輕量級(jí)的。但是它也有它的不足之處,越往上抽象,它可能會(huì)流失一些基本的功能,即Flink SQL并沒有涵蓋到所有的DataStream或者說Flink原語的語義,所以我們也希望大家和社區(qū)一起共建這部分的能力。



再看當(dāng)前Flink SQL的架構(gòu)及演進(jìn),這其實(shí)是Flink1.9和Flink1.9之后的變化,最主要的變化是在Flink1.9之前它經(jīng)過了Data Set或者Data Stream的一層轉(zhuǎn)換,也就是說轉(zhuǎn)成最終的Stream Graph時(shí),它會(huì)調(diào)用Data Stream或者Data Set的API;但是在Flink1.9之后,它其實(shí)把這一層拿掉了,即在SQL Node變成Stream Graph時(shí),用Stream Transformation就可以達(dá)到直接轉(zhuǎn)化Stream Graph。它的優(yōu)點(diǎn)顯而易見,抽掉了中間這一層,可以保證在做SQL優(yōu)化代碼和邏輯正確化優(yōu)化的規(guī)則上都可以共享,不再區(qū)分它的流與批。



這是一條SQL從SQL文本轉(zhuǎn)成最終Flink Job的過程,主要分五步:第一步調(diào)Flink依賴?yán)锏腏avaCC,將這個(gè)文本轉(zhuǎn)成AST語法樹,也就是它的SQL Node,SQL Node后會(huì)調(diào)一個(gè)Validate接口,這里Validate的內(nèi)容就是SQL的一些元數(shù)據(jù),經(jīng)過這兩步之后就完成了一條SQL的語法分析和語義分析。再往后SQL Node會(huì)轉(zhuǎn)成Rel Node,最終會(huì)轉(zhuǎn)成Flink的Native Code,中間會(huì)做一些優(yōu)化,包括:邏輯執(zhí)行計(jì)劃優(yōu)化和物理執(zhí)行計(jì)劃優(yōu)化。最終的執(zhí)行計(jì)劃變成Native Code,中間我們有兩種方式去生成最終的Flink代碼,一種是通過一些規(guī)則的方式靜態(tài)地編碼,另外一種是如果邏輯比較靈活的話,可能需要通過動(dòng)態(tài)代碼生成技術(shù),將代碼生成架構(gòu)文件之后在內(nèi)存里進(jìn)行編譯,直接部署到Flink集群上。



從這個(gè)圖,可以更詳細(xì)的看出Flink SQL從解析到執(zhí)行,跟不同模塊之間的互動(dòng)關(guān)系。同時(shí),跟Flink1.7不同的是,它從calcite交互出來之后不會(huì)再轉(zhuǎn)成SQL Node,而是直接變成Operation DAG,通過Operation Convertor會(huì)再轉(zhuǎn)成最開始的Logical plan,往后的優(yōu)化部分是一樣的,再往下它就不會(huì)再去調(diào)Data Stream或者Data Set API,而直接會(huì)變成Transformation DAG,最終轉(zhuǎn)成Stream Graph,這是整個(gè)的流程。



三、Flink SQL的痛點(diǎn)與挑戰(zhàn)


接下來是我們?cè)谡麄€(gè)接入過程中所遇到的一些痛點(diǎn)與技術(shù)挑戰(zhàn),總結(jié)起來痛點(diǎn)主要分為三個(gè)部分。


第一部分是SQL語法支持,因?yàn)闃?biāo)準(zhǔn)SQL已經(jīng)發(fā)展了很多年,但是Flink的項(xiàng)目快速發(fā)展也就這幾年的時(shí)間,所以Flink SQL的功能并沒有完全覆蓋到所有的標(biāo)準(zhǔn)SQL,比如你在MySQL寫一條SQL,想直接運(yùn)行在Flink上,可能有些語法是不能夠完全支持的,所以這一塊也需要跟社區(qū)一起不斷地去補(bǔ)齊和完善。另外一方面是它的語法不統(tǒng)一。因?yàn)榱魃系恼Z義本就非常復(fù)雜,不同的平臺(tái)語法也不同,包括Flink也有自己的“方言”,不同的版本之間Flink其實(shí)在快速的演進(jìn)過程中,做得也不是很好,所以在同一個(gè)功能上它的語法寫法也不一樣,這都帶來一些學(xué)習(xí)上的成本。


第二是功能覆蓋,對(duì)SQL來說,無法完全覆蓋Data Stream或者Data Set API的功能,還是要持續(xù)補(bǔ)齊Data Stream和Data Set的能力。Flink任務(wù)其實(shí)是一個(gè)DAG的組織圖,通過DAG的方式來表示不同算子之間的執(zhí)行順序,但是SQL語言從最開始發(fā)展到現(xiàn)在其實(shí)并不是很擅長(zhǎng)描述DAG,如果DAG非常復(fù)雜,想通過一個(gè)SQL去表達(dá)是非常困難,或者說基本上不可能的,當(dāng)前有一些方案,比如可以把一個(gè)復(fù)雜的DAG切分成多個(gè)SQL,通過視圖的方式把整個(gè)DAG組裝起來,但即使這樣做,如果SQL非常復(fù)雜,它的閱讀性和后續(xù)的擴(kuò)展性都是比較差的,所以這部分相對(duì)于Data Stream有比較多短板。


第三是運(yùn)維支撐,SQL的執(zhí)行性能包括三部分,第一部分是它的業(yè)務(wù)邏輯本身,第二部分是它的執(zhí)行計(jì)劃優(yōu)化,第三部分是執(zhí)行計(jì)劃轉(zhuǎn)換成Flink Native Code,后面這兩部分主要是平臺(tái)來擔(dān)當(dāng)優(yōu)化的角色,所以各家平臺(tái)技術(shù)上的實(shí)現(xiàn)都有各自的長(zhǎng)處,用戶能夠把控的優(yōu)化性能方向可能就是業(yè)務(wù)邏輯本身,如果想像Data Stream做一些精細(xì)化優(yōu)化,那SQL這一塊也是非常不足。即使現(xiàn)在我們提供一些參數(shù)的方式調(diào)優(yōu),也是基于平臺(tái)自己提供的一些能力才能做優(yōu)化,這是一個(gè)難點(diǎn),在平臺(tái)側(cè)和社區(qū)以后都要持續(xù)補(bǔ)齊。在問題定位方面,SQL翻譯成Flink job之后,它的運(yùn)行是一個(gè)整體,如果SQL非常復(fù)雜,其中的某一步或者是某一部分的邏輯不符合預(yù)期,復(fù)現(xiàn)這個(gè)問題就非常困難,因?yàn)楸旧碓诹魃蠌?fù)現(xiàn)問題都很困難,如果想分段去復(fù)現(xiàn),更是難上加難,所以后續(xù)也是需要不斷補(bǔ)齊能力,僅在內(nèi)核側(cè)做起來并不容易。



在難點(diǎn)方面,Stream SQL發(fā)展比較晚,針對(duì)它的標(biāo)準(zhǔn)比較少。擴(kuò)展一個(gè)SQL時(shí),其實(shí)我們不想去擴(kuò)展很多跟平臺(tái)或版本相關(guān)的SQL方言,因?yàn)檫@樣會(huì)帶來版本升級(jí)或平臺(tái)遷移的負(fù)擔(dān),所以在擴(kuò)展當(dāng)前的Flink SQL時(shí),我們還是希望遵循一些標(biāo)準(zhǔn),如果是SQL的標(biāo)準(zhǔn),那是最好的。另外是在語義方面,因?yàn)镾tream上的語義相對(duì)于Batch復(fù)雜很多,而且它有自己的一些特殊語義,比如窗口或排序,在流上和在批上實(shí)現(xiàn)這個(gè)能力,復(fù)雜程度完全不一樣,在流上會(huì)復(fù)雜特別多。


在性能優(yōu)化方面,要注意流上一些特有的特性。比如Retract機(jī)制,比如Flink自己也是一個(gè)帶State的操作,所以在優(yōu)化的時(shí)候都要結(jié)合State進(jìn)行,包括State交互和設(shè)計(jì)方案都要考慮。另外是在性能優(yōu)化的時(shí)候,現(xiàn)在整個(gè)執(zhí)行計(jì)劃轉(zhuǎn)變都是通過RBO的方式,如果要更準(zhǔn)確,其實(shí)通過CBO的方式會(huì)更貼切,但是在流上的統(tǒng)計(jì)信息收集和在批上完全不一樣,而且即使收集到了最新的統(tǒng)計(jì)信息,如果想去優(yōu)化當(dāng)前這一條SQL,有可能改變了當(dāng)前DAG的拓?fù)鋱D,有可能就沒辦法從原來的狀態(tài)恢復(fù),這些問題都是我們后續(xù)要解決的。


四、Flink SQL的優(yōu)化與擴(kuò)展


接下來展開我們?cè)贔link SQL上做的擴(kuò)展與優(yōu)化工作,其實(shí)優(yōu)化工作的方向是和前面業(yè)務(wù)的痛點(diǎn)一一對(duì)應(yīng)。


首先在擴(kuò)展語法方面,再?gòu)?qiáng)調(diào)一下,我們?cè)跀U(kuò)展語法的時(shí)候并不希望開發(fā)一些跟平臺(tái)或版本相關(guān)的方言,這樣會(huì)為后續(xù)的維護(hù)帶來非常大的負(fù)擔(dān),所以擴(kuò)展語法時(shí)還是會(huì)找一些和現(xiàn)有的SQL標(biāo)準(zhǔn)相符的SQL語法,比如現(xiàn)在的Windowing Table-valued Function,另一個(gè)是流與維表Join,也是遵循了標(biāo)準(zhǔn)SQL的寫法。在功能方面也是補(bǔ)齊我們的SQL和Data Stream之間的差距,目前包括我們的增量窗口、增強(qiáng)的Tumble窗口,還有可以指定任意字段作為時(shí)間屬性字段被窗口使用等功能。在性能方面我們也做了較多的工作,接下來要講的是Retraction優(yōu)化還有UDX函數(shù)內(nèi)聯(lián)優(yōu)化,比如一個(gè)UDX被調(diào)用多次,F(xiàn)link會(huì)被執(zhí)行多次,如果我們做一個(gè)簡(jiǎn)單的優(yōu)化,可以拿第一次的執(zhí)行結(jié)果直接代入后面的UDX調(diào)用鏈里,減少性能的損耗。我們做了一個(gè)Bucket Join,對(duì)于流與維表Join有較大的優(yōu)化,它不需要把維表的數(shù)據(jù)全部加載到內(nèi)存,這也是非常有用的。還有一個(gè)是Local Key By,也是借鑒了MapReduce,減少在這個(gè)階段的數(shù)據(jù)流動(dòng)。



1. 新增Table-Valued Function語法


接下來是Table-Valued Function。原始需求是這樣的:如果想在兩個(gè)流做一個(gè)Join,同時(shí)這個(gè)Join是在相同窗口內(nèi)的數(shù)據(jù)完成Join的,應(yīng)該怎么做?按照社區(qū)當(dāng)前的寫法,可能需要先做一個(gè)Join,再做Group by??梢钥吹剿袃蓚€(gè)問題,首先它的語義模糊不清,因?yàn)槿绻茸鯦oin再做Group by,無法保證在做Join的時(shí)候數(shù)據(jù)在同一個(gè)窗口內(nèi);另外一個(gè)是在Flink上進(jìn)行SQL翻譯時(shí),不管是Join還是Window Group by,都要涉及到狀態(tài)的操作,所以我們先做Join,再做Window,涉及到兩次的狀態(tài)操作,同時(shí)Join狀態(tài)的清理沒辦法隨著Window的銷毀而銷毀,也就是Join狀態(tài)必須通過Flink TTL的方式來清理,對(duì)于當(dāng)前這個(gè)需求,如果只需要對(duì)相同窗口內(nèi)的數(shù)據(jù)做Join,那應(yīng)該是這個(gè)窗口銷毀了,所有的狀態(tài)都要被銷毀,所以如果用社區(qū)的SQL去寫也有問題。


經(jīng)過一些調(diào)研,我們發(fā)現(xiàn)在SQL2016里面有一個(gè)叫Table-Valued Function的語法,我們和calcite社區(qū)一起把Table-Valued Function進(jìn)行了落地,目前1.23版本之上已經(jīng)支持這個(gè)語法,而且我們內(nèi)部也把它實(shí)現(xiàn)到了Flink里。差異顯而易見,原來比如要寫一個(gè)Window,它會(huì)把這個(gè)Window信息放到Group字段里,但是通過這個(gè)語法我們把Window信息放到了From Source這一層,從這個(gè)SQL來看,它更貼近于標(biāo)準(zhǔn)SQL或者說批的這種寫法更適合具有數(shù)據(jù)分析背景的人員來理解。



再看下面的Logic Plan,它在下面進(jìn)行TableScan的時(shí)候,往上有一個(gè)TableFunctionScan,在轉(zhuǎn)變之后它加了兩個(gè)字段:Window start和Window Node,經(jīng)過這個(gè)Rel Node轉(zhuǎn)換后它的原始數(shù)據(jù)會(huì)被加上兩列,來表示這個(gè)數(shù)據(jù)是屬于哪個(gè)窗口。有了這個(gè)標(biāo)記后,我們要在流上再做這種Join就比較簡(jiǎn)單了——先描述兩個(gè)流屬于哪個(gè)窗口,直接再做Join,因?yàn)楸旧硭窃趦?nèi)部實(shí)現(xiàn)的,不需要去寫累贅的語法,所以如果想實(shí)現(xiàn)這個(gè)需求,就是非常簡(jiǎn)潔的一個(gè)語法,先構(gòu)造兩個(gè)具有Window窗口的Source,直接做Join就好。同時(shí)在多流上我們不僅僅實(shí)現(xiàn)了Join,而且在狀態(tài)操作中把Join和Window算子兩個(gè)的狀態(tài)操作合在一起,提升了執(zhí)行性能,我們還在流上支持交并差的操作。



針對(duì)這個(gè)語法我們還擴(kuò)展了很多其他非常有用的功能。第一是改寫了當(dāng)前Flink Group Window的寫法,改寫后更貼切標(biāo)準(zhǔn)SQL針對(duì)Group Window的寫法,原來的Group Window是要把Window信息放到Group字段里,但現(xiàn)在我們直接把Window信息放到Table里,意味著Table的Source已經(jīng)分了窗口,理解起來更直接。同時(shí)因?yàn)門able-Valued Function已經(jīng)把數(shù)據(jù)劃分了窗口,所以直接在當(dāng)前語法上實(shí)現(xiàn)窗口內(nèi)排序或者Top N輸出,這個(gè)語法也就顯得更加自然和容易。



我們最近也做了一個(gè)擴(kuò)展:自定義的Table-Valued Function,這個(gè)功能被非常多用戶提及,可以實(shí)現(xiàn)對(duì)于Source表M列轉(zhuǎn)N列的操作,意味著如果Source階段若只有兩列,下面計(jì)算的時(shí)候需要三列,那直接自定義一個(gè)Table-Valued Function就可以完成這個(gè)操作,而用現(xiàn)在的Flink SQL是完全做不到的。



2. 新增窗口類型


接下來是新增的兩個(gè)窗口類型,在實(shí)際生產(chǎn)過程中非常有用。一個(gè)叫增量窗口,它的需求背景非常直觀,比如要統(tǒng)計(jì)當(dāng)前某一個(gè)網(wǎng)頁一天內(nèi)的PV曲線,對(duì)于普通的Table Window,數(shù)據(jù)要發(fā)送到下游來描繪這個(gè)曲線,而必須等到整個(gè)窗口觸發(fā)之后才能收到數(shù)據(jù),因此曲線無法被描繪。其實(shí)它的實(shí)現(xiàn)機(jī)制也比較簡(jiǎn)單,我們可以自定義一個(gè)trigger,如果這個(gè)trigger到達(dá)了在SQL里定義的interval限制,就直接可以把當(dāng)前的Window State直接發(fā)送到下游,下游會(huì)接收到多次的數(shù)據(jù)來描繪當(dāng)前的PV曲線。在實(shí)際的生產(chǎn)過程中,我們又遇到了用戶提到的一個(gè)比較有用的功能:增量觸發(fā)。因?yàn)樵诤芏嗲闆r下,有些Group Key很長(zhǎng)一段時(shí)間內(nèi)當(dāng)前這個(gè)窗口和上一個(gè)窗口的觸發(fā)值是不變的,如果每一次都把這個(gè)數(shù)據(jù)觸發(fā)到下游,對(duì)下游的壓力也比較大,所以我們?cè)黾恿薒azy trigger,即當(dāng)前窗口的值如果不變,不需要往下游發(fā)送這個(gè)數(shù)據(jù),以減少下游的數(shù)據(jù)接收壓力。



另外是增強(qiáng)Tumble窗口類型。用Data Stream寫過Flink job的同學(xué)應(yīng)該都知道,如果需要處理遲到數(shù)據(jù),我們可能要定義一個(gè)Side output,如果在SQL上想用Tumble Window去處理這個(gè)遲到數(shù)據(jù),目前的Tumble Window無法指定這個(gè)數(shù)據(jù)的輸出,所以我們?cè)黾恿艘粋€(gè)新的窗口類型,實(shí)現(xiàn)的機(jī)制不復(fù)雜,比如來的遲到數(shù)據(jù)會(huì)被放到另外一個(gè)State里面,我們會(huì)定義一個(gè)trigger,trigger的長(zhǎng)度就是當(dāng)前Tumble Window的長(zhǎng)度,即并不是來一條數(shù)據(jù)就往下游發(fā)送一條,而是經(jīng)過一段時(shí)間的匯聚,之后將這個(gè)匯聚的結(jié)果再發(fā)送到下游,這樣不僅能夠接收遲到的數(shù)據(jù),而且還能夠減少下游接收數(shù)據(jù)的壓力。這里有一點(diǎn)需要指出的:使用這個(gè)Window,對(duì)于下游來講如果是類似于K/V的HBase,要注意后面的遲到數(shù)據(jù)可能覆蓋前面的數(shù)據(jù),對(duì)于遲到數(shù)據(jù)一定是累加的,一旦覆蓋,整個(gè)結(jié)果就錯(cuò)了。



3. 回撤流性能優(yōu)化


接下來是回撤流的機(jī)制,在Flink里如果寫一個(gè)SQL要保證整個(gè)邏輯的正確性,那回撤流是非常有用的。比如這個(gè)例子,它有兩層Group by,如果沒有回撤流機(jī)制,結(jié)果是錯(cuò)的。這個(gè)回撤流的作用是什么?在流上來一條數(shù)據(jù)都要向下游發(fā)送它的更新結(jié)果數(shù)據(jù),如果上游不停地來相同的Group key并向下游發(fā)送,更新結(jié)果覆蓋了之前的結(jié)果,那到了下游拿這個(gè)結(jié)果去更新就會(huì)出錯(cuò),所以像兩層Group by場(chǎng)景,應(yīng)該是要先把原來發(fā)送到下游的數(shù)據(jù)回撤,同時(shí)發(fā)送新的計(jì)算結(jié)果,具體的做法是在原始數(shù)據(jù)里加一個(gè)標(biāo)志,比如一個(gè)減號(hào),這個(gè)減號(hào)就告訴下游:“刪掉這個(gè)數(shù)據(jù),接下來我會(huì)送給你一個(gè)新的數(shù)據(jù),那才是當(dāng)前對(duì)Group key更新的結(jié)果?!?/span>


目前Flink的實(shí)現(xiàn)過程中,可以看到最壞的情況,是整個(gè)下游接收的數(shù)據(jù)應(yīng)該是原始數(shù)據(jù)的兩倍,在我們的優(yōu)化過程中發(fā)現(xiàn)完全沒有必要每來一條數(shù)據(jù)就向下游發(fā)送一條,因?yàn)檫@都要涉及State操作,而且如果Group by key較多,用Rocks DB作為state backend,Rocks DB會(huì)涉及IO的操作,性能得不到很好的保證,所以我們把它進(jìn)行CACHE或者說整個(gè)邏輯正確化的改寫。如果在Sink,其實(shí)也不需要每來一條數(shù)據(jù)就向下游發(fā)送一條,而且針對(duì)KV組件特別有用,KV組件本身是冪等的,不需要向下游發(fā)送Retract,直接支持Upsert,所以我們直接把新的Update信息發(fā)送給下游即可。


針對(duì)回撤流優(yōu)化的幾個(gè)實(shí)現(xiàn)方案,我列舉了比較有代表性的:


第一個(gè)是剛才SQL兩層Group by的場(chǎng)景,我們?cè)诘谝粚覩roup by向下游發(fā)送AGG結(jié)果時(shí),在上面進(jìn)行改寫:在中間加一個(gè)operator,做一個(gè)CACHE,這個(gè)CACHE也不是CACHE原始數(shù)據(jù),它會(huì)把數(shù)據(jù)進(jìn)行上面Window的操作,之后再發(fā)送給下游,這對(duì)于下游接收的數(shù)據(jù)量就會(huì)減少很多。


第二種場(chǎng)景是Sink場(chǎng)景,在Sink之前也可以做一個(gè)CACHE,這個(gè)CACHE保證之前的數(shù)據(jù)做累計(jì),向下游發(fā)送的時(shí)候并不是每來一條就發(fā)送一條,只有達(dá)到了這個(gè)CACHE的觸發(fā)條件,才會(huì)向下游發(fā)送數(shù)據(jù)。



對(duì)于Outer Join的場(chǎng)景,會(huì)相對(duì)復(fù)雜一點(diǎn)。講Outer Join優(yōu)化之前,簡(jiǎn)單說明為什么這種Outer Join會(huì)產(chǎn)生回撤:因?yàn)樵诹魃献鰞蓚€(gè)流Join,如果是一個(gè)LEFT Join,左邊的數(shù)據(jù)先來,右邊的數(shù)據(jù)如果沒有匹配上,其實(shí)對(duì)于沒有匹配上的語義是有歧義的,到底是因?yàn)闆]有右邊的數(shù)據(jù),還是它遲到了?這些都需要做區(qū)分,所以為了保證Outer Join完整的語義,對(duì)于在Flink原始的實(shí)現(xiàn)方案,就需要首先向下游發(fā)送左邊的數(shù)據(jù)以左邊的流填充、右邊的數(shù)據(jù)以填充的那一條數(shù)據(jù)發(fā)送給下游,但此時(shí)如果又有右邊的數(shù)據(jù),Outer Join變成了Inner Join的邏輯,后面的數(shù)據(jù)又過來,首先要把前面發(fā)送給下游的這條數(shù)據(jù)回撤,同時(shí)向下游發(fā)送一條跟Inner Join一樣邏輯的數(shù)據(jù)。


經(jīng)過上面的分析,優(yōu)化思路也較直接。首先我們可以在左邊進(jìn)行一個(gè)CACHE,這個(gè)CACHE并不是無條件的,在CACHE之前先向右邊去做匹配的查詢,如果能匹配上,說明當(dāng)前對(duì)這條Join key是Inner Join的邏輯,它其實(shí)是不需要CACHE的,沒有必要犧牲實(shí)時(shí)處理的實(shí)時(shí)性來完成這個(gè)功能,直接向下游發(fā)送Inner Join的邏輯即可。如果右邊沒有數(shù)據(jù),就可以做一個(gè)有技術(shù)點(diǎn)設(shè)計(jì)的CACHE,比如在做相同key數(shù)據(jù)CACHE時(shí),不需要存儲(chǔ)所有的原始數(shù)據(jù),而是加一個(gè)字段表示當(dāng)前key相同的數(shù)據(jù),如果到達(dá)了觸發(fā)條件,就向下游發(fā)送跟這個(gè)相同的數(shù)據(jù)。同時(shí)如果左邊的數(shù)據(jù)跟右邊的數(shù)據(jù)匹配上了,對(duì)于相同的key,往后所有的數(shù)據(jù)沒有必要再做緩存,因?yàn)楫吘棺鲞@個(gè)CACHE是犧牲了一定的時(shí)效性而換來的。


來看優(yōu)化前后的結(jié)果對(duì)比,做完CACHE或Upset,向下游發(fā)送的數(shù)據(jù)量相對(duì)于沒有優(yōu)化之前減少很多,因?yàn)樽隽艘粋€(gè)合并。在內(nèi)部我們做了測(cè)試,如果CACHE的時(shí)間大小是兩分鐘,對(duì)于兩邊是100萬條的數(shù)據(jù),同時(shí)下游是冪等組件,經(jīng)過優(yōu)化向下游接收的數(shù)據(jù)量有30倍的減少。如果是Inner Join,兩邊的數(shù)據(jù)量是完全隨機(jī)的,我們做了一個(gè)兩分鐘的CACHE,100萬的數(shù)據(jù)有近20%的提升。



講師簡(jiǎn)介


杜立

騰訊大數(shù)據(jù)專家工程師

騰訊大數(shù)據(jù)專家工程師,Oceanus實(shí)時(shí)計(jì)算平臺(tái)研發(fā)負(fù)責(zé)人,2018年加入騰訊,一直從事于實(shí)時(shí)計(jì)算相關(guān)領(lǐng)域的研發(fā)工作,目前主要專注于騰訊云及內(nèi)部Flink SQL相關(guān)的擴(kuò)展與優(yōu)化,以及Oceanus產(chǎn)品化相關(guān)工作。


點(diǎn)擊觀看峰會(huì)的精彩總結(jié)視頻??


關(guān)注云加社區(qū),回復(fù)關(guān)鍵詞:“數(shù)據(jù)”,可獲取峰會(huì)當(dāng)天全程回顧視頻鏈接

6月5日,Techo TVP 開發(fā)者峰會(huì) ServerlessDays China 2021,即將重磅來襲!

掃碼立即參會(huì)贏好禮??


瀏覽 39
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 北条麻妃无码一区二区| 国产欧美日韩| 亚洲秘无码一区二区三区,| 国产又大又黄| 亚洲免费成人网| 日批视频免费观看| 成人网站视频| 国产A级成人婬片1976| 亚洲一级无码| 国产一级无码| www.91麻豆| 日韩高清无码专区| 久久久精品午夜人成欧洲亚洲韩国 | 亚洲黄色视频网站在线观看| 日韩在线观看网址| 色片免费| 小小拗女BBw搡BBBB搡| 正在播放ADN156松下纱荣子| 辽宁模特张雪馨视频最新| 蜜桃视频一区| 五月婷婷婷| 久久成人综合| 第一福利成人AV导航| 国产口爆在线观看| 日韩A片在线| 欧美一级a视频免费放| 一大高清日韩| 91夜夜夜| 丁香五月天在线播放| 日本成人性爱视频网站一区| 国产日韩欧美在线| 77777色婷婷| www.91久久| 日产毛片| 亚洲免费黄色电影| а天堂中文在线资源| 欧美精品日韩| 五月丁香婷婷激情| 亚洲日韩欧美成人| 97大香蕉在线视频| 亚洲秘无码一区二区三区| 色色网的五月天| 一级a毛片| 120分钟婬片免费看| 中文字幕无码一区二区| 亚洲欧美在线综合| 嫩草Av| 欧美日韩中文| jizz国产| 国产成人片| 人妻人人爽| 韩国午夜福利| 无码A片| 人妻无码免费视频| 清清草视频| 黄色片在线免费看| 中文字幕日韩在线观看| 99视频在线观看免费| 日本A级毛片| 国产精品久久毛片A片| 国产Av高清| 99Re66精品免费视频| 一区二区无码精品| 影音先锋成人无码| 影音先锋国产AV| 精品成人久久| 在线观看中文字幕AV| 伊人精品在线| 亚洲精品久久久久久久久蜜桃| 任你爽在线视频| 大香蕉电影网| 国产美女全裸网站| 黄色电影网站在线观看| 神马午夜秋霞不卡| 日韩免费成人| 深夜福利18| 中日韩免费视频| 夜夜撸网站| 69成人免费视频| 草逼视频网| 久草香蕉视频| 超碰97久久| 人人操在线播放| 中文不卡视频| 先锋影音av资源网| 亚洲欧洲在线视频| 久久久久久国产| 五月婷婷中文字幕| 亚洲黄色片| 99久久99久国产黄毛片| 欧美AAAAAA视频| 99极品视频| 日韩AV无码网站| 欧美韩日| 国产高清无码免费视频| 无码做爰欢H肉动漫网站在线看| 色99网站| 黄色免费视频网站| 国产三级性爱视频| 欧美色色视频| 影音先锋麻豆| 九九视频免费观看| 爱逼av| 一区二区三区中文字幕| 无码视频网| 日本AV在线播放| 久久久毛片| 性欧美老妇bbwbbwbbw| 三级视频在线播放| 一级黄色蜜芽视频| www.日韩系列| 黄片网址在线观看| 成人H动漫精品一区二区无码| 国产成人片在线观看| 国产无码影视| 先锋影音资源AV| 国产免费av片| 午夜精品电影| 亚洲中文字幕码mv| 中文字幕在线免费视频| 亚洲午夜福利| 狠狠干五月| 欧美aⅤ| 国产suv精品一区二区6精华液| 久久免费看| 俺来也听听婷婷| 无码AV动漫| 91免费成人电影| 亚洲AV成人无码精品直播在线| 亚洲成人无码AV| 在线观看91| 在线观看A片| xxx久久| 国产女人18| 日韩午夜在线观看| 又色又爽| 国产精品揄拍500视频| 亚洲最新中文字幕| 国产性爱av| 性爱无码视频| 在线免费小黄片| 操逼操逼操逼操逼操逼操逼| 国产午夜精品一区二区三区四区| 91大神在线观看入口| 99无码人妻| 亚洲成人免费在线观看| 国产在线成人| 久热久热| 国产精品一级二级三级| 国产一级特黄大片| 国产高清中文字幕| 国内自拍av| 人人射人人操| 亚洲中文字幕第一页| 日本少妇电影| 久久精品无码一区二区无码性色| 暖暖av| 69福利视频| 性满足BBWBBWBBW| 久久精品福利视频| 韩国日本久久| 色色色免费视频| 99久久精品国产成人一区二区| 人人摸人人操人人射| 91内射视频| 亚洲毛片在线观看| 黑人AV| v天堂在线观看| 无码在线专区| 日韩无码视频网站| 残忍另类BBWBBWBBW| 欧美三级片视频| 亚洲高清无码久久| 操逼视频看看| 69成人天堂无码免费| 操久| 成人在线观看网站| 精品少妇视频| 亚洲国产成人视频| 一区二区三区四区精品视频| 老司机免费福利视频| 青娱乐精品| 樱桃码一区二区三区| 人人爱人人操人人干| 我和岳m愉情XXXⅩ视频| 国产精视频| 手机看片福利| 一级黄色影院| 国产男人天堂| 亚洲福利网站| 大香蕉人妻| 一本久道综合| 九九九av| 白嫩外女BBwBBwBBw| 国产理论电影| 97在线鲁碰免费视频| 操逼视频看看| 超碰97av| 在线无码人妻| 亚洲日韩欧美性爱| 亚洲中文无码av| 翔田千里无码播放| 人人爽人人干| 久久撸视频| 青青草原免费在线视频| 日本高清无码在线观看| 欧美性爱中文字幕| 亚洲激情成人| 国产aaaaaa| 操逼在线播放| 超碰中文字幕| 亚洲精品视频在线观看免费| 特级西西444WWW高清| 成人免费在线观看| 亚洲视频在线免费观看| 家庭乱伦影视| 日韩中文字幕免费在线观看| 日韩黄色AV| 91人妻人人澡人人爽人人精吕 | 五月婷婷综合激情| 亚洲区在线| 偷拍综合网| 亚洲AV无码乱码AV| 丁香综合网| AV一区二区三区四区| 超碰9| 伊人三级网| 亚洲成人在线网| 一级a一级a爱片免费视频| 伊人狼人香蕉| 999这里只有精品| 五月无码| 51无码| 日韩av小说| 亚洲性爱小说| 91人妻无码精品一区二区毛片 | 九九九九九精品| 粉嫩小泬BBBBBB免费| 日韩精品在线播放| 成人H动漫精品一区二区无码| 久草视频网| 插逼综合网| 国产欧美一区二区三区特黄手机版 | 欧美日本激情| 91精品婷婷国产综合久久蝌蚪| 国产操操操| 国产精品一麻了麻了| 就爱av| 午夜网页| 日韩强操逼网| 成人综合娱乐网| 国产学生妹在线播放| 轻轻操内射无码| 免费人成在线观看视频播放| 一本色道久久综合亚洲精品小说| 天堂A片电影网站在线观看| 怡红院一区二区| 2025国产成人精品一区| 不迷路福利视频| 亚洲成人大片| 影音先锋国产| 黄色免费a级片一级片| 国产久久久久久久久| 一本色道久久综合亚洲二区三区 | 亚洲无码精品在线| 免费看特别黄色视频| 国产熟女一区| 欧美一级性爱| 天天干婷婷五月天| 亚洲日韩欧美视频| H版视频| 99免费热视频在线| 亲子乱一区二区三区视频| 免费无码A片在线观看全| 国产乱伦一区| 中文字幕+乱码+中文乱码www| 猫咪亚洲AV成人无码电影| 婷婷久久在线| 四房婷婷| 免费视频亚洲| seseav| 国产乱在线| AV网站免费在线观看| 欧美激情一区二区| 亚洲一区亚洲二区| 躁BBB躁BBB添BBBBBB| 成人免费无码毛片| 草草视频在线观看| 久久久一区二区三区四区免费听| 日韩欧美人妻无码精品| 手机看片日韩| 国产精品一级A片| 狠狠色婷婷777| 伊人免费视频| 操B视频免费看| 欧美A视频| 午夜视频18| 超碰最新在线| 爱插美女网| 91无码人妻一区二区| 成人免费视频在线观看| 亚洲在线成人| 色婷婷丁香五月天| 日本A∨在线| 日皮视频免费在线观看| 婷婷五月18永久免费视频| 人人射在线| 成人性生活A级毛片网站| 大香蕉9999| 你懂的视频在线观看| 99热一区二区三区| 嫩草AV| 久久香视频| 91免费在线看| 国产真人一级a爱做片| 豆花AV在线| 午夜福利高清在线观看| 天天天天天天天干| 久久三级| 伊香蕉大综综综合| 亚洲免费观看高清| 日日操人人操| 在线看a片| 一级a一级a免费观看免免黄‘/| 成人免费网站| 免费观看黄色在线视频| 无码a区| 亚洲天堂2016| 天天操免费视频| 淫色综合| 操逼电影网| 麻豆精品在线播放| 视色影院| 日产久久久久久| 午夜黄色小视频| 国产免费一区二区三区四区| 喷潮视频| 中文字幕乱码视频32| 日韩无码影视| 在线看片AV| 亚洲高清无码视频在线| 精品欧美片在线观看步骤| 国产精品久久久久精| 久久黄色网络| 五月婷色| 国产精品久久久久国产A级| 国产成人ab| 国产精品无码永久免费A片| 成人无码区免费A片在线软件| 国产91一区在线精品| av在线免费观看网站| 综合成人在线| 亚洲三级黄色视频| 国产一级二级三级视频| 丁香婷婷视频| 亚洲一卡| 久久久久综合| 2018天天日天天操| 美女做爱网站| 一级片黄片| 精品一二三区| 黄色永久网站| 字幕一区二区久久人妻网站| 国产一区二区三区在线观看免费视频免费视频免费视频 | 国产伦精品一区二区三区妓女下载| 黄色AV天堂| 久久久91人妻无码精品蜜桃ID| 在线一区二区三区四区| 国产精品久久久久久婷婷天堂 | 麻豆国产91在线播放| 中文字幕少妇| 伊人黄片| a级无码| 人妻少妇91精品一区黑人| 新妺妺窝窝777777野外| 一本色道久久88综合无码| 北条麻妃无码精品AV| 亚洲无码一区二区三| 成人小视频在线观看| 草草影院第一页YYCCC| 韩国午夜福利| 9久9久9久9久女女女女| MAD033_后宫秘密陶子.| 黄片在线免费播放| 欧美大鸡吧视频| 一级a一级a爱片免费视频| 全国男人的天堂网站| 韩国午夜福利| 黄色电影A| 国产精品9999久久久久仙踪林| 无码窝在线观看| 囯产一级黄片| 久久草视频| 中文熟妇| 91麻豆大奶巨乳一区白虎| 国产无遮挡又黄又爽| WW免费视频| 成人视频一区二区三区| 少妇搡BBBB搡BBB搡毛片少妇| 日韩一级黄色电影| 日本国产在线| 天天综合网久久| sesese999| 日韩欧美视频在线播放| 日韩gay| 国产日韩欧美在线播放| 久久久伊人网| 四川w搡BBB搡wBBB搡| 国产精彩无码视频| 日韩在线欧美在线| 成人三级视频在线观看| 国产精品一级a毛视频| 黄片www| 强伦轩人妻一区二区三区四区| 性欧美一区二区| 豆花视频成人| 三级内射| 亚洲精品无码人妻| 成人网站一区| AV在线四季综合网站| 亚洲小说图片AV在线| 羞羞视频com.入口| jzzijzzij亚洲成熟少妇在线观看| 超碰免费97| 毛片成人网| 欧美aⅤ| 日韩一级特黄A片免费观| 色婷婷五月天激情| 在线观看AV无码| 国产亚洲精品久久久久动| 国产精品理论片| 欧美夜夜草视频| 久操视频免费| 国产真实乱婬A片久久久老牛| 成人做爰100片免费看| 在线天堂av| www.色色网| 国产精品黄片| 中文字幕不卡视频| 免费黄视频在线观看| Av久| 人妻天堂| 免费观看一区| 开心四房播播第四婷婷| 在线午夜福利| 夜色88V精品国产亚洲| 黄色3A片在线观看| AV在线免费观看网站| 俺去俺来也在线www色情网| 青青娱乐亚洲无| 暗呦网一区二区三区| 成人无码观看| 丁香花在线高清完整版视频| 婷婷五月天社区| 亚洲成色A片77777在线小说| 91二区| 熟女探花| 天天操天天撸| 免费的黄片| 日日免费视频| 一起操在线| 操日本少妇| 天天射中文| 天天操操操| 婷久久| 国产人妖网站| 成年人性生活免费视频| 国产精品成人无码免费| 成人午夜小视频| 操老骚逼视频| 中文视频免费播放| 天堂成人网| 玖玖爱在线精品视频| 欧美性爱在线网站| 性爱无码视频| 人人澡人人爽人人精品| 人人射网站| 免费无码一区二区三区四区五区| 啪啪免费视频| 91丨九色丨熟女丰满| 91精品国产一区三一| 中文字幕日本电影| 加勒比精品| 浮力影院欧美| 啊啊啊啊啊在线观看| 国产欧美在线观看不卡| 三级片在线观看视频| 欧美黄色免费网站| 91在线成人电影| 99九九99九九九99九他書對| 国产免费视频| 天天草天天| 久久久久久五月天| 亚洲视频在线观看中文字幕| 婷婷综合在线| 大鸡巴操骚逼视频| 91人妻人人澡人人爽人人爽| 啪啪成人视频| 日日夜夜爽歪歪| 久久久噜噜噜久久中文字幕色伊伊| 国产av三级片| 亚洲性爱小说网址| 中文字幕在线观看一区二区三区| 成人黄色电影在线观看| 内射视频免费观看| 久久国产乱子伦精品免费午夜... 国产毛片精品一区二区色欲黄A片 | 99国产精品久久久久久久| 69视频在线观看| 亚洲欧美精品在线| 无码伦理| 欧一美一婬一伦一区?| 天天日天天操天天| 国产乱国产乱老熟300部视频 | 日韩无码系列| 狠狠躁婷婷天天爽综合| 亚洲日韩精品中文字幕在线| 91成人精品一区二区| 无码不卡av| 人人上人人操| 久久精品视频观看| 天天做天天爱天天高潮| 日批免费网站| 亚洲人妻在线播放| 久久伊人电影| 国产精品一区二区黑人巨大| 亚洲乱伦| 丰满欧美熟妇免费视频| 在线观看免费无码| 日本在线一区| 黄色视频网站在线播放| 成人黄网在线观看| 国产成人片| 国产成人免费在线观看| 影音先锋av中文字幕| 久久久久极品| 国产a片免费观看| 中文字幕日韩无码片| 欧美日韩成人| 一级免费黄片| 张柏芝BBw搡BBBB槡BBBBHDfree | 影音先锋成人AV| 亚洲成人av在线观看| 艹逼免费视频| 九九黄色| 秋霞午夜久久| 无码电影视频| 一欧美日韩免费/看| 波多野结衣av无码| 七十路の高齢熟妇无码| 俺也去大香蕉| 一级大片免费看| 动漫3D成人H无码国漫| 91人兽| 又a又黄高清无码视频| 黄色三级在线观看| 中文字幕永久| 韩国三级av| 高清无码在线免费观看视频| 国产视频精品一区二区三区 | 久草在| 欧美一区在线视频| 欧美一级AAA大片免费观看 | 一区在线视频| 超碰成人在线观看| 成人网站av| 蜜臀久久99精品久久久兰草影视| 日韩性生活网| 无码逼逼| 视频國产在线| 日韩中文字幕无码人妻| 中出欧美亚洲| 欧美在线视频99| 一级黄色电影网站| 午夜视频在线播放| 先锋影音中文字幕| 视色视频在线观看18| 日韩欧美小电影| 精品无码不卡| 欧美A片在线免费观看| 麻豆91免费视频| 久热99| 大香蕉毛片| 一级片在线免费观看| 猛男大粗猛爽H男人味| 欧美精品日韩| 超碰免费91| 免费版成人久久幺| 校园春色亚洲色图| xxxxx无码| 无码人妻91| 米奇电影777无码| 99久久99久国产黄毛片| 日韩一级黄色电影| 免费看一区二区三区A片| 久射久| 午夜无码精品一区二区三区99午| 久久精品国产精品| 俺去俺来WWW色官方| 狠狠色五月亚洲91| 天天精品视频| 九九亚洲精品| 在线色综合| 操逼网123首页| 无码任你操| 黄色一级在线| 91国产视频在线播放| 青草伊人网| 高清无码一区| 国产精品久久久久久久久| 国产精品无码一区二区在线欢| 91免费小视频| 午夜福利亚洲| 国产婷婷色一区二区在线观看| 日韩毛片中文字幕| 蜜桃久久久亚洲精品| 最新国产精品| 四虎成人无码| 亚洲色图片区| 在线免费观看网站| 国产手机拍视频推荐2023| 夜夜嗨AV| 美女久久久久| 久草欧美| 久久精品女同亚洲女同13| 日本无码成人片在线播放| 黑人精品XXX一区一二区| 闺蜜AV| 欧美老妇BBBBBBBBB| 精品国产AV鲁一鲁一区| 亚洲精品一区二区三区四区高清| 国产不卡精品| 污污污污污www网站免费民国| 亚洲高清人妻| 91麻豆免费看| 午夜成人福利视频在线观看| 一本到在线观看午夜剧场| 日本成人不卡视频| 无码一区二区北条| 大香蕉最新国产2025| 淫一区二区| 亚洲人内射片又| 制服丝袜无码| 免费精品黄色网页| 老司机精品在线观看| 色天使色天堂| 精品国产乱子伦一区二区三区,小小扐| 亚洲最大三级片| 手机AV网站| 国产毛片欧美毛片高潮| 特猛特黄AAAAAA片| 欧美成人中文字幕| 日本精品在线观看视频| 成人国产片| 伊人啪啪| 波多野结衣无码AV专区| 少妇性受XXXX黑人XYX性爽| 无码人妻精品一区二区蜜桃网站| 动漫人物插画动漫人物的视频软件 | 亚洲在线观看网站| 久久私拍视频| 无码激情18激情视频| 久久无码人妻精品一区二区三区 | 欧美性受XXXX黑人XYX性爽一| 日本中文无码| 精品人妻在线| 久久午夜无码人妻精品蜜桃冫| 黄片网址大全| 在线看片av| 欧美黄页| 操屄小视频| 久久久久久久久国产精品| AV片在线免费观看| 黄片免费视频在线观看| 手机看片日韩| 亚洲无码在线电影| 中文字幕乱码亚洲无线码在线日噜噜| 中文字幕无码AV| 日韩大香蕉| 亚洲日韩乱码在线| 人妻公日日澡久久久| 伊人影院麻豆| 日韩欧美中文字幕视频| 五月天操逼网站| 伊人影院99| 综合激情AV| 亚洲午夜精品久久久| 日韩精品免费观看| 亚洲天堂成人网| 超碰天天干| 特黄网站| 黄色成人网站在线观看| 成人福利小视频| 日本高清中文字幕| 亚洲在线观看网站| 亚洲福利在线免费观看| 久久婷综合| 久草免费在线观看视频| 欧美在线视频一区| 91探花视频在线观看| 久久男女| 欧美精产国品一二三产品在哪买| 欧美精品一区二区三区成人片在线 | 午夜一区二区三区免费| 高清无码视频直接看| 91久久久久久久18| 欧美啊啊啊| 操逼视频免费网站| 青青草激情| 久操视频免费观看| 欧美精品久久久| 国产激倩都市一区二区三区欧美 | 无码福利视频| 69婷婷国产精品| 日韩无码二区| 3D动漫啪啪精品一区二| 日本黄色电影网站| 丁香五月天在线播放| 思思精品在线| 精品日韩中文字幕| 一区二区三区精品无码| 熟妇综合| 亚洲av电影网| 成人黄色免费网站| 激情亚洲| 欧美成人一区二区三区片| 久久免费毛片| 97干视频| 999久久| 亚洲小说区图片区| 夜夜欢天天干| 亚洲色播放| 青青草国产在线视频| 可以看的黄色视频| 玖玖激情| 能看的AV网站| 免费的AV| 欧洲精品码一区二区三区免费看| 日韩在线中文字幕亚洲| 学生妹一级大片| 免费在线看A| 欧美VA视频| 成人av一区| 久久久黄色| se99av| 国产91嫩草乱婬A片2蜜臀| 久久艹伊人| 欧美日韩亚洲中文字幕| 一区二区三区四区免费观看| 中文字幕乱妇无码Av在线| 女人A片一级黄色| 亚洲成a人无码| 国产亲子乱婬一级A片借种| 日本一区二区三区在线观看网站| 中文字幕免费视频在线观看| 你懂的视频在线观看| 午夜操人妻| 先锋av资源在线| 中文字幕五码| 在线看片A| 久久久国产91桃色一区二区三区| 欧美色网| 毛片网站大全| 四虎看片| 91成人在线播放| 国产AⅤ爽aV久久久久成人| 大香蕉av在线| 大香蕉伊人成人| 无码在线专区| 91av免费在线观看| 91精品人妻一区二| 99re国产| 国产ts视频| 精品无码一区二区三区在线| 人妻黄色视频| 在线观看黄色av| 国产成人AV| 很很撸在线视频| 九九久久免费视频| 婷婷精品在线| 亚洲高清无码在线| 麻豆AV电影| 国产久久性爱| 超碰97在线免费| 人妻精品一区二区三区| 日韩美女免费性爱视频| 人人操97| 国产乱子伦-区二区三区熟睡91 | 亚洲永久免费精品| 亚洲成人精品在线| 免费在线观看黄| 欧美性大香蕉| 麻豆传媒在线| 91人人视频| 一区二区高清| 天天摸天天肏| AⅤ在线观看| 午夜色婷婷| 国产精品无码在线观看| 久久黄色视频免费看| 国产精品成人在线视频| 午夜精品视频在线观看| 无码专区一区二区三区| AV电影免费看| 欧美高清一级| 成人首页| 伊人干综合| 69av视频在线观看| 国产精品日韩高清北条麻衣| 农村一级婬片A片AAA毛片古装 | 中文字幕日韩电影| 91在线资源| 欧美成人中文字幕| 青青草乱伦视频| 三级视频网| 操逼视频在线观看| 成人视频毛片| 欧一美一婬一伦一区二区三区自慰, | 五月天综合网| 国产日日日| 丁香五月激情啪啪啪| 色色视频网站| 日韩操逼一区| 99久久婷婷国产综合| 国产色综合视频| 日韩国产在线| 又爽又黄免费网站97双女| 亚洲黄色电影网| 天堂亚洲| 小H片在线观看| 国产无码观看| 一区二区三区黄色| 无码视频免费观看| 亚洲AV国产| 超碰97在线免费| AV高清无码| 精品久久三级片| 国产av地址| 首页-91n| 91人妻一区二区三区无不码超满| 久久婷婷成人综合色怡春院| 亚洲无码精品在线| 欧美激情视频在线| 无码砖区| 正在播放JUQ-878木下凛凛子| 色骚爽大香蕉91| 午夜欧美性爱视频| 四季AV综合网站| 无码射精电影| P站免费版-永久免费的福利视频平台 | 亚洲国产精品自| 亚洲无吗在线观看| 亚洲91精品| 亚洲精品乱码久久久久久蜜桃欧美| 台湾久久| 久久精品视频免费观看| 欧美特级AAA| 伊香蕉大综综综合| 日韩在线电影| 亚洲中文字幕播放| 少妇搡BBBB搡BBB搡HD(| 青青草综合网| 中午字幕在线观看| 国产一a毛一a免费观看| 超碰成人免费| 日韩欧美国产成人| 天天cao| 日韩黄色毛片| 91大屁股| 四虎成人精品无码永久在线的客服| 亚洲AV免费| a片网站在线观看| 亚洲黄色小视频| 淫乱骚穴| 日韩欧美国产综合| 青草91| 麻豆疯狂做受XXXX高潮视频| 成人一级a片| 久久久久久av| A∨无码| 搡中国东北老女人视频| 亚洲激情视频| 色婷在线| 成人网站一区| 精品一区二区三区av| 中文字幕在线播放视频| 久色| 日韩AⅤ无码一区二区三区| 99热在线观看免费| 黄色视频在线免费看| 成年人视频网| 操逼网站大全| 91美女在线观看| 婷婷综合素质二区| 国产在线小视频| 国产www视频| 日韩黄色小视频| 亚洲欧美手机在线| 亚洲a√| 成人免费在线视频| 伊人伊人网|