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

Zookeeper面試常見的11個連環炮

開發 前端
面試的時候,面試官只要看到你簡歷的上寫的有Zookeeper(熟悉、掌握)之類,那你至少要準備接下來的11連問。

面試的時候,面試官只要看到你簡歷的上寫的有Zookeeper(熟悉、掌握)之類,那你至少要準備接下來的11連問。 

Zookeeper面試常見的11個連環炮

NO1:說說zookeeper是什么?

ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現(Chubby是不開源的),它是集群的管理者,監視著集群中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶 。

Zookeeper一個最常用的使用場景就是用于擔任服務生產者和服務消費者的注冊中心,服務生產者將自己提供的服務注冊到Zookeeper中心,服務的消費者在進行服務調用的時候先到Zookeeper中查找服務,獲取到服務生產者的詳細信息之后,再去調用服務生產者的內容與數據,簡單示例圖如下:

Zookeeper面試常見的11個連環炮

NO2:了解Zookeeper的系統架構嗎?

Zookeeper面試常見的11個連環炮

ZooKeeper 的架構圖中我們需要了解和掌握的主要有:

(1)ZooKeeper分為服務器端(Server) 和客戶端(Client),客戶端可以連接到整個 ZooKeeper服務的任意服務器上(除非 leaderServes 參數被顯式設置, leader 不允許接受客戶端連接)。

(2)客戶端使用并維護一個 TCP 連接,通過這個連接發送請求、接受響應、獲取觀察的事件以及發送信息。如果這個 TCP 連接中斷,客戶端將自動嘗試連接到另外的 ZooKeeper服務器。客戶端第一次連接到 ZooKeeper服務時,可以接受這個連接的 ZooKeeper服務器會為這個客戶端建立一個會話。當這個客戶端連接到另外的服務器時,這個會話會被新的服務器重新建立。

(3)上圖中每一個Server代表一個安裝Zookeeper服務的機器,即是整個提供Zookeeper服務的集群(或者是由偽集群組成);

(4)組成ZooKeeper服務的服務器必須彼此了解。它們維護一個內存中的狀態圖像,以及持久存儲中的事務日志和快照, 只要大多數服務器可用,ZooKeeper服務就可用;

(5)ZooKeeper 啟動時,將從實例中選舉一個 leader,Leader 負責處理數據更新等操作,一個更新操作成功的標志是當且僅當大多數Server在內存中成功修改數據。每個Server 在內存中存儲了一份數據。

(6)Zookeeper是可以集群復制的,集群間通過Zab協議(Zookeeper Atomic Broadcast)來保持數據的一致性;

(7)Zab協議包含兩個階段:leader election階段和Atomic Brodcast階段。

a) 集群中將選舉出一個leader,其他的機器則稱為follower,所有的寫操作都被傳送給leader,并通過brodcast將所有的更新告訴給follower。

b) 當leader崩潰或者leader失去大多數的follower時,需要重新選舉出一個新的leader,讓所有的服務器都恢復到一個正確的狀態。

c) 當leader被選舉出來,且大多數服務器完成了 和leader的狀態同步后,leadder election 的過程就結束了,就將會進入到Atomic brodcast的過程。

d) Atomic Brodcast同步leader和follower之間的信息,保證leader和follower具有形同的系統狀態。

NO3:能說說Zookeeper的工作原理?

Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab協議。

Zab協議有兩種模式,它們 分別是恢復模式(選主)和廣播模式(同步)。

Zab協議 的全稱是 Zookeeper Atomic Broadcast** (Zookeeper原子廣播)。Zookeeper 是通過 Zab 協議來保證分布式事務的最終一致性。Zab協議要求每個 Leader 都要經歷三個階段:發現,同步,廣播。

當服務啟動或者在領導者崩潰后,Zab就進入了恢復模式,當領導者被選舉出來,且大多數Server完成了和 leader的狀態同步以后,恢復模式就結束了。狀態同步保證了leader和Server具有相同的系統狀態。

