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

一文徹底搞懂zookeeper核心知識點

開源
Zookeeper 它作為Hadoop項目中的一個開源子項目,是一個經典的分布式數據一致性解決方案,致力于為分布式應用提供一個高性能、高可用,且具有嚴格順序訪問控制能力的分布式協調服務。

 初識 zookeeper

Zookeeper 它作為Hadoop項目中的一個開源子項目,是一個經典的分布式數據一致性解決方案,致力于為分布式應用提供一個高性能、高可用,且具有嚴格順序訪問控制能力的分布式協調服務。

1、zookeeper數據模型

zookeeper 維護了一個類似文件系統的數據結構,每個子目錄(/微信、/微信/公眾號)都被稱作為 znode 即節點。和文件系統一樣,我們可以很輕松的對 znode 節點進行增加、刪除等操作,而且還可以在一個znode下增加、刪除子znode,區別在于文件系統的是,znode可以存儲數據(嚴格說是必須存放數據,默認是個空字符)。

由于zookeeper是目錄節點結構,在獲取和創建節點時,必須要以“/” 開頭,否則在獲取節點時會報錯 Path must start with / character。 

  1. [zk: localhost:2181(CONNECTED) 13] get test  
  2. Command failed: java.lang.IllegalArgumentException: Path must start with / character 

根節點名必須為“/XXX”,創建子節點時必須要帶上根節點目錄“/XXX/CCC”、“/XXX/AAA”。

例如:想要獲取下圖 程序員內點事 節點必須拼接完整的路徑 get /微信/公眾號/程序員內點事

get /微信/公眾號/程序員內點事

在這里插入圖片描述

znode被用來存儲 byte級 或 kb級 的數據,可存儲的最大數據量是1MB(請注意:一個節點的數據量不僅包含它自身存儲數據,它的所有子節點的名字也要折算成Byte數計入,因此znode的子節點數也不是無限的)雖然可以手動的修改節點存儲量大小,但一般情況下并不推薦這樣做。

2、znode節點屬性

一個znode節點不僅可以存儲數據,還有一些其他特別的屬性。接下來我們創建一個/test節點分析一下它各個屬性的含義。 

  1. [zk: localhost:2181(CONNECTED) 6] get /test  
  2. 456  
  3. cZxid = 0x59ac //  
  4. ctime = Mon Mar 30 15:20:08 CST 2020  
  5. mZxid = 0x59ad  
  6. mtime = Mon Mar 30 15:22:25 CST 2020  
  7. pZxid = 0x59ac  
  8. cversion = 0  
  9. dataVersion = 2  
  10. aclVersion = 0  
  11. ephemeralOwner = 0x0 
  12. dataLength = 3  
  13. numChildren = 0   
節點屬性 注解
cZxid 該數據節點被創建時的事務Id
mZxid 該數據節點被修改時最新的事物Id
pZxid 當前節點的父級節點事務Id
ctime 該數據節點創建時間
mtime 該數據節點最后修改時間
dataVersion 當前節點版本號(每修改一次值+1遞增)
cversion 子節點版本號(子節點修改次數,每修改一次值+1遞增)
aclVersion 當前節點acl版本號(節點被修改acl權限,每修改一次值+1遞增)
ephemeralOwner 臨時節點標示,當前節點如果是臨時節點,則存儲的創建者的會話id(sessionId),如果不是,那么值=0
dataLength 當前節點所存儲的數據長度
numChildren 當前節點下子節點的個數

我們看到一個znode節點的屬性比較多,但比較主要的屬性還是zxid、version、acl 這三個。

Zxid:

znode節點狀態改變會導致該節點收到一個zxid格式的時間戳,這個時間戳是全局有序的,znode節點的建立或者更新都會產生一個新的。如果zxid1的值 < zxid2的值,那么說明zxid2發生的改變在zxid1之后。每個znode節點都有3個zxid屬性,cZxid(節點創建時間)、mZxid(該節點修改時間,與子節點無關)、pZxid(該節點或者該節點的子節點的最后一次創建或者修改時間,孫子節點無關)。

zxid屬性主要應用于zookeeper的集群,這個后邊介紹集群時詳細說。

Version:

znode屬性中一共有三個版本號dataversion(數據版本號)、cversion(子節點版本號)、aclversion(節點所擁有的ACL權限版本號)。

