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

ZooKeeper解析:分布式系統(tǒng)工程師的瑞士軍刀

譯文
云計算 分布式
ZooKeeper是一款極具實用性、現場測試能力并擁有廣泛用戶群體的中間件,專門用于構建分布式應用程序。在OpenStack當中,ZooKeeper也成為Nova ServiceGroup API后端中的組成部分。最近,ZooKeeper還與Ceilometer相集成,從而為Central Agent帶來更為理想的高可用性水平。

【51CTO.com快譯】所謂分布式系統(tǒng),指的是一組通過發(fā)送消息實現協作、從而共同達成同一目標的資源集合。正如知名計算機科學家Leslie Lamport所指出之定義:“所謂分布式系統(tǒng),其中任意一臺計算設備——即使使用者并未直接使用甚至對其存在毫不知情——出現故障,亦會影響到其它設備的正常運作。”

而這條定義也恰恰概括了我們在分布式系統(tǒng)當中經常遇到的一類問題。事實上,在云計算時代之下,資源的匯聚已經成為滿足負載對于計算及存儲實際需求的一種必然手段。這類系統(tǒng)的特點在于包含大量需要管理的資源,而其中故障的出現頻率與整體規(guī)模則成正比關系。

在分布式系統(tǒng)當中,故障屬于一類常規(guī)事態(tài),而非意外狀況——這意味著我們必須時刻做好心理準備。有鑒于此,相關社區(qū)專門創(chuàng)建出專門的工具,旨在幫助開發(fā)人員應對這方面問題,而Apache ZooKeeper正是其中之一。

ZooKeeper是一款極具實用性、現場測試能力并擁有廣泛用戶群體的中間件,專門用于構建分布式應用程序。在OpenStack當中,ZooKeeper也成為Nova ServiceGroup API后端中的組成部分。最近,ZooKeeper還與Ceilometer相集成,從而為Central Agent帶來更為理想的高可用性水平——當然,這方面話題我們以后將另行討論。

我們?yōu)槭裁葱枰猌ooKeeper?

一般來講,當大家設計一款分布式應用程序時,常常會發(fā)現需要將各類流程加以協同才能執(zhí)行預期任務。在大多數情況下,這種協作關系依賴于最基本的分布式協作機制。

Heat是一款OpenStack編排程序。大家可以利用它創(chuàng)建出一系列云資源,而這類資源會由一個模板文件負責指定,這就是堆棧的概念。Heat允許用戶對堆棧進行更新,但更新過程必須以原子方式進行,否則可能會導致資源復制或者相關性破壞等沖突。這類問題在并發(fā)更新場景下非常常見,而為了解決此類問題,Heat會在對堆棧進行更新之前首先設置一套所謂分布式互斥鎖。

在這類原型基礎之上進行開發(fā)是項極為困難的工作,而且經常帶來令人頭痛的麻煩。事實上,在分布式系統(tǒng)當中反復出現的這些問題早已成為技術圈中的共識。為了簡化開發(fā)人員的日常工作,雅虎實驗室創(chuàng)造出了Apache ZooKeeper項目,旨在為這些協作因素提供一套集中式API。歸功于ZooKeeper的幫助,現在我們已經能夠輕松實現多種不同協議,包括分布式鎖、屏障以及隊列等等。

ZooKeeper應用程序的架構與優(yōu)勢

一款ZooKeeper應用程序由一臺或者多臺ZK服務器支撐而成,我們可以將其稱為一個“集合”,在應用程序端則為一組ZK客戶端。

ZooKeeper解析:分布式系統(tǒng)工程師的瑞士軍刀

其設計思路在于,該分布式應用程序的每一個節(jié)點都通過使用一個ZK客戶端在應用層級使用相關API,這意味著應用的運行將依賴于ZooKeeper服務器實現。

