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

抖音 iOS 推薦 Feed 容器化總結(jié)

原創(chuàng) 精選
移動(dòng)開發(fā)
針對(duì) Feed 容器內(nèi)部多場景、多業(yè)務(wù)耦合導(dǎo)致整體維護(hù)困難,新業(yè)務(wù)接入成本高的問題,首先按照?qǐng)鼍啊I(yè)務(wù)和功能維護(hù)進(jìn)行拆分梳理。在拆分完成后為了方便各個(gè)業(yè)務(wù)進(jìn)行維護(hù),設(shè)計(jì)了 ControlerKit 工具實(shí)現(xiàn)了生命周期方法的分發(fā),并且通過 Context 進(jìn)行狀態(tài)管理,實(shí)現(xiàn)了各個(gè)業(yè)務(wù)間的通信和狀態(tài)維護(hù)。
作者|王展、張宇、羅群鋒、谷春暉

背景

抖音 Feed 容器在推薦、關(guān)注、同城、朋友等多個(gè)場景中使用,每個(gè)場景都有自身的邏輯和業(yè)務(wù),最終匯總在 FeedViewController 中,隨著業(yè)務(wù)的迭代,代碼越來越臃腫,面臨如下的問題:

  • 容器類(FeedViewController) 有 10000+行,還有十多個(gè)業(yè)務(wù)分類,整體的理解和維護(hù)成本高
  • 容器類 框架和業(yè)務(wù)邊界不清晰,框架代碼的修改不收斂和不規(guī)范,業(yè)務(wù)改動(dòng)可能導(dǎo)致線上問題,如數(shù)據(jù)層不收斂導(dǎo)致的問題:自動(dòng)刪除導(dǎo)致一次滑動(dòng)多個(gè)視頻或者自動(dòng)跳轉(zhuǎn)到第一個(gè)視頻等問題
  • 容器類 承擔(dān)了推薦、關(guān)注、朋友三個(gè)大場景,細(xì)節(jié)的業(yè)務(wù)邏輯差異較多,目前多業(yè)務(wù)代碼耦合在一起,增加新功能時(shí)需要考慮其他業(yè)務(wù)方,容易引入問題,開發(fā)和測試效率低
  • 內(nèi)流容器和外流容器,形態(tài)相似但是代碼分離,主體代碼重復(fù),新增功能時(shí)需要在兩個(gè)類中做重復(fù)開發(fā),如:視頻預(yù)加載優(yōu)化等,開發(fā)和維護(hù)成本高
  • 核心功能的監(jiān)控和代碼防劣化的體系不完善

Feed 容器多場景下承載業(yè)務(wù)

Feed 容器承載了基礎(chǔ)功能、直播、登錄、登出、性能監(jiān)控、預(yù)加載等多個(gè)功能。

由于之前沒有做好管控,導(dǎo)致容器中業(yè)務(wù)相互耦合嚴(yán)重,業(yè)務(wù)邊界不清晰,開發(fā)過程中稍有不慎,就會(huì)對(duì)其他業(yè)務(wù)造成影響。

圖片

而且隨著業(yè)務(wù)迭代,逐漸呈現(xiàn)劣化趨勢,尤其是對(duì)于新業(yè)務(wù)接入,面對(duì)負(fù)責(zé)的代碼無從下手。

業(yè)務(wù)迭代效率低

由于代碼都在容器類中直接修改,一個(gè)版本經(jīng)常會(huì)有多個(gè)業(yè)務(wù)在容器中進(jìn)行修改導(dǎo)致沖突的情況,此時(shí)就需要多方進(jìn)行 review,保證改動(dòng)不出問題,往往還要平臺(tái)業(yè)務(wù)的同學(xué)進(jìn)行支持,業(yè)務(wù)的整體迭代效率比較低。

圖片

防劣化&監(jiān)控缺失

業(yè)務(wù)耦合,對(duì)代碼改動(dòng)沒有監(jiān)控,導(dǎo)致 FeedViewController 越來越膨脹。因?yàn)闆]有合理架構(gòu)導(dǎo)致無法做拆分,代碼劣化越來越嚴(yán)重,而且基于現(xiàn)狀無法進(jìn)行防劣化。

目標(biāo)方案