znode中的數據可以有多個版本,如果某一個節點下存有多個數據版本,那么查詢這個節點數據就需要帶上版本號。每當我們對znode節點數據修改后,該節點的dataversion版本號會遞增。當客戶端請求該znode節點時,會同時返回節點數據和版本號。另外當dataversion為 -1的時候可以忽略版本進行操作。對一個節點設置權限時aclVersion版本號會遞增,下邊會詳細說ACL權限控制。

驗證一下,我們修改/test節點的數據看看dataVersion有什么變化,發現dataVersion屬性變成了 3,版本號遞增了。 

  1. [zk: localhost:2181(CONNECTED) 10] set /test 8888  
  2. cZxid = 0x59ac  
  3. ctime = Mon Mar 30 15:20:08 CST 2020  
  4. mZxid = 0x59b6  
  5. mtime = Mon Mar 30 16:58:08 CST 2020  
  6. pZxid = 0x59ac  
  7. cversion = 0  
  8. dataVersion = 3  
  9. aclVersion = 0  
  10. ephemeralOwner = 0x0  
  11. dataLength = 4  
  12. numChildren = 0 

3、znode的類型

zookeeper 有四種類型的znode,在用客戶端 client 創建節點的時候需要指定類型。

  1. zookeeper.create("/公眾號/程序員內點事", "".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); 
  •  PERSISTENT-持久化目錄節點 :client創建節點后,與zookeeper斷開連接該節點將被持久化,當client再次連接后節點依舊存在。
  •  PERSISTENT_SEQUENTIAL-持久化順序節點 :client創建節點后,與zookeeper斷開連接該節點將被持久化,再次連接節點還存在,zookeeper會給該節點名稱進行順序編號,例如:/lock/0000000001、/lock/0000000002、/lock/0000000003。
  • EPHEMERAL-臨時目錄節點 :client與zookeeper斷開連接后,該節點即會被刪除
  •  EPHEMERAL_SEQUENTIAL-臨時順序節點 :client與zookeeper斷開連接后,該節點被刪除,會給該節點名稱進行順序編號,例如:/lock/0000000001、/lock/0000000002、/lock/0000000003。

節點的ACL權限控制

ACL:即 Access Control List (節點的權限控制),通過ACL機制來解決znode節點的訪問權限問題,要注意的是zookeeper對權限的控制是基于znode級別的,也就說節點之間的權限不具有繼承性,即子節點不繼承父節點的權限。

zookeeper中設置ACL權限的格式由<schema>:<id>:<acl>三段組成。

schema :表示授權的方式

  •  world:表示任何人都可以訪問
  •  auth:只有認證的用戶可以訪問
  •  digest:使用username  :password用戶密碼生成MD5哈希值作為認證ID
  •  host/ip:使用客戶端主機IP地址來進行認證

id:權限的作用域,用來標識身份,依賴于schema選擇哪種方式。

acl:給一個節點賦予哪些權限,節點的權限有create,、delete、write、read、admin 統稱 cdwra。

1、world:表示任何人都可以訪問

我們用 getAcl 命令來看一下,沒有設置過權限的znode節點,默認情況下的權限情況。 

  1. [zk: localhost:2181(CONNECTED) 12] getAcl /test  
  2. 'world,'anyone  
  3. : cdrwa 

看到沒有設置ACL屬性的節點,默認schema 使用的是world,作用域是anyone,節點權限是cdwra,也就是說任何人都可以訪問。

那我們如果要給一個schema 為非world的節點設置world權限咋搞? 

  1. setAcl /test world:anyone:crdwa 

2、auth:只有認證的用戶可以訪問

schema 用auth授權表示只有認證后的用戶才可以訪問,那么首先就需要添加認證用戶,添加完以后需要對認證的用戶設置ACL權限。

addauth digest test:password(明文)

需要注意的是設置認證用戶時的密碼是明文的。 

  1. [zk: localhost:2181(CONNECTED) 2] addauth digest user:user //用戶名:密碼  
  2. [zk: localhost:2181(CONNECTED) 5] setAcl /test auth:user:crdwa  
  3. [zk: localhost:2181(CONNECTED) 6] getAcl /test  
  4. 'digest,'user:ben+k/3JomjGj4mfd4fYsfM6p0A 
  5. : cdrwa 

