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

ZooKeeper 的設(shè)計(jì)精髓、工作原理和實(shí)際應(yīng)用

開(kāi)發(fā) 前端
ZooKeeper 通過(guò)提供一個(gè)看似簡(jiǎn)單、實(shí)則經(jīng)過(guò)深思熟慮的數(shù)據(jù)模型和 API,成功地將分布式協(xié)調(diào)中那些最棘手、最普遍的問(wèn)題抽象出來(lái),用一個(gè)可靠、高性能的“內(nèi)核”予以解決。它讓應(yīng)用開(kāi)發(fā)者可以更專注于業(yè)務(wù)邏輯,而不是陷入分布式共識(shí)的泥潭。

ZooKeeper 是什么?為什么要造這個(gè)輪子?

想象一下,在一個(gè)大型分布式系統(tǒng)里,成百上千臺(tái)服務(wù)器協(xié)同工作。這時(shí)候,會(huì)涌現(xiàn)出一大堆“雞毛蒜皮”的協(xié)調(diào)問(wèn)題:

  • 配置管理 (Configuration Management) :某個(gè)配置項(xiàng)變了,如何讓所有機(jī)器都收到最新的配置?
  • 服務(wù)發(fā)現(xiàn) (Service Discovery) :系統(tǒng)中誰(shuí)是主服務(wù)器(Leader)?哪些工作節(jié)點(diǎn)(Worker)還活著?新上線的服務(wù),它的地址和端口是什么?
  • 分布式鎖 (Distributed Lock) :多個(gè)進(jìn)程要搶占同一個(gè)關(guān)鍵資源,怎么保證同一時(shí)間只有一個(gè)能拿到?
  • 組成員管理 (Group Membership) :如何維護(hù)一個(gè)集群中所有在線成員的列表?

為每個(gè)問(wèn)題都專門開(kāi)發(fā)一套高可用的服務(wù),不僅費(fèi)時(shí)費(fèi)力,而且很容易出錯(cuò)。ZooKeeper 的目標(biāo),就是提供一個(gè)通用的、高性能的“協(xié)調(diào)內(nèi)核”。它本身不直接提供復(fù)雜的分布式鎖或領(lǐng)導(dǎo)者選舉等功能,而是提供一套足夠基礎(chǔ)、足夠強(qiáng)大的 API,讓開(kāi)發(fā)者可以在它的基礎(chǔ)上,像搭積木一樣輕松構(gòu)建出自己需要的、更復(fù)雜的協(xié)調(diào)“原語(yǔ)”(Primitives)。

它的設(shè)計(jì)哲學(xué)是“大道至簡(jiǎn)”:服務(wù)器端只做最核心、最簡(jiǎn)單的事,從而保證高性能和高可靠性,而將復(fù)雜性留給客戶端去實(shí)現(xiàn)。

核心設(shè)計(jì):像文件系統(tǒng)一樣簡(jiǎn)單

ZooKeeper 對(duì)外暴露的接口非常像一個(gè)精簡(jiǎn)版的文件系統(tǒng)。它的核心數(shù)據(jù)模型是一個(gè)樹(shù)狀的層級(jí)命名空間,由許多被稱為 數(shù)據(jù)節(jié)點(diǎn) (znodes) 的單元組成。

/
├── app1
│   ├── p_1  (ephemeral)
│   ├── p_2  (ephemeral)
│   └── p_3  (ephemeral)
└── app2
    ├── config
    └── lock
        ├── write-0000000001
        └── read-0000000002

每個(gè) znode 都可以存儲(chǔ)少量數(shù)據(jù)(默認(rèn)不超過(guò) 1MB),通常是用于協(xié)調(diào)的元數(shù)據(jù),比如狀態(tài)信息、配置參數(shù)或者節(jié)點(diǎn)地址。