為了解決上述問題,首先設(shè)定好目標(biāo),然后根據(jù)目標(biāo)提出解決方案,最終落地實(shí)現(xiàn),驗(yàn)證目標(biāo)是否達(dá)成。

目標(biāo)

  • 架構(gòu)分層,明確每層職責(zé),容器和業(yè)務(wù)解耦,多業(yè)務(wù)之間解耦,做到容器和業(yè)務(wù)各自閉環(huán);
  • 業(yè)務(wù)組件可插拔,不同場景支持靈活的組合和擴(kuò)展業(yè)務(wù)組件;
  • 搭建監(jiān)控體系,實(shí)現(xiàn)穩(wěn)定性、性能、問題定位,建立看板,實(shí)時(shí)了解各項(xiàng)指標(biāo);
  • 防劣化,容器和業(yè)務(wù)分倉隔離,收斂維護(hù)人員;

思路

根據(jù)上述的目標(biāo),從下面四點(diǎn)進(jìn)行思考和設(shè)計(jì):

  • 明確業(yè)務(wù)開發(fā)痛點(diǎn),多業(yè)務(wù)合作開發(fā)效率低、設(shè)計(jì)不合理模塊使用成本高等;
  • 自上而下設(shè)計(jì),保證整體業(yè)務(wù)架構(gòu)設(shè)計(jì)的合理性,明確優(yōu)化方向;
  • 分層開發(fā)和上線驗(yàn)證,降低上線風(fēng)險(xiǎn)和全量成本;
  • 架構(gòu)防劣化,收益可衡量;

方案

針對(duì) Feed 容器內(nèi)部多場景、多業(yè)務(wù)耦合導(dǎo)致整體維護(hù)困難,新業(yè)務(wù)接入成本高的問題,首先按照?qǐng)鼍啊I(yè)務(wù)和功能維護(hù)進(jìn)行拆分梳理。在拆分完成后為了方便各個(gè)業(yè)務(wù)進(jìn)行維護(hù),設(shè)計(jì)了 ControlerKit 工具實(shí)現(xiàn)了生命周期方法的分發(fā),并且通過 Context 進(jìn)行狀態(tài)管理,實(shí)現(xiàn)了各個(gè)業(yè)務(wù)間的通信和狀態(tài)維護(hù)。

整體架構(gòu)

圖片

基礎(chǔ)容器

Feed 基礎(chǔ)容器,采用組件化框架,支持基礎(chǔ)組件和業(yè)務(wù)組件的動(dòng)態(tài)組合和擴(kuò)展,由業(yè)務(wù)無關(guān)、統(tǒng)一的列表形態(tài)組成,通過數(shù)據(jù)驅(qū)動(dòng)頁面展現(xiàn)。同時(shí)對(duì)外暴露生命周期事件,方便組件進(jìn)行監(jiān)聽。其中基礎(chǔ)容器由平臺(tái)方進(jìn)行統(tǒng)一維護(hù),并提供了完善的監(jiān)控體系,方便進(jìn)行問題的定位和追查。

基礎(chǔ)組件

Feed 容器的基礎(chǔ)組件部分,采用的方式是平臺(tái)方統(tǒng)一進(jìn)行維護(hù)。目前的基礎(chǔ)組件,主要包括播放控制、播放策略優(yōu)化、列表預(yù)加載以及頁面管理等。

其中,全屏 Feed 相關(guān)的基礎(chǔ)組件,為多業(yè)務(wù)共用,具備可復(fù)用、可擴(kuò)展等優(yōu)勢。

業(yè)務(wù)組件

業(yè)務(wù)組件是和業(yè)務(wù)強(qiáng)相關(guān)的組件,業(yè)務(wù)方可以根據(jù)自身的需要進(jìn)行靈活定制,組件本身可插拔,由各業(yè)務(wù)方進(jìn)行維護(hù)。

應(yīng)用場景

業(yè)務(wù)方基于 Feed 容器,組合業(yè)務(wù)組件和基礎(chǔ)組件構(gòu)建的頁面,在構(gòu)造過程中可以基于配置文件實(shí)現(xiàn)容器的定制,比如推薦和關(guān)注。

容器化工具

