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

NameNode鎖細粒度優(yōu)化在B站的實踐

大數(shù)據(jù) 數(shù)據(jù)可視化
NameNode是整個HDFS的核心組件,集中管理HDFS集群的所有元數(shù)據(jù),主要包括文件系統(tǒng)的目錄樹、數(shù)據(jù)塊集合和分布以及整個集群的拓撲結(jié)構(gòu)。

1. 背景

隨著業(yè)務的高速發(fā)展,針對HDFS元數(shù)據(jù)的訪問請求量呈指數(shù)級上升。在之前的工作中,我們已經(jīng)通過引入HDFS Federation和Router機制實現(xiàn)NameNode的平行擴容,在一定程度上滿足了元數(shù)據(jù)的擴容需求;也通過引入Observer NameNode讀寫分離架構(gòu)提升單組NameSpace的讀寫能力,在一定程度上減緩了讀寫壓力。但隨著業(yè)務場景的發(fā)展變化,NameSpace數(shù)量也在上升至30+組后,Active+Standby+Observer NameNode 的架構(gòu)已經(jīng)無法滿足所有的元數(shù)據(jù)讀寫場景,我們必須考慮提升NameNode讀寫能力,來應對不斷上升的元數(shù)據(jù)讀寫要求。

如圖1-1 所展示的B站離線存儲整體架構(gòu)所示,隨著業(yè)務的不斷增量發(fā)展,通過引入HDFS Router機制實現(xiàn)NameNode的平行擴容,目前NameSpace的數(shù)量已經(jīng)超過30+組,總存儲量EB級,每日請求訪問量超過200億次。各個NameSpace之間的讀寫請求更是分布非常不均衡,在一些特殊場景下,部分NameSpace的整體負載更高。如Flink任務的CheckPoint 場景,Spark和MR任務的log日志上傳場景,這兩類場景的數(shù)據(jù)寫入要求要遠遠高于普通場景。此外還有部分數(shù)據(jù)回刷場景,存在短時間寫入請求增加300%以上的情況,極易觸發(fā)NameNode的寫入性能瓶頸,影響其他任務的正常訪問。為了應對這個問題,我們針對性的提出了NameNode的讀寫性能提升方案。

圖1-1 B站HDFS整體架構(gòu)圖圖1-1 B站HDFS整體架構(gòu)圖

2. HDFS 細粒度鎖優(yōu)化整體方案

2.1 面臨的問題

NameNode是整個HDFS的核心組件,集中管理HDFS集群的所有元數(shù)據(jù),主要包括文件系統(tǒng)的目錄樹、數(shù)據(jù)塊集合和分布以及整個集群的拓撲結(jié)構(gòu)。HDFS在對NameNode的實現(xiàn)上做了大膽取舍,如圖2-1所示,鎖機制上使用全局鎖來統(tǒng)一來控制并發(fā)讀寫。這樣處理的優(yōu)勢非常明顯,全局鎖進一步簡化鎖模型,不需要額外考慮鎖依賴關(guān)系,同時降低復雜度,減少工程量。但是問題比優(yōu)勢更加突出,核心問題就是全局唯一鎖制約性能提升。

圖2-1 B站HDFS整體架構(gòu)圖圖片

在多年的HDFS實踐工作中,我們發(fā)現(xiàn)NameNode全局唯一的讀寫鎖已經(jīng)成為NameNode讀寫性能最大瓶頸之一,社區(qū)已經(jīng)做了很多的工作來優(yōu)化相關(guān)性能,如將一些日志操作異步化,移動日志操作到鎖外,針對DU請求采用分段鎖,大刪除異步化等一系列優(yōu)化措施,但對于我們這種數(shù)據(jù)量的HDFS集群來說,仍然難以滿足部分生產(chǎn)場景。為了進一步提升HDFS讀寫性能,滿足業(yè)務場景,我們計劃對全局鎖進行細粒度拆分,為此我們也面臨著許多困難。