Znode 有幾種非常關(guān)鍵的類型:

  • 常規(guī)節(jié)點(diǎn) (Regular) :需要客戶端顯式地創(chuàng)建和刪除。
  • 臨時(shí)節(jié)點(diǎn) (Ephemeral) :這種節(jié)點(diǎn)的生命周期與創(chuàng)建它的客戶端 會(huì)話 (session) 綁定。當(dāng)客戶端與 ZooKeeper 的連接斷開(kāi),會(huì)話超時(shí)結(jié)束后,這個(gè)臨時(shí)節(jié)點(diǎn)就會(huì)被自動(dòng)刪除。這個(gè)特性是實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和故障檢測(cè)的利器。
  • 順序節(jié)點(diǎn) (Sequential) :創(chuàng)建時(shí),ZooKeeper 會(huì)在節(jié)點(diǎn)路徑后面自動(dòng)追加一個(gè)單調(diào)遞增的數(shù)字序號(hào)。比如,在 /app2/lock/ 下創(chuàng)建一個(gè)名為 write- 的順序節(jié)點(diǎn),可能會(huì)得到 write-0000000001、write-0000000002 這樣的路徑。這個(gè)特性對(duì)于實(shí)現(xiàn)分布式鎖和隊(duì)列至關(guān)重要,可以有效避免“羊群效應(yīng)”。

核心機(jī)制:Watch 事件通知

如果客戶端想知道某個(gè) znode(比如存儲(chǔ)著主節(jié)點(diǎn)地址的 znode)有沒(méi)有變化,難道要不停地去輪詢(Polling)讀取嗎?這顯然效率低下,而且會(huì)給 ZooKeeper 服務(wù)帶來(lái)巨大壓力。

為此,ZooKeeper 引入了 監(jiān)視 (Watch) 機(jī)制??蛻舳嗽谧x取一個(gè) znode 時(shí),可以設(shè)置一個(gè) watch 標(biāo)志。當(dāng)這個(gè) znode 發(fā)生變化(被修改、被刪除,或者它的子節(jié)點(diǎn)列表發(fā)生變化)時(shí),ZooKeeper 就會(huì)向該客戶端發(fā)送一個(gè)一次性的通知??蛻舳耸盏酵ㄖ螅椭雷约罕镜鼐彺娴臄?shù)據(jù)已經(jīng)“過(guò)時(shí)”了,需要重新來(lái)拉取最新數(shù)據(jù)。

這個(gè)設(shè)計(jì)非常巧妙,它是一種事件驅(qū)動(dòng)的機(jī)制,類似于緩存失效通知,避免了無(wú)效的輪詢,大大提升了效率。

API 和保證:ZooKeeper 的契約

ZooKeeper 提供了一套簡(jiǎn)潔的 API,核心包括:

  • create(path, data, flags): 創(chuàng)建一個(gè) znode 。
  • delete(path, version): 刪除一個(gè) znode,version 參數(shù)用于實(shí)現(xiàn)樂(lè)觀鎖(CAS)。
  • exists(path, watch): 檢查 znode 是否存在,并可以設(shè)置 watch 。
  • getData(path, watch): 獲取 znode 的數(shù)據(jù)和元數(shù)據(jù),并可以設(shè)置 watch 。
  • setData(path, data, version): 更新 znode 的數(shù)據(jù),同樣有 version 檢查。
  • getChildren(path, watch): 獲取子節(jié)點(diǎn)列表,并可以設(shè)置 watch 。
  • sync(path): 強(qiáng)制后續(xù)的讀操作能看到此 sync 調(diào)用之前的所有更新。

在這些 API 背后,ZooKeeper 提供了兩條黃金保證:

  1. 線性化寫入 (Linearizable Writes) :所有會(huì)改變 ZooKeeper 狀態(tài)的寫操作,其執(zhí)行順序是全局一致、可串行化的,并且尊重操作的實(shí)際發(fā)生順序。簡(jiǎn)單說(shuō),就是寫操作絕不會(huì)亂序。這是通過(guò)一個(gè)類似 Raft 的原子廣播協(xié)議 Zab 來(lái)實(shí)現(xiàn)的。
  2. FIFO 客戶端順序 (FIFO Client Order) :來(lái)自同一個(gè)客戶端的所有請(qǐng)求,會(huì)被嚴(yán)格按照它們發(fā)送的順序來(lái)執(zhí)行。這讓異步操作變得簡(jiǎn)單可靠。比如,客戶端可以先發(fā)一堆寫請(qǐng)求去修改配置,最后發(fā)一個(gè)創(chuàng)建 "ready" 節(jié)點(diǎn)的請(qǐng)求,ZooKeeper 保證 "ready" 節(jié)點(diǎn)一定是在所有配置修改完成后才出現(xiàn)的。