為了保證事務的順序一致性,zookeeper采用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加 上了zxid。實現中zxid是一個64位的數字,它高32位是epoch用來標識leader關系是否改變,每次一個leader被選出來,它都會有一 個新的epoch,標識當前屬于那個leader的統治時期。第32位用于遞增計數。

epoch:可以理解為皇帝的年號,當新的皇帝leader產生后,將有一個新的epoch年號。

每個Server在工作過程中有三種狀態:

  • LOOKING:當前Server不知道leader是誰,正在搜尋。
  • LEADING:當前Server即為選舉出來的leader。
  • FOLLOWING:leader已經選舉出來,當前Server與之同步。

NO4:Zookeeper為什么要這么設計?

ZooKeeper設計的目的是提供高性能、高可用、順序一致性的分布式協調服務、保證數據最終一致性。

高性能(簡單的數據模型)

  • 采用樹形結構組織數據節點;
  • 全量數據節點,都存儲在內存中;
  • Follower 和 Observer 直接處理非事務請求;

高可用(構建集群)

  • 半數以上機器存活,服務就能正常運行
  • 自動進行 Leader 選舉

順序一致性(事務操作的順序)

  • 每個事務請求,都會轉發給 Leader 處理
  • 每個事務,會分配全局唯一的遞增id(zxid,64位:epoch + 自增 id)

最終一致性

  • 通過提議投票方式,保證事務提交的可靠性
  • 提議投票方式,只能保證 Client 收到事務提交成功后,半數以上節點能夠看到最新數據

NO5:你知道Zookeeper中有哪些角色?

系統模型:

Zookeeper面試常見的11個連環炮

領導者(leader)

Leader服務器為客戶端提供讀服務和寫服務。負責進行投票的發起和決議,更新系統狀態。

學習者(learner)

  • 跟隨者(follower) Follower服務器為客戶端提供讀服務,參與Leader選舉過程,參與寫操作“過半寫成功”策略。
  • 觀察者(observer) Observer服務器為客戶端提供讀服務,不參與Leader選舉過程,不參與寫操作“過半寫成功”策略。用于在不影響寫性能的前提下提升集群的讀性能。

客戶端(client):服務請求發起方。

NO6:你熟悉Zookeeper節點ZNode和相關屬性嗎?

節點有哪些類型?

Znode兩種類型:

  • 持久的(persistent):客戶端和服務器端斷開連接后,創建的節點不刪除(默認)。
  • 短暫的(ephemeral):客戶端和服務器端斷開連接后,創建的節點自己刪除。

Znode有四種形式:

  • 持久化目錄節點(PERSISTENT):客戶端與Zookeeper斷開連接后,該節點依舊存在持久化順序編號目錄節點(PERSISTENT_SEQUENTIAL)
  • 客戶端與Zookeeper斷開連接后,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號:臨時目錄節點(EPHEMERAL)
  • 客戶端與Zookeeper斷開連接后,該節點被刪除:臨時順序編號目錄節點(EPHEMERAL_SEQUENTIAL)
  • 客戶端與Zookeeper斷開連接后,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號

「注意」:創建ZNode時設置順序標識,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   

屬性說明

Zookeeper面試常見的11個連環炮

NO7:請簡述Zookeeper的選主流程

Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab協議。Zab協議有兩種模式,它們分別是恢復模式(選主)和廣播模式(同步)。當服務啟動或者在領導者崩潰后,Zab就進入了恢復模式,當領導者被選舉出來,且大多數Server完成了和leader的狀態同步以后,恢復模式就結束了。狀態同步保證了leader和Server具有相同的系統狀態。leader選舉是保證分布式數據一致性的關鍵。

出現選舉主要是兩種場景:初始化、leader不可用。

當zk集群中的一臺服務器出現以下兩種情況之一時,就會開始leader選舉。

  • 服務器初始化啟動。
  • 服務器運行期間無法和leader保持連接。

而當一臺機器進入leader選舉流程時,當前集群也可能處于以下兩種狀態。

  • 集群中本來就已經存在一個leader。
  • 集群中確實不存在leader。