首先是問題復雜度高,Hadoop發(fā)展到今天已經(jīng)超過十年,其中HDFS經(jīng)過多次迭代演進,架構(gòu)已經(jīng)非常復雜。針對NameNode組件來說,架構(gòu)上模塊劃分不夠清晰,內(nèi)部核心數(shù)據(jù)結(jié)構(gòu)和工作線程之間耦合非常嚴重,實現(xiàn)細節(jié)上,還存在大量相互依賴,不一而足。

其次是社區(qū)的動力不足,在全局唯一的讀寫鎖的擴展性問題上,社區(qū)做過多次嘗試,主要就有 HDFS-8966:Separate the lock used in namespace and block management layer 和 HDFS-5453:Support fine grain locking in FSNamesystem 等方面的嘗試,但是并沒有產(chǎn)出可以進行生產(chǎn)化部署的成果。具體原因還是動力不足,因為NameNode性能針對小規(guī)模部署的集群來說大體上已經(jīng)足夠,也有通過Federation和Router機制進行擴展,滿足一定的需求。

為了解決這個難題,我們參考了業(yè)界的拆鎖方案和Alluxio的LockPool實現(xiàn)機制,計劃實現(xiàn)針對NameNode全局唯一鎖的細粒度拆分。

2.2 設計選型

為了更好地理解使用全局鎖存在的問題,首先梳理全局鎖管理的主要數(shù)據(jù)結(jié)構(gòu),大致分成三類:

  • NameSpace目錄樹:文件系統(tǒng)的全局目錄視圖。獲取目錄樹上任一節(jié)點的信息必須先拿到全局讀鎖;目錄樹上任一節(jié)點新增、刪除、修改都必須先拿到全局寫鎖。
  • BlockPool層數(shù)據(jù)塊集合:文件系統(tǒng)的全量數(shù)據(jù)信息。獲取其中任一數(shù)據(jù)塊信息必須先拿到全局讀鎖;新增、刪除,修改都必須先拿到全局寫鎖。
  • 集群信息:HDFS集群節(jié)點信息的集合。獲取節(jié)點信息等必須先拿到全局讀鎖;注冊,下線或者變更節(jié)點信息請求處理時必須先拿到全局寫鎖。

具體實現(xiàn)上,NameNode使用了JDK提供的可重入讀寫鎖(ReentrantReadWriteLock),ReentrantReadWriteLock對并行請求有嚴格限制,支持讀請求并行處理,寫請求具有排他性。針對不同RPC請求的處理邏輯,按照需要獲取鎖粒度,我們可以把所有請求抽象為全局讀鎖和全局寫鎖兩類。全局讀鎖包括客戶端請求(getListing/getBlockLocations/getFileInfo)、服務管理接口(monitorHealth/getServiceStatus)等;全局寫鎖則包括客戶端寫請求(create/mkdir/rename/append/truncate/complete/recoverLease)、服務管理接口(transitionToActive/transitionToStandby/setSafeMode)和主從節(jié)點之間請求(rollEditLog)等。在一次RPC處理過程中,如果不能及時獲取到鎖,這次RPC將處于排隊等待狀態(tài),直到成功獲得鎖,鎖等待時間直接影響請求響應性能,極端場景下如果長時間不能獲得鎖,將造成IPC隊列堆積,TCP連接隊列被打滿,客戶端出現(xiàn)請求卡住,新建連接超時失敗等各種異常問題。從全局來看,寫鎖因為排它對性能影響更加明顯。如果當前有寫請求正在被處理,其他所有請求都必須排隊等待,直到寫請求被處理完成釋放鎖后再競爭全局鎖。因此我們希望對全局鎖進行細粒度劃分,最終實現(xiàn)NameNode服務的大部分的RPC請求都能并行處理。

我們計劃通過3步實現(xiàn) NameNode 鎖的細粒度劃分,如圖2-2所示。

第一步,將NameNode 全局鎖拆分為 Namespace層讀寫鎖和 BlockPool層讀寫鎖;

第二部,將NameSpace讀寫鎖拆成顆粒度更細的Inode層的讀寫鎖;

第三步,將BlockPool層讀寫鎖也拆成更細粒度的讀寫鎖;

目前我們已經(jīng)基本完成第一部分和第二部分的工作。