為什么讀操作不保證線性一致性?

這里有一個(gè)關(guān)鍵的設(shè)計(jì)取舍。如果讀操作也要求線性一致性(即必須讀到最新的數(shù)據(jù)),那么所有讀請(qǐng)求都得交給 Leader 處理,或者需要一個(gè)復(fù)雜的讀協(xié)議,這樣就無(wú)法通過(guò)增加服務(wù)器來(lái)擴(kuò)展讀性能。

ZooKeeper 的目標(biāo)應(yīng)用場(chǎng)景通常是“讀多寫少”。為了極大地提升讀的吞吐量,ZooKeeper 允許每個(gè)服務(wù)器副本(Follower)直接用自己的本地內(nèi)存數(shù)據(jù)庫(kù)來(lái)響應(yīng)讀請(qǐng)求。但這樣一來(lái),副本的數(shù)據(jù)可能暫時(shí)落后于 Leader ,導(dǎo)致客戶端可能會(huì)讀到 陳舊數(shù)據(jù) (stale data) 。

這聽(tīng)起來(lái)很危險(xiǎn),但 ZooKeeper 認(rèn)為對(duì)于協(xié)調(diào)服務(wù)來(lái)說(shuō),這種“最終一致”的讀是可以接受的。并且,它提供了 sync() 這個(gè)“后悔藥”,如果某個(gè)讀操作確實(shí)需要最新數(shù)據(jù),可以在讀之前調(diào)用一次 sync() 。sync() 會(huì)強(qiáng)制當(dāng)前客戶端連接的服務(wù)器與 Leader 同步,確保后續(xù)的讀能看到最新的狀態(tài)。

生產(chǎn)實(shí)踐:用 ZooKeeper 搭建協(xié)調(diào)原語(yǔ)

有了 znode、watch 和強(qiáng)大的順序保證,我們就可以構(gòu)建各種上層應(yīng)用了。

動(dòng)態(tài)配置管理

這是最簡(jiǎn)單的用法。將配置信息存放在一個(gè) znode /app/config 中。所有應(yīng)用進(jìn)程啟動(dòng)時(shí)讀取這個(gè) znode 的數(shù)據(jù),并設(shè)置一個(gè) watch 。當(dāng)配置需要變更時(shí),管理員只需修改這個(gè) znode 的內(nèi)容。所有設(shè)置了 watch 的進(jìn)程都會(huì)收到通知,然后重新讀取配置,實(shí)現(xiàn)動(dòng)態(tài)更新。

服務(wù)發(fā)現(xiàn)與組成員管理

利用臨時(shí)節(jié)點(diǎn)可以完美實(shí)現(xiàn)這個(gè)功能。假設(shè)有一個(gè)服務(wù)集群,每個(gè)服務(wù)實(shí)例啟動(dòng)時(shí),都在一個(gè)公共的 znode /service/members 下創(chuàng)建一個(gè)代表自己的臨時(shí)節(jié)點(diǎn),比如 /service/members/instance-1 。節(jié)點(diǎn)的數(shù)據(jù)可以存放該實(shí)例的 IP 和端口。

  • 成員發(fā)現(xiàn) :其他客戶端只需 getChildren("/service/members", watch=true),就能獲取當(dāng)前所有在線服務(wù)的列表。
  • 故障檢測(cè) :如果某個(gè)服務(wù)實(shí)例崩潰或網(wǎng)絡(luò)斷開(kāi),它與 ZooKeeper 的會(huì)話會(huì)超時(shí),其對(duì)應(yīng)的臨時(shí)節(jié)點(diǎn)會(huì)被自動(dòng)刪除。監(jiān)聽(tīng) /service/members 的其他客戶端會(huì)收到子節(jié)點(diǎn)變化的通知,從而知道有成員下線了。