多個(gè)業(yè)務(wù)耦合在同一個(gè)容器中,導(dǎo)致容器類越來越臃腫,一方面造成各方同時(shí)維護(hù)越來越困難,另一方面對(duì)于新業(yè)務(wù)和新同學(xué)接入十分不友好,需要花費(fèi)很多時(shí)間熟悉上下文以避免改動(dòng)對(duì)其他業(yè)務(wù)造成影響。

為此設(shè)計(jì)了 ControllerKit 庫,該庫實(shí)現(xiàn)了復(fù)雜頁面的分發(fā),解決 ViewController 臃腫問題,規(guī)范代碼拆分標(biāo)準(zhǔn),提供分發(fā)方法的能力。各個(gè)接入方按照規(guī)則注冊(cè)后,實(shí)現(xiàn)自己關(guān)心的生命周期方法,并在方法中實(shí)現(xiàn)對(duì)應(yīng)的邏輯即可。

圖片

ContainerViewController

ContainerViewController 是容器 ViewController,實(shí)現(xiàn)了 ContainerProtocol,保存了上下文環(huán)境,負(fù)責(zé)了各個(gè)生命周期方法的分發(fā)。

ContainerProtocol

聲明了容器對(duì)外提供的屬性和方法,方便各個(gè) SubController 進(jìn)行訪問。

ControllerProtocol

聲明了基礎(chǔ)的聲明周期和共有的方法。

Controller

Controller 是將 ViewController 中的代碼拆分出來的子模塊,可以接收分發(fā)出來的 viewDidLoad、viewWillAppear 等生命周期及自定義方法調(diào)用,還可以向 ViewController 中添加子 View。

ControllerManager

ControllerManager 負(fù)責(zé) Controller 的注冊(cè)、管理、方法分發(fā)。通過 classNameArray 返回 Controller 的字符串類名數(shù)組即可,可以支持 Controller 在其他倉庫的能力

Manager 需要聲明分發(fā)的 Controller 協(xié)議,只需要聲明,不需要實(shí)現(xiàn),Manager 內(nèi)部會(huì)通過消息轉(zhuǎn)發(fā)機(jī)制統(tǒng)一分發(fā)。

各角色之間的關(guān)系

ContainerViewController 實(shí)現(xiàn)了 ContainerProtocol,并持有 ControllerManager,各個(gè)子 Controller 注冊(cè)到 ControllerManager 中,各個(gè) Controller 可以通過 ContainerProtocol 訪問容器的能力,ControllerManager 通過 ControllerProtocol 里面聲明的方法進(jìn)行分發(fā)。

比如:ContainerViewController 初始化后調(diào)用 viewDidLoad 時(shí),會(huì)通過 ControllerManager 依次分發(fā)到實(shí)現(xiàn)該方法的 controller 中,各個(gè) Controller 在自己的 viewDidLoad 方法中實(shí)現(xiàn)自己的邏輯即可。

Controller 優(yōu)先級(jí)

  • 方法分發(fā)優(yōu)先級(jí)按照數(shù)組提供的順序,因此更基礎(chǔ)的 Controller 應(yīng)排在前面
  • 優(yōu)先級(jí)由注冊(cè)順序決定,因此不同方法優(yōu)先級(jí)無法調(diào)整,也不希望有調(diào)整,無法滿足時(shí),通過其他方式實(shí)現(xiàn)

Feed 容器的實(shí)現(xiàn)

根據(jù) ControllerKit 對(duì) Feed 容器的類結(jié)構(gòu)改造如下所示

圖片

  • FeedViewController 作為容器,實(shí)現(xiàn)容器能力,對(duì)外通過 FeedContainerProtocol 被訪問
  • Controller 對(duì)應(yīng)業(yè)務(wù)組件
  • FeedControllerManager 負(fù)責(zé)組件的注冊(cè)、管理和事件的分發(fā)

基于 ControllerKit 的設(shè)計(jì)和實(shí)現(xiàn)

各個(gè)類和協(xié)議的介紹:

FeedContainerProtocol

  • 容器層通過 FeedContainerProtocol 對(duì)外提供能力
  • 避免業(yè)務(wù)方直接訪問和修改容器類
  • 該協(xié)議提供了業(yè)務(wù)層需要的各種能力和接口
  • 由平臺(tái)方進(jìn)行維護(hù)

