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

DDD診所——聚合過大綜合癥

開發(fā)
在實踐DDD時,我們應(yīng)該關(guān)注聚合的劃分和優(yōu)化,以確保在保持業(yè)務(wù)一致性和完整性的同時,避免因聚合過大導(dǎo)致的性能和可用性問題。

作者 | 付施威

一、DDD診所 —— 聚合過大綜合癥

“DDD診所”是Thoughtworks DDD社區(qū)的一項活動,通過對同事們在實施DDD過程中遇到的問題進(jìn)行分析和解答,共同提高開發(fā)水平。我們將其中一些典型案例整理成文供大家參考。之后也會考慮在適當(dāng)?shù)臅r候?qū)⑦@一形式對外部開放。

就診日期:2022年6月8日

患者:某DevOps平臺持續(xù)集成模塊

診金:0元(免費(fèi)義診)

二、【患者主訴】

疑似問題設(shè)計

某DevOps平臺需提供持續(xù)交付流水線設(shè)計功能,使用戶可在界面上規(guī)劃完整流程。因此,流水線設(shè)計頁面功能繁雜,涵蓋階段規(guī)劃、前置觸發(fā)條件設(shè)置、質(zhì)量門禁控制等。隨著功能擴(kuò)展,頁面復(fù)雜度逐漸提升。此類功能旨在協(xié)助用戶優(yōu)化持續(xù)交付流水線管理,提升交付效能與質(zhì)量。

圖片圖片

持續(xù)交付流水線界面原

功能介紹:

  • 設(shè)計不同的階段:用戶可以根據(jù)需要設(shè)置不同的階段,例如開發(fā)階段、測試階段等。對于每個階段,用戶可以設(shè)置不同的步驟,例如Checkout、編譯、構(gòu)建鏡像和部署等。
  • 設(shè)計前置觸發(fā)條件:用戶可以選擇兩種觸發(fā)方式,一種是某個代碼倉庫提交觸發(fā),另一種是定時任務(wù)。用戶可以設(shè)置多個前置觸發(fā)條件。
  • 設(shè)置質(zhì)量門禁:用戶可以選擇給階段設(shè)置質(zhì)量門禁,例如單元測試覆蓋率大于80%等。這些門禁指標(biāo)可以在質(zhì)量門禁管理功能中設(shè)置。在流水線執(zhí)行時,如果不滿足門禁指標(biāo),會阻止流水線進(jìn)入下一個階段。

項目架構(gòu)師在接到需求后,根據(jù)需求設(shè)計了一個名為“持續(xù)交付流水線領(lǐng)域模型”。該模型的目的是方便用戶在界面上完成一系列操作,如代碼質(zhì)量檢查、編譯代碼、構(gòu)建鏡像和部署等。這些操作被看作是一個整體,并被組織在一個叫做“流水線”的聚合中。這個聚合包括質(zhì)量門禁、不同的階段和觸發(fā)規(guī)則等。這種設(shè)計旨在保證流水線中各個組成部分的一致性。

請注意,圖中的“<>”是一種自定義的衍生關(guān)系,意味著該對象映射自其他上下文。

圖片圖片

持續(xù)交付流水線領(lǐng)域模型

團(tuán)隊按照這個模型落地了代碼,隨著交付的深入,這個模型的缺點(diǎn)也浮現(xiàn)出來。

引發(fā)問題

1. 認(rèn)知負(fù)載上升

這個聚合包含了7個實體(不包括抽象類),每個實體都有自己相關(guān)的業(yè)務(wù),因此這個聚合的認(rèn)知負(fù)載相對較大。此外,該部分業(yè)務(wù)需要集成不同的外部依賴系統(tǒng),如Sonar(用于實現(xiàn)質(zhì)量門禁)、定時任務(wù)組件(用于定時任務(wù)觸發(fā)器)、GitLab或GitHub(用于代碼提交觸發(fā)器)等。盡管可以通過使用Repository模式和依賴倒置原則來分離功能和實現(xiàn),但開發(fā)人員或維護(hù)人員仍需要掌握相關(guān)知識。如果某個人接手了這個功能(例如修改質(zhì)量門禁相關(guān)功能),他/她基本上需要了解整個系統(tǒng)的工作方式。

2. 部分可用性難以實現(xiàn)