首先第一種情況,通常是集群中某一臺機器啟動比較晚,在它啟動之前,集群已經正常工作,即已經存在一臺leader服務器。當該機器試圖去選舉leader時,會被告知當前服務器的leader信息,它僅僅需要和leader機器建立連接,并進行狀態同步即可。

重點是leader不可用了,此時的選主制度。

投票信息中包含兩個最基本的信息。

  • sid:即server id,用來標識該機器在集群中的機器序號。
  • zxid:即zookeeper事務id號。

ZooKeeper狀態的每一次改變, 都對應著一個遞增的Transaction id,,該id稱為zxid.,由于zxid的遞增性質, 如果zxid1小于zxid2,,那么zxid1肯定先于zxid2發生。創建任意節點,或者更新任意節點的數據, 或者刪除任意節點,都會導致Zookeeper狀態發生改變,從而導致zxid的值增加。

以(sid,zxid)的形式來標識一次投票信息。

例如:如果當前服務器要推舉sid為1,zxid為8的服務器稱為leader,那么投票信息可以表示為(1,8)

集群中的每臺機器發出自己的投票后,也會接受來自集群中其他機器的投票。每臺機器都會根據一定的規則,來處理收到的其他機器的投票,以此來決定是否需要變更自己的投票。

規則如下:

  • 初始階段,都會給自己投票。
  • 當接收到來自其他服務器的投票時,都需要將別人的投票和自己的投票進行pk,規則如下:

優先檢查zxid。zxid比較大的服務器優先作為leader。如果zxid相同的話,就比較sid,sid比較大的服務器作為leader。

NO8:有了解過watch機制嗎?

簡單地說:client端會對某個znode 注冊一個watcher事件,當該znode發生變化時,這些client會收到ZooKeeper的通知,然后client可以根據znode變化來做出業務上的改變等。

Zookeeper面試常見的11個連環炮

經典使用場景:zookeeper為dubbo提供服務的注冊與發現,作為注冊中心,但是大家有沒有想過zookeeper為啥能夠實現服務的注冊與發現嗎?

這就不得不說一下zookeeper的靈魂 Watcher(監聽者)。

什么是watcher?

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

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

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

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

watcher有哪些類型?

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

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

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

watcher有什么特性?

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

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

NO9:那你說說Zookeeper有哪些應用場景?

數據發布與訂閱

發布與訂閱即所謂的配置管理,顧名思義就是將數據發布到ZooKeeper節點上,供訂閱者動態獲取數據,實現配置信息的集中式管理和動態更新。例如全局的配置信息,地址列表等就非常適合使用。

數據發布/訂閱的一個常見的場景是配置中心,發布者把數據發布到 ZooKeeper 的一個或一系列的節點上,供訂閱者進行數據訂閱,達到動態獲取數據的目的。

  • 配置信息一般有幾個特點:
  • 數據量小的KV
  • 數據內容在運行時會發生動態變化
  • 集群機器共享,配置一致
Zookeeper面試常見的11個連環炮

ZooKeeper 采用的是推拉結合的方式。

  • 推: 服務端會推給注冊了監控節點的客戶端 Wathcer 事件通知
  • 答: 客戶端獲得通知后,然后主動到服務端拉取最新的數據

命名服務

作為分布式命名服務,命名服務是指通過指定的名字來獲取資源或者服務的地址,利用ZooKeeper創建一個全局的路徑,這個路徑就可以作為一個名字,指向集群中的集群,提供的服務的地址,或者一個遠程的對象等等。

統一命名服務的命名結構圖如下所示:

Zookeeper面試常見的11個連環炮

1、在分布式環境下,經常需要對應用/服務進行統一命名,便于識別不同服務。

類似于域名與IP之間對應關系,IP不容易記住,而域名容易記住。

通過名稱來獲取資源或服務的地址,提供者等信息。

2、按照層次結構組織服務/應用名稱。

可將服務名稱以及地址信息寫到ZooKeeper上,客戶端通過ZooKeeper獲取可用服務列表類。