分布式鎖(避免羊群效應(yīng))

一個(gè)簡(jiǎn)單的鎖可以通過(guò) create("/lock", EPHEMERAL) 來(lái)實(shí)現(xiàn),誰(shuí)創(chuàng)建成功誰(shuí)就獲得鎖。但這會(huì)導(dǎo)致 羊群效應(yīng) (herd effect) :一旦鎖釋放,所有等待的客戶端會(huì)同時(shí)被喚醒,然后蜂擁而上嘗試創(chuàng)建節(jié)點(diǎn),造成瞬間的網(wǎng)絡(luò)風(fēng)暴,而最終只有一個(gè)能成功。

更優(yōu)雅的做法是利用順序節(jié)點(diǎn):

獲取鎖 (Acquire)

  1. 在鎖目錄 /lock 下,創(chuàng)建一個(gè) 臨時(shí)順序節(jié)點(diǎn) ,比如得到 /lock/lock-0000000002 。
  2. 獲取 /lock 下的所有子節(jié)點(diǎn),并排序。
  3. 判斷自己創(chuàng)建的節(jié)點(diǎn)是不是序號(hào)最小的。如果是,則成功獲得鎖。
  4. 如果不是,就找到比自己序號(hào)小一位的節(jié)點(diǎn)(比如 lock-0000000001),并對(duì)它設(shè)置 exists(watch=true) 。
  5. 然后等待,直到收到 watch 通知。
  6. 收到通知后,回到第 2 步,重新檢查自己是不是最小的。

釋放鎖 (Release)

  • 客戶端完成任務(wù)后,只需刪除自己創(chuàng)建的那個(gè)臨時(shí)節(jié)點(diǎn)即可。如果客戶端崩潰,節(jié)點(diǎn)也會(huì)自動(dòng)刪除。

這個(gè)方案中,鎖的釋放只會(huì)喚醒隊(duì)列中的下一個(gè)等待者,完美避免了羊群效應(yīng)。

領(lǐng)導(dǎo)者選舉

領(lǐng)導(dǎo)者選舉和分布式鎖非常相似,通常獲勝的進(jìn)程會(huì)把自己的信息寫入一個(gè)約定的 znode,其他進(jìn)程 watch 這個(gè) znode 來(lái)感知 Leader 的變化和存活狀態(tài)。

實(shí)際應(yīng)用與常見(jiàn)問(wèn)題

ZooKeeper 是許多著名開(kāi)源項(xiàng)目的基石,比如:

  • Apache Kafka :用它來(lái)存儲(chǔ) Broker 和 Consumer 的元數(shù)據(jù),進(jìn)行領(lǐng)導(dǎo)者選舉等。
  • Apache Hadoop/HDFS :用于 NameNode 的高可用方案,選舉 Active NameNode。
  • Apache HBase :用于確保集群中只有一個(gè) Master,并存儲(chǔ) Region Server 的狀態(tài)。

常見(jiàn)問(wèn)題與解決方案:

  • 問(wèn):客戶端斷線重連到另一個(gè)服務(wù)器,會(huì)不會(huì)讀到“倒退”的數(shù)據(jù)?