圖2-2 NameNode 鎖優(yōu)化過程圖2-2 NameNode 鎖優(yōu)化過程


3. HDFS 細粒度鎖優(yōu)化實現(xiàn)

3.1 NameNode全局唯一鎖拆成

NameSpace層鎖和BlockPool層鎖

在實踐中發(fā)現(xiàn),客戶端請求訪問NameNode過程中,部分請求需要同時訪Namespace層和BlockPool層,有些請求只需要訪問 Namespace層,同時服務端請求如DataNode的IBR/BlockReport等請求實際上也只需要訪問 BlockPool層,這兩層的鎖調(diào)用可以拆分,實現(xiàn)對兩層數(shù)據(jù)的并行訪問。因此拆鎖的第一步, 就是將NameNode 全局鎖拆分為 Namespace層讀寫鎖和 BlockPool層讀寫鎖,如圖2-3所示,通過這種拆分實現(xiàn)訪問的這兩層數(shù)據(jù)的RPC請求能夠并?處理。在實踐過程中,我們引入了BlockManagerLock,單獨處理BlockPool層鎖事件。

圖2-3 NameNode全局唯一鎖拆成NameSpace層鎖和BlockPool層鎖圖2-3 NameNode全局唯一鎖拆成NameSpace層鎖和BlockPool層鎖

在實際的拆鎖過程中,我們發(fā)現(xiàn)NameSpace層和BlockPool層之間有非常多的耦合,這里我們參考了社區(qū)的一部分工作HDFS-8966:Separate the lock used in namespace and block management layer, 已經(jīng)幫助我們解除了部分的依賴,除了社區(qū)列出來的這部分依賴之外我們還發(fā)現(xiàn)一些BlockPool層對NameSpace層的反相依賴,主要是Block的副本信息和storagePolicy屬性信息,這塊我們將這部分信息在BlockPool層進行冗余存儲,同時確保發(fā)生變更時NameSpace層的信息及時同步至BlockPool層。在解除了BlockPool層對NameSpace層的反相依賴后,開始針對不同類型的請求獲取何種類型的鎖進行區(qū)分,如圖2-4所示。

  • NameSpace層請求(getListing/getFileInfo等請求),只需要獲取NameSpace層鎖;
  • BlockPool層請求(BlockReport/IncrementalBlockReport等請求),只需要獲取BlockPool層鎖,這塊我們發(fā)現(xiàn)有塊上報過程中,有一段更新Quota的邏輯需要獲取NameSpace層鎖,我們無法做到完美的適配,考慮到我們的Quota采用的外置計算的方式,所以做了相應的取舍,只獲取了BlockPool層的鎖;
  • 同時訪問NameSpace層和BlockPool層的請求(setReplication/getBlockLocation),需要同時獲取NameSpace層的鎖和BlockPool層的鎖。

通過對不同請求按不同類型鎖要求劃分后,我們基本可以做到訪問部分不同層數(shù)據(jù)的請求的并行執(zhí)行,但仍然有2個問題需要解決。首先是死鎖問題,為此我們確保所有請求的加鎖順序的一致性,所有需要同時獲取NameSpace層鎖和BlockPool層的請求都是NameSpace層鎖在前,BlockPool層的鎖在后;其次是一致性問題,NameNode內(nèi)部本身是寫一致性,并發(fā)讀取場景,針對同時訪問NameSpace層和BlockPool層的請求,需要確保NameSpace層加鎖范圍完全包含BlockPool層加鎖范圍,防止讀取到中間狀態(tài)。

圖2-4 不同類型的請求加鎖場景圖2-4 不同類型的請求加鎖場景

通過上述這種方式,我們基本實現(xiàn)了BlockPool層和NameSpace層的鎖拆分,當前這部分優(yōu)化策略已經(jīng)在生產(chǎn)環(huán)境運行了一段時間,NameNode整體性能大約提升了50%左右。

3.2 NameSpace層鎖拆分成INode粒度鎖