實際上我們這樣設置以后,就是將這個節點開放給所有認證的用戶,setAcl /test auth:user:crdwa 相當于setAcl /test auth::crdwa。

3、digest:用戶名:密碼的驗證方式

用戶名:密碼方式授權是針對單個特定用戶,這種方式是不需要先添加認證用戶的。

如果在代碼中使用zookeeper客戶端設置ACL,那么密碼是明文的,但若是zk.cli等客戶端操作就需要將密碼進行sha1及base64處理。 

  1. setAcl <path> digest:<user>:<password(密文)>:<acl>  
  2. setAcl /test digest:user:jalRr+knv/6L2uXdenC93dEDNuE=:crdwa 

那么密碼如何加密嘞?有以下幾種方式:

通過shell命令加密 

  1. echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64 

使用zookeeper自帶的類庫org.apache.zookeeper.server.auth.DigestAuthenticationProvider生成 

  1. java -cp /zookeeper-3.4.13/zookeeper-3.4.13.jar:/zookeeper-3.4.13/lib/slf4j-api-1.7.25.jar \  
  2.   org.apache.zookeeper.server.auth.DigestAuthenticationProvider \  
  3.   root:root  
  4. root:root->root:qiTlqPLK7XM2ht3HMn02qRpkKIE

4、host/ip:使用客戶端主機IP地址來進行認證

這種方式就比較好理解了,通過對特定的IP地址,也可以是一個IP段進行授權。 

  1. [zk: localhost:2181(CONNECTED) 3] setAcl /test0000000014 ip:127.0.0.1:crdwa  
  2. cZxid = 0x59ac  
  3. ctime = Mon Mar 30 15:20:08 CST 2020  
  4. mZxid = 0x59b6  
  5. mtime = Mon Mar 30 16:58:08 CST 2020  
  6. pZxid = 0x59ac  
  7. cversion = 0  
  8. dataVersion = 3  
  9. aclVersion = 3 // 這個版本一直在增加  
  10. ephemeralOwner = 0x0  
  11. dataLength = 4  
  12. numChildren = 0 

zookeeper 靈魂 watcher

我們在開頭就說過:zookeeper可以為dubbo提供服務的注冊與發現,作為注冊中心,但你有想過zookeeper為啥能夠實現服務的注冊與發現嗎?這就不得不說一下zookeeper的靈魂 Watcher(監聽者)。

1、watcher是個啥?

watcher 是zooKeeper中一個非常核心功能 ,客戶端watcher 可以監控節點的數據變化以及它子節點的變化,一旦這些狀態發生變化,zooKeeper服務端就會通知所有在這個節點上設置過watcher的客戶端 ,從而每個客戶端都很快感知,它所監聽的節點狀態發生變化,而做出對應的邏輯處理。

簡單的介紹了一下watcher ,那么我們來分析一下,zookeeper是如何實現服務的注冊與發現。zookeeper的服務注冊與發現,主要應用的是zookeeper的znode節點數據模型和watcher機制,大致的流程如下:

在這里插入圖片描述

  •  服務注冊: 服務提供者(Provider)啟動時,會向zookeeper服務端注冊服務信息,也就是創建一個節點,例如:用戶注冊服務com.xxx.user.register,并在節點上存儲服務的相關數據(如服務提供者的ip地址、端口等)。
  •  服務發現: 服務消費者(Consumer)啟動時,根據自身配置的依賴服務信息,向zookeeper服務端獲取注冊的服務信息并設置watch監聽,獲取到注冊的服務信息之后,將服務提供者的信息緩存在本地,并進行服務的調用。
  •  服務通知: 一旦服務提供者因某種原因宕機不再提供服務之后,客戶端與zookeeper服務端斷開連接,zookeeper服務端上服務提供者對應服務節點會被刪除(例如:用戶注冊服務com.xxx.user.register),隨后zookeeper服務端會異步向所有消費用戶注冊服務com.xxx.user.register,且設置了watch監聽的服務消費者發出節點被刪除的通知,消費者根據收到的通知拉取最新服務列表,更新本地緩存的服務列表。

上邊的過程就是zookeeper可以實現服務注冊與發現的大致原理。

2、watcher類型

znode節點可以設置兩類watch,一種是DataWatches,基于znode節點的數據變更從而觸發 watch 事件,觸發條件getData()、exists()、setData()、 create()。

