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

怎么用Redis分布式鎖才能確保萬無一失?

數據庫 其他數據庫 分布式 Redis
分布式系統設計是實現復雜性和收益的平衡,既要盡可能地安全可靠,也要避免過度設計。Redlock 確實能夠提供更安全的分布式鎖,但也是有代價的,需要更多的 Redis 節點。

[[375093]]

作者介紹

冷正磊,2018年2月加入去哪兒網 DBA 團隊,主要負責機票業務的 MySQL 和 Redis 數據庫的運維管理工作,以及數據庫自動化運維平臺部分功能的開發工作,對數據庫技術具有濃厚興趣,具有多年 MySQL 和 Redis 運維管理和性能優化經驗。

一、背景

我們日常在電商網站購物時經常會遇到一些高并發的場景,例如電商 App 上經常出現的秒殺活動、限量優惠券搶購,還有我們去哪兒網的火車票搶票系統等,這些場景有一個共同特點就是訪問量激增,雖然在系統設計時會通過限流、異步、排隊等方式優化,但整體的并發還是平時的數倍以上,為了避免并發問題,防止庫存超賣,給用戶提供一個良好的購物體驗,這些系統中都會用到鎖的機制。

對于單進程的并發場景,可以使用編程語言及相應的類庫提供的鎖,如 Java 中的 synchronized 語法以及 ReentrantLock 類等,避免并發問題。

如果在分布式場景中,實現不同客戶端的線程對代碼和資源的同步訪問,保證在多線程下處理共享數據的安全性,就需要用到分布式鎖技術。

那么何為分布式鎖呢?分布式鎖是控制分布式系統或不同系統之間共同訪問共享資源的一種鎖實現,如果不同的系統或同一個系統的不同主機之間共享了某個資源時,往往需要互斥來防止彼此干擾保證一致性。

一個相對安全的分布式鎖,一般需要具備以下特征:

  • 互斥性。互斥是鎖的基本特征,同一時刻鎖只能被一個線程持有,執行臨界區操作。
  • 超時釋放。通過超時釋放,可以避免死鎖,防止不必要的線程等待和資源浪費,類似于 MySQL 的 InnoDB 引擎中的 innodblockwait_timeout 參數配置。
  • 可重入性。一個線程在持有鎖的情況可以對其再次請求加鎖,防止鎖在線程執行完臨界區操作之前釋放。
  • 高性能和高可用。加鎖和釋放鎖的過程性能開銷要盡可能的低,同時也要保證高可用,防止分布式鎖意外失效。

可以看出實現分布式鎖,并不是鎖住資源就可以了,還需要滿足一些額外的特征,避免出現死鎖、鎖失效等問題。

二、分布式鎖的實現方式

目前實現分布式鎖的方式有很多,常見的主要有:

  • Memcached 分布式鎖

利用 Memcached 的 add 命令。此命令是原子性操作,只有在 key 不存在的情況下,才能 add 成功,也就意味著線程得到了鎖。

  • Zookeeper 分布式鎖

利用 Zookeeper 的順序臨時節點,來實現分布式鎖和等待隊列。ZooKeeper 作為一個專門為分布式應用提供方案的框架,它提供了一些非常好的特性,如 ephemeral 類型的 znode 自動刪除的功能,同時 ZooKeeper 還提供 watch 機制,可以讓分布式鎖在客戶端用起來就像一個本地的鎖一樣:加鎖失敗就阻塞住,直到獲取到鎖為止。

  • Chubby

Google 公司實現的粗粒度分布式鎖服務,有點類似于 ZooKeeper,但也存在很多差異。Chubby 通過 sequencer 機制解決了請求延遲造成的鎖失效的問題。

  • Redis 分布式鎖

基于 Redis 單機實現的分布式鎖,其方式和 Memcached 的實現方式類似,利用 Redis 的 SETNX 命令,此命令同樣是原子性操作,只有在 key 不存在的情況下,才能 set 成功。而基于 Redis 多機實現的分布式鎖Redlock,是 Redis 的作者 antirez 為了規范 Redis 分布式鎖的實現,提出的一個更安全有效的實現機制。