這個功能集成了多個第三方系統(tǒng),并被設(shè)計為一個聚合。由于這些功能中的任何一部分不可用時,整個功能都將受到影響,因此難以實現(xiàn)部分可用性。例如,當(dāng)Sonar服務(wù)暫時不可用時,代碼觸發(fā)和階段維護(hù)的部分也無法為用戶提供服務(wù)。如果后續(xù)用戶提出了部分可用性需求,要求Sonar不可用的情況下,要提示質(zhì)量門禁設(shè)置失敗,但同時,其他部分仍需為用戶提供服務(wù),那么根據(jù)這個設(shè)計就很難實現(xiàn)了,只能推倒重建,成本非常高。

不幸的是,在設(shè)計過程中我們不知不覺地構(gòu)建了一個分布式單體。分布式單體架構(gòu)是對一種設(shè)計糟糕的微服務(wù)架構(gòu)的戲稱。一般指那種由于架構(gòu)師沒有充分考慮和掌握分布式的優(yōu)勢和代價,憑感覺設(shè)計出的微服務(wù)架構(gòu)。這種架構(gòu)導(dǎo)致設(shè)計出的系統(tǒng)既不能享受分布式的彈性優(yōu)勢,又丟失了單體服務(wù)易于實現(xiàn)ACID事務(wù)強(qiáng)一致性方面的便利。通常出現(xiàn)在未經(jīng)良好設(shè)計的微服務(wù)風(fēng)格的分布式軟件中。

3. 犧牲了性能和并發(fā)性

當(dāng)前的交互設(shè)計是用戶在設(shè)計界面對流水線的各部分進(jìn)行設(shè)計,設(shè)計完成后按提交按鈕提交所有部分。實際上,用戶在每次修改時,不一定需要同時修改質(zhì)量門禁、階段、觸發(fā)規(guī)則等所有的部分。然而由于聚合模式的特點(diǎn),我們每次都需要對整個聚合的所有實體進(jìn)行整存整取。即使用戶只想修改其中一部分(如“觸發(fā)規(guī)則”),我們?nèi)孕枰旅麨椤傲魉€”的聚合的整個7個模型,這將導(dǎo)致巨大的性能浪費(fèi)。此外,如果兩個用戶同時操作業(yè)務(wù)上互不影響的兩部分如“觸發(fā)規(guī)則”和“質(zhì)量門禁”時,會相互沖突,有一個用戶要被提示“設(shè)計已變更,修改失敗”,降低了系統(tǒng)的吞吐量。

三、【診斷】

初步診斷,患者的病情主要是聚合過大綜合癥,即聚合設(shè)計不合理,導(dǎo)致聚合過大。在DDD實踐中,合理劃分聚合是個比較有挑戰(zhàn)的問題。

聚合過大綜合癥的病理分析

在DDD的落地實踐過程中,聚合的大小經(jīng)常被描述為一個不可言說的知識。很多時候,憑經(jīng)驗和感覺會導(dǎo)致比較差的設(shè)計。然而,在實踐中,識別大聚合仍有跡可循,一般來說,出現(xiàn)了這三種情況時,就需要警惕聚合過大綜合癥:

1. 寬聚合

一個聚合聚合了多個同級實體,一個“父親”多個 “兒子”。如圖所示:一旦超過三就有大聚合的風(fēng)險。

2. 深聚合

聚合的深度過深,例如聚合根有兒子實體,也有孫子實體,也有重孫實體。當(dāng)層級達(dá)到三層時,就存在大聚合的風(fēng)險。

3. 胖聚合

盡管結(jié)構(gòu)簡單,但實體對象實例多。例如訂單和訂單行作為了一個聚合,而實際業(yè)務(wù)經(jīng)常出現(xiàn)有幾千個訂單行的訂單。這種也存在大聚合的風(fēng)險。

圖片圖片

聚合過大的三個征兆

正如該案例所表現(xiàn)的那樣,這是一個具有寬聚合和深聚合的聚合過大綜合癥癥狀。聚合過大綜合癥會導(dǎo)致一系列問題,例如認(rèn)知負(fù)荷增加、部分可用性下降以及性能問題。而在該案例中,這些問題正是由聚合過大綜合癥所導(dǎo)致的。

四、【治療建議】