另一種是Child Watches,基于znode的孩子節點發生變更觸發的watch事件,觸發條件 getChildren()、 create()。

而在調用 delete() 方法刪除znode時,則會同時觸發Data Watches和Child Watches,如果被刪除的節點還有父節點,則父節點會觸發一個Child Watches。

3、watcher特性

watch對節點的監聽事件是一次性的!客戶端在指定的節點設置了監聽watch,一旦該節點數據發生變更通知一次客戶端后,客戶端對該節點的監聽事件就失效了。

如果還要繼續監聽這個節點,就需要我們在客戶端的監聽回調中,再次對節點的監聽watch事件設置為True。否則客戶端只能接收到一次該節點的變更通知。

zookeeper 實現的功能

服務的注冊與發現功能只是zookeeper的冰山一角,它還能實現諸如分布式鎖、隊列、配置中心等一系列功能,接下來我們只分析一下原理,具體的實現大家上網查一下資料還是比較全的。

1、分布式鎖

zookeeper基于watcher機制和znode的有序節點,天生就是一個分布式鎖的坯子。首先創建一個/test/lock父節點作為一把鎖,盡量是持久節點(PERSISTENT類型),每個嘗試獲取這把鎖的客戶端,在/test/lock父節點下創建臨時順序子節點。

由于序號的遞增性,我們規定序號最小的節點即獲得鎖。例如:客戶端來獲取鎖,在/test/lock節點下創建節點為/test/lock/seq-00000001,它是最小的所以它優先拿到了鎖,其它節點等待通知再次獲取鎖。/test/lock/seq-00000001執行完自己的邏輯后刪除節點釋放鎖。

那么節點/test/lock/seq-00000002想要獲取鎖等誰的通知呢?

這里我們讓/test/lock/seq-00000002節點監聽/test/lock/seq-00000001節點,一旦/test/lock/seq-00000001節點刪除,則通知/test/lock/seq-00000002節點,讓它再次判斷自己是不是最小的節點,是則拿到鎖,不是繼續等通知。

以此類推/test/lock/seq-00000003節點監聽/test/lock/seq-00000002節點,總是讓后一個節點監聽前一個節點,不用讓所有節點都監聽最小的節點,避免設置不必要的監聽,以免造成大量無效的通知,形成“羊群效應”。

zookeeper分布式鎖和redis分布式鎖相比,因為大量的創建、刪除節點性能上比較差,并不是很推薦。

2、分布式隊列

zookeeper實現分布式隊列也很簡單,應用znode的有序節點天然的“先進先出”,后創建的節點總是最大的,出隊總是拿序號最小的節點即可。

3、配置管理

現在有很多開源項目都在使用Zookeeper來維護配置,像消息隊列Kafka中,就使用Zookeeper來維護broker的信息;dubbo中管理服務的配置信息。原理也是基于watcher機制,例如:創建一個/config節點存放一些配置,客戶端監聽這個節點,一點修改/config節點的配置信息,通知各個客戶端數據變更重新拉取配置信息。

4、命名服務

zookeeper的命名服務:也就是我們常說的服務注冊與發現,主要是根據指定名字來獲取資源或服務的地址,服務提供者等信息,利用其znode節點的特點和watcher機制,將其作為動態注冊和獲取服務信息的配置中心,統一管理服務名稱和其對應的服務器列表信息,我們能夠近乎實時地感知到后端服務器的狀態(上線、下線、宕機)。 

 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2021-01-15 08:35:49

Zookeeper

2020-03-18 14:00:47

MySQL分區數據庫

2021-06-30 08:45:02

內存管理面試

2022-06-07 10:13:22

前端沙箱對象

2021-07-08 10:08:03

DvaJS前端Dva

2020-12-07 06:19:50

監控前端用戶

2024-11-04 09:00:00

Java開發

2019-11-06 17:30:57

cookiesessionWeb

2021-12-30 08:17:27

Springboot數據訪問DataSourceB

2025-01-07 14:10:46

SpringBoot開發Java

2020-11-06 00:50:16

JavaClassLoaderJVM

2024-08-08 14:57:32

2022-04-11 10:56:43

線程安全

2024-04-23 14:25:16

Python備忘清單

2020-10-26 10:40:31

Axios前端攔截器