配置管理

程序分布式的部署在不同的機器上,將程序的配置信息放在ZooKeeper的znode下,當有配置發生改變時,也就是znode發生變化時,可以通過改變zk中某個目錄節點的內容,利用watch通知給各個客戶端 從而更改配置。

ZooKeeper配置管理結構圖如下所示:

Zookeeper面試常見的11個連環炮

1、分布式環境下,配置文件管理和同步是一個常見問題。

一個集群中,所有節點的配置信息是一致的,比如 Hadoop 集群。

對配置文件修改后,希望能夠快速同步到各個節點上。

2、配置管理可交由ZooKeeper實現。

可將配置信息寫入ZooKeeper上的一個Znode。

各個節點監聽這個Znode。

一旦Znode中的數據被修改,ZooKeeper將通知各個節點。

集群管理

所謂集群管理就是:是否有機器退出和加入、選舉master。

集群管理主要指集群監控和集群控制兩個方面。前者側重于集群運行時的狀態的收集,后者則是對集群進行操作與控制。開發和運維中,面對集群,經常有如下需求:

  • 希望知道集群中究竟有多少機器在工作
  • 對集群中的每臺機器的運行時狀態進行數據收集
  • 對集群中機器進行上下線的操作

集群管理結構圖如下所示:

Zookeeper面試常見的11個連環炮
  • 分布式環境中,實時掌握每個節點的狀態是必要的,可根據節點實時狀態做出一些調整。
  • 可交由ZooKeeper實現。

可將節點信息寫入ZooKeeper上的一個Znode。

監聽這個Znode可獲取它的實時狀態變化。

3、典型應用

Hbase中Master狀態監控與選舉。

利用ZooKeeper的強一致性,能夠保證在分布式高并發情況下節點創建的全局唯一性,即:同時有多個客戶端請求創建 /currentMaster 節點,最終一定只有一個客戶端請求能夠創建成功

分布式通知與協調

1、分布式環境中,經常存在一個服務需要知道它所管理的子服務的狀態。

  • a)NameNode需知道各個Datanode的狀態。
  • b)JobTracker需知道各個TaskTracker的狀態。

2、心跳檢測機制可通過ZooKeeper來實現。

3、信息推送可由ZooKeeper來實現,ZooKeeper相當于一個發布/訂閱系統。

分布式鎖

處于不同節點上不同的服務,它們可能需要順序地訪問一些資源,這里需要一把分布式的鎖。

  • 分布式鎖具有以下特性:寫鎖、讀鎖、時序鎖。
  • 寫鎖:在zk上創建的一個臨時的無編號的節點。由于是無序編號,在創建時不會自動編號,導致只能客戶端有一個客戶端得到鎖,然后進行寫入。
  • 讀鎖:在zk上創建一個臨時的有編號的節點,這樣即使下次有客戶端加入是同時創建相同的節點時,他也會自動編號,也可以獲得鎖對象,然后對其進行讀取。
  • 時序鎖:在zk上創建的一個臨時的有編號的節點根據編號的大小控制鎖。

分布式隊列

分布式隊列分為兩種:

1、當一個隊列的成員都聚齊時,這個隊列才可用,否則一直等待所有成員到達,這種是同步隊列。

  • a)一個job由多個task組成,只有所有任務完成后,job才運行完成。
  • b)可為job創建一個/job目錄,然后在該目錄下,為每個完成的task創建一個臨時的Znode,一旦臨時節點數目達到task總數,則表明job運行完成。

2、隊列按照FIFO方式進行入隊和出隊操作,例如實現生產者和消費者模型。

NO10:知道監聽器的原理嗎?

Zookeeper面試常見的11個連環炮
  1. 創建一個Main()線程。
  2. 在Main()線程中創建兩個線程,一個負責網絡連接通信(connect),一個負責監聽(listener)。
  3. 通過connect線程將注冊的監聽事件發送給Zookeeper。
  4. 將注冊的監聽事件添加到Zookeeper的注冊監聽器列表中。
  5. Zookeeper監聽到有數據或路徑發生變化時,把這條消息發送給Listener線程。
  6. Listener線程內部調用process()方法。