出現(xiàn)聚合過大綜合癥,大多數(shù)情況是由于聚合劃分不合理所導(dǎo)致的。為了解決這個問題,我們可以回顧《領(lǐng)域驅(qū)動設(shè)計》一書中有關(guān)聚合模式的定義,以了解如何合理地劃分聚合。

識別聚合的方法

在《領(lǐng)域驅(qū)動設(shè)計:軟件核心復(fù)雜性應(yīng)對之道》一書中,聚合的定義如下:

在具有復(fù)雜關(guān)聯(lián)的模型中,要想保證對象更改的一致性是很困難的。需要維護(hù)適用于密切相關(guān)的對象組的Invariant,而不僅僅是離散的對象。然而,過于謹(jǐn)慎的鎖定機(jī)制又會導(dǎo)致多個用戶之間毫無意義地互相干擾,從而使系統(tǒng)不可用。 我們應(yīng)該將 Entity和 Value Object分門別類地聚集到Aggregate中并定義每Aggregate的邊界。在每Aggregate中,選擇一個Entity作為根,并通過根來控制對邊界內(nèi)其他對象的所有訪問。只允許外部對象保持對根的引用。對內(nèi)部成員的臨時引用可以被傳遞出去,但僅在一次操作中有效。由于根控制訪問,因此不能繞過它來修改內(nèi)部對象。這種設(shè)計有利于確保Aggregate中的對象滿足所有固定規(guī)則,也可以確保在任何狀態(tài)變化時Aggregate作為一個整體滿足固定規(guī)則。

根據(jù)聚合模式的定義,我們可以得出判斷兩個實體(Entity)是否屬于一個聚合的依據(jù),需要把握兩個條件:

1. 存在整體部分關(guān)系

當(dāng)某個Entity是另一個Entity的部分時,稱為整體部分關(guān)系。例如:

  • 汽車輪胎是汽車的一部分
  • 學(xué)生是班級的一部分
  • 訂單行是訂單的一部分

2. 實體之間存在變更時需要遵守的固定規(guī)則(Invariants)

固定規(guī)則或稱為不變量不變式,來自契約式設(shè)計。

在計算機(jī)科學(xué)中,不變量是指在計算機(jī)程序執(zhí)行的某一階段始終為真的邏輯論斷。例如,循環(huán)不變量是一個條件,在一個循環(huán)的每個迭代開始和結(jié)束時都是真的。--- wiki <https://en.wikipedia.org/wiki/Invariant_(mathematics)>

在劃分聚合時,我們關(guān)注的是一些由業(yè)務(wù)原因所約束的固定規(guī)則。這些規(guī)則通常是通過與業(yè)務(wù)人員溝通,了解“A更新的時候,會不會引起B(yǎng)的某個屬性的更新”,“如果兩個實體暫時不一致,是否會導(dǎo)致難以承受的業(yè)務(wù)后果”等問題來得出的。

例如,在訂單系統(tǒng)中,假設(shè)需求是整個訂單的總價等于訂單行的總價之和,且總價必須小于3000(左圖)。在這種情況下,訂單與訂單行之間就存在固定規(guī)則。因此,可以把它們放在同一個聚合中,并通過整存整取來維護(hù)這個固定規(guī)則。然而,如果業(yè)務(wù)場景是訂單僅作為訂單行的分組,用戶需要按照訂單行逐一結(jié)賬(右圖)那么訂單和訂單行就無需劃分成一個聚合。

圖片圖片

固定規(guī)則是劃分聚合的重要條件

需要注意的是,固定規(guī)則中的一部分是由技術(shù)實現(xiàn)所約束的固定規(guī)則,例如數(shù)據(jù)庫ID不重復(fù)、訂單編號唯一等。這些規(guī)則通常是全局性的固定規(guī)則,需要在整個系統(tǒng)范圍內(nèi)遵循。然而,由于這些全局性的固定規(guī)則通常與特定的業(yè)務(wù)邏輯無關(guān),因此在劃分聚合時,它們通常不是參考因素。

大聚合都必須拆小么?

盡管利用業(yè)務(wù)固定規(guī)則通常能夠確定較小的業(yè)務(wù)一致性邊界,從而得出比較合適的聚合規(guī)模,但并不是所有業(yè)務(wù)都適用這一原則。在有些業(yè)務(wù)場景中,大聚合可能是不可避免的。在這種情況下,如果想維護(hù)固定規(guī)則,是否采用聚合模式,需要權(quán)衡使用大聚合帶來的成本是否可以接受。聚合模式是一種設(shè)計模式,而非萬能的解決方案,在不適用的場景下強(qiáng)行應(yīng)用聚合可能會導(dǎo)致收益不成正比。