FeedControllerProtocol

  • 業(yè)務(wù)層協(xié)議通過 FeedControllerProtocol 聲明
  • 定義了各個(gè)生命周期相關(guān)的方法,被各個(gè)業(yè)務(wù) controller 實(shí)現(xiàn)
  • 各個(gè)實(shí)現(xiàn)業(yè)務(wù)只需要在對(duì)應(yīng)的生命周期方法中增加自身的邏輯即可
  • 被注入的 controller 會(huì)在相應(yīng)的時(shí)機(jī)被調(diào)用到
  • 業(yè)務(wù)自閉環(huán)

Context 與 ContainerProtocol 的定位和區(qū)別

  • FeedContainerProtocol 用來給 controller 提供 FeedViewController 實(shí)現(xiàn)的能力
  • FeedContext 中存放 Controller 共用的狀態(tài)
  • 兩個(gè)都能實(shí)現(xiàn)通信,但 context 更偏重于狀態(tài),而 ContainerProtocol 更偏重于能力,比如頁面滾動(dòng)、數(shù)據(jù)刷新

業(yè)務(wù)組件定義

  • 定義業(yè)務(wù) Controller 類
  • 實(shí)現(xiàn) FeedControllerProtocol 協(xié)議
  • 在對(duì)應(yīng)的生命周期方法中實(shí)現(xiàn)對(duì)應(yīng)的業(yè)務(wù)邏輯
  • 若 FeedControllerProtocol 不滿足情況時(shí)根據(jù)之前說明方式在協(xié)議中增加新的生命周期方法,同時(shí)同步增加到 FeedContainerProtocol ,以便分發(fā)

重構(gòu)后業(yè)務(wù)迭代方式

圖片

  • 框架由平臺(tái)業(yè)務(wù)架構(gòu)方維護(hù)
  • 其他業(yè)務(wù)的框架擴(kuò)展需要提交到架構(gòu)方,由架構(gòu)方開發(fā)
  • 其他業(yè)務(wù)提交的方案和修改,交由架構(gòu)方 review
  • 業(yè)務(wù)方的代碼,業(yè)務(wù)方自閉環(huán)

防劣化建設(shè)

為了防止隨著業(yè)務(wù)的迭代,F(xiàn)eed 容器逐漸劣化,需要進(jìn)行防劣化建設(shè)。首先進(jìn)行框架和業(yè)務(wù)分倉:

  • 代碼隔離,修改權(quán)限收斂;
  • 框架部分,線下做 Pipeline 準(zhǔn)入,Lint 檢查是否符合容器規(guī)則; 業(yè)務(wù)方修改容器代碼,review 通過后才能合入

圖片

新方案優(yōu)勢

  • 業(yè)務(wù)解耦,明確了業(yè)務(wù)和容器的職責(zé),邊界清晰
  • 降低 FeedViewController 維護(hù)成本
  • 減少新業(yè)務(wù)接入成本
  • 方便做防劣化

接入示例

以下以興趣選擇和業(yè)務(wù)為例,介紹新老業(yè)務(wù)的接入。

新功能接入 - 興趣選擇

興趣選擇是新的類型的卡片,需要進(jìn)行卡片注冊(cè)并處理相關(guān)邏輯。

圖片

歷史方案

FeedViewController 直接進(jìn)行修改,包括如下內(nèi)容:

  • 增加狀態(tài)管理屬性
  • 需要在 tableview delegate 和 scroll 滾動(dòng)等多個(gè)方法中增加相應(yīng)的處理邏輯
  • 處理注冊(cè)卡片邏輯

新方案

抽取單獨(dú)的業(yè)務(wù) Controller

  • 在生命周期方法中處理興趣選擇相關(guān)邏輯
  • 業(yè)務(wù)相關(guān)的屬性在 Controller 中聲明和維護(hù)

Controller 注冊(cè)到 ControllerManager

在對(duì)應(yīng)的 Controller 中進(jìn)行自己的業(yè)務(wù)處理即可,不需要了解容器本身的其他業(yè)務(wù)邏輯

存量功能拆分 - Feed 監(jiān)控