這種架構方案擁有以下幾項突出優(yōu)勢:

  • 我們可以立足于應用層提取大部分分布式同步負載,從而實現一套所謂KISS(即Keep It Simple, Stupid,保持一切簡單且具傻瓜式特性)架構。
  • 常見的各類分布式協作元能夠實現開箱即用,因此開發(fā)人員無需再自行對其加以處理。
  • 開發(fā)人員不需要處理服務故障等狀況,因為整套體系擁有出色的彈性。ZooKeeper以應用程序神經中心的姿態(tài)存在,因為它負責控制整個協作機制,因此眾多組件都需要依附于它以實現作用。出于這些理由,ZooKeeper在設計中引入了出色的分布式算法,從而提供開發(fā)人員所需要的高可靠性與可用性保障。一個ZooKeeper集合基于群體形式存在,且通常由三到五臺服務器構成。

ZooKeeper集合能夠在多種場景之下發(fā)揮作用,下面讓我們從實踐角度出發(fā)一同來了解。

實踐場景中的ZooKeeper

ZooKeeper的API非常簡單而且直觀,其數據模型基于以內存樹形式存儲的分層命名空間。該樹中的各項元素被稱為znode,以文件形式容納數據并能夠如目錄一般擁有子znode。

首先,大家需要確保自己的運行環(huán)境滿足系統(tǒng)配置要求,接下來我們就要著手部署一臺ZK服務器了:

  1. $ wget http://apache.crihan.fr/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 
  2. $ tar xzf zookeeper-3.4.6.tar.gz 
  3. $ cd zookeeper-3.4.6 
  4. $ cp conf/zoo_sample.cfg conf/zoo.cfg 
  5. $ ./bin/zkServer.sh start 

現在ZooKeeper服務器已經能夠以獨立模式運行了,且會在默認情況下監(jiān)聽127.0.0.1:2181。如果大家需要部署一整套服務器集合,則可以點擊此處閱讀其相關管理指南。

ZooKeeper命令行界面

我們可以利用ZooKeeper命令行界面(./bin/zkCli.sh)完成一些基礎性操作。其使用方式與shell控制臺非常相似,操作感受也與文件系統(tǒng)相當接近。

下面列出root znode“/”中的全部子znode:

  1. [zk: localhost:2181(CONNECTED) 0] ls / 
  2. [zookeeper] 

創(chuàng)建一個路徑為“/myZnode”的znode,其相關數據則為“myData”:

  1. [zk: localhost:2181(CONNECTED) 1] create /myZnode myData 
  2. Created /myZnode 
  3. [zk: localhost:2181(CONNECTED) 2] ls / 
  4. [myZnode, zookeeper] 

刪除一個znode:

  1. [zk: localhost:2181(CONNECTED) 3] delete /myZnode 

大家可以輸入“help”命令來查看更多操作命令。在本次示例當中,我們將使用應用程序編程接口(簡稱API)來編寫一款分布式應用程序。

Python ZooKeeper API

我們的這套ZooKeeper服務器是由Java編程語言構建而成,且綁定了多種由不同語言編寫而成的客戶端集合。在今天的文章中,我們將通過Kazzo這一Python捆綁客戶端來了解該API。

我們可以在虛擬環(huán)境下輕松完成Kazoo的安裝工作:

  1. $ pip install kazoo 