聚合模式是為了解決復(fù)雜業(yè)務(wù)中的一致性問題,將具備固定規(guī)則的一組對象整存整取的一種方案。采用聚合模式的優(yōu)點(diǎn)在于比較簡單地就能實現(xiàn)固定規(guī)則約束,代價就是整存整取帶來的性能損失等問題。

五、【治療方案】

在案例中,盡管流水線各部分之間存在整體部分關(guān)系,通過對業(yè)務(wù)進(jìn)行分析,我們確定了以下固定規(guī)則:

  • 階段內(nèi)的步驟之間存在嚴(yán)格的順序依賴,因為下一個步驟通常依賴上一個步驟的產(chǎn)出物。因此,存在一個固定規(guī)則:某個步驟的執(zhí)行順序必須按照階段的步驟列表中的順序關(guān)系。
  • 階段質(zhì)量門禁和門禁項之間存在固定規(guī)則,即當(dāng)在門禁項發(fā)生變更時,門禁版本也必須隨之更新門禁的版本有一定的業(yè)務(wù)含義(例如,門禁版本更新需要在界面上進(jìn)行明確提示)。

圖片圖片

整改后的聚合

因此,根據(jù)上述整改方案,原本的一個大聚合被拆分成了四個小聚合,每個聚合只包含少量實體。這種改動可以有效地降低聚合的規(guī)模,從而更好地平衡性能和業(yè)務(wù)一致性之間的關(guān)系。

六、【總結(jié)】

在領(lǐng)域驅(qū)動設(shè)計實踐中,聚合的劃分確實是一個難以把握的問題。聚合本身是一種有代價的模式,不合理的聚合劃分可能導(dǎo)致嚴(yán)重的問題,從而引發(fā)一系列疑問,例如“為什么使用DDD后仍然遇到各種問題?”聚合過大綜合癥是聚合劃分中的一種常見問題,當(dāng)模型中出現(xiàn)寬聚合、深聚合或胖聚合時,我們需要警惕聚合過大綜合癥及其帶來的難以維護(hù)、犧牲可用性和性能損失等問題。

要解決這個問題,我們需要回顧聚合解決的核心問題:如何維護(hù)對象之間的固定規(guī)則。再次考慮聚合的劃分時,需要滿足兩個條件:整體-部分關(guān)系和實體間需要遵循的固定規(guī)則。當(dāng)使用聚合模式的代價過大時,可以考慮其他方法來實現(xiàn),例如通過鎖機(jī)制鎖定需要維護(hù)一致性的對象方法。

總之,在實踐DDD時,我們應(yīng)該關(guān)注聚合的劃分和優(yōu)化,以確保在保持業(yè)務(wù)一致性和完整性的同時,避免因聚合過大導(dǎo)致的性能和可用性問題。在面臨聚合模式代價過大的情況時,可以靈活選擇其他方法來實現(xiàn)業(yè)務(wù)一致性和完整性。

責(zé)任編輯:趙寧寧 來源: Thoughtworks洞見
相關(guān)推薦

2011-10-20 13:14:20

噴墨打印機(jī)常見問題

2012-05-09 17:27:50

創(chuàng)新BlackBerry RIM

2020-01-20 13:56:12

物聯(lián)網(wǎng)病態(tài)建筑綜合癥智能建筑

2021-06-16 11:18:22

物聯(lián)網(wǎng)建筑綜合癥IoT

2013-02-01 10:12:57

2018-08-17 15:00:03

京東

2017-12-25 11:24:57

程序員代碼編程

2021-11-18 13:14:08

DDD聚合代碼

2015-05-25 11:12:02

程序猿個個經(jīng)典

2019-08-02 16:15:13

2021-12-09 09:54:02

領(lǐng)導(dǎo)者疫情情商

2014-05-12 10:12:09

程序員

2015-12-25 11:34:25

2022-01-29 00:02:32

嵌入式系統(tǒng)開發(fā)系統(tǒng)

2015-07-02 13:42:50

2019-02-11 13:55:03