本文主要討論分析基于Redis的分布式鎖的幾種實現方式以及存在的問題。

三、Redis分布式鎖

使用 Redis 作為分布式鎖,本質上要實現的目標就是一個進程在 Redis 里面占據了僅有的一個“茅坑”,當別的進程也想來占坑時,發現已經有人蹲在那里了,就只好放棄或者等待稍后再試。

目前基于 Redis 實現分布式鎖主要有兩大類,一類是基于單機,另一類是基于 Redis 多機,不管是哪種實現方式,均需要實現加鎖、解鎖、鎖超時這三個分布式鎖的核心要素。

1、基于Redis單機實現的分布式鎖

1)使用 SETNX 指令

最簡單的加鎖方式就是直接使用 Redis 的 SETNX 指令,該指令只在 key 不存在的情況下,將 key 的值設置為 value,若 key 已經存在,則 SETNX 命令不做任何動作。key 是鎖的唯一標識,可以按照業務需要鎖定的資源來命名。

比如在某商城的秒殺活動中對某一商品加鎖,那么 key 可以設置為 lock_resource_id ,value 可以設置為任意值,在資源使用完成后,使用 DEL 刪除該 key 對鎖進行釋放,整個過程如下:

很顯然,這種獲取鎖的方式很簡單,但也存在一個問題,就是我們上面提到的分布式鎖三個核心要素之一的鎖超時問題,即如果獲得鎖的進程在業務邏輯處理過程中出現了異常,可能會導致 DEL 指令一直無法執行,導致鎖無法釋放,該資源將會永遠被鎖住。

所以,在使用 SETNX 拿到鎖以后,必須給 key 設置一個過期時間,以保證即使沒有被顯式釋放,在獲取鎖達到一定時間后也要自動釋放,防止資源被長時間獨占。由于 SETNX 不支持設置過期時間,所以需要額外的 EXPIRE 指令,整個過程如下:

這樣實現的分布式鎖仍然存在一個嚴重的問題,由于 SETNX 和 EXPIRE 這兩個操作是非原子性的, 如果進程在執行 SETNX 和 EXPIRE 之間發生異常,SETNX 執行成功,但 EXPIRE 沒有執行,導致這把鎖變得“長生不老”,這種情況就可能出現前文提到的鎖超時問題,其他進程無法正常獲取鎖。

2)使用 SET 擴展指令

為了解決 SETNX 和 EXPIRE 兩個操作非原子性的問題,可以使用 Redis 的 SET 指令的擴展參數,使得 SETNX 和 EXPIRE 這兩個操作可以原子執行,整個過程如下:

在這個 SET 指令中:

  • NX 表示只有當 lock_resource_id 對應的 key 值不存在的時候才能 SET 成功。保證了只有第一個請求的客戶端才能獲得鎖,而其它客戶端在鎖被釋放之前都無法獲得鎖。
  • EX 10 表示這個鎖10秒鐘后會自動過期,業務可以根據實際情況設置這個時間的大小。

但是這種方式仍然不能徹底解決分布式鎖超時問題:

  • 鎖被提前釋放。假如線程 A 在加鎖和釋放鎖之間的邏輯執行的時間過長(或者線程 A 執行過程中被堵塞),以至于超出了鎖的過期時間后進行了釋放,但線程 A 在臨界區的邏輯還沒有執行完,那么這時候線程 B 就可以提前重新獲取這把鎖,導致臨界區代碼不能嚴格的串行執行。
  • 鎖被誤刪。假如以上情形中的線程A執行完后,它并不知道此時的鎖持有者是線程 B,線程A會繼續執行 DEL 指令來釋放鎖,如果線程 B 在臨界區的邏輯還沒有執行完,線程 A 實際上釋放了線程 B 的鎖。

為了避免以上情況,建議不要在執行時間過長的場景中使用 Redis 分布式鎖,同時一個比較安全的做法是在執行 DEL 釋放鎖之前對鎖進行判斷,驗證當前鎖的持有者是否是自己。