在實現(xiàn)了FSN層和BP層鎖拆分之后,NameNode性能已經(jīng)有了一定的提升,生產(chǎn)環(huán)境中對HDFS的NameNode元數(shù)據(jù)請求的rpc processtime和queuetime也有明顯的下降,但仍然有一些場景無法滿足,因此我們繼續(xù)優(yōu)化,對NameSpace層的鎖進行更細粒度的拆分如圖2-5所示,將鎖細粒度到INode層,希望能進一步提升NameSpace層RPC并發(fā)能力,提升NameNode整體寫入能力。

圖2-5 NameSpace層鎖細粒度拆分圖2-5 NameSpace層鎖細粒度拆分

要將NameSpace層鎖拆分到INode層級粒度,必然要為對應的INode分配鎖對象,在這里我們面臨了許多問題。

首先是內(nèi)存限制,我們目前單組Namespace元數(shù)據(jù)容量閾值基本在10億左右,如果每個INode分配一個INode鎖,單是INode鎖的內(nèi)存幾乎就需要120GB左右的內(nèi)存,再加上本身NameNode就非常耗費內(nèi)存,當前的服務器類型很難滿足。為了解決這個問題,我們參考了 Alluxio 的LockPool 的概念,也就是有一個鎖資源池,每個INode需要Lock加鎖的時候,就去資源池里申請鎖,同時引用計數(shù)會增加,用完之后unlock掉的時候,引用計數(shù)會減少,同時配置不同的高低水位,定期清理掉引用計數(shù)為0的鎖,確保總體內(nèi)存可控。

其次是鎖對象的管理,這方面我們引入了INodeLockManager 用于管理INode和鎖對象的之間的映射,我們通過INodeLockManager新增了INode鎖的LockPool 和 Edge鎖的LockPool,如圖2-6所示,管理整個NameSpace層的INode層級的細粒度鎖。

圖2-6 NameSpace層的INode層級的細粒度鎖管理圖2-6 NameSpace層的INode層級的細粒度鎖管理

完成了鎖對象的管理后,Namespace層鎖細粒度拆分剩下的問題都是如何預防死鎖和數(shù)據(jù)錯亂,因此我們對加鎖行為進行規(guī)劃,總體遵循如下原則。

  • 普通Client端的RPC請求采用自上而下的加鎖方式,對特殊操作如Rename等操作進行特殊處理;
  • Client端的RPC請求進行全鏈路加鎖,部分請求考慮最后的INode和Edge加寫鎖;

如圖2-7所示,我們配置了3種類型的鎖,分別時Read鎖,Write_Inode 鎖和 WRITE_EDGE鎖分別應對不同類型的客戶端RPC請求。針對讀請求,我們正向遍歷INodeTree從ROOT節(jié)點開始依次加鎖 對對整個路徑上的INode和Edge都加讀鎖;針對addBlock ,setReplication 這類不影響INodeTree的請求,我們也是正向遍歷INodeTree從ROOT節(jié)點開始依次加讀鎖,但是對最后一個INode加寫鎖;針對create ,mkdir請求,我們正向遍歷INodeTree ,對最后INode節(jié)點和最后的Edge都加寫鎖,如果最后INode不存在,對最后的Edge也需要加寫鎖。

圖2-7 INodeLock 加鎖方式圖2-7 INodeLock 加鎖方式

除了訪問單個路徑的請求,還有rename等訪問多個路徑的rpc請求,如圖2-8所示,從 /a/b/c rename 成 /a/b/e,我們對這種場景做了特殊處理。我們首先路徑/a/b/c和/a/b/e按字典序確定先后,再自上而下加鎖,如圖2-8所示,路徑/a/b/c排序在前,我們先對/a/b/c 路徑加鎖,正向遍歷INodeTree從ROOT節(jié)點開始依次加鎖,邊b-c,INode c都加上寫鎖,路徑/a/b/e排序在后,我們在對路徑/a/b/c加鎖完成后,對路徑/a/b/e加鎖,同樣遍歷INodeTree,Edge b→e加上寫鎖,INode e 由于還未存在,則放棄加鎖;

圖2-8 Rename RPC操作加鎖方式圖2-8 Rename RPC操作加鎖方式

