精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产精品视屏| 久久大胆人体| 久久国产精品第一页| 精品国产一区av| 91av免费观看| 一区二区三区短视频| 国产精品久久久久永久免费观看 | 青娱乐91视频| 日韩精品免费一区二区三区竹菊| 欧美性受xxxx黑人xyx| 国产人妻人伦精品| 久久久久久久影视| 国产精品一二一区| 国产va免费精品高清在线观看| 亚洲精品视频网址| 国产福利资源一区| 欧美日韩一区小说| www..com日韩| 日本视频在线免费观看| 成人午夜电影小说| 国产精品视频地址| 成人免费看片98欧美| 久久福利影院| 亚洲欧美日韩区| 无码人妻一区二区三区在线视频| 日韩电影av| 亚洲最大色网站| 亚洲啪啪av| 欧美黄色小说| 成人精品国产一区二区4080| 国产日韩精品综合网站| 天堂免费在线视频| 99精品免费| 欧美富婆性猛交| 成人无码精品1区2区3区免费看| 欧美国产极品| 精品国产一区二区三区不卡| 加勒比av中文字幕| 伊人久久高清| 91成人国产精品| 欧美日韩在线视频一区二区三区| wwww亚洲| 亚洲一区在线视频| 亚洲精品天堂成人片av在线播放 | 久久精品亚洲精品国产欧美| 成人国产一区二区| 国产av一区二区三区| 日本不卡视频在线| 国产精品久久久久久久久久久新郎| 日本一级一片免费视频| 国产精品mv在线观看| 欧美大胆在线视频| 黄色一级片在线| 欧美国产精品| 九九视频这里只有精品| 欧美第一页在线观看| 天天影视欧美综合在线观看| 在线免费观看羞羞视频一区二区| 亚洲图片另类小说| 精品日本12videosex| 在线观看国产成人av片| 四虎影视一区二区| 在线免费观看日本欧美爱情大片| 精品久久久av| 青娱乐国产在线视频| 狠狠88综合久久久久综合网| 97欧美精品一区二区三区| av中文在线播放| 首页亚洲欧美制服丝腿| 国产精品日韩在线一区| 一区二区美女视频| 国产精品一二三区| 国产一区二区在线网站| 久青草国产在线| 国产精品美女www爽爽爽| 一区二区三区三区在线| 污视频在线免费观看网站| 亚洲成a天堂v人片| 黄色一级视频片| 日韩欧美精品电影| 欧美一区二区视频观看视频| 欧美做受高潮中文字幕| 九九综合在线| 久久精品视频99| 日韩黄色在线视频| 日本v片在线高清不卡在线观看| 成人黄色大片在线免费观看| 国产91麻豆视频| 久久久精品日韩欧美| 一区二区三区av在线| 久草在线视频网站| 色悠悠久久综合| 成人高清在线观看视频| 台湾色综合娱乐中文网| 精品国产一区二区三区久久| 久久久久99精品成人片毛片| 日韩精品国产欧美| 99久久精品免费看国产四区 | 国产一线二线三线女| 二吊插入一穴一区二区| 538任你躁精品视频网免费| 日本高清成人免费播放| 91久久国产精品91久久性色| 黑人精品一区二区| 国产精品毛片久久久久久| 精品久久久久久无码中文野结衣| 黄色亚洲网站| 日韩欧美中文一区二区| 亚洲一区二区三区日韩| 亚洲视频精品| 成人激情视频小说免费下载| 四虎影院在线域名免费观看| 亚洲欧美激情在线| 久草福利视频在线| 色婷婷综合久久久久久| 欧美成人一二三| 中文字幕一区二区三区四区免费看 | 蜜桃传媒一区二区三区| 亚洲美女色播| 亚洲性视频网站| 国产主播在线观看| 国产一区二区三区免费在线观看 | 久久综合国产| 国产91在线播放| 日韩一级片免费观看| 亚洲日本青草视频在线怡红院| 精品久久久久久无码国产| 欧美一级三级| 国内精品小视频| 成人av一区二区三区在线观看| 国产精品美女久久久久久久久久久 | 444亚洲人体| 91美女视频在线| 色婷婷香蕉在线一区二区| 星空大象在线观看免费播放| 欧美破处大片在线视频| 成人激情综合网| 国产人成在线观看| 色综合色狠狠综合色| 艳妇乳肉亭妇荡乳av| 欧美日本国产| 91丝袜脚交足在线播放| huan性巨大欧美| 欧美高清视频不卡网| 欧美性猛交xxxx乱大交少妇| 日韩av网站免费在线| 欧美一区二区福利| 成人软件在线观看| 在线观看不卡av| 伊人久久一区二区| 中文字幕在线不卡国产视频| 亚洲成人天堂网| 成人免费av| 国产精品一区二区久久久久| 99riav在线| 制服丝袜激情欧洲亚洲| 91高清免费看| 国产成人在线免费| 国产资源在线免费观看| 久久免费视频66| 9.1国产丝袜在线观看| 亚洲色图欧美视频| 色婷婷国产精品综合在线观看| 精品无码国产污污污免费网站| 美女91精品| 亚洲一区3d动漫同人无遮挡 | 成人福利网站| 精品国产乱码久久久久久浪潮| 国产乱码久久久久久| 97se亚洲国产综合在线| 日韩精品无码一区二区三区免费| 日韩欧美网址| av在线不卡一区| 在线观看网站免费入口在线观看国内 | 亚洲伦理在线观看| 日本伦理一区二区三区| 国产精品系列在线播放| 国产精品又粗又长| 久久综合影院| 92国产精品久久久久首页 | 三级无遮挡在线观看| 欧美制服丝袜第一页| 国产97免费视频| 99热精品国产| 日日干夜夜操s8| 好吊日精品视频| 欧美一区二区高清在线观看| 成人自拍视频| 97精品国产97久久久久久| 国产女主播在线写真| 91精品综合久久久久久| 国产又大又黄视频| 亚洲欧洲精品一区二区三区不卡| 久草免费资源站| 蜜臀av一区二区三区| 大西瓜av在线| 久久人人88| 狠狠色狠狠色综合人人| 日韩成人在线电影| 97视频人免费观看| 国产福利在线播放麻豆| 亚洲免费电影在线观看| 国内精品久久久久久久久久久| 岛国精品视频在线播放| www日韩在线| 国产午夜精品在线观看| 一二三区视频在线观看| 免费观看久久久4p| 可以在线看的av网站| 91亚洲国产| 欧日韩一区二区三区| 91午夜精品| 国产精品精品视频一区二区三区| 久久国产精品黑丝| 美日韩丰满少妇在线观看| 成人午夜电影在线观看| 日韩电影中文 亚洲精品乱码| 国产麻豆一精品一男同| 在线观看区一区二| 久草手机在线观看| 亚洲.国产.中文慕字在线| 五月天色婷婷丁香| 中文一区二区在线观看| 免费在线观看成年人视频| 成人激情免费网站| 一级做a爱视频| 另类调教123区| 久久精品视频91| 一区福利视频| 亚洲精品少妇一区二区| 91tv精品福利国产在线观看| 亚洲一卡二卡三卡四卡无卡网站在线看| 妖精视频一区二区三区免费观看| 国产精品免费一区二区三区在线观看| 玖玖精品在线| 国产精品嫩草影院一区二区| **在线精品| 欧美一区第一页| 男人天堂视频在线观看| 韩国欧美亚洲国产| 国产99re66在线视频| 久久久久久久久久久成人| 性欧美高清come| 欧美wwwxxxx| 三级网站视频在在线播放| 久久视频在线直播| a免费在线观看| 欧美另类xxx| 日本资源在线| 国内精品模特av私拍在线观看| 国产色播av在线| 69久久夜色精品国产7777| 欧亚av在线| 欧美亚洲一区在线| 欧美xxxxxx| 国产精品一区二区三区毛片淫片 | 成人在线视频电影| 99re8这里有精品热视频免费| 翡翠波斯猫1977年美国| 欧洲vs亚洲vs国产| 日本视频精品一区| 色综合咪咪久久网| 欧美日韩dvd| 一区久久精品| 99免费视频观看| 蜜臀久久久99精品久久久久久| 亚洲欧美手机在线| 国产成人激情av| 黄色短视频在线观看| 欧美经典一区二区三区| 综合五月激情网| 亚洲精品中文在线| 国产成人自拍视频在线| 欧美性色xo影院| 一级做a爱片久久毛片| 日韩欧美在线观看一区二区三区| 可以免费观看的毛片| 亚洲网址你懂得| av在线app| 欧美一级大片在线观看| 人人精品久久| 国产精品区二区三区日本| 久久99视频| 久久av喷吹av高潮av| 一本色道久久综合亚洲精品不| 一本久道综合色婷婷五月| 国产乱对白刺激视频不卡| 精品无码国产一区二区三区51安| 国产精品网站在线| 国产一级视频在线观看| 91福利在线导航| 亚洲av无码片一区二区三区| 亚洲片在线观看| 四虎影视成人| 日本一本a高清免费不卡| 国内精品视频| 欧美极品色图| 国内精品久久久久国产盗摄免费观看完整版| 国产69精品久久久久久久| 麻豆国产一区二区| 青青草视频播放| 亚洲精品免费播放| 日韩不卡高清视频| 亚洲成色777777在线观看影院| av网站在线播放| 欧美一级大片在线免费观看| 伊人久久影院| 亚洲一区二区三区免费看| 国产精品一页| 欧美极品jizzhd欧美仙踪林| 国产精品美女久久久久久2018| 你懂的国产视频| 日韩午夜中文字幕| 在线免费黄色| 日韩美女视频免费看| 国产成人精品亚洲线观看| 国产奶头好大揉着好爽视频| 丝袜脚交一区二区| 色婷婷免费视频| 一区二区三区鲁丝不卡| 亚洲天堂视频网| 亚洲视频欧洲视频| 超碰一区二区| 久久国产精品高清| 99国产精品99久久久久久粉嫩| 国内精品国产三级国产aⅴ久| 中文字幕免费一区| 天天干,天天干| 亚洲男人av在线| 鲁鲁在线中文| 国产麻豆乱码精品一区二区三区 | 国产亚洲一区二区三区| 日韩三级小视频| 亚洲成人999| 青草在线视频| 北条麻妃高清一区| 欧美精品日韩| 第一页在线视频| 一区二区三区 在线观看视频| av网站在线观看免费| 久久久国产一区| 国产精品亚洲欧美一级在线| 欧美a级黄色大片| 国产精品主播直播| 日本一级二级视频| 91精品国产aⅴ一区二区| 黄色在线免费网站| 亚洲xxxxx性| 欧美三级不卡| 偷偷色噜狠狠狠狠的777米奇| 婷婷综合久久一区二区三区| 日韩一区二区三区在线观看视频| 午夜精品久久久久久久男人的天堂| 亚洲日本一区二区三区在线| 国产欧美久久久久| av亚洲精华国产精华精华| 日韩精品成人在线| 亚洲男人的天堂在线播放| 亚洲精品.com| 亚洲欧美日产图| 国产一区二区伦理| 久久久久久国产精品视频| 日韩精品一区二区三区swag | 日色在线视频| 国产精品久久久久久久av大片| 9999国产精品| 亚洲av无码成人精品区| 性做久久久久久免费观看| 免费播放片a高清在线观看| 国产精品国产三级国产aⅴ9色 | 麻豆一二三区精品蜜桃| 国产成人艳妇aa视频在线| av午夜一区麻豆| 久草视频在线免费| 久久在线免费观看视频| 香蕉大人久久国产成人av| 激情小视频网站| 国产午夜精品在线观看| 国产999久久久| 琪琪第一精品导航| 亚洲成av人片乱码色午夜| 中文文字幕文字幕高清| 欧美三级乱人伦电影| 欧美xxxx免费虐| 日本在线观看不卡| 国产成人在线视频网址| 波多野结衣黄色| 久久99国产精品自在自在app| 亚洲精品3区| 下面一进一出好爽视频| 欧美性精品220| 污视频在线看网站| 日韩精品一区二区三区四区五区| 国产寡妇亲子伦一区二区| 国产www在线| 久久99国产综合精品女同| 俺要去色综合狠狠| 久久性爱视频网站| 欧美久久一二区| 国模冰冰炮一区二区|