Feed 監(jiān)控功能在 FeedTableVC 中處理了很多業(yè)務(wù),而且這些邏輯也其他業(yè)務(wù)存在著耦合。

  • 網(wǎng)絡(luò)請(qǐng)求監(jiān)控和數(shù)據(jù)處理
  • 頁面滾動(dòng)
  • 播放處理
  • ...

圖片

采用新方案進(jìn)行拆分

首先創(chuàng)建 FeedMonitorController,增加業(yè)務(wù)相關(guān)的屬性、生命周期方法中實(shí)現(xiàn)對(duì)應(yīng)的邏輯,之后抽取單獨(dú)的業(yè)務(wù) controller 在生命周期方法中處理熟人相關(guān)邏輯。同時(shí)注冊(cè)到 controllerManager 中,并設(shè)置 AB、原有代碼判斷 AB。上線驗(yàn)證,全量后刪除容器老代碼。之后業(yè)務(wù)自閉環(huán),再進(jìn)行迭代時(shí)直接在 FeedMonitorControlle r 內(nèi)容修改即可。

圖片

當(dāng)前進(jìn)展&后續(xù)規(guī)劃

規(guī)劃和節(jié)奏

圖片

1

2

3

4

梳理現(xiàn)狀;

重構(gòu)方案設(shè)計(jì)和評(píng)審;
組件化框架設(shè)計(jì)和開發(fā);
Feed 能力的設(shè)計(jì)和定義

新增功能基于新組件開發(fā);
存量業(yè)務(wù)組件拆分和驗(yàn)證

業(yè)務(wù)接口合理化:Feed 容器對(duì)外暴露能力,業(yè)務(wù)調(diào)用;
基礎(chǔ)能力接口合理化:Feed 容器暴露給組件的能力,播控、數(shù)據(jù)操作等

組件化框架橫向應(yīng)用,詳情頁 Feed 等使用新架構(gòu)

重構(gòu)后的收益

  • 業(yè)務(wù)解耦后,容器本身穩(wěn)定,業(yè)務(wù)方各自維護(hù)自身業(yè)務(wù),提高了整體的穩(wěn)定性

老容器

新容器

因?yàn)闃I(yè)務(wù)耦合,需要了解 Feed 的結(jié)構(gòu)和多業(yè)務(wù)的細(xì)節(jié),新同學(xué)熟悉的時(shí)間需要 2 天左右;在實(shí)現(xiàn)過程中,由于多個(gè)業(yè)務(wù)同時(shí)進(jìn)行迭代,相互影響,質(zhì)量無法保障

只需要在自己的業(yè)務(wù) Controller 開發(fā)即可,無需關(guān)心容器的結(jié)構(gòu)以及其他業(yè)務(wù)方,極大的提高了開發(fā)和迭代效率;改動(dòng)不影響其他業(yè)務(wù)線的代碼,保障了代碼的穩(wěn)定性

  • 全量業(yè)務(wù)在業(yè)務(wù)組件中實(shí)現(xiàn)了自閉環(huán)

版本進(jìn)行了映射

版本

新方案 MR

老方案 MR

老方案占比(老 MR/(新 MR+老 MR))

1.7 - 2.0

39

19

32.8%

1.3 - 1.6

31

18

46.15%

0.9 - 1.2

25

13

34.21%

0.5 - 0.8

16

23

58.9%

0.1 - 0.4

12

19

61.2%


責(zé)任編輯:未麗燕 來源: 字節(jié)跳動(dòng)技術(shù)團(tuán)隊(duì)
相關(guān)推薦

2021-06-28 05:19:32

抖音電腦

2024-03-22 11:24:56

MySQLByteHouse

2023-12-30 13:53:58

抖音快手策略

2022-06-06 12:19:08

抖音功耗優(yōu)化Android 應(yīng)用

2019-03-07 15:04:37

抖音快手同城

2022-01-22 07:44:12

抖音PC 版電腦刷抖音

2019-06-21 09:55:10

刷抖美腿App

2020-10-27 09:33:39

抖音印度移動(dòng)應(yīng)用

2020-08-06 10:09:08

抖音木馬安全隱私

2025-07-30 09:36:47

2024-06-13 17:10:16

2020-10-12 19:06:06

微信直播快手

2022-07-20 22:55:39

直播OOM抖動(dòng)

2024-03-12 17:13:51