在上述的工作中,我們完成了不同請求的加鎖方式,針對部份加鎖場景中存在的INode缺失場景(如文件不存在等場景),如下圖2-9所示針對相對典型的是create請求列舉了不同RPC類型的加鎖邏輯。

  • create 路徑/a/b/c文件,如果當前已經(jīng)存在存在/a/b 路徑,則最終會在Edge b->c 加寫鎖;
  • create 路徑/a/b/c文件,如果已經(jīng)存在/a/b/c路徑,則最終會在Edge b→c 和INode c上加寫鎖;
  • create 路徑/a/b/c文件,如果只存在 /a 路徑,則會在Edge a->b 這條邊上加上寫鎖。

圖 2-9 不同RPC類型的加鎖邏輯舉例圖 2-9 不同RPC類型的加鎖邏輯舉例

通過實現(xiàn)上述2步拆鎖過程,NameNode性能已經(jīng)有了很大提升,如圖2-10展示了我們在測試環(huán)境中的性能對比,經(jīng)過Namespace層讀寫鎖和BlockPool層讀寫鎖拆分后,相比于社區(qū)版本,單NameSpace的寫性能大約提升了50% ,經(jīng)過Namespace層細粒度鎖拆分后,寫性能相比于社區(qū)版本有3倍左右的提升,此時NameNode性能瓶頸已經(jīng)集中在Edits和審計日志同步以及BlockPool層的本身的鎖競爭上。在實際生產(chǎn)過程中,我們把之前需要2組NameSpace支持的任務日志采集路徑收歸為一組NamesSpace支持,在寫入QPS上升3倍的場景下,整體rpc queue time 下降了90%,整體性能有很大的提升。

圖2-10 鎖優(yōu)化性能對比圖2-10 鎖優(yōu)化性能對比

四. 總結(jié)與展望

NameNode的性能優(yōu)化已經(jīng)告一段落了,第一步和第二部的拆鎖已經(jīng)在我們的生產(chǎn)集群上穩(wěn)定運行了一段時間,整體性能提升明顯,整體RPC Queue Time相比于拆鎖之前有數(shù)量級的下降,當前已經(jīng)可以支持絕大多數(shù)應用場景,包括之前的描述的任務日志聚合和Flink CheckPoint 路徑等場景,在接下來計劃中,我們也正在考慮是否將BlockPool層鎖做進一步細粒度拆分,進一步提升NameNode的性能。

同時考慮到NameNode元數(shù)據(jù)都存儲在內(nèi)存中,限制了NameNode元數(shù)據(jù)總量的擴展,特別是小文件場景,我們也將在未來規(guī)劃引入Ozone或者將NameNode的元數(shù)據(jù)信息持久化至RocksDB或者KV中,進一步提升單組Namespace的承載量徹底解決小文件問題。

責任編輯:武曉燕 來源: 嗶哩嗶哩技術(shù)
相關(guān)推薦

2024-06-27 08:00:00

存儲數(shù)據(jù)庫細粒度

2010-04-19 09:35:58

Oracle細粒度

2009-04-16 17:59:25

細粒度權(quán)限

2010-04-14 11:04:53

Oracle細粒度

2025-09-01 08:10:09

細粒度圖像分類細粒度視覺分類FGVC

2009-10-27 09:31:24

Windows Ser口令策略

2010-04-16 16:39:25

Oracle細粒度

2010-04-22 13:39:31

Oracle細粒度訪問

2018-02-25 04:05:16

2018-08-23 09:10:01

數(shù)據(jù)庫MySQLInnoDB

2010-12-30 14:34:43

云計算供應商

2018-02-07 14:53:42

2018-08-27 07:29:34

InnoDBinsertselect

2019-10-29 16:10:55

死鎖Java并發(fā)

2010-10-20 15:09:05

2024-08-13 12:54:20

2022-06-27 17:58:42

pwrueBPF工具

2023-02-28 12:12:21

語音識別技術(shù)解碼器

2025-02-18 09:10:00

點贊
收藏

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