具體實現就是在加鎖時將 value 設置為一個唯一的隨機數(或者線程 ID ),釋放鎖時先判斷隨機數是否一致,然后再執行釋放操作,確保不會錯誤地釋放其它線程持有的鎖,除非是鎖過期了被服務器自動釋放,整個過程如下:

但判斷 value 和刪除 key 是兩個獨立的操作,并不是原子性的,所以這個地方需要使用 Lua 腳本進行處理,因為 Lua 腳本可以保證連續多個指令的原子性執行。

基于 Redis 單節點的分布式鎖基本完成了,但是這并不是一個完美的方案,只是相對完全一點,因為它并沒有完全解決當前線程執行超時鎖被提前釋放后,其它線程乘虛而入的問題。

3)使用 Redisson 的分布式鎖

怎么能解決鎖被提前釋放這個問題呢?

可以利用鎖的可重入特性,讓獲得鎖的線程開啟一個定時器的守護線程,每 expireTime/3 執行一次,去檢查該線程的鎖是否存在,如果存在則對鎖的過期時間重新設置為 expireTime,即利用守護線程對鎖進行“續命”,防止鎖由于過期提前釋放。

當然業務要實現這個守護進程的邏輯還是比較復雜的,可能還會出現一些未知的問題。

目前互聯網公司在生產環境用的比較廣泛的開源框架 Redisson 很好地解決了這個問題,非常的簡便易用,且支持 Redis 單實例、Redis M-S、Redis Sentinel、Redis Cluster 等多種部署架構。

感興趣的朋友可以查閱下官方文檔或者源碼:

https://github.com/redisson/redisson/wiki

其實現原理如圖所示(圖中以 Redis 集群為例):

2、基于Redis多機實現的分布式鎖Redlock

以上幾種基于 Redis 單機實現的分布式鎖其實都存在一個問題,就是加鎖時只作用在一個 Redis 節點上,即使 Redis 通過 Sentinel 保證了高可用,但由于 Redis 的復制是異步的,Master 節點獲取到鎖后在未完成數據同步的情況下發生故障轉移,此時其他客戶端上的線程依然可以獲取到鎖,因此會喪失鎖的安全性。

整個過程如下:

  • 客戶端 A 從 Master 節點獲取鎖。
  • Master 節點出現故障,主從復制過程中,鎖對應的 key 沒有同步到 Slave 節點。
  • Slave升 級為 Master 節點,但此時的 Master 中沒有鎖數據。
  • 客戶端 B 請求新的 Master 節點,并獲取到了對應同一個資源的鎖。
  • 出現多個客戶端同時持有同一個資源的鎖,不滿足鎖的互斥性。

正因為如此,在 Redis 的分布式環境中,Redis 的作者 antirez 提供了 RedLock 的算法來實現一個分布式鎖,該算法大概是這樣的:

假設有 N(N>=5)個 Redis 節點,這些節點完全互相獨立,不存在主從復制或者其他集群協調機制,確保在這N個節點上使用與在 Redis 單實例下相同的方法獲取和釋放鎖。

獲取鎖的過程,客戶端應執行如下操作:

  • 獲取當前 Unix 時間,以毫秒為單位。
  • 按順序依次嘗試從5個實例使用相同的 key 和具有唯一性的 value(例如 UUID)獲取鎖。當向 Redis 請求獲取鎖時,客戶端應該設置一個網絡連接和響應超時時間,這個超時時間應該小于鎖的失效時間。例如鎖自動失效時間為10秒,則超時時間應該在5-50毫秒之間。這樣可以避免服務器端 Redis 已經掛掉的情況下,客戶端還在一直等待響應結果。如果服務器端沒有在規定時間內響應,客戶端應該盡快嘗試去另外一個 Redis 實例請求獲取鎖。
  • 客戶端使用當前時間減去開始獲取鎖時間(步驟1記錄的時間)就得到獲取鎖使用的時間。當且僅當從大多數(N/2+1,這里是3個節點)的 Redis 節點都取到鎖,并且使用的時間小于鎖失效時間時,鎖才算獲取成功。
  • 如果取到了鎖,key 的真正有效時間等于有效時間減去獲取鎖所使用的時間(步驟3計算的結果)。
  • 如果因為某些原因,獲取鎖失敗(沒有在至少N/2+1個 Redis 實例取到鎖或者取鎖時間已經超過了有效時間),客戶端應該在所有的 Redis 實例上進行解鎖(使用 Redis Lua 腳本)。