答:不會(huì)。客戶端會(huì)話中會(huì)記錄它所見(jiàn)過(guò)的最新事務(wù) ID,即 zxid 。當(dāng)它重連到一個(gè)新服務(wù)器時(shí),新服務(wù)器會(huì)檢查客戶端的 zxid。如果服務(wù)器自己的狀態(tài)比客戶端的還舊,它會(huì)拒絕建立會(huì)話,直到它從 Leader 那里同步到足夠新的狀態(tài)為止。

  • 問(wèn):如何處理“羊群效應(yīng)”?
  • 答:如上文所述,使用順序節(jié)點(diǎn)和只 watch 前一個(gè)節(jié)點(diǎn)的策略來(lái)實(shí)現(xiàn)有序、無(wú)驚群的鎖。

  • 問(wèn):會(huì)話超時(shí)時(shí)間應(yīng)該設(shè)多長(zhǎng)?

  • 答:這是一個(gè)權(quán)衡。太短,網(wǎng)絡(luò)抖動(dòng)可能導(dǎo)致節(jié)點(diǎn)被誤判為“死亡”,造成服務(wù)頻繁切換。太長(zhǎng),節(jié)點(diǎn)真的宕機(jī)后,系統(tǒng)需要更長(zhǎng)時(shí)間才能發(fā)現(xiàn)并恢復(fù)。客戶端庫(kù)通常會(huì)在超時(shí)時(shí)間的 1/3 時(shí)發(fā)送心跳,在 2/3 時(shí)間內(nèi)沒(méi)收到響應(yīng)時(shí)就嘗試連接新服務(wù)器,以增加魯棒性。

  • 問(wèn):ZooKeeper 性能如何?

  • 答:讀性能極高,并且可以通過(guò)增加服務(wù)器數(shù)量來(lái)水平擴(kuò)展。寫性能會(huì)隨著服務(wù)器增多而略有下降,因?yàn)?Leader 需要將寫入請(qǐng)求同步給大多數(shù) Follower 。但在現(xiàn)代硬件上,一個(gè)小型集群處理數(shù)萬(wàn)的寫入 QPS 也是可能的。

總而言之,ZooKeeper 通過(guò)提供一個(gè)看似簡(jiǎn)單、實(shí)則經(jīng)過(guò)深思熟慮的數(shù)據(jù)模型和 API,成功地將分布式協(xié)調(diào)中那些最棘手、最普遍的問(wèn)題抽象出來(lái),用一個(gè)可靠、高性能的“內(nèi)核”予以解決。它讓應(yīng)用開(kāi)發(fā)者可以更專注于業(yè)務(wù)邏輯,而不是陷入分布式共識(shí)的泥潭。

責(zé)任編輯:武曉燕 來(lái)源: Piper蛋窩
相關(guān)推薦

2015-07-02 09:56:48

ReactiveCociOS

2020-12-09 15:05:40

大數(shù)據(jù)學(xué)習(xí)Zookeeper

2017-01-17 09:38:52

ZooKeeperHadoopHBase

2024-11-26 08:21:57

2010-07-05 08:31:25

SQL Server快

2010-09-08 11:59:38

藍(lán)牙協(xié)議棧

2014-04-02 17:10:00

虛擬應(yīng)用工作原理

2022-07-18 10:03:18

Collection指定集合

2010-07-26 09:48:49

SQL Server復(fù)

2021-04-21 09:21:07

zookeeper集群源碼

2010-05-12 17:26:55

MySQL維護(hù)

2023-11-26 18:02:00

ReactDOM

2010-07-05 14:20:29

2011-07-01 11:16:14

Struts

2025-08-04 02:55:00

AIAgent架構(gòu)

2010-10-09 21:30:57

FTTx

2010-09-26 08:50:11

JVM工作原理

2009-07-09 14:01:22

JVM工作原理

2023-09-27 12:22:50

Kafka架構(gòu)

2010-09-16 14:42:44

JVM
點(diǎn)贊
收藏

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