Linux重復(fù)性壓迫損傷命令

2014-04-14 16:02:01

點(diǎn)贊
收藏

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

色94色欧美sute亚洲线路一久| 盗摄精品av一区二区三区| 正在播放欧美一区| 亚洲综合在线一区二区| 精品精品导航| 国产欧美一区二区精品性色超碰| 91在线色戒在线| 日韩 欧美 综合| 日韩久久精品| 日韩av在线网页| 亚洲一区二区中文字幕在线观看| 蜜桃视频在线观看播放| 亚洲欧美在线aaa| 狠狠色伊人亚洲综合网站色| 亚洲字幕av一区二区三区四区| 日韩一级网站| 久久av红桃一区二区小说| 国产ts丝袜人妖系列视频| 成人97精品毛片免费看| 色综合天天视频在线观看 | www.国产欧美| 日本不卡视频在线观看| 91国语精品自产拍在线观看性色 | 精品亚洲视频在线| 中文字幕乱码在线播放| 亚洲综合丁香婷婷六月香| 一本一本久久a久久精品综合妖精| 婷婷五月综合久久中文字幕| 国产一区二区三区四区五区入口| 国产精品96久久久久久又黄又硬| 18精品爽视频在线观看| 99re久久最新地址获取| 亚洲视频在线观看免费| 800av在线播放| 视频精品二区| 91精品国产福利| 亚洲污视频在线观看| 日韩电影免费观| 天天影视涩香欲综合网| 免费观看国产精品视频| 欧美xxxx少妇| 一区二区三区蜜桃| 伊人再见免费在线观看高清版 | 久热精品在线观看视频| 日韩电影免费观| 色综合亚洲欧洲| 国产91美女视频| 麻豆mv在线观看| 欧美日韩国产精品一区| 黄色一级视频片| 波多野结衣视频一区二区| 亚洲成av人片一区二区三区| 国产91沈先生在线播放| 丝袜国产在线| 亚洲自拍偷拍九九九| 99在线观看视频免费| 欧美xxx黑人xxx水蜜桃| 亚洲成人动漫在线观看| 欧美精品99久久| 欧美一级大黄| 欧美日韩极品在线观看一区| 日本高清久久久| 成人黄色91| 精品国产三级a在线观看| 四虎精品一区二区| 羞羞答答一区二区| 一区二区三区久久精品| 91无套直看片红桃在线观看| 91久久国产| 欧美成人精品影院| 日韩乱码人妻无码中文字幕| 夜夜嗨网站十八久久| 日韩av免费在线| 黄色av一区二区| 韩国av一区二区| 福利视频一区二区三区| 天堂v视频永久在线播放| 久久久久久久久久久99999| 午夜视频久久久| 中文字幕在线三区| 高跟丝袜欧美一区| 麻豆一区二区三区视频| 免费观看在线一区二区三区| 亚洲精品国产电影| 日本欧美一区二区三区不卡视频| 五月天久久777| 国模吧一区二区| 男人天堂视频网| 国产精品一区二区在线看| 精品久久久久久一区| 成年人视频在线免费观看| 樱花草国产18久久久久| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲午夜国产成人| 亚洲第一偷拍网| a资源在线观看| 激情综合视频| 国产日韩在线一区| 无码国产精品一区二区色情男同| 国产精品毛片a∨一区二区三区| www.99riav| 色8久久影院午夜场| 欧美大片一区二区| 精品人妻中文无码av在线| 欧美日韩亚洲一区三区| 国产精品久久久久秋霞鲁丝| 亚洲欧美另类一区| 中文字幕在线观看一区二区| 久久久一本二本三本| 精品视频在线播放一区二区三区| 亚洲男人天堂网站| 久久精品国产亚洲AV无码男同| 美美哒免费高清在线观看视频一区二区 | 伊人久久男人天堂| av资源吧首页| 国产一区二区三区四区五区入口 | 中文字幕一区二区三区欧美日韩 | 日韩国产欧美一区二区| 国内揄拍国内精品| a在线观看免费| 欧美极品美女视频| 久久无码高潮喷水| 国产厕拍一区| 美女啪啪无遮挡免费久久网站| 波多野结衣激情视频| 91亚洲精品久久久蜜桃| 免费人成在线观看视频播放| www.成人| www国产亚洲精品久久网站| 日韩国产成人在线| 26uuuu精品一区二区| 亚洲熟妇无码一区二区三区导航| 麻豆一区在线| 久久夜色精品国产| 国产精品无码AV| 亚洲色图欧洲色图| 欧美wwwwwww| 日韩在线理论| 91精品久久久久久久久青青| 国产剧情在线观看| 色94色欧美sute亚洲13| www.久久国产| 亚洲综合不卡| 久久伊人一区| 免费看av不卡| 亚洲免费一在线| 免费看日批视频| 久久久久99精品一区| 国产精品wwwww| 欧美理论电影大全| 国产男人精品视频| 黄色精品免费看| 日韩三级在线免费观看| 黄色一级视频免费| 成人久久久精品乱码一区二区三区| 亚洲国产一二三精品无码 | 国产在线国偷精品产拍免费yy | 一本久道久久综合狠狠爱| 国产亚洲一区在线播放| 日韩欧美一中文字暮专区 | av免费在线免费观看| 欧美一区二区大片| 日韩 欧美 亚洲| 久久综合久久综合久久| 99视频免费播放| 日本一区二区三区视频| 成人精品一区二区三区电影黑人| 黄黄的网站在线观看| 欧美一级夜夜爽| 日韩男人的天堂| 久久久不卡网国产精品二区 | 国产成人无遮挡在线视频| 无码人妻精品一区二区蜜桃网站| 国产精品22p| 51色欧美片视频在线观看| av中文字幕一区二区三区| 91精品国产乱码| 在线观看免费国产视频| 国产精品私房写真福利视频| 91精品国产三级| 中文一区在线| 一区二区三区四区视频在线观看 | 日韩av电影免费观看| 午夜不卡一区| 国产69精品久久久久9999| 国产在线中文字幕| 欧美不卡一区二区三区四区| 草久视频在线观看| 亚洲欧美在线另类| 免费看黄色aaaaaa 片| 国产自产高清不卡| 免费无遮挡无码永久视频| 久久精品播放| 久久精品第九区免费观看| 四虎国产精品免费久久| 91爱视频在线| 老司机精品影院| 亚洲欧美日韩高清| www.四虎在线观看| 欧美午夜精品久久久久久超碰| 久久久久亚洲av无码专区体验| 国产三级精品视频| 精品影片一区二区入口| 九一九一国产精品| 91黄色小网站| 影音先锋久久| 日韩中文在线字幕| 欧美少妇性xxxx| 精品欧美日韩在线| 日韩综合一区二区三区| 国产精品日日摸夜夜添夜夜av| 国产网红在线观看| 久久久999国产精品| 国产精品视频一区二区久久| 欧美精品一区二区三区蜜桃| 国产精品久久久久久久免费看 | 97久久久免费福利网址| 蜜桃视频网站在线观看| 亚洲欧美一区二区三区久久| 日本黄色免费视频| 日韩一区二区电影在线| 一区二区视频网| 色综合久久久久综合体| 日韩免费黄色片| 亚洲一区精品在线| 国产精品成人免费观看| 国产精品国产三级国产aⅴ原创 | 成人免费一级视频| 91精品蜜臀在线一区尤物| 中文字幕第315页| 色偷偷成人一区二区三区91| 五月婷婷视频在线| 精品国产乱码久久久久久婷婷| 麻豆视频在线观看| 亚洲久草在线视频| caoporn91| 亚洲精品国产高清久久伦理二区| 国产又粗又猛又爽又黄的视频四季| 久久久另类综合| 国产手机在线观看| 久久久久久久久一| 手机看片福利视频| 国产喷白浆一区二区三区| 男人舔女人下部高潮全视频| 国产日韩欧美不卡在线| 中国女人特级毛片| 国产精品视频在线看| 国产真人真事毛片视频| 国产精品久久久久久福利一牛影视| 国产又粗又猛又爽又黄的视频四季| 中文子幕无线码一区tr| 国产又黄又粗又猛又爽的| 国产精品国产精品国产专区不蜜| www.黄色com| 亚洲视频一区二区在线| 欧美精品乱码视频一二专区| 亚洲国产精品久久不卡毛片| 日韩精品一区二区av| 欧美性jizz18性欧美| 精品无码一区二区三区的天堂| 欧美日韩午夜精品| 国产乱色精品成人免费视频| 欧美大片在线观看| 四虎在线观看| 伊人男人综合视频网| 黄网站免费在线观看| 色综合久久88| 不卡av影片| 国产区亚洲区欧美区| 中文字幕一区二区三区四区久久 | 中文字幕人成人乱码| 2018中文字幕第一页| 亚洲影院在线| 91插插插插插插插插| 国产寡妇亲子伦一区二区| 精品一区二区视频在线观看| 久久久国产午夜精品| а天堂中文在线资源| 亚洲一区二区三区不卡国产欧美| 天天爽夜夜爽夜夜爽精品| 欧美日韩一区成人| 亚洲精品成人区在线观看| 亚洲欧美精品一区| av在线免费网站| 91精品国产精品| 一区二区三区无毛| 国产精品乱码| 久久国产亚洲精品| 妞干网在线视频观看| 蜜臀av国产精品久久久久 | 国产精品久久久久7777按摩| 久久久久黄色片| 欧美视频一区在线| 日韩在线视频第一页| 色香阁99久久精品久久久| 岛国片av在线| 成人黄色av网站| 精品一区在线| 国产精品自拍合集| 久久激情五月婷婷| 国产精品1000部啪视频| 亚洲精品欧美在线| 最新黄色网址在线观看| 亚洲第一网站男人都懂| 精品黄色免费中文电影在线播放 | 亚洲成a人片777777久久| 久久久精品有限公司| 欧美午夜在线视频| 天天av天天操| 国产精品少妇自拍| 日本免费在线观看视频| 精品久久久久久久一区二区蜜臀| 三区四区在线视频| 国产精品成人播放| 香蕉久久精品| 精品这里只有精品| 国产69精品久久777的优势| 波多野结衣喷潮| 欧美亚洲愉拍一区二区| 久久电影视频| 浅井舞香一区二区| 久久超级碰碰| 青草青青在线视频| 国产成人精品一区二区三区四区| 欧洲美女女同性互添| 欧美性videosxxxxx| 国产一级二级三级在线观看| 欧美亚洲第一区| 免费日韩一区二区三区| 阿v天堂2018| 成人夜色视频网站在线观看| 欧美国产在线看| 91精品国产福利| 亚洲无线看天堂av| 亚洲影影院av| 欧美人成网站| 欧美xxxx黑人| 亚洲一区二区综合| 黄色美女一级片| 97欧美精品一区二区三区| www国产精品| 精品久久一二三| 久久亚洲二区三区| av网站中文字幕| 亚洲一区第一页| 伦一区二区三区中文字幕v亚洲| 日韩国产在线一区| 久久精品久久99精品久久| a一级免费视频| 欧美一区二区三区在线观看| 日本理论片午伦夜理片在线观看| 97伦理在线四区| 亚洲国产高清视频| 亚洲第一成人网站| 欧美婷婷六月丁香综合色| 免费观看在线黄色网| 亚洲www视频| 伊人成人在线| 国产精品探花一区二区在线观看| 日韩欧中文字幕| 电影av在线| 147欧美人体大胆444| 在线播放不卡| 久久久久亚洲av成人无码电影| 欧美性一二三区| 亚洲欧美成人影院| 久久久免费看| 蜜桃久久精品一区二区| 在线观看成人毛片| 亚洲精品一区av在线播放| 天堂久久一区| 国产精品国产亚洲精品看不卡| 久久精品一区蜜桃臀影院| 91午夜交换视频| 午夜精品久久久久久99热| 欧美日韩色图| 国产又黄又嫩又滑又白| 色哟哟一区二区在线观看| 美女羞羞视频在线观看| 国产在线一区二| 蜜臀av一区二区三区| 国产精品第72页| 亚洲人成在线观看| 免费观看亚洲天堂| 日韩精品一区二区三区色欲av| 亚洲男人天堂av| 狠狠狠综合7777久夜色撩人| 99理论电影网| 日本女优在线视频一区二区 | 日韩视频三区| 五月天婷婷丁香网| 日韩高清人体午夜| 亚洲综合资源| 四虎永久在线精品无码视频| 亚洲天堂网中文字| 日本大片在线观看| 不卡一卡2卡3卡4卡精品在| 青青草97国产精品免费观看 | 欧美1—12sexvideos| 天堂精品视频|