釋放鎖的過程相對比較簡單:客戶端向所有 Redis 節點發起釋放鎖的操作,包括加鎖失敗的節點,也需要執行釋放鎖的操作,antirez 在算法描述中特別強調這一點,這是為什么呢?

原因是可能存在某個節點加鎖成功后返回客戶端的響應包丟失了,這種情況在異步通信模型中是有可能發生的:客戶端向服務器通信是正常的,但反方向卻是有問題的。雖然對客戶端而言,由于響應超時導致加鎖失敗,但是對 Redis節點而言,SET 指令執行成功,意味著加鎖成功。因此,釋放鎖的時候,客戶端也應該對當時獲取鎖失敗的那些 Redis 節點同樣發起請求。

除此之外,為了避免 Redis 節點發生崩潰重啟后造成鎖丟失,從而影響鎖的安全性,antirez 還提出了延時重啟的概念,即一個節點崩潰后不要立即重啟,而是等待一段時間后再進行重啟,這段時間應該大于鎖的有效時間。

關于 Redlock 的更深層次的學習,感興趣的朋友可以查閱下官方文檔:https://redis.io/topics/distlock

四、總結

分布式系統設計是實現復雜性和收益的平衡,既要盡可能地安全可靠,也要避免過度設計。Redlock 確實能夠提供更安全的分布式鎖,但也是有代價的,需要更多的 Redis 節點。在實際業務中,一般使用基于單點的 Redis 實現分布式鎖就可以滿足絕大部分的需求,偶爾出現數據不一致的情況,可通過人工介入回補數據進行解決,正所謂“技術不夠,人工來湊”!。 

責任編輯:龐桂玉 來源: 搜狐
相關推薦

2019-06-25 08:46:04

Redis分布式鎖JVM

2013-02-01 10:48:52

2017-10-26 14:15:32

測試工具設計開發

2011-07-19 21:20:01

2021-06-22 06:13:05

私有云混合多云網絡架構

2020-02-07 10:14:07

程序員設計人生第一份工作

2013-01-06 10:57:03

2013-08-12 10:37:14

云服務云計算

2020-10-11 20:41:14

消息隊列數據技術

2016-11-28 15:54:17

聯想網盤

2022-02-07 19:28:02

LoRa廣域網5G

2022-01-06 10:58:07

Redis數據分布式鎖

2020-11-16 12:55:41

Redis分布式鎖Zookeeper

2019-07-16 09:22:10

RedisZookeeper分布式鎖

2010-07-30 15:41:05

無線路由器安全配置

2019-06-19 15:40:06

分布式鎖RedisJava

2025-06-18 16:40:06

網絡安全數據安全備份

2021-08-31 15:57:32

勒索軟件零信任網絡罪犯

2021-01-20 23:26:08

程序員編碼職業

2013-08-23 09:55:14

Windows 8.1
點贊
收藏

51CTO技術棧公眾號