NO11:為什么Zookeeper集群的數目,一般為奇數個?

首先需要明確zookeeper選舉的規則:leader選舉,要求可用節點數量 > 總節點數量/2。

比如:標記一個寫是否成功是要在超過一半節點發送寫請求成功時才認為有效。同樣,Zookeeper選擇領導者節點也是在超過一半節點同意時才有效。最后,Zookeeper是否正常是要根據是否超過一半的節點正常才算正常。這是基于CAP的一致性原理。

zookeeper有這樣一個特性:集群中只要有過半的機器是正常工作的,那么整個集群對外就是可用的。

也就是說如果有2個zookeeper,那么只要有1個死了zookeeper就不能用了,因為1沒有過半,所以2個zookeeper的死亡容忍度為0;

同理,要是有3個zookeeper,一個死了,還剩下2個正常的,過半了,所以3個zookeeper的容忍度為1;

同理:

  • 2->0;兩個zookeeper,最多0個zookeeper可以不可用。
  • 3->1;三個zookeeper,最多1個zookeeper可以不可用。
  • 4->1;四個zookeeper,最多1個zookeeper可以不可用。
  • 5->2;五個zookeeper,最多2個zookeeper可以不可用。
  • 6->2;兩個zookeeper,最多0個zookeeper可以不可用。
  • ....

會發現一個規律,2n和2n-1的容忍度是一樣的,都是n-1,所以為了更加高效,何必增加那一個不必要的zookeeper呢。

zookeeper的選舉策略也是需要半數以上的節點同意才能當選leader,如果是偶數節點可能導致票數相同的情況。

總結

很多面試官,面試套路基本就是這個,從背景到原理,到架構體系,再到Zookeeper固有特點、最后要求面試者能說出Zookeeper的實際應用場景。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2021-01-18 08:25:44

Zookeeper面試分布式

2022-09-22 18:31:24

Kafka

2023-06-07 15:29:33

MySQL事務面試

2021-12-14 07:40:07

多線程面試CPU

2021-12-07 08:31:48

線程池中間件開源

2020-04-26 09:48:55

Redis面試

2013-12-03 10:11:41

LinuxLinux面試題

2021-10-26 15:56:57

kafka數據平臺,

2022-11-06 15:35:53

機器學習算法編碼

2020-11-02 12:47:56

性能優化

2017-02-10 10:10:46

Hadoop面試數據倉庫

2014-09-02 11:04:49

PHP面試題PHP

2021-06-04 14:38:12

網絡通信TCP揮手

2013-05-22 10:04:18

Hibernate面試問題

2020-02-20 13:39:24

MySQL索引數據庫

2020-07-17 20:35:41

Redis數據庫緩存

2021-02-10 07:38:43

Node.js后端框架

2023-05-18 15:34:52

JavaScript開發前端

2011-05-10 15:30:22

SEO

2015-09-29 09:24:22

Node.js面試題
點贊
收藏

51CTO技術棧公眾號