猛男gaygay欧美视频| av在线播放观看| 日韩黄色一级片| 久久精品视频99| 国产大学生视频| 欧美freesex| 综合欧美亚洲日本| 国产一级二级三级精品| 国语对白做受69按摩| 亚洲精品二区三区| 日韩精品中文字幕久久臀| 一区二区三区视频在线观看免费| av片在线观看网站| 久久色中文字幕| 97人人模人人爽视频一区二区| 精品美女久久久久| 亚洲国产一区二区三区在线播放| 日韩av网站电影| 视频免费1区二区三区| 黄视频网站在线观看| 综合色中文字幕| 日本在线免费观看一区| 亚洲精品无遮挡| 裸体一区二区三区| 热草久综合在线| 免费毛片在线播放免费 | 欧美熟乱第一页| 国产一二三在线视频| 日本中文字幕视频在线| 91丝袜呻吟高潮美腿白嫩在线观看| 成人av资源在线播放| 丰满少妇xoxoxo视频| 国产精品www994| 最近2019中文字幕在线高清| 白丝女仆被免费网站| 91蜜桃臀久久一区二区| 7777精品伊人久久久大香线蕉的| 青青青国产在线视频| 国产福利电影在线播放| 亚洲精品国产无天堂网2021| 伊人久久av导航| 国产黄色片在线观看| 99re免费视频精品全部| 国产高清在线精品一区二区三区| 国产色在线视频| 久久精品国产第一区二区三区| 国产v综合v亚洲欧美久久| 91精品国产乱码在线观看| 欧美黄色大片网站| 久久久国产精品免费| 91麻豆制片厂| 日本久久精品| 综合网日日天干夜夜久久| 色哟哟精品观看| 精品中文一区| 在线看福利67194| www..com.cn蕾丝视频在线观看免费版| 欧美1区二区| 日韩av网站电影| 中文字幕国产专区| 九九在线高清精品视频| 亚洲片在线资源| 欧美成人国产精品一区二区| 国产成人一区二区三区影院| 国产亚洲精品久久久久动| 精品欧美一区二区久久久| 成人系列视频| 色999日韩欧美国产| 小泽玛利亚一区| 亚洲一本二本| 久久久久久亚洲精品中文字幕| 精品深夜av无码一区二区老年| 精品999成人| 午夜精品一区二区三区在线| 国产视频1区2区| 日本欧美在线观看| 亚洲精品免费av| 日本黄色不卡视频| 久久久久久9999| 伊甸园精品99久久久久久| 曰本三级在线| 欧美午夜片在线免费观看| 国产成人精品无码播放| 婷婷丁香久久| 亚洲高清久久久久久| 美女100%无挡| 香蕉av一区二区| 韩国精品久久久999| 激情网站在线观看| 国产一区二区三区在线看麻豆| 福利视频一区二区三区| 黄色视屏网站在线免费观看| ㊣最新国产の精品bt伙计久久| 日本一道在线观看| 老司机成人影院| 在线播放日韩导航| 精品无码人妻一区| 亚洲成人精品| 日韩免费在线视频| 丰满人妻熟女aⅴ一区| 久久久www成人免费毛片麻豆 | 日韩av手机在线播放| 欧美三级三级| 久久免费视频在线观看| 中文字幕一二三四| gogogo免费视频观看亚洲一| 亚欧精品在线| 久久青草伊人| 欧美精品九九99久久| 一二三不卡视频| 国内精品亚洲| 成人激情视频在线| 男女污污视频在线观看| 亚洲一区在线电影| 15—17女人毛片| 亚洲v天堂v手机在线| 久久777国产线看观看精品| 无码人妻丰满熟妇精品区| 国产成人av电影免费在线观看| 日韩精品欧美专区| rebdb初裸写真在线观看| 4438x成人网最大色成网站| 尤物视频最新网址| 亚洲精选在线| 4444kk亚洲人成电影在线| 成全电影播放在线观看国语| 香蕉av福利精品导航| 黑人巨大猛交丰满少妇| 91亚洲自偷观看高清| 欧洲成人免费视频| 日韩精品系列| 黄色一区二区在线| 亚洲一区和二区| 欧美婷婷在线| 亚洲已满18点击进入在线看片| av网页在线| 一本色道久久加勒比精品| 无码人妻一区二区三区在线| 欧美黄色精品| 99一区二区| 怡红院av在线| 欧美刺激午夜性久久久久久久| 日本中文在线视频| 国内成+人亚洲+欧美+综合在线| 日韩亚洲欧美精品| ww久久综合久中文字幕| 在线播放国产精品| 在线视频播放大全| 国产精品福利一区二区三区| www.涩涩涩| 97欧美在线视频| 成人免费视频网址| 国产黄色在线免费观看| 日韩无一区二区| 欧美成人黄色网| 成人一区二区在线观看| 妺妺窝人体色777777| 青青操综合网| 国产成人一区二区三区小说| 国产黄在线观看| 欧美男生操女生| 免费一级片在线观看| 成人va在线观看| 逼特逼视频在线| 欧美精品羞羞答答| 国产日韩精品电影| 日韩免费影院| 日韩电影大片中文字幕| 中文字幕精品无| 国产精品成人午夜| 欧洲成人午夜精品无码区久久| 亚洲精品影视| 日韩精品一区二区三区色偷偷| 国产一区二区色噜噜| 欧美精品做受xxx性少妇| 亚洲乱熟女一区二区| 欧美日韩免费在线| 日韩不卡av在线| 国产精品一区二区视频| 男女超爽视频免费播放| 欧美日韩伦理| 超碰在线97av| 日韩精品影院| 欧美成aaa人片免费看| 天堂在线观看视频| 欧美日韩一区二区在线视频| 久久99久久98精品免观看软件 | 亚洲综合色一区| 久久99这里只有精品| 精品少妇人欧美激情在线观看| 亚州综合一区| 成人精品一区二区三区电影黑人| sm性调教片在线观看| 一区二区欧美亚洲| 国产成人无码www免费视频播放| 91国偷自产一区二区三区观看 | 男生女生差差差的视频在线观看| 欧美三级韩国三级日本三斤| 久久亚洲AV无码| 中文无字幕一区二区三区 | 国产成人麻豆免费观看| 樱桃国产成人精品视频| 三年中国中文观看免费播放| 国产精品一区二区三区99| 91黄色小网站| 综合天堂久久久久久久| 日韩动漫在线观看| 高清精品视频| 91免费视频网站| 亚洲成人一区在线观看| 久久久亚洲国产| 美女免费久久| 亚洲欧洲成视频免费观看| 亚洲国产精品久久久久久久| 精品视频123区在线观看| 免费看日韩毛片| 一级精品视频在线观看宜春院| 永久免费毛片在线观看| 久久中文字幕电影| 四虎成人免费视频| 国产自产视频一区二区三区| www.日日操| 国产欧美丝祙| 国产成人永久免费视频| 国产精品二区不卡| 色狠狠久久av五月综合| 四虎5151久久欧美毛片| 国产精品一区二区在线观看| 久久三级中文| 91色精品视频在线| 午夜不卡一区| 国产精品一区二区三区在线播放| 午夜精品成人av| 4k岛国日韩精品**专区| 91在线超碰| 久久免费视频这里只有精品| 好吊日av在线| 欧美激情精品久久久久久免费印度| 国产在线高清视频| xvideos亚洲人网站| 国产成人天天5g影院在线观看| 亚洲免费一级电影| 日本中文字幕电影在线观看| 日韩电影大全免费观看2023年上| 欧美一级视频免费| 亚洲国产精品人人爽夜夜爽| 隣の若妻さん波多野结衣| 日韩欧美国产综合在线一区二区三区 | 亚州av乱码久久精品蜜桃| 性欧美大战久久久久久久免费观看 | 成人精品一二三区| 国产精品成人午夜| 爱爱视频免费在线观看| 亚洲美女视频在线观看| 久久99久久久| 亚洲va在线va天堂| 精品人妻一区二区三区免费看| 日韩欧美福利视频| 欧美男人天堂网| 欧美男人的天堂一二区| 97人妻精品一区二区三区视频| 欧美精选一区二区| 午夜精品久久久久久久96蜜桃| 精品久久一区二区三区| 亚欧在线观看视频| 亚洲人成网站免费播放| 三区四区电影在线观看| 美日韩在线视频| 91视频欧美| 国产成人a亚洲精品| 久久不卡日韩美女| 99高清视频有精品视频| 欧美精品中文字幕亚洲专区| 欧美日本国产精品| 婷婷综合激情| 国产精品裸体瑜伽视频| 三级在线观看一区二区| 欧美又黄又嫩大片a级| 岛国av在线一区| 亚洲熟妇一区二区三区| 国产精品每日更新| 久久久久99精品| 在线观看日韩精品| 精品人妻午夜一区二区三区四区| 日韩精品极品在线观看| 日本a级在线| 97精品视频在线播放| 成人国产精品入口免费视频| 91精品国产综合久久久久久丝袜| 欧美天堂社区| 在线播放 亚洲| 国产亚洲亚洲| www激情五月| 91蜜桃婷婷狠狠久久综合9色| 天堂网av2018| 婷婷开心激情综合| 国产又黄又爽视频| 国产视频精品va久久久久久| 欧美被日视频| 国产999精品久久久| 欧美二区观看| 亚洲午夜精品国产| 国产亚洲福利| 69久久精品无码一区二区| 99精品国产热久久91蜜凸| 成年人视频软件| 狠狠躁夜夜躁人人躁婷婷91 | 免费一二一二在线视频| 成人亚洲激情网| 欧美**vk| 国产av天堂无码一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 黄色片视频免费观看| 一区二区三区毛片| 亚洲永久精品视频| 国产亚洲精品激情久久| 国产美女精品写真福利视频| 97久久精品午夜一区二区| 久久久影院免费| 国产成人久久777777| 成人动漫中文字幕| 黄色一级视频免费| 91精品国产综合久久精品| 美州a亚洲一视本频v色道| 久久久久亚洲精品成人网小说| 91成人在线网站| 亚洲无玛一区| 久久精品国内一区二区三区 | 亚洲天天做日日做天天谢日日欢| 国产亚洲欧美在线精品| 亚洲精品xxx| 国产亚洲成av人片在线观看 | 91国产视频在线播放| www.久久东京| 国产黄色激情视频| 国产成人aaa| 欧美日韩国产精品综合| 日韩午夜激情免费电影| 性欧美ⅴideo另类hd| 亚洲自拍偷拍第一页| 欧美激情 亚洲a∨综合| 超碰91在线播放| 一区二区三区美女| 亚洲欧美强伦一区二区| 国内精品一区二区三区四区| 哺乳挤奶一区二区三区免费看| 毛片在线视频观看| 粉嫩av一区二区三区在线播放| 国产波霸爆乳一区二区| 91精品国产色综合久久不卡电影| 欧美成年黄网站色视频| 亚洲自拍欧美色图| 国产精品久久| 久久久久国产精品无码免费看| 天天综合色天天综合色h| 天天摸天天干天天操| 2019国产精品自在线拍国产不卡| 日韩a级大片| 91在线视频观看免费| 日本一区二区三区在线不卡| 亚洲一线在线观看| 久久精品影视伊人网| 1204国产成人精品视频| 欧美日韩成人免费视频| 国产视频911| 一级片视频免费| 九九热这里只有精品免费看| 麻豆一区二区麻豆免费观看| www一区二区www免费| 国产欧美日韩另类一区| 国产伦精品一区二区三区视频痴汉| 久久艹在线视频| 成功精品影院| 欧美丰满熟妇xxxxx| 亚洲男人的天堂一区二区| 欧美一级视频免费| 国产成人精品综合久久久| 国产精品久久久久久久| 国产精品一区二区无码对白| 欧美性猛交xxxx免费看| 香蕉视频在线看| www日韩av| 青娱乐精品视频| 久久久国产成人| 亚洲欧美精品一区| 在线播放成人| 免费 成 人 黄 色| 中文字幕一区二区5566日韩| 亚洲老妇色熟女老太| 日本成人在线视频网址| 女主播福利一区| 天天躁日日躁aaaa视频| 日韩欧美国产高清| 搜成人激情视频| www.国产在线播放| 国产精品免费免费| 五月婷婷六月丁香| 91久久久久久久久久久久久| 亚洲综合精品四区| 久草综合在线视频|