2021-08-05 06:54:05

觀察者訂閱設計

2023-04-12 08:38:44

函數參數Context

2020-12-18 09:36:01

JSONP跨域面試官

2023-11-23 06:50:08

括號

2022-10-29 08:55:19

頁面react
點贊
收藏

51CTO技術棧公眾號

a级精品国产片在线观看| 永久亚洲成a人片777777| 婷婷六月综合亚洲| 欧美一区国产一区| 亚洲熟妇无码久久精品| 中国精品18videos性欧美| 精品久久人人做人人爰| 国产精品-区区久久久狼| 午夜激情在线观看| 国产麻豆91精品| 欧美一级大胆视频| 蜜桃av免费看| 香蕉成人在线| 五月综合激情日本mⅴ| 亚洲高清视频一区| 国产91麻豆视频| 免费的成人av| 91精品国产精品| 日日骚一区二区三区| 亚洲人成亚洲精品| 精品第一国产综合精品aⅴ| 手机看片福利日韩| 国产伦理精品| 亚洲美女精品一区| 日韩欧美一区二区三区四区五区| 亚洲国产www| 久久99久久精品| 欧美在线视频一二三| 手机在线免费看毛片| 神马电影久久| 亚洲精品福利视频| 欧美性猛交乱大交| 亚洲国产91视频| 黄色成人在线免费| 欧美极品少妇无套实战| www免费网站在线观看| 91免费视频网| 久久久一本精品99久久精品| 刘亦菲久久免费一区二区| 激情偷乱视频一区二区三区| 国产精品黄页免费高清在线观看| 天堂在线免费观看视频| 亚洲午夜黄色| 欧美激情精品久久久久久| 182在线观看视频| 日韩电影在线视频| 一本大道亚洲视频| 美女被到爽高潮视频| 香蕉久久夜色精品国产更新时间| 亚洲国产精久久久久久久| 最好看的中文字幕| 日韩成人在线观看视频| 欧美日本国产视频| 午夜一区二区视频| 在线免费观看亚洲| 91精品国产一区二区人妖| 午夜免费看视频| 青青青国产精品| 欧美日韩国产免费| 在线观看日本一区二区| 欧美大片网站| 欧美巨大另类极品videosbest | 国产精品久久久久久久龚玥菲| 91在线免费视频观看| 久热国产精品视频一区二区三区 | 伊人精品在线观看| 国产毛片久久久久久久| 狠狠操综合网| 三级精品视频久久久久| 在线免费看av网站| 欧美日本三区| 韩剧1988在线观看免费完整版| 久久精品人妻一区二区三区| 亚洲少妇一区| 国产精品久久久999| 一级黄色大片网站| 国产老女人精品毛片久久| 国产精品久久国产精品| 99精品免费观看| 成人av电影在线观看| 美乳视频一区二区| 日本中文字幕电影在线免费观看 | 国产成人精品一区二三区| 国产精品嫩草99av在线| 奇米4444一区二区三区| 在线观看免费观看在线| 国产经典欧美精品| 欧美12av| 国产素人视频在线观看| 亚洲成人tv网| 日韩手机在线观看视频| 99精品女人在线观看免费视频| 精品99久久久久久| 丁香花五月婷婷| 亚洲乱码精品| 啪一啪鲁一鲁2019在线视频| 国产喷水福利在线视频| 99re视频这里只有精品| 亚洲高清视频一区| 19禁羞羞电影院在线观看| 色婷婷综合久久久中文字幕| 在线视频日韩欧美| 国产精品三级| 欧美国产精品va在线观看| www.国产毛片| 高清不卡一二三区| 亚洲精品成人自拍| 国内精彩免费自拍视频在线观看网址| 欧美午夜不卡在线观看免费| 一级黄色免费视频| 91综合久久| 国产91精品久久久久久| 99er热精品视频| 国产午夜亚洲精品不卡| 黄色三级中文字幕| 亚洲精品成a人ⅴ香蕉片| 精品视频www| 欧美黄色免费看| 另类小说综合欧美亚洲| 免费不卡亚洲欧美| 韩国日本一区| 91精品麻豆日日躁夜夜躁| 久久久久久久久久久久久久久| 欧美精品99| 91麻豆桃色免费看| 91欧美在线视频| 欧美性猛交xxxx黑人猛交| 成人啪啪18免费游戏链接| 日韩黄色大片网站| 国产福利精品av综合导导航| 色噜噜一区二区三区| 亚洲欧美另类图片小说| 久久黄色片网站| 超碰成人久久| 国产精品国产亚洲伊人久久| 欧美偷拍视频| 黑人极品videos精品欧美裸| 女同性αv亚洲女同志| 亚洲精品网址| 91久久精品国产| 日本在线观看视频| 欧美男生操女生| 992在线观看| 麻豆成人久久精品二区三区小说| 欧美色欧美亚洲另类七区| 小早川怜子影音先锋在线观看| 亚洲第一男人av| 国产大片中文字幕| 成年人国产精品| 欧美亚洲一二三区| 日韩欧美四区| 欧洲成人午夜免费大片| 你懂的在线观看| 色综合天天综合狠狠| 欧洲女同同性吃奶| 日韩国产欧美三级| 亚洲成人a**址| 色综合一区二区日本韩国亚洲| 中国日韩欧美久久久久久久久| 日韩国产亚洲欧美| 国产精品不卡一区| 天堂av.com| 女生裸体视频一区二区三区| 99精品在线直播| 操喷在线视频| 国产偷亚洲偷欧美偷精品| 国产精品777777| 中文欧美字幕免费| 一区二区久久精品| 极品尤物久久久av免费看| 国模精品一区二区三区| 欧美片第一页| 久久精品国产视频| 亚洲国产综合网| 色婷婷亚洲一区二区三区| 四季av中文字幕| 国产成人精品免费在线| 精品无码一区二区三区在线| 国产欧美高清视频在线| 成人av在线网址| jizz一区二区三区| 国产香蕉97碰碰久久人人| 国产又粗又猛又爽又黄91| 亚洲一区在线视频观看| 国产精品扒开腿做爽爽| 精彩视频一区二区| 日本丰满少妇xxxx| 日本久久精品| 国产伦精品一区二区三区高清| 性欧美18一19sex性欧美| 久久精品免费电影| 深夜福利在线视频| 欧美日韩在线免费视频| 久久久久97国产| 欧美激情资源网| 26uuu国产| 日本免费新一区视频| 精品人妻人人做人人爽| 欧美精品一区二区久久| 成人情视频高清免费观看电影| 亚洲承认视频| 久久久久久久香蕉网| jizz在线观看| 日韩精品一区二区视频| 国产日本精品视频| 色天使久久综合网天天| 久久免费少妇高潮99精品| 国产欧美va欧美不卡在线| japanese在线观看| 精品系列免费在线观看| 日韩中文字幕组| 亚洲区第一页| 久久天天东北熟女毛茸茸| 啪啪亚洲精品| 久久久久久久久久久久久久久久av| 亚洲免费看片| 国产精品扒开腿做爽爽爽的视频| 金瓶狂野欧美性猛交xxxx| 这里只有视频精品| 欧美日韩在线中文字幕| 精品第一国产综合精品aⅴ| 国产男男gay网站| 欧美性猛交xxxx黑人交| 亚洲天堂一区在线观看| 午夜精品一区二区三区电影天堂| 91日韩中文字幕| 国产精品麻豆一区二区 | 老司机成人在线| 亚洲一区二区免费| 婷婷久久免费视频| 国产精品久久久久久久久久久久久| 大菠萝精品导航| 久久久久久亚洲| 七七久久电影网| 欧美成人剧情片在线观看| 中文字幕在线播放| 这里只有精品在线播放| jizzjizz在线观看| 最近2019中文字幕在线高清| 国产69精品久久app免费版| 亚洲欧美激情视频| 日本国产在线| 精品一区二区亚洲| 欧美一区二区少妇| 亚洲欧美精品suv| 韩国精品视频| 亚洲视频自拍偷拍| 国产精品一二三区视频| 亚洲无线码在线一区观看| 国产在线资源| 影音先锋日韩有码| a视频网址在线观看| 中日韩美女免费视频网址在线观看| 国产高清自拍视频在线观看| 综合国产在线视频| 日本在线www| 欧美精品免费播放| av最新在线| 3344国产精品免费看| 在线日韩影院| 国产精品爽黄69| 综合欧美精品| 成人欧美一区二区三区黑人免费| 99这里只有精品视频| 国产原创精品| 久久av免费| 亚洲一区二区免费视频软件合集 | 亚洲影院在线播放| 日本久久电影网| 中文字幕欧美人妻精品一区蜜臀| 欧美精品在线观看播放| av网站在线免费看| 亚洲国产成人精品一区二区| 午夜av免费在线观看| 亚洲图片制服诱惑| 顶级网黄在线播放| 97久久精品国产| 99riav视频一区二区| 91在线免费看网站| 欧美wwwsss9999| 午夜久久资源| 亚洲视频精品| 欧在线一二三四区| 国产精品原创巨作av| 国产精品无码永久免费不卡| 国产精品美女久久久久久久久久久| 国产极品国产极品| 一本久久a久久免费精品不卡| a片在线免费观看| 日韩欧美成人激情| 久久久久久久影视| 欧美激情精品久久久久久变态| 台湾佬成人网| 99在线免费观看视频| 欧美精品一区二区三区精品| 免费高清一区二区三区| 日韩精品乱码免费| 日批视频免费看| 国产精品区一区二区三| 国产亚洲欧美精品久久久久久| 在线免费精品视频| 日日夜夜精品免费| 久久天天躁日日躁| 丝袜美腿诱惑一区二区三区| 国产福利一区二区三区在线观看| 日韩.com| 国产aaa一级片| 国产宾馆实践打屁股91| 日本少妇高潮喷水xxxxxxx| 亚洲一区二区三区三| 国产三级理论片| 精品五月天久久| 青青草视频在线免费直播| 国产精品亚洲精品| 亚洲视频分类| 免费无码毛片一区二三区| 精品无人区卡一卡二卡三乱码免费卡 | 日韩精品福利视频| 亚洲巨乳在线| av影片在线播放| 中文字幕一区av| 国产精华7777777| 日韩av在线精品| h片精品在线观看| 97久久夜色精品国产九色| 国产高清一区| 色婷婷狠狠18| 国产拍揄自揄精品视频麻豆| 看片网址国产福利av中文字幕| 欧美v亚洲v综合ⅴ国产v| 久草中文在线| 成人a在线观看| 91蜜臀精品国产自偷在线| 美女喷白浆视频| 国产婷婷色一区二区三区 | 51xtv成人影院| 国产色综合天天综合网| 成人激情视频| 免费涩涩18网站入口| 国产日产精品1区| 台湾佬中文在线| 亚洲另类图片色| 日韩激情电影| 欧美最大成人综合网| 久久一综合视频| 性高潮久久久久久久| 色久优优欧美色久优优| 国产在线三区| 国产精品极品尤物在线观看 | 亚洲嫩模很污视频| 亚洲美女久久精品| 欧美在线视频二区| 日韩激情一区二区| 又色又爽的视频| 欧美一区二区三区免费在线看| 麻豆最新免费在线视频| 成人网在线免费观看| 在线一区电影| 91亚洲一线产区二线产区| 亚洲成a人片在线不卡一二三区| 天堂av中文字幕| 欧洲成人午夜免费大片| 不卡一区综合视频| 超碰在线免费av| 夜夜嗨av一区二区三区中文字幕| 欧美自拍偷拍第一页| 欧美一级黑人aaaaaaa做受| 国产精品一区二区av交换| 手机视频在线观看| 亚洲欧美色综合| 你懂的网站在线| 日本成人免费在线| 日韩欧美视频专区| 师生出轨h灌满了1v1| 精品久久久久久久久久久| 高清美女视频一区| 91在线视频精品| 一区二区三区精品视频在线观看| 亚洲精品乱码久久久久久久久久久久| 欧美色视频在线观看| 色呦呦呦在线观看| 欧美日韩电影一区二区三区| 久久99精品久久久久久国产越南 | 成人资源www网在线最新版| 91久久在线播放| 亚洲精选一区| 日韩一区二区三区四区视频| 亚洲二区在线播放视频| 91在线亚洲| 国产一区二区网| 国产精品久久夜| 免费看黄网站在线观看| 国产精品免费视频xxxx| 黑丝一区二区| 国产亚洲精品精品精品| 精品少妇一区二区三区视频免付费| 日韩精品99| 欧美性潮喷xxxxx免费视频看| 国产清纯白嫩初高生在线观看91| 亚洲va久久久噜噜噜无码久久|