欧美xxxxx少妇| 蜜臀av性久久久久蜜臀av| 波多野结衣家庭主妇| 国产精品久久久久久久| 欧美videos中文字幕| 69堂免费视频| 蜜桃av在线免费观看| 成人深夜福利app| 日韩av理论片| 免费麻豆国产一区二区三区四区| 婷婷综合福利| 91精品国产麻豆国产自产在线 | 自拍视频在线| 国产91综合一区在线观看| 日本久久中文字幕| 国产成人无码aa精品一区| 综合伊思人在钱三区| 91精品欧美福利在线观看| 黄色网页免费在线观看| 免费网站成人| 久久蜜桃av一区二区天堂 | 国产1区2区在线| 国产激情在线| 日本一区二区三级电影在线观看| av一区和二区| 一本色道久久综合熟妇| 国产日韩一区| 欧美寡妇偷汉性猛交| 国产日韩精品中文字无码| 精品伊人久久久| 欧美一区二区免费| jizz欧美性11| 欧美freesex| 午夜精品一区二区三区电影天堂 | 精品久久久久久中文字幕人妻最新| 91麻豆精品国产91久久久更新资源速度超快| 精品日韩中文字幕| 免费在线看黄色片| 污污影院在线观看| **性色生活片久久毛片| 日本精品一区二区三区不卡无字幕| 空姐吹箫视频大全| 国产成人综合在线| 91在线色戒在线| 亚洲一级视频在线观看| 久久一区二区三区超碰国产精品| 91精品国产成人| 国产精品.www| 伊人久久大香线蕉综合热线| 欧美精品日韩三级| 日韩一级片av| 亚洲欧美综合| 久精品免费视频| 日本a级片视频| 欧美激情第10页| 久久av在线看| 欧美日韩在线观看成人| 欧美福利专区| 欧美激情视频免费观看| 麻豆chinese极品少妇| 欧美片第1页综合| 欧美成人免费在线视频| 欧美激情精品久久| 国内成人在线| 欧美一级成年大片在线观看| 九九九在线观看| 日韩激情一二三区| 国产精品网站大全| 国产欧美一级片| 国产成人精品亚洲日本在线桃色| 国产精品欧美久久| 三级毛片在线免费看| 久久精品欧美一区二区三区不卡 | 欧美成人三区| 一区二区三区不卡在线观看 | 日韩高清中文字幕| 法国空姐电影在线观看| 日韩av密桃| 大量国产精品视频| 日韩精品一区二区三| 日韩福利电影在线观看| 国产区亚洲区欧美区| 精品二区在线观看| 97精品国产露脸对白| 日韩av大全| 超碰在线网址| 欧美日韩国产色视频| 手机在线免费观看毛片| 欧美二区观看| 亚洲美女精品成人在线视频| 日韩一区二区三区四区视频| 欧美日韩亚洲国产精品| 国产99在线|中文| 国产伦精品一区二区三区视频痴汉 | 韩国精品久久久999| 天天射天天干天天| 欧美最猛性xxxxx直播| 精品国产免费av| 成人福利片在线| 日韩一级成人av| 波多野结衣a v在线| 99久久九九| 97在线日本国产| 中文字幕在线一| 成人福利电影精品一区二区在线观看| 欧美精品一区二区视频 | 久久精品久久久久电影| 日本熟妇色xxxxx日本免费看| 日韩成人一级大片| 3d动漫啪啪精品一区二区免费| 三级视频在线| 洋洋成人永久网站入口| 日本www.色| 精品三级在线观看视频| 久久久精品国产亚洲| 成年人视频在线免费看| 国产酒店精品激情| 日本一区免费| 国产精品蜜臀| 欧美一区二区视频观看视频| 久久成人激情视频| 亚洲精品在线二区| 91中文在线视频| 国产福利小视频在线观看| 亚洲国产日韩a在线播放| 99re精彩视频| 精品国产一区二区三区香蕉沈先生 | 久久99国产精品99久久| 黄色大片在线播放| 欧美伊人久久久久久午夜久久久久| 欧亚乱熟女一区二区在线| 亚洲不卡av不卡一区二区| 国产精品吊钟奶在线| 欧美亚洲日本| 同产精品九九九| 亚洲免费观看在线| 欧美日韩国产欧| 91亚洲精品久久久| 日韩伦理在线电影| 欧美三区在线观看| www色com| 麻豆精品一区二区av白丝在线| 欧美精品123| 永久免费毛片在线播放| 亚洲国产精品va在看黑人| 欧美人妻精品一区二区免费看| 激情小说亚洲一区| 一本—道久久a久久精品蜜桃| 成人国产精选| 最近中文字幕mv在线一区二区三区四区 | 91成人观看| 91精品综合久久久久久五月天| 色哟哟免费在线观看| 欧美日韩国产a| 久久噜噜色综合一区二区| 美女在线视频一区| 亚洲午夜精品一区二区| 久久av影院| xxx一区二区| 国产人妖一区二区三区| 亚洲免费观看在线视频| 最好看的中文字幕| 精品动漫av| 久久一区二区三区av| 香蕉成人av| www.久久久久久.com| 国产精品一区二区黑人巨大| 亚洲乱码国产乱码精品精可以看 | 久久精品一区八戒影视| 爆乳熟妇一区二区三区霸乳| 欧美日一区二区| 成人美女av在线直播| 2024最新电影免费在线观看| 精品久久久久99| 亚洲 欧美 日韩 综合| 国产亚洲婷婷免费| 日韩欧美国产片| 欧美日韩一区自拍| 久久青青草综合| 国产精品黄色片| 色综合视频一区中文字幕| 四虎在线视频免费观看| 色狠狠一区二区三区香蕉| 美国黄色片视频| www.爱久久.com| 午夜免费高清视频| 欧美精品麻豆| 日本不卡一区| 亚洲免费一区三区| 欧美综合一区第一页| 黄色在线播放网站| 日韩av在线免费观看一区| 一级全黄少妇性色生活片| 亚洲一区免费观看| 特级西西www444人体聚色| 国产精品一区二区三区99| 久久久999视频| 91成人免费| 欧美日韩在线一二三| 久久伊人久久| 国产成人综合精品在线| 青草av在线| 在线播放日韩欧美| 欧洲精品久久一区二区| 欧美日韩亚洲国产综合| 日本网站免费观看| 亚洲欧美自拍偷拍| 四虎永久免费在线观看| 成人午夜伦理影院| 欧美一级xxxx| 日韩精品高清不卡| 一卡二卡三卡视频| 99久久这里只有精品| 欧美婷婷久久| 国产欧美一区二区三区米奇| 91精品久久久久久久久久久久久久 | 国产激情久久久久| 1234区中文字幕在线观看| 日韩中文在线中文网三级| 视频福利在线| 欧美精品一区二区三区在线播放 | 精品久久久久久久人人人人传媒| 在线免费看毛片| 色综合久久综合网欧美综合网 | 欧美性猛交xxxx免费看漫画| 老湿机69福利| 国产精品传媒入口麻豆| 国产精品亚洲无码| 99视频一区二区| 极品白嫩的小少妇| 国产v日产∨综合v精品视频| 国产欧美一区二| 蜜桃av噜噜一区二区三区小说| 日韩av片在线看| 亚洲美女色禁图| 成人免费播放器| 国产综合久久| 999久久欧美人妻一区二区| 亚欧美无遮挡hd高清在线视频| 日本免费高清不卡| 国产一区二区三区站长工具| 欧美aaaaa喷水| 西野翔中文久久精品字幕| 精品乱码一区二区三区| 丁香婷婷成人| 国产一区二区无遮挡| 理论片一区二区在线| 国产精品久久久久久久免费大片| 一区二区三区免费在线看| 亚洲最大福利网站| 日韩一二三区| 国产精选在线观看91| 精品午夜电影| 欧美日韩在线播放一区二区| 精品国产91久久久久久浪潮蜜月| 欧美在线3区| 精品国产91乱码一区二区三区四区| 日韩精品国内| 国产高清一区二区| 日韩不卡视频一区二区| 欧美视频一区| 男女啪啪免费视频网站| 国产精品婷婷| 妓院一钑片免看黄大片| 日本欧美一区二区在线观看| 午夜免费看毛片| 国产成人精品一区二区三区网站观看| 超碰caoprom| 久久综合精品国产一区二区三区| 无码人妻丰满熟妇啪啪欧美| 最新日韩av在线| 久久午夜无码鲁丝片| 午夜精品福利一区二区三区av| 麻豆精品久久久久久久99蜜桃| 欧美亚洲一区二区在线观看| 国产欧美日韩综合精品一区二区三区| 欧美大片日本大片免费观看| 少妇高潮一区二区三区69| 亚洲美女性生活视频| 在线播放毛片| 久久久久久久久久久免费| 456亚洲精品成人影院| 国产在线视频不卡| 鲁大师精品99久久久| 少妇特黄a一区二区三区| 亚洲深深色噜噜狠狠爱网站| 欧美 日韩 国产 高清| 免费成人av在线| 中文字幕人妻一区| 国产无一区二区| 麻豆视频在线观看| 欧美亚洲高清一区二区三区不卡| 国产乱码精品一区二三区蜜臂| 亚洲精品国产精品自产a区红杏吧| 国产精品秘入口| 欧美日韩999| 成人国产网站| 国产一区二区三区四区hd| 久久精品国产大片免费观看| 无码中文字幕色专区| 久久精品国产网站| 国产夫妻性爱视频| 亚洲欧美日韩系列| 天天干天天干天天操| 91精品国产高清一区二区三区 | 久久久久久免费| 欧美日韩偷拍视频| 欧美性受xxxx黑人xyx性爽| 黄频网站在线观看| 日韩在线视频导航| 亚洲欧洲自拍| 粉嫩精品一区二区三区在线观看 | 波多野结衣一区二区在线| 日韩精品一区二区三区老鸭窝 | 国产一区二区在线免费播放| av在线一区二区| 国产精品免费人成网站酒店| 在线免费av一区| 香蕉久久一区二区三区| 欧美大片在线看| 四虎视频在线精品免费网址| 欧美一区免费视频| 午夜亚洲性色视频| 亚洲国产精品狼友在线观看| 亚洲视频一二区| 一级特黄aaa大片在线观看| 国产亚洲欧美视频| 裤袜国产欧美精品一区| 国产在线精品一区二区三区| 欧美日韩爆操| 婷婷激情5月天| 国产精品污www在线观看| 国产嫩bbwbbw高潮| 日韩精品免费在线视频| 成人黄色动漫| 国精产品一区二区| 亚洲麻豆视频| 中文字幕免费高清视频| 亚洲福利视频一区二区| 亚洲精品喷潮一区二区三区| 久久成人av网站| 精品一区二区三区四区五区| 综合视频免费看| 国产在线精品一区在线观看麻豆| 日韩在线观看免| 在线成人小视频| 91麻豆国产福利在线观看宅福利| 97中文在线| 韩日精品在线| 免费a v网站| 婷婷六月综合亚洲| 午夜一区在线观看| 欧美一二三视频| 国产综合久久久| 手机在线看福利| 最新国产成人在线观看| 99久久一区二区| 欧美激情国产日韩精品一区18| 99re热精品视频| 少妇高潮喷水在线观看| 91色九色蝌蚪| 久久久久久无码精品大片| 国产一区av在线| 国产精品美女久久久久人| 无码人妻aⅴ一区二区三区日本| 国产精品一区在线观看你懂的| 国产亚洲精久久久久久无码77777| 亚洲福利精品在线| 高清电影一区| 吴梦梦av在线| 99在线精品观看| 日本黄色中文字幕| 久久久久99精品久久久久| 日韩免费成人| www.亚洲天堂网| 国产精品进线69影院| 丰满熟女一区二区三区| 欧美自拍视频在线| 婷婷久久国产对白刺激五月99| 欧美日韩久久婷婷| 午夜电影久久久| a天堂在线资源| 91九色对白| 天堂午夜影视日韩欧美一区二区| а天堂中文在线资源| 精品久久国产字幕高潮| 成人做爰视频www网站小优视频| 正在播放91九色| heyzo一本久久综合| 中国a一片一级一片| 欧美国产日韩一区二区| 国产成人手机高清在线观看网站| 免费成年人高清视频| 精品久久久香蕉免费精品视频| 日p在线观看| 好吊色欧美一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 日韩激情一区二区三区| 日韩有码在线电影| 久久亚洲道色|