2024-12-25 15:42:39

視頻數(shù)據(jù)實(shí)時(shí)直播

2024-04-10 07:04:17

2022-03-18 15:04:57

APP算法算法關(guān)閉鍵

2021-10-21 10:03:09

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

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

99re成人在线| 国模吧视频一区| 欧美日韩成人在线| 在线视频精品一区| 性欧美8khd高清极品| 99riav1国产精品视频| 影音先锋日韩有码| 99热这里只有精品2| 国产粉嫩在线观看| 国产日产欧美精品一区二区三区| 成人美女av在线直播| 久久精品无码人妻| 国产精品手机在线播放| 日韩欧美亚洲另类制服综合在线| 东京热加勒比无码少妇| 二区三区四区高清视频在线观看| 92国产精品观看| 91免费在线视频| 五月婷婷六月婷婷| 亚洲欧美一区在线| 亚洲网站在线观看| 日本精品一二三区| 一区在线不卡| 日本韩国欧美国产| 欧美一区二区激情| 黄色在线播放网站| 国产亚洲一区二区三区在线观看 | 捆绑调教一区二区三区| 久久久久久久久亚洲| 亚洲一级理论片| 亚洲精品国产setv| 精品国产乱码久久| 香蕉视频999| 日韩成人影音| 色综合天天在线| 日韩xxxx视频| 日韩三级免费| 亚洲乱码国产乱码精品精的特点| 日韩午夜视频在线观看| 青青草超碰在线| 成人高清伦理免费影院在线观看| 成人h视频在线观看播放| 国产一级片免费在线观看| 日韩亚洲国产精品| 久久久久久久久久久成人| 日本a级片视频| 亚洲成人二区| 另类天堂视频在线观看| 亚洲熟女毛茸茸| 久久一区二区三区喷水| 色爱精品视频一区| 极品尤物一区二区| 日韩1区2区| 最新国产成人av网站网址麻豆| 亚洲精品午夜视频| 精品国产一区二区三区小蝌蚪 | 国产精品天天干| 精品一区欧美| 亚洲人成欧美中文字幕| 国产jk精品白丝av在线观看| 欧美男男gaytwinkfreevideos| 日韩精品视频在线免费观看| 爱爱的免费视频| 精品一区在线| 一区二区福利视频| 中国特黄一级片| 天天揉久久久久亚洲精品| 北条麻妃在线一区二区| 国产精品 欧美激情| 欧美一区激情| 国外色69视频在线观看| 国偷自拍第113页| 日本伊人午夜精品| 国产日本欧美在线观看 | 韩国精品免费视频| 91久久精品一区二区别| 高h调教冰块play男男双性文| 高清成人在线观看| 国内一区二区三区在线视频| 男人的天堂在线| 亚洲国产精品ⅴa在线观看| 亚洲午夜在线观看| 国产丝袜在线观看视频| 黑人欧美xxxx| 中文字幕66页| 91在线一区| 永久555www成人免费| 久久福利免费视频| 1024成人| 国产精品爽爽爽爽爽爽在线观看| 国产视频手机在线| 99这里都是精品| 亚洲欧美日韩国产成人综合一二三区| dy888亚洲精品一区二区三区| 午夜精品一区二区三区电影天堂 | 久久午夜无码鲁丝片| 亚洲永久免费| 5566av亚洲| 国产在线视频资源| 亚洲精品一二三区| 久久久久狠狠高潮亚洲精品| 爱情电影网av一区二区| 亚洲国内精品视频| 国产视频精品免费| 亚洲免费精品| 91久久国产精品| 日本一二三区在线视频| 亚洲人成7777| 国产精彩免费视频| 大奶在线精品| 日韩专区在线观看| 亚洲婷婷综合网| 国产很黄免费观看久久| 视频一区亚洲| 免费成人在线电影| 欧美一区二区高清| 亚洲一级片在线播放| 日韩一区二区久久| 亚洲一区国产精品| 国产日本在线视频| 精品国产福利视频| 能看毛片的网站| 久久国产影院| 国产成人精品电影| 亚洲 欧美 激情 小说 另类| 亚洲综合男人的天堂| 天天操狠狠操夜夜操| 国产精品手机在线播放| 欧美一区三区三区高中清蜜桃| 国产白浆在线观看| 国产精品成人在线观看| 欧美在线观看视频网站| 国产欧美自拍一区| 欧美日韩成人在线观看| 一区二区www| 中文字幕精品综合| 国产精品天天av精麻传媒| 免费萌白酱国产一区二区三区| 欧美成人自拍视频| 国产精品久久久久久久久毛片 | 激情小说亚洲图片| 九九九久久国产免费| 国产精品亚洲欧美在线播放| 国产欧美一区二区精品仙草咪| 久久精品国产精品亚洲色婷婷| 中文字幕一区图| 欧美国产乱视频| av中文字幕第一页| 亚洲欧美激情插| 手机看片国产精品| 欧美国产综合| 97碰碰视频| 爱看av在线| 亚洲福利视频网站| 你懂的国产视频| 337p粉嫩大胆色噜噜噜噜亚洲| 欧洲黄色一级视频| 美日韩中文字幕| 国产精品久久久久av免费| 国产系列在线观看| 欧美性色黄大片| 亚洲少妇xxx| 国产麻豆精品视频| 欧美黄色免费网址| 久久97精品| 欧美中文字幕在线播放| 免费国产在线视频| 精品视频999| 天天操天天操天天操天天操天天操| 狠狠色丁香久久婷婷综| 特级西西人体www高清大胆| 亚洲精品a区| 91av在线看| 精品影院一区| 8x8x8国产精品| 国产性70yerg老太| 91亚洲国产成人精品一区二区三| 亚洲中文字幕无码不卡电影| 日本一区二区免费高清| 91成人免费视频| 无遮挡爽大片在线观看视频 | 久久成人亚洲| 一区二区精品在线| 一区二区三区亚洲变态调教大结局| 国语对白做受69| 天堂资源在线中文| 日韩精品在线一区| 青青青国产在线| 亚洲色图丝袜美腿| 无码一区二区精品| 蜜桃一区二区三区在线观看| 性生活免费观看视频| 久久亚州av| 国产在线日韩在线| 国产伦理精品| 久久精品99国产精品酒店日本| 刘亦菲毛片一区二区三区| 91福利在线播放| 精品无码人妻一区二区三| 久久久高清一区二区三区| 亚洲高清视频免费| 久久久蜜桃一区二区人| 桥本有菜av在线| 伊人久久大香线蕉综合网站 | 亚洲欧美成人vr| 亚洲精品日产aⅴ| 婷婷综合六月| 久久久久九九九九| 1024免费在线视频| 日韩精品日韩在线观看| av网站在线观看免费| 在线视频一区二区三区| 国产精久久久久久| ...xxx性欧美| 我想看黄色大片| 91丨九色丨国产丨porny| 亚洲一二三av| 日本视频免费一区| 日韩小视频在线播放| 91精品推荐| 图片区小说区区亚洲五月| 欧美日韩精品一区二区三区在线观看| 国产在线精品成人一区二区三区| 欧美xxx性| 2020欧美日韩在线视频| 美女网站视频在线| 操91在线视频| 老司机在线视频二区| 在线观看精品国产视频| 你懂的在线观看| 亚洲国产精品一区二区久| 精品人妻一区二区三区四区不卡 | 日本sm极度另类视频| 欧美wwww| 色综合视频一区中文字幕| 成人ww免费完整版在线观看| 正在播放亚洲1区| 国产视频第一页在线观看| 精品亚洲国产视频| 西西人体44www大胆无码| 欧美不卡一区二区三区| 国产精品欧美久久久久天天影视| 欧美专区日韩专区| www.久久精品视频| 色丁香久综合在线久综合在线观看| 日韩在线观看第一页| 黄色精品在线看| 日韩精品一区二区不卡| 亚洲国产乱码最新视频| 精品少妇久久久久久888优播| 一区二区三区日韩欧美| 欧美成人精品欧美一级| 一区二区三区在线免费播放| 久久久精品视频免费观看| 亚洲三级在线免费| 日韩一区二区三区四区在线| 亚洲女厕所小便bbb| 一区二区在线观看免费视频| 亚洲精品一二三| 日本特黄特色aaa大片免费| 亚洲成人av资源| 天天干天天干天天干天天| 欧洲一区在线观看| 中文字幕一区二区三区免费看| 欧美久久久久久久久久| a级片在线视频| 欧美精品一区二区三区四区| 午夜福利视频一区二区| 亚洲色在线视频| av在线中文| 美日韩在线视频| www.综合| 国产精品美女在线观看| 激情不卡一区二区三区视频在线| 99re在线视频上| 日韩激情毛片| 一道精品一区二区三区| 欧美福利电影在线观看| 国产极品在线视频| 日韩二区三区四区| 亚洲一区二区三区四区精品| 成人高清在线视频| 99久久精品免费视频| 国产精品九色蝌蚪自拍| 久久精品国产亚洲av麻豆色欲| 色综合一区二区三区| 97精品人妻一区二区三区在线| 欧美videossexotv100| 精品视频一二区| 欧美精品午夜视频| 免费看男女www网站入口在线| 国产精品久久久久影院日本| 欧美一区一区| 日本不卡一区二区三区在线观看 | 秋霞蜜臀av久久电影网免费| 色噜噜狠狠色综合网| 欧美日韩理论| 午夜激情福利在线| 成人免费av网站| 999久久久国产| 婷婷丁香久久五月婷婷| 一级日韩一级欧美| 日韩成人av网| 麻豆tv在线| 日本中文字幕久久看| 日韩中文字幕无砖| 婷婷久久青草热一区二区 | 亚洲人成伊人成综合网小说| 日日噜噜噜噜人人爽亚洲精品| 在线成人高清不卡| 欧美偷拍视频| 久久久久中文字幕| 在线播放成人| 欧美一区1区三区3区公司 | 亚洲一区二区三区中文字幕| 中文字幕乱码中文字幕| 日韩av中文字幕在线播放| 大地资源网3页在线观看| 国产成人免费av电影| 成人香蕉社区| 51xx午夜影福利| 免费观看在线综合| 日韩在线免费观看av| 午夜私人影院久久久久| 精品国产va久久久久久久| 中文字幕亚洲在线| 欧美18av| 欧美日韩免费精品| 99热这里只有成人精品国产| 91亚洲一线产区二线产区| 中文字幕在线视频一区| 亚洲精品国产精品乱码视色| 国产视频在线观看一区二区| 白浆在线视频| 国产精品视频免费一区| 欧美日韩hd| 日韩欧美中文视频| 综合久久久久综合| 91成品人影院| 久久精品亚洲94久久精品| 深夜福利亚洲| 日本黄色播放器| 激情五月婷婷综合| 中文字幕美女视频| 欧美撒尿777hd撒尿| eeuss影院在线观看| 国产精品美乳一区二区免费| 精品国产一区一区二区三亚瑟| 成人精品视频一区二区| 国产三区在线成人av| 国产suv精品一区二区33| 亚洲欧美激情精品一区二区| 在线视频cao| 日韩福利在线| 蜜臀99久久精品久久久久久软件| 成人18视频免费69| 9191国产精品| 国产精品一品| 久久99精品久久久久子伦| 先锋影音久久久| 影音先锋制服丝袜| 欧美乱熟臀69xxxxxx| a天堂中文在线官网在线| www.成人三级视频| 99精品视频免费观看| 美女脱光内衣内裤| 欧美日韩国产综合久久| 久cao在线| 国产精品theporn88| 在线视频免费在线观看一区二区| 素人fc2av清纯18岁| 欧美色图片你懂的| 怡红院在线播放| 久久大片网站| 热久久一区二区| 草视频在线观看| 日韩福利在线播放| 日本中文字幕一区二区| 国产盗摄视频在线观看| 成人午夜精品在线| 亚洲国产成人精品女人久久| 俺去啦;欧美日韩| 风间由美一区二区av101| 日本黄色三级大片| 亚洲乱码国产乱码精品精98午夜 | 日本美女高潮视频| 亚洲精品欧美在线| 三级黄视频在线观看| 国产精品综合不卡av| 国产综合色产| 1024在线看片| 亚洲第一中文字幕| 91p九色成人| 欧美一级视频免费看| 国产精品欧美一区二区三区| 国产 欧美 自拍| 国产精品视频成人| 亚洲乱亚洲高清| 97在线观看视频免费| 亚洲男人天堂久|