首先,我們需要接入一個ZooKeeper集合:

  1. from kazoo import client as kz_client 
  2.   
  3. my_client = kz_client.KazooClient(hosts='127.0.0.1:2181'
  4.   
  5. def my_listener(state): 
  6.     if state == kz_client.KazooState.CONNECTED: 
  7.         print("Client connected !"
  8.   
  9. my_client.add_listener(my_listener) 
  10. my_client.start(timeout=5) 

在以上代碼當中,我們利用KazooClient類創(chuàng)建了一個ZK客戶端。其中的“hosts”參數負責定義該ZK服務器地址,并以逗號加以分隔,因此如果某臺服務器出現故障,那么該客戶端將自動嘗試接入其它服務器。

Kazoo能夠在連接狀態(tài)出現變化時向我們發(fā)出通知,根據當前具體狀況,這項功能可以非常實用地觸發(fā)我們預設的各類操作。舉例來說,當連接無法順利建立時,該客戶端應當停止發(fā)送命令,而這正是add_listener()方法的作用所在。

而start()方法則能夠在確認會話創(chuàng)建完畢之后,在客戶端與一臺ZK服務器之間建立起連接。每臺服務器都會追蹤每個客戶端中的一項會話,這種特性在實際分布式協作元方面起到非常重要的基礎性作用。

#p#

對znode進行增刪改查

與znode進行交互同樣非常簡單:

  1. # create a znode with data 
  2. my_client.create(“/my_parent_znode”) 
  3. my_client.create(“/my_parent_znode/child_1”, “child_data_1”) 
  4. my_client.create(“/my_parent_znode/child_2”, “child_data_2”) 
  5.   
  6. # get the children of a znode 
  7. my_client.get_children(“/my_parent_znode”) 
  8.   
  9. # get the data of a znode 
  10. my_client.get(“/my_parent_znode/child_1”) 
  11.   
  12. # update a znode 
  13. my_client.set(“/my_parent_znode/child_1”, b"child_new_data_1"
  14.   
  15. # delete a znode 
  16. my_client.delete(“/my_parent_znode/child_1”) 

其中set()方法會接受一條version參數,而后者則允許我們執(zhí)行類似于CAS的操作,如此一來即保證了任何使用者都無法在不讀取最新版本的前提下進行數據更新。

有時候,大家可能希望確保某個znode名稱獨一無二。我們可以通過使用連續(xù)znode(即sequential znode)的方式實現這項目標,相當于告知服務器在每段路徑的結尾添加一個單遞增計數器。

在這一點上,ZooKeeper的運作方式類似于一套普通的數據庫,不過更有趣的特性還在后面。

觀察者

觀察者機制可以算是ZooKeeper的核心功能之一,我們可以利用它對znode事件進行通知。換句話來說,每個客戶端都能夠訂閱某個指定znode的事件,并在其狀態(tài)發(fā)生變化時得到通知。要獲取這類通知,該客戶端必須注冊一項回調方法——該方法在特定事件發(fā)生時即被調用(通過后臺線程)。感興趣的朋友可以點擊此處查看ZooKeeper所支持的各不同事件類型(英文原文)。

下面來看一段示例代碼,我們可以在某znode的子集發(fā)生變更時觸發(fā)通知機制:

  1. def my_func(event): 
  2.     # check to see what the children are now 
  3.   
  4. # Set a watcher on "/my_parent_znode", call my_func() when its children change 
  5. children = zk.get_children("/my_parent_znode", watch=my_func) 

值得指出的是,一旦執(zhí)行了回調,客戶端就必須對其進行重置以保證下次事件發(fā)生時能夠再次正常獲取通知。

臨時性znode

正如之前所提到,當客戶端與服務器相對接時,會建立一個會話。該會話會始終保持開啟,負責向服務器發(fā)送心跳消息。而在經過一段時間的閑置之后,如果服務器端沒有監(jiān)聽到來自客戶端的更多活動,則該會話即被關閉。由于該會話的存在,服務器才能夠判斷目標客戶端是否仍處于活動狀態(tài)。

臨時性znode與正常znode沒有什么本質區(qū)別,最大的不同在于前者會在該會話過期時被服務器所自動釋放。

如果將觀察者與臨時性znode相結合,我們就能夠實現ZooKeeper的一項殺手級特性。事實上,這類特性可以說為我們的分布式協作元實現工作帶來了數量龐大的可能性。下面我們就一起來看看分布鎖機制。

分布鎖

分布鎖應該算是分布式應用程序當中出鏡頻率最高的機制了,這是因為我們會經常需要以互斥的方式訪問某些資源。

在ZooKeeper當中,這項任務可以說非常輕松:

  1. my_lock = my_client.Lock("/lockpath""my-identifier"
  2. with lock:  # blocks waiting for lock acquisition 
  3.     # do something with the lock 

其涉及的API與本地鎖完全一樣,但引擎之下到底發(fā)生了什么?要找到問題的答案,我們首先來聊聊分布式算法的設計方式。

任何一種分布式算法都必須滿足兩項特性:安全性與活性。

其中安全性確保了該算法絕對不會偏離自己的目標,而對于分布樂來說,這意味著只有一個節(jié)點能夠獲得該鎖。從直觀角度講,同一時段內不可能有兩個節(jié)點同時擁有分布鎖。

而活性則確保了該算法的持續(xù)遞進,在分布鎖這一場景當中,這意味著如果某個節(jié)點嘗試獲取該鎖、那么最終一定能夠獲取到。

以本地方式實現鎖機制屬于眾所周知的難題,而且有大量專門作為解決方案的算法出現——例如Dekker算法,而且每一種現代編程語言都會將其囊括在標準庫當中。不過需要強調的是,在分布式環(huán)境下這個問題會變得更加復雜。這兩大特性之所以難于實現,是因為各個節(jié)點隨時可能出現故障,而這勢必造成大量可能出現的故障場景。

ZooKeeper ensures these properties for us:則能夠幫助我們確保這兩大特性:

  • 活性的保障:將多個臨時性znode加以結合以檢測故障節(jié)點,而觀察者機制則負責向其它節(jié)點發(fā)出通知。因此,如果某個節(jié)點獲得了分布鎖并出現故障,那么其它節(jié)點將立即識別到這一狀況。
  • 安全性的保障:利用連續(xù)znode以確保各節(jié)點皆擁有彼此獨立的命名,這樣只有一個節(jié)點會獲得分布鎖。

我強烈建議大家點擊此處查看分布鎖說明文檔,其中提到了Kazoo的多種實現方式。

總結陳詞

構建一款分布式應用程序往往會成為一場令人頭痛的噩夢,因為我們必須要預料到一切隨時可能出現的異常狀況(即隨機出現的故障),同時處理多種元素彼此組合產生的指數級狀況增長(系統(tǒng)規(guī)模越大,狀況的具體數量也就越多)。ZooKeeper是一款非常便捷的工具,而且適合大家用于打理自己的基礎設施堆棧。有了它的幫助,我們可以將更多精力集中在應用程序邏輯身上。

在OpenStack當中,我們希望能夠充分發(fā)揮ZooKeeper的設計目標,即利用單獨一款通用型工具解決所有分布式系統(tǒng)帶來的復雜難題。因此,我們創(chuàng)建了一套名為Tooz的庫,用于實現一部分常見的分布式協作元。Tooz的正常運行依賴于多種不同后端驅動要素——ZooKeeper當然也是其中之一——而且能夠作用于所有OpenStack項目當中。

在下一篇文章中,我們將了解如何利用OpenStack Ceilometer讓Central Agent擁有出色的高可用性——其中涉及另一種重要的分布式元,即組成員(group membership)。屆時我們也將開發(fā)出自己第一款基于ZooKeeper的真正應用程序,咱們到時候見!

原文標題ZooKeeper Part 1: the Swiss army knife of the distributed system engineer

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】


 

責任編輯:Ophira 來源: 51CTO
相關推薦

2014-09-26 14:30:41

2010-12-01 12:31:23

NetCat掃描端口

2017-05-03 14:45:45

MySQL數據恢復

2013-06-08 10:36:47

Linux命令行

2020-07-02 09:21:40

Java 緩存開發(fā)

2009-07-21 14:16:18

Scalafor表達式

2013-04-11 10:51:27

2011-10-18 14:11:17

Web開發(fā)

2022-02-15 10:15:13

Web網絡程序員

2014-05-29 14:44:06

瑞士軍刀綜合征開發(fā)者

2021-12-28 09:55:40

UbuntuRescuezillaLinux

2021-09-05 18:30:59

Alpine容器Busybox

2019-06-24 09:57:39

網絡工具調試

2011-08-01 09:43:08

PhoneGap 1.PhoneGap

2023-04-27 07:06:09

Categraf夜鶯

2023-12-25 12:03:42

2021-06-01 07:57:42

Zookeeper分布式系統(tǒng)

2019-06-27 17:00:09

nc命令 Linux

2017-04-21 09:42:18

4G5G物聯網

2023-02-22 14:04:54

點贊
收藏

51CTO技術棧公眾號

国内一区二区在线视频观看| 久久这里只有精品99| 黑森林福利视频导航| 日本成人一区| 国产真实乱子伦精品视频| 国语自产精品视频在免费| 五月天综合视频| 欧美国产亚洲精品| 日韩欧美国产高清91| 欧美日韩在线免费观看视频| 天堂在线视频免费| 毛片av一区二区| 97在线视频观看| 国产尤物在线播放| 国产精品嫩模av在线| 日韩欧美国产成人一区二区| 青青在线视频免费| 欧美人体视频xxxxx| 国产午夜精品一区二区| 成人动漫视频在线观看完整版| 国产一级免费视频| 欧美午夜a级限制福利片| 国产一级揄自揄精品视频| jjzz黄色片| 中文字幕综合| 91福利在线导航| 日韩国产欧美亚洲| 99福利在线| 一区免费观看视频| 日韩色妇久久av| 天天射天天色天天干| 国产福利视频一区二区三区| 国产欧美婷婷中文| 无码人妻熟妇av又粗又大 | 欧美重口乱码一区二区| 国产日韩欧美视频在线观看| 欧美aⅴ一区二区三区视频| 久久人人爽人人| 男女羞羞免费视频| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 亚洲激情在线视频| 色哟哟网站在线观看| 天天综合91| 欧美日韩免费不卡视频一区二区三区| 欧美激情国产精品日韩| 国产网站在线| 午夜精品影院在线观看| 丰满少妇大力进入| 好久没做在线观看| 亚洲国产视频在线| 男人天堂新网址| 在线中文字幕-区二区三区四区| 中文字幕中文字幕一区二区| 视频一区二区三| 波多野结衣在线影院| 久久久www成人免费无遮挡大片 | 国产永久免费高清在线观看视频| 91在线丨porny丨国产| 国产乱码精品一区二区三区日韩精品| 亚洲精品一级片| 成人一区二区三区视频| 国产私拍一区| 飘雪影院手机免费高清版在线观看| 成人国产精品视频| 韩国成人一区| 久久天堂电影| 国产精品大尺度| 喜爱夜蒲2在线| 欧美家庭影院| 精品久久久中文| 成人免费无码av| 国产精品原创视频| 日韩一级高清毛片| 人妻换人妻a片爽麻豆| 青青一区二区| 亚洲情综合五月天| 成人欧美一区二区三区黑人一| 久久精品影视| 韩国日本不卡在线| 波多野结衣电车| 精品在线视频一区| 国产日韩欧美一区二区| 黄色影院在线播放| ㊣最新国产の精品bt伙计久久| 91免费版看片| 自由日本语热亚洲人| 欧美日韩情趣电影| 粗大的内捧猛烈进出视频| 四虎5151久久欧美毛片| 中文字幕亚洲一区| 国产精品99精品| 日韩电影在线免费观看| 99porn视频在线| 日韩av成人| 亚洲精品国产一区二区精华液| 男人添女人下面高潮视频| 国产一区二区三区四区五区3d| 日韩午夜在线影院| 超碰97人人干| 欧美久久一区| 国产成人精品久久| 精品黑人一区二区三区在线观看| 91亚洲男人天堂| 超碰成人在线免费观看| 狼人综合视频| 欧美一区永久视频免费观看| 亚洲午夜福利在线观看| 欧美激情日韩| 国产精品老女人精品视频| 后入内射欧美99二区视频| 国产欧美日韩卡一| 黄色一级片在线看| 国产精品一区二区精品视频观看| 日韩精品在线观看一区二区| 国产成人无码aa精品一区| 久久久久久久尹人综合网亚洲| 91精品国产一区二区三区动漫| 精品美女视频在线观看免费软件| 亚洲综合免费观看高清在线观看| 三上悠亚在线一区二区| 日韩av影院| 久久久久久久97| 99久久久久久久| 日本一区二区成人在线| 精品99在线视频| 国产精品极品国产中出| 久热国产精品视频| 一区二区三区在线免费观看视频 | 日韩不卡av在线| 国产精品亚洲产品| 国产伦精品一区二区三区四区视频 | 欧美日本视频在线观看| caoporn成人| 久久国产精品久久久久久| 中文字幕av资源| 国产亚洲欧美日韩日本| 男女高潮又爽又黄又无遮挡| 97久久精品| 欧美成人午夜激情| 国内老熟妇对白xxxxhd| 亚洲欧美日韩一区二区三区在线观看| 婷婷六月天在线| 欧美日韩在线网站| 国产不卡av在线免费观看| 欧美孕妇性xxxⅹ精品hd| 婷婷成人综合网| 中文字幕一区二区人妻电影丶| 欧美日韩中文| www.成人av| 国产经典三级在线| 亚洲第一精品福利| 日本午夜小视频| 91日韩在线专区| 免费观看精品视频| 国产最新精品| 国产精品综合不卡av| 日韩毛片久久久| 欧美一卡二卡三卡| 久久成人国产精品入口| 成人在线一区二区三区| 日韩精品一区二区三区久久| 妖精视频一区二区三区| 国产精品久久久久久久久久尿| 国产69精品久久app免费版| 欧美日韩一级二级| 亚洲 欧美 变态 另类 综合| 国产精品一区二区三区99| av动漫在线免费观看| 豆花视频一区二区| 青青久久av北条麻妃黑人| 成人动漫在线播放| 4438成人网| 久一视频在线观看| 91欧美激情一区二区三区成人| 日日碰狠狠丁香久燥| 日韩在线视频精品| 99久久精品免费看国产一区二区三区 | 污污的网站18| 你懂的网址国产 欧美| 国产麻豆一区二区三区在线观看| 成人线上视频| 久久精品中文字幕电影| 狠狠躁日日躁夜夜躁av| 日韩欧美有码在线| 无码黑人精品一区二区| 99综合电影在线视频| 中文字幕第80页| 欧美福利网址| 欧美日韩在线精品| 久久伊人影院| 日本高清不卡的在线| 免费黄色电影在线观看| 亚洲国产精品久久久久秋霞蜜臀| 久久久国产免费| 一区二区激情小说| 免费看黄色的视频| 国产白丝网站精品污在线入口| 99精品视频在线看| 一区二区三区四区日韩| 欧美日韩精品一区| 日韩精品中文字幕一区二区 | 国产日韩三级在线| 男人添女人荫蒂国产| 日本一不卡视频| 免费看黄在线看| 羞羞答答成人影院www| 欧美成人免费在线| 日韩精品一区二区三区中文| 国产精品网站视频| 中文字幕 在线观看| 久久电影一区二区| eeuss影院www在线观看| 亚洲精品久久久久中文字幕二区| 97人妻精品一区二区三区| 欧美日韩国产中文精品字幕自在自线| 久久人妻无码aⅴ毛片a片app | 欧美在线一区二区三区四区| 精品人人人人| 99电影网电视剧在线观看| 精品亚洲a∨| 日本一区二区在线免费播放| 懂色av一区| 欧美成人免费va影院高清| 福利在线观看| 国产亚洲欧洲高清一区| 四虎影院在线域名免费观看| 日韩欧美一级二级三级| 一级黄色片在线| 在线国产电影不卡| 精品人妻一区二区三区免费看| 亚洲成人自拍偷拍| 久久久全国免费视频| 亚洲精品乱码久久久久久黑人| 一二三四在线观看视频| 国产欧美一区二区精品忘忧草| 人妻无码一区二区三区| 成人av影院在线| 国产精品一区二区在线免费观看| 国产乱码精品一区二区三区av | 美女喷白浆视频| 久久久久免费| caoporn超碰97| 久久亚洲精选| 亚洲精品高清无码视频| 久久久精品网| 99re在线视频免费观看| 亚洲专区一区二区三区| 久久久亚洲精品无码| 亚洲精品孕妇| 青青视频在线播放| 国产一区91| 国产成人综合一区| 日韩精品一区第一页| 亚洲乱码国产一区三区| 日韩精品久久久久久| 精品久久久久久中文字幕2017| 日本中文字幕一区二区有限公司| 992kp快乐看片永久免费网址| 六月婷婷色综合| 亚洲免费成人在线视频| 国产麻豆精品视频| 怡红院一区二区| 91啪亚洲精品| 你懂得视频在线观看| 亚洲欧美自拍偷拍色图| 欧美成人一二三区| 天天综合网天天综合色| 香蕉影院在线观看| 欧洲在线/亚洲| 91亚洲国产成人久久精品麻豆 | 国产精品夜间视频香蕉| 在线国产成人影院| 91网站免费观看| 国产一级成人av| 日本一区免费看| 国产精品久久久乱弄 | 福利写真视频网站在线| 7777精品视频| 日本国产一区| 96久久精品| 国产精品入口久久| 99热一区二区三区| 国产手机视频一区二区| 韩国日本美国免费毛片| 国产乱子伦视频一区二区三区| 黄色av网址在线观看| 中文无字幕一区二区三区| www.av视频| 日韩欧美在线字幕| 国产婷婷在线视频| 精品在线观看国产| 成人在线直播| 日本成人免费在线| 91精品导航| 深夜福利成人| 一区二区三区精品视频在线观看| 日韩在线不卡一区| 久久综合九色综合97婷婷女人 | 欧美日韩另类国产亚洲欧美一级| www精品国产| 色老头一区二区三区| 色黄视频在线观看| 91九色露脸| 日韩激情一区| 免费在线a视频| 国产精品 欧美精品| 性欧美精品男男| 午夜伦欧美伦电影理论片| 国产精品亚洲lv粉色| 亚洲日本aⅴ片在线观看香蕉| 1区2区在线观看| 国产欧美一区二区三区久久人妖| 天天躁日日躁狠狠躁欧美巨大小说| 在线观看污视频| 免费久久99精品国产| 国产三级国产精品| 亚洲韩国一区二区三区| 国产熟女一区二区丰满| 伊人激情综合网| 日韩欧美精品电影| 久久亚洲精品欧美| 黄色亚洲免费| 亚洲一二三四五| 亚洲欧美电影院| 国产精品无码一区二区桃花视频 | 国产美女高潮视频| 在线观看日韩一区| 飘雪影院手机免费高清版在线观看| 欧美激情xxxxx| 亚洲国产aⅴ精品一区二区| 正在播放精油久久| 美国三级日本三级久久99| 精品欧美一区二区久久久| 欧美日韩国产专区| 天堂中文在线视频| 91av视频在线免费观看| 久久综合五月婷婷| 妞干网在线视频观看| 国产iv一区二区三区| 久草中文在线视频| 亚洲精品一区二区精华| 欧美hdxxxx| 成人在线免费观看一区| 欧美日韩专区| 在线精品视频播放| 婷婷激情综合网| 欧洲一级在线观看| 国产精品99久久久久久久久 | 中文字幕精品在线视频| 日本一区免费网站| 亚洲精品一区二区三区蜜桃久| 久久精品久久综合| 2014亚洲天堂| 日韩欧美国产综合一区| 三级网站视频在在线播放| 粉嫩精品一区二区三区在线观看 | 亚洲免费观看高清| www.久久成人| 97久久精品国产| 蜜臀91精品国产高清在线观看| 人妻无码视频一区二区三区| 国产欧美日韩不卡| 97超碰国产在线| 九九久久综合网站| 欧美理伦片在线播放| caopor在线视频| 国产精品久久久久四虎| 国产口爆吞精一区二区| 久久久最新网址| 免费一区二区| 尤物国产在线观看| 亚洲午夜电影网| 国产精品一区二区婷婷| 96精品久久久久中文字幕| 亚洲欧洲午夜| 性高潮久久久久久久| 欧美久久久久久蜜桃| 超碰97国产精品人人cao| 欧美日韩另类综合| 精品一区二区免费| 91香蕉在线视频| 尤物yw午夜国产精品视频明星 | 欧美日韩高清在线一区| 麻豆高清免费国产一区| 黄色小视频在线免费看| 亚洲天堂男人的天堂| 欧美视频二区欧美影视| 色综合久久久久无码专区| 国产精品视频你懂的| 免费a级片在线观看| 国产精品久久久久免费a∨大胸 | 精品少妇无遮挡毛片| 亚洲精品免费在线| 激情在线视频| av激情久久| 蜜臀va亚洲va欧美va天堂| 日本三级视频在线| 久久精品久久久久| 亚洲影院天堂中文av色| 欧美熟妇另类久久久久久多毛|