日韩高清国产精品| 欧美极品少妇全裸体| 99热一区二区| 福利视频在线| 91网站最新网址| 国产精品白丝jk喷水视频一区| 欧美mv和日韩mv国产网站| 91精品国产自产在线观看永久| 欧美日韩国产精品一区二区三区| 北条麻妃在线一区二区免费播放 | 亚洲第一导航| 亚洲精品一区二区三区四区| 久热精品视频| 欧美巨大黑人极品精男| 人妻少妇精品视频一区二区三区| h1515四虎成人| 午夜视频一区二区三区| 在线电影看在线一区二区三区| 噜噜噜久久,亚洲精品国产品| 日韩福利电影在线| 国内精品久久久久影院 日本资源| 无码人妻丰满熟妇啪啪欧美| 国产精品毛片av| 欧美日韩aaaaaa| 久章草在线视频| 男女视频在线| 国产精品免费视频观看| 久久涩涩网站| 亚洲精品国产av| 精品国产av色一区二区深夜久久| 国模雨婷捆绑高清在线| 国产精品人妖ts系列视频| 国产尤物99| 亚洲经典一区二区三区| 久久99热狠狠色一区二区| 日本高清视频精品| 欧美不卡视频在线观看| 极品av少妇一区二区| 久久中文字幕视频| 亚洲毛片亚洲毛片亚洲毛片| 亚洲区小说区图片区qvod按摩| 精品国产一区二区三区久久久蜜月| 亚洲综合欧美激情| 欧美性suv| 一本色道**综合亚洲精品蜜桃冫| 欧美激情视频免费看| 欧美bbbxxxxx| 亚洲专区一二三| 中文字幕の友人北条麻妃| 麻豆视频网站在线观看| 中文字幕成人av| 亚洲成人午夜在线| 国产高清一级毛片在线不卡| 久久久久久**毛片大全| 日本视频精品一区| 蝌蚪视频在线播放| 久久精品男人的天堂| 日韩成人av网站| 日本黄色一区二区三区| 9久草视频在线视频精品| 国产女主播一区二区| 欧美 日韩 国产 成人 在线 91| 国产成人精品aa毛片| 成人在线免费网站| 黄色av中文字幕| k8久久久一区二区三区| 久久99精品久久久水蜜桃| 香蕉久久一区二区三区| 久久久精品日韩欧美| 日韩影片在线播放| 免费av网站在线观看| 一区二区三区中文字幕精品精品| 精品国产乱码久久久久久久久 | 4438x全国最大成人| 国产精品成人**免费视频| 日韩一区二区精品| 激情综合激情五月| 亚洲区小说区图片区qvod按摩| 在线电影欧美日韩一区二区私密| 亚洲AV成人无码精电影在线| 欧美日韩伊人| 97视频在线观看播放| 亚洲第一网站在线观看| 麻豆成人av在线| 91成人免费视频| 五月婷在线视频| 欧美国产日产图区| 日韩不卡一二区| 岛国av在线播放| 欧美网站大全在线观看| 韩国三级丰满少妇高潮| 日韩av三区| 中文字幕日韩专区| 欧美色图一区二区| 国产精品五区| 成人免费午夜电影| 色综合888| 亚洲欧美电影一区二区| 国产免费毛卡片| 精品视频在线播放一区二区三区| 亚洲韩国欧洲国产日产av| 99久久久无码国产精品衣服| 亚洲成人免费| 日本不卡免费高清视频| 欧美日韩亚洲免费| 五月婷婷六月婷婷| 久久久久毛片免费观看| 欧美日韩亚洲高清一区二区| 91成人在线观看喷潮蘑菇| 欧美热在线视频精品999| 久久久精品在线观看| 精品免费囯产一区二区三区 | 东京干手机福利视频| 欧美高清在线精品一区| 亚洲美免无码中文字幕在线| 成人精品在线| 亚洲人成人99网站| 黄色一级片在线免费观看| 日本视频中文字幕一区二区三区| 国产久一道中文一区| 中文日本在线观看| 欧美日韩日本国产| 久久久久亚洲av无码专区首jn| 成人a'v在线播放| 2019最新中文字幕| 可以免费看毛片的网站| 亚洲天堂网中文字| 亚洲高清免费在线观看| 久久不卡国产精品一区二区| 97精品久久久| 人人妻人人澡人人爽久久av| 亚洲黄色录像片| 波多野结衣在线免费观看| 久久人人99| 国产精品视频yy9099| 欧美xxx.com| 欧美日韩国产页| 精品熟女一区二区三区| 韩国精品一区二区三区| 国产精品自拍偷拍视频| 9色在线视频| 欧美亚洲动漫制服丝袜| 日韩av在线看免费观看| 新狼窝色av性久久久久久| 国产精品日韩一区二区| av电影免费在线看| 国产午夜精品一区在线观看| 色哟哟精品一区| 久久精品一区二区免费播放 | 亚洲AV无码成人片在线观看 | 九九热精品视频在线| 9久草视频在线视频精品| 激情五月宗合网| 欧美综合自拍| 国产精品99蜜臀久久不卡二区| 美州a亚洲一视本频v色道| 日韩欧美999| 国产精品毛片一区二区| 视频一区在线视频| 午夜视频久久久| 亚洲伊人伊成久久人综合网| 欧美成在线视频| 噜噜噜久久,亚洲精品国产品| 午夜精品久久久久久久99水蜜桃| 99re久久精品国产| 日韩黄色免费电影| 亚洲视频电影| 日韩免费高清视频网站| 欧美激情在线有限公司| 亚洲欧美自偷自拍| 欧美性xxxxxx少妇| 99鲁鲁精品一区二区三区| 国产福利一区二区三区视频在线| 女人帮男人橹视频播放| 亚洲精品推荐| 国产日韩欧美中文| 羞羞视频在线观看不卡| 日韩电影中文 亚洲精品乱码| 在线观看污污网站| 一本久久青青| 亚洲h在线观看| 日本护士做爰视频| 日韩精品1区2区3区| 视频一区在线免费观看| 精品国产亚洲日本| 91av在线精品| av天在线观看| 精品国产欧美一区二区| 国产农村妇女aaaaa视频| 国产精品夫妻自拍| 五月天丁香社区| 日韩在线卡一卡二| 伊人再见免费在线观看高清版| 精品按摩偷拍| 国产精品久久久久久久天堂| a毛片在线播放| 亚洲社区在线观看| 精品久久久中文字幕人妻| 欧美午夜www高清视频| 小嫩苞一区二区三区| 99天天综合性| 中文字幕第一页在线视频| 99伊人成综合| 精品嫩模一区二区三区| 久久99视频| 豆国产97在线| 四虎影视精品永久在线观看| 4438全国亚洲精品在线观看视频| 欧美jizzhd欧美| 亚洲精品一区av在线播放| 国产熟女精品视频| 色综合天天综合给合国产| 欧美成人三级视频| 国产精品蜜臀av| 亚洲人人夜夜澡人人爽| 成人综合在线观看| 日韩一级大片在线| 国产精品天天干| 成人性视频免费网站| 免费成年人高清视频| 六月天综合网| 成人一区二区免费视频| 欧美国产三级| 亚洲人成网站在线观看播放| 亚洲黄页网站| 国产一级精品aaaaa看| 日韩精品一级| 91网在线免费观看| 日韩专区视频| 国产精品旅馆在线| 久九九久频精品短视频| 91成人在线观看国产| 麻豆av在线免费观看| 欧美美女操人视频| 快射视频在线观看| 最近更新的2019中文字幕| 国产视频福利在线| 亚洲女成人图区| 色综合成人av| 国产视频在线观看一区二区| 五十路在线视频| 亚洲国产精品成人精品| 性一交一乱一色一视频麻豆| 欧美一级黄色大片| 99热这里只有精品99| 91精品国产色综合久久不卡电影 | 丝袜美腿亚洲色图| 丝袜老师办公室里做好紧好爽| 亚洲免费观看| 日韩精品视频一区二区在线观看| 在线日本高清免费不卡| 欧美国产日韩激情| 亚洲精品裸体| 伊人成色综合网| 麻豆影视国产在线观看| 国产精品入口麻豆九色| 成熟人妻av无码专区| 中文字幕第一区综合| 欧美aaa级片| 日韩美女视频一区| 亚洲欧美小视频| 亚洲影视在线播放| 日干夜干天天干| 色天使久久综合网天天| 亚洲免费视频二区| 宅男在线国产精品| 亚洲精品久久久久avwww潮水| 亚洲福利精品在线| 男人天堂亚洲二区| 日韩视频中文字幕| 在线黄色网页| 91黄色8090| 日本精品另类| 97免费高清电视剧观看| 国产女人18毛片水真多18精品| 免费不卡亚洲欧美| 日韩成人精品一区| 成年人视频网站免费| 久久裸体视频| 午夜视频在线观| 成人高清免费观看| 日韩不卡av在线| 亚洲综合在线视频| 色屁屁影院www国产高清麻豆| 欧美日韩国产免费一区二区| 亚洲AV无码精品色毛片浪潮| 日韩国产精品亚洲а∨天堂免| 3p视频在线观看| 欧美极品在线视频| 91p九色成人| 国产精品theporn88| 国产永久精品大片wwwapp| 韩国黄色一级大片| 蜜桃伊人久久| 人妻少妇偷人精品久久久任期| 91亚洲男人天堂| 亚洲日本japanese丝袜| 天天操天天舔天天干| 亚洲精品日韩欧美| 黄色网页网址在线免费| 7m第一福利500精品视频| 欧美网站免费| 精品视频免费观看| 亚洲人metart人体| 日本三区在线观看| 成人av在线资源网站| 日韩亚洲欧美中文字幕| 精品国产精品自拍| av在线免费在线观看| 亚洲午夜精品久久久久久性色 | 国产精品v片在线观看不卡| 亚洲成人毛片| 欧洲av一区| 精品91视频| 亚洲一区二区三区四区精品| 国产欧美日韩三级| 一级片免费网址| 日韩亚洲国产中文字幕欧美| av一区在线观看| 日本久久久久久久久| 2020国产精品极品色在线观看| 亚洲制服中文| 日本网站在线观看一区二区三区| 日本黄色动态图| 一级特黄大欧美久久久| 91精品国产色综合久久不8| 亚洲欧美日韩网| 午夜影院在线播放| 国产精品v欧美精品v日韩| 欧美韩国一区| 欧洲美女亚洲激情| 国产精品国产三级国产普通话蜜臀| 精品人妻一区二区色欲产成人| 亚洲精品一区二区三区99| 污污片在线免费视频| 亚洲在线第一页| 一区二区三区在线电影| 一本一道久久a久久综合蜜桃| 中文字幕 久热精品 视频在线| 无码人妻一区二区三区免费| 亚洲另类欧美自拍| 裤袜国产欧美精品一区| 欧美专区一二三 | 亚洲sss视频在线视频| 超碰在线播放97| 欧美激情综合色| 久久草在线视频| 欧美二区在线视频| 91麻豆国产香蕉久久精品| 制服.丝袜.亚洲.中文.综合懂色| 亚洲国产天堂久久国产91| 激情视频网站在线播放色| 精品乱码一区二区三区| 亚洲激情一区| 精品夜夜澡人妻无码av | 欧美黑人xxxx| 国产美女撒尿一区二区| 成人一对一视频| 久久久蜜臀国产一区二区| 国产免费一级视频| 伊人伊成久久人综合网小说| 国产成人免费精品| 日本久久高清视频| 粉嫩在线一区二区三区视频| 日韩精品一区二区在线播放 | 欧美日韩在线看片| 444亚洲人体| 亚洲激情在线| 欧美成人另类视频| 欧美一区二区性放荡片| 成人影音在线| 欧洲一区二区在线| 韩国三级中文字幕hd久久精品| 欧美日韩精品在线观看视频| 亚洲国产中文字幕久久网| 亚洲不卡系列| 日本道在线视频| 91美女片黄在线观看91美女| 亚洲国产无线乱码在线观看| 久久大大胆人体| 欧美午夜寂寞| 中文字幕中文在线| 婷婷久久综合九色国产成人| √天堂资源地址在线官网| 99免费在线观看视频| 亚洲欧美日韩精品一区二区| 影音先锋男人看片资源| 欧美一级久久久| 欧美亚洲大片| 欧美一级中文字幕| 91蜜桃视频在线| 国产福利免费视频| 国产精品18久久久久久首页狼 | 在线观看欧美理论a影院| 一区二区三区四区毛片| 精品动漫一区二区| 欧洲美女少妇精品| 美日韩精品免费| 国产一区二区网址| 超碰在线观看91|