日韩免费电影网站| 欧美经典三级视频一区二区三区| 欧美激情亚洲自拍| 88久久精品无码一区二区毛片| 国产精品久久亚洲不卡| 亚洲欧美在线aaa| 精品婷婷色一区二区三区蜜桃| а中文在线天堂| 欧美激情aⅴ一区二区三区| 日韩国产精品视频| 四虎成人在线播放| 欧美特大特白屁股xxxx| 久久伊人国产| 亚洲人metart人体| 亚洲欧美日本另类| 国产裸体视频网站| 精品成人av| 亚洲韩国精品一区| 在线看视频不卡| 香蕉视频成人在线| 国精产品一区一区三区mba桃花| 911国产网站尤物在线观看| 精品熟妇无码av免费久久| 国产精品自在线拍| 91精品国产一区二区三区蜜臀| www.com毛片| 牛牛电影国产一区二区| 国产精品美日韩| 免费av一区二区三区| 国产v在线观看| 蜜臀av一级做a爰片久久| 97国产精品人人爽人人做| 超碰手机在线观看| 五月婷婷亚洲| 中文字幕无线精品亚洲乱码一区 | 伊人久久五月天| 91传媒理伦片在线观看| 国产精品视频一区二区三区| 欧美日韩一区二区三区在线| 黑人糟蹋人妻hd中文字幕| 超免费在线视频| 一区二区三区中文在线观看| 亚洲第一页在线视频| freemovies性欧美| 国产亚洲成年网址在线观看| 久久riav| 精品无人乱码| 久久久久久免费| 欧美国产一区二区在线| 飘雪影院手机免费高清版在线观看| 粉嫩aⅴ一区二区三区四区五区| 5566中文字幕一区二区| 国产强被迫伦姧在线观看无码| 久久国产精品一区二区| 国产精品丝袜视频| 亚洲熟妇av乱码在线观看| 日韩av成人高清| 国产精品视频xxxx| 亚洲一级视频在线观看| 久久 天天综合| 91久久久亚洲精品| 国产丰满果冻videossex| 国产高清一区日本| 国产精品久久久久久久久久久久冷| 国模人体一区二区| 99久久99久久精品免费看蜜桃| 精品福利影视| 精品久久av| 国产精品天干天干在观线| 亚洲一区二区三区乱码| h视频在线免费观看| 亚洲国产日韩av| 91精品91久久久中77777老牛| 91精品论坛| 欧美理论电影在线| 亚洲熟妇一区二区| 神马香蕉久久| 中文字幕欧美专区| 国模无码国产精品视频| 亚洲毛片一区| 国产精品女人久久久久久| 国产精品久久久午夜夜伦鲁鲁| 国产成人欧美日韩在线电影| 国产一区二区精品免费| 国产精品久久一区二区三区不卡 | 久久99精品波多结衣一区| 久热精品视频| 91福利视频导航| 亚州男人的天堂| 国产精品三级电影| 欧美无砖专区免费| 99re久久| 欧美精品一区二区三区很污很色的| 国产精品jizz| 欧美久久综合| 日本aⅴ大伊香蕉精品视频| 国产乱码久久久| 99精品桃花视频在线观看| 亚洲欧洲一区二区福利| av在线视屏| 欧美高清视频www夜色资源网| 午夜视频在线观看国产| 日产精品一区二区| 992tv成人免费视频| 97成人在线观看| 99久久99久久精品免费观看| 在线观看成人av| 午夜伦理福利在线| 日韩女同互慰一区二区| gv天堂gv无码男同在线观看| 亚洲特色特黄| 亚洲www在线| 国产二区视频在线观看| 婷婷综合在线观看| 久久久国产精品久久久| 欧美久久精品一级c片| 国精产品一区一区三区有限在线| 国产精品无码久久久久成人app| 久久网这里都是精品| 国产成人一区二区三区别| 四虎精品在线观看| 夜夜嗨av色综合久久久综合网| 久久视频免费在线观看| 国产一区二区三区在线观看精品 | 怡红院一区二区| 亚洲国产一区二区三区在线播放| 国产精品电影观看| 日韩av资源站| 精品国产乱码久久久久久天美| 一级黄色免费毛片| 亚洲精品a级片| 成人亚洲激情网| 免费黄色网页在线观看| 国产99在线观看| 欧美性猛交xxxx富婆弯腰| 久久久久亚洲AV成人网人人小说| 久久在线电影| 国产日韩欧美中文在线播放| a黄色在线观看| 欧美亚洲尤物久久| 蜜桃传媒一区二区亚洲| 免费日韩一区二区| 欧美日本韩国一区二区三区| 亚洲一二三四| 亚洲欧洲第一视频| 波多野结衣日韩| 久久精品一二三| 日韩免费高清在线| 国产精品嫩模av在线| 欧美在线视频观看| 欧美色视频免费| 色综合天天综合给合国产| 女同毛片一区二区三区| 久久久久国产精品午夜一区| 欧美精品人人做人人爱视频| 韩国久久久久久| 国产亚洲日本欧美韩国| 自拍偷拍第八页| 国产精品久久久久永久免费观看| 在线观看免费视频高清游戏推荐| 成人同人动漫免费观看 | 自拍偷拍亚洲| 久久影院中文字幕| 狠狠躁夜夜躁av无码中文幕| 欧美日韩国产精品专区| 高潮毛片无遮挡| 美女mm1313爽爽久久久蜜臀| 中文字幕人成一区| 无人区乱码一区二区三区| 欧美大片免费看| 丝袜视频国产在线播放| 色久综合一二码| 国产黄色录像片| 不卡视频免费播放| 免费看黄色一级大片| 亚洲欧美综合久久久| 国产精品福利视频| 全亚洲第一av番号网站| www欧美日韩| 特黄视频在线观看| 欧美少妇性性性| 久久国产一级片| 久久久国产一区二区三区四区小说| 污色网站在线观看| 国内精品久久久久久久97牛牛| 久久精品日韩| 日本久久二区| 91大神在线播放精品| 成人性爱视频在线观看| 日韩一区二区在线观看视频 | 久久99热只有频精品91密拍| 福利视频亚洲| 97视频在线免费观看| 午夜激情视频在线| 亚洲国产精品成人av| 中文字幕在线观看高清| 亚洲一卡二卡三卡四卡| 中文字幕第24页| 波多野结衣亚洲一区| mm131国产精品| 在线视频精品| 国产人妻互换一区二区| 一区二区三区四区在线看| 91久色国产| julia一区二区三区中文字幕| 久久久天堂国产精品女人| 91porn在线观看| 日韩成人中文字幕在线观看| 国产免费久久久| 在线观看91视频| 日韩污视频在线观看| 亚洲美女偷拍久久| 精品亚洲aⅴ无码一区二区三区| 国产69精品久久久久777| 在线观看免费的av| 久久久久久婷| 男人日女人下面视频| 中文字幕一区二区精品区| 色一情一区二区三区四区| 欧美成人基地| 国产不卡一区二区在线观看| 日本久久二区| 国产在线视频不卡| 日韩制服诱惑| 国产精品久久久久久搜索| 亚洲三级欧美| 欧美在线影院在线视频| 毛片在线导航| 欧美激情久久久| 日本欧美电影在线观看| 另类美女黄大片| 成人福利在线观看视频| 最新中文字幕亚洲| 99青草视频在线播放视| 亚洲欧美精品中文字幕在线| 亚洲三区在线播放| 精品亚洲一区二区三区| 色丁香婷婷综合久久| 亚洲国产成人一区| 亚洲国产精品久久人人爱潘金莲| 欧美一区二区三区日韩视频| 国产乱淫a∨片免费观看| 51精品秘密在线观看| 一级片aaaa| 欧美高清视频在线高清观看mv色露露十八 | 欧美特级特黄aaaaaa在线看| 日韩欧美一卡二卡| 亚洲国产精品国自产拍久久| 精品国产露脸精彩对白| 人妻少妇精品无码专区久久| 亚洲精品一区二区三区蜜桃下载 | 一区二区三区国产免费| 日韩电影在线观看电影| 91香蕉视频导航| 青椒成人免费视频| 日本国产一级片| 国产福利电影一区二区三区| 99精品一区二区三区无码吞精 | 精品亚洲欧美日韩| 亚州av日韩av| 亚洲成人a**址| 中文一区一区三区免费在线观看| 日韩一级免费看| 亚洲精品精选| 91av俱乐部| 国产精品一二三四区| 人妻av一区二区| 久久久五月婷婷| 成人18视频免费69| 亚洲美女淫视频| 国产微拍精品一区| 欧美色图在线观看| www.综合色| 亚洲美女在线观看| 黄av在线播放| 66m—66摸成人免费视频| 国产精品99| 国产精品制服诱惑| 精品国产1区| 青青草视频国产| 欧美一级久久| 国产农村妇女精品久久| 91伊人久久大香线蕉| 精品国产大片大片大片| 亚洲福利视频一区二区| 中文字幕一区二区久久人妻| 欧美大黄免费观看| 成人亚洲综合天堂| 午夜精品久久久久久99热软件| 91tv亚洲精品香蕉国产一区| 99一区二区| 成人毛片在线| 免费看国产曰批40分钟| 精一区二区三区| 熟女丰满老熟女熟妇| 亚洲天天做日日做天天谢日日欢| 日韩欧美一级视频| 91精品国产丝袜白色高跟鞋| 神马精品久久| 欧美xxxx做受欧美.88| 久久野战av| 国产精品入口免费| 久久精品亚洲人成影院| 精品视频一区二区在线| 国产成人自拍网| 91ts人妖另类精品系列| 精品免费在线视频| 精品人妻一区二区三区含羞草| 亚洲视频欧洲视频| 大桥未久在线视频| 91视频88av| 日韩不卡一区| 日韩av在线综合| aaa亚洲精品一二三区| 欧美三级日本三级| 欧美人与禽zozo性伦| 激情在线视频| 91精品国产乱码久久久久久久久 | 精品久久久久久亚洲综合网| 1769在线观看| 国产精品jizz在线观看麻豆| 日本午夜精品| 青青青青草视频| 国产成人精品免费| 丝袜 亚洲 另类 欧美 重口 | 成人午夜免费在线观看| xvideos亚洲| 黄色成人在线观看网站| 午夜欧美性电影| 日韩精品一区第一页| 88久久精品无码一区二区毛片| 岛国精品视频在线播放| 欧美自拍偷拍第一页| 久久久久久久久久久国产| 美女日韩一区| 福利在线小视频| 国产精品一级在线| 欧美人妻精品一区二区免费看| 91精品国产乱码| 国产在线更新| 97在线电影| 亚洲午夜极品| 精品国产一区在线| 图片区小说区国产精品视频| 午夜视频免费在线| 456亚洲影院| 久操国产精品| 亚洲精品高清无码视频| 国产精品色婷婷| 97人妻精品一区二区三区软件| x99av成人免费| 99re8这里有精品热视频免费| 800av在线免费观看| 99久久婷婷国产| 五月婷婷激情视频| 在线电影中文日韩| 国产精品一区免费在线 | 色一情一乱一伦一区二区三区 | 手机看片日韩av| 56国语精品自产拍在线观看| 先锋影音在线资源站91| 国产一级特黄a大片99| 香蕉久久a毛片| 国产无遮挡在线观看| 3d成人h动漫网站入口| 高清电影在线观看免费| 久久国产精品免费一区| 日本欧美一区二区三区| 人妻人人澡人人添人人爽| 精品国产免费一区二区三区四区| 特黄毛片在线观看| 亚洲韩国在线| 国产大片一区二区| 欧美日韩一二三四区| 色综久久综合桃花网| 亚洲成人五区| 免费av网址在线| 亚洲精品日日夜夜| 亚洲AV成人无码一二三区在线| 国产suv精品一区二区| 91成人国产| 成人精品在线观看视频| 欧美老人xxxx18| 这里有精品可以观看| 免费看污污视频| 久久综合九色综合97婷婷| 国产精品久久久国产盗摄| 97激碰免费视频| 五月精品视频| www.狠狠爱| 欧美xxxxxxxx| 成人四虎影院| 成人黄色av片| 亚洲视频一区二区在线| 免费在线国产| 不卡一卡2卡3卡4卡精品在| 日本大胆欧美人术艺术动态| 国产一级中文字幕| 日韩中文字幕网站| 天堂成人娱乐在线视频免费播放网站 |