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

老板問我分布式鎖,結果悲劇了......

開發 架構 分布式
公司交給了萌新小猿一個光榮而艱巨的項目,該項目需要使用分布式鎖,這可難道了小猿。

公司交給了萌新小猿一個光榮而艱巨的項目,該項目需要使用分布式鎖,這可難到了小猿。

[[321687]]

圖片來自 Pexels

只是聽說過分布式鎖很牛掰,其他就一概不知了,唉,不懂就問唄,遂向老板請教。

老板:我們每天不都在經歷分布式鎖嗎,我來給你回憶回憶。

小猿:好勒,瓜子板凳已備好。

本文結構:

  • 為什么要使用分布式鎖
  • 分布式鎖有哪些特點
  • 分布式鎖流行算法及其優缺點
  • 總結

為什么要使用分布式鎖

這個問題應該拆分成以下 2 個問題回答。

①為什么使用鎖

保證在同一時刻共享資源只能被一個客戶端訪問;根據鎖用途分為以下兩種:

  • 共享資源只允許一個客戶端操作
  • 共享資源允許多個客戶端操作

僅允許一個客戶端訪問:共享資源的操作不具備冪等性。常見于數據的修改、刪除操作。

在上面的例子中:

允許多個客戶端操作:主要應用場景是共享資源的操作具有冪等性;如數據的查詢。

既然都具有冪等性了,為什么還需要分布式鎖呢,通常是為了效率或性能,避免重復操作(尤其是消耗資源的操作)。

例如我們常見的緩存方案:

在上面的例子中:

由于此處的資源是冪等的,通常會將這類資源做緩存,這就是常見的鎖+緩存架構。

常適用于獲取較為消耗資源(時間、內存、CPU 等)的冪等資源,如:

  • 查詢用戶信息
  • 查詢歷史訂單

當然,如果資源僅在一段時間范圍內具有冪等性,這時候,架構就應該升級了:

鎖+緩存+緩存失效/失效重新獲取/緩存定時更新。

②鎖為什么需要分布式的?

還是以上面的緩存方案為例,此處略作變化:

在上面的例子中:

分布式鎖有哪些特點?

①互斥性

在任意時刻,僅允許有一個客戶端獲得鎖。

PS:如果多個客戶端都能同時獲得鎖,那鎖就沒意義了,共享資源的安全性也就無法保證了。

老板:當我在會議室接待客戶 A 時,其他客戶只有等待,你需要等到我空閑了才能把其他人帶到我辦公室。

小猿:明白。

接待客戶(非冪等共享資源);等到老板空閑(獲取鎖)。

②可重入性

客戶端 A 獲得了鎖,只要鎖沒有過期,客戶端 A 可以繼續獲得該鎖。鎖在我這里,我還要繼續使用,其他人不準搶。

這種特性可以很好的支持【鎖續約】功能。例如:客戶端 A 獲取鎖,鎖釋放時間為 10S,即將到達 10S 時,客戶端 A 未完成任務,需要再申請 5S。若鎖沒有可重入性,客戶端 A 將無法續約,導致鎖可能被其他客戶端搶走。

小猿:受教了,老板 3 分鐘后你還有一場面試。

老板:小猿啊,難得你這么好學,我很欣慰,我們的交流時間延10分鐘吧,其他會議延后。

③高性能

獲取鎖的效率應該足夠高;總不能讓業務阻塞在獲取鎖上面吧?

小猿:好的,我已在釘釘申請將會議延長 10 分鐘了。

老板:嗯,我已經接受會議邀請了;

小猿:老板你真高效。

④高可用

分布式、微服務環境下,必須保證服務的高可用,否則輕則影響其他業務模塊,重則引發服務雪崩。

老板:我手機 24 小時開機,有會議時聯系不上我也可以聯系我秘書。

⑤支持阻塞和非阻塞式鎖

獲取鎖失敗,是直接返回失敗,還是一直阻塞知道獲取成功?不同的業務場景有不同的答案。

例如:

⑥解鎖權限

客戶端僅能釋放(解鎖)自己加的鎖。常見的解決方案是,給鎖加隨機數(或 ThreadID)。

老板:小猿啊,給你講了這么多,都明白了嗎?

籠子里的鸚鵡:明白啦,明白啦。

老板:閉嘴,我問的是小猿,只有小猿自己有資格回答。

⑦避免死鎖

加鎖方異常終止無法主動釋放鎖;常規做法是 加鎖時設置超時時間,如果未主動釋放鎖,則利用 Redis 的自動過期被動釋放鎖。

秘書破門而入:老板,你們 10 分鐘的會議已經到點了,隔壁的李總已經等不及了。

老板:一不留神就忘記時間了,我得去見李總了。

小猿:老板,我們還沒聊完呢...

⑧異常處理

常見的異常情況有 Redis 宕機、時鐘跳躍、網絡故障等。

小猿:不管出現哪種情況,我獲取鎖都會失敗啊,這可怎么辦呢?

PS:這就復雜了,需要根據具體的業務場景分析。對于必須同步處理的業務,則必須失敗告警,對于允許延遲處理的業務可以考慮記錄失敗信息待其他系統處理。

分布式鎖流行算法

基本方案 SETNX

基于 Redis 的 SETNX 指令完成鎖的獲取。

①獲取鎖 SET lock:resource_name random_value NX PX 30000

lock:resource_name:資源名字,加鎖對象的唯一標記。

random_value:通常存儲加鎖方的唯一標記,如“UUID+ThreadID”。

NX:Key 不存在才設置,即鎖未被其他人加鎖才能加鎖。

PX:鎖超時時間。

當然,此種加鎖方式是不支持“鎖重入性”的。

②釋放鎖(LUA 腳本)

checkValueThenDelete:檢查解鎖方是否是加鎖方,是則允許解鎖,否則不允許解鎖。

偽代碼是:

  1. public class RedisTool { 
  2.     // 釋放鎖成功標記 
  3.     private static final Long RELEASE_LOCK_SUCCESS = 1L; 
  4.  
  5.     /** 
  6.      * 釋放分布式鎖 
  7.      * 
  8.      * @param jedis     Redis客戶端 
  9.      * @param lockKey   鎖標記 
  10.      * @param lockValue 加鎖方標記 
  11.      * @return 是否釋放成功 
  12.      */ 
  13.     public static boolean releaseDistributedLock(Jedis jedis, String lockKey, String lockValue) { 
  14.         String script = "" + 
  15.                 "if redis.call('get', KEYS[1]) == ARGV[1] then" + 
  16.                 "    return redis.call('del', KEYS[1]) " + 
  17.                 "else" + 
  18.                 "    return 0 " + 
  19.                 "end"
  20.         // Collections.singletonList():用于只有一個元素的場景,減少內存分配 
  21.         Object result = jedis.eval(script, Collections.singletonList(lockKey), Collections.singletonList(lockValue)); 
  22.         if (RELEASE_LOCK_SUCCESS.equals(result)) { 
  23.             return true
  24.         } 
  25.         return false
  26.     } 

Redlock 算法

此算法由 Redis 作者 antirez 提出,作為一種分布式場景下的鎖實現方案。

Redlock 算法原理:【核心】大多數節點獲取鎖成功且鎖依舊有效。

Step 1:獲取當前時間(毫秒數)。

Step 2:按序想 N 個 Redis 節點獲取鎖。設置隨機字符串 random_value;設置鎖過期時間:

  • Note 1:獲取鎖需設置超時時間(防止某個節點不可用),且 timeout 應遠小于鎖有效時間(幾十毫秒級)。
  • Note 2:某節點獲取鎖失敗后,立即向下一個節點獲取鎖(任何類型失敗,包含該節點上的鎖已被其他客戶端持有)。

Step 3:計算獲取鎖的總耗時 totalTime。

Step 4:獲取鎖成功。

獲取鎖成功:客戶端從大多數節點(>=N/2+1)成功獲取鎖,且 totalTime 不超過鎖的有效時間。

重新計算鎖有效時間:最初鎖有效時間減 3.1 計算的獲取鎖消耗的時間。

Step 5:獲取鎖失敗。

獲取失敗后應立即向【所有】客戶端發起釋放鎖(Lua 腳本)。

Step 6:釋放鎖。

業務完成后應立即向【所有】客戶端發起釋放鎖(Lua 腳本)。

Redlock 算法優點:

  • 可用性高,大多數節點正常即可。
  • 單 Redis 節點的分布式鎖在 failover 時鎖失效問題不復存在。

Redlock 算法問題點:

  • Redis 節點崩潰將影響鎖安全性:節點崩潰前鎖未持久化,節點重啟后鎖將丟失;Redis 默認 AOF 持久化是每秒刷盤(fsync)一次,最壞情況將丟失 1 秒的數據。
  • 需避免始終跳躍:管理員手動修改時鐘;使用[不會跳躍調整系統時鐘]的 ntpd(時鐘同步)程序,對時鐘修改通過多次微調實現。
  • 客戶端阻塞導致鎖過期,導致共享資源不安全。
  • 如果獲取鎖消耗時間較長,導致效時間很短,是否應該立即釋放鎖?多段才算短?

帶 fencing token 的實現

分布式系統專家 Martin Kleppmann 討論提出 RedLock 存在安全性問題。

神仙之戰:Martin Kleppmann 認為 Redis 作者 antirez 提出的 RedLock 算法有安全性問題,雙方在網絡上多輪探討交鋒。

Martin 指出 RedLock 算法的核心問題點如下:

  • 鎖過期或者網絡延遲將導致鎖沖突:客戶端 A 進程 pause→鎖過期→客戶端 B 持有鎖→客戶端 A 恢復并向共享資源發起寫請求;網絡延遲也會產生類似效果。
  • RedLock 安全性對系統時鐘有強依賴。

fencing token 算法原理:

  • fencing token 是一個單調遞增的數字,當客戶端成功獲取鎖時隨同鎖一起返回給客戶端。
  • 客戶端訪問共享資源時帶上 token。
  • 共享資源服務檢查 token,拒絕延遲到來的請求。

fencing token 算法問題點:

  • 需要改造共享資源服務。
  • 如果資源服務也是分布式,如何保證 token 在多個資源服務節點遞增。
  • 2 個 fencing token 到達資源服務的順序顛倒,服務檢查將異常。
  • 【antirez】既然存在 fencing 機制保持資源互斥訪問,為什么還需要分布式鎖且要求強安全性呢。

其他分布式鎖

數據庫排它鎖:

  • 獲取鎖(select for update ,悲觀鎖)。
  • 處理業務邏輯。
  • 釋放鎖(connection.commit())。

注意:InnoDB 引擎在加鎖的時候,只有通過索引進行檢索的時候才會使用行級鎖,否則會使用表級鎖。So 必須給 lock_name 加索引。

ZooKeeper 分布式鎖:

  • 客戶端創建 znode 節點,創建成功則獲取鎖成功。
  • 持有鎖的客戶端訪問共享資源完成后刪除 znode。
  • znode 創建成 ephemeral(znode 特性),保證創建 znode 的客戶端崩潰后,znode 會被自動刪除。
  • 【問題】Zookeeper 基于客戶端與 Zookeeper 某臺服務器維護 Session,Session 依賴定期心跳(heartbeat)維持。

Zookeeper 長時間收不到客戶端心跳,就任務 Session 過期,這個 Session 所創建的所有 ephemeral 類型的 znode 節點都將被刪除。

Google 的 Chubby 分布式鎖:

  • sequencer 機制(類似 fencing token)緩解延遲導致的問題。
  • 鎖持有者可隨時請求一個 sequencer。
  • 客戶端操作資源時將 sequencer 傳給資源服務器。
  • 資源服務器檢查 sequencer 有效性:①調用 Chubby 的 API(CheckSequencer)檢查。②對比檢查客戶端、資源服務器當前觀察到的 sequencer(類似 fencing token)。③lock-delay:允許客戶端為持有鎖指定一個 lock-delay 延遲時間,Chubby 發現客戶端失去聯系時,在 lock-delay 時間內組織其他客戶端獲取鎖;

總結

我們該使用怎樣的分布式鎖算法?

  • 技術都是為業務服務的,避免選擇“高大上”的炫技;
  • 依托業務場景,盡可能選擇最簡單的做法;
  • 最簡單的分布式鎖導致偶發性異常如何處理呢?建議增加額外的機制甚至人工介入保證業務準確性,通常這部分成本低于復雜的分布式鎖的開發、運維成本。

分布式鎖的另類玩法,“分而治之”經久不衰:

  • 如果共享資源本身可以拆分,那就分開處理吧。
  • 比如電商系統防止超賣,假設有 10000 個口罩將被秒殺,常規做法是一個鎖控制所有資源。另類玩法就是將 10000 個口罩交由 20 個鎖控制,整體性能瞬間提升幾十倍。

PS:此處超賣僅是舉例,真實場景下的秒殺超賣有更加復雜的場景,慎重。

 

責任編輯:武曉燕 來源: zxiaofan
相關推薦

2019-06-19 15:40:06

分布式鎖RedisJava

2018-07-17 08:14:22

分布式分布式鎖方位

2019-02-26 09:51:52

分布式鎖RedisZookeeper

2021-07-16 07:57:34

ZooKeeperCurator源碼

2022-08-04 08:45:50

Redisson分布式鎖工具

2018-11-27 16:17:13

分布式Tomcat

2021-11-26 06:43:19

Java分布式

2021-07-06 08:37:29

Redisson分布式

2023-09-22 08:00:00

分布式鎖Redis

2021-10-25 10:21:59

ZK分布式鎖ZooKeeper

2023-08-21 19:10:34

Redis分布式

2022-01-06 10:58:07

Redis數據分布式鎖

2017-10-24 11:28:23

Zookeeper分布式鎖架構

2021-06-03 08:55:54

分布式事務ACID

2025-07-30 09:34:04

2024-11-28 15:11:28

2020-06-15 08:15:47

分布式鎖系統

2021-07-02 08:51:09

Redisson分布式鎖公平鎖

2023-01-13 07:39:07

2021-06-30 14:56:12

Redisson分布式公平鎖
點贊
收藏

51CTO技術棧公眾號

岛国av一区二区在线在线观看| 首页综合国产亚洲丝袜| 欧美大片一区二区| 国产免费观看高清视频| 精华区一区二区三区| 蜜桃在线一区二区三区| 欧美激情a在线| 免费a级黄色片| 不卡的国产精品| 精品久久久久久| 国产91av视频在线观看| 日韩性xxxx| 久久99精品久久久久久动态图| 欧美激情精品久久久久久黑人 | 欧美做受777cos| 先锋av资源站| 国产精品羞羞答答xxdd| 国产精品xxxxx| 久久午夜无码鲁丝片| 精品日本12videosex| 精品免费99久久| www.夜夜爽| 成人影院入口| 亚洲成va人在线观看| 伊人av成人| 久久视频www| 白白色亚洲国产精品| 成人av色在线观看| 中文字幕乱伦视频| 久久人人97超碰国产公开结果| 久久97精品久久久久久久不卡| 成人激情五月天| 香蕉久久精品日日躁夜夜躁| 欧美成人乱码一区二区三区| 天天综合网久久| 裤袜国产欧美精品一区| 五月天网站亚洲| 日韩亚洲欧美一区二区| 欧美性videos| 国产精品网曝门| 日本高清视频一区二区三区| 欧美 日韩 国产 精品| 国产成人鲁色资源国产91色综| 国产精品爽爽ⅴa在线观看| 黄色一级视频免费看| 亚洲影视综合| 欧洲成人免费视频| 女人十八岁毛片| 国产日韩精品视频一区二区三区| 国产+人+亚洲| 日韩精品视频免费看| 在线欧美亚洲| 97人洗澡人人免费公开视频碰碰碰| 青春草免费视频| 欧美a级片网站| 久热精品视频在线免费观看| 午夜成人亚洲理伦片在线观看| 成人一区二区| 久久精品国产亚洲7777| 免费国产羞羞网站美图| 欧美一区成人| 色综合老司机第九色激情| 免费日韩在线视频| 亚洲国产电影| 欧美性在线视频| 青娱乐在线免费视频| 日本怡春院一区二区| 国产欧美 在线欧美| 国产精品一区二区av白丝下载| 国产真实乱对白精彩久久| 91久久久久久| 刘亦菲久久免费一区二区| 99久久亚洲一区二区三区青草| 国外成人免费视频| 岛国视频免费在线观看| 国产精品久久久久久久第一福利 | www.99热| 91精品1区| 午夜精品久久久久久久久久久久| 亚洲免费在线视频观看| 日本欧美加勒比视频| 成人激情视频网| 亚洲av无码国产综合专区| 99这里只有精品| 五月婷婷综合色| av毛片在线| 欧美日韩国产影院| av在线网址导航| 2023国产精华国产精品| 亚洲欧洲偷拍精品| 国产高潮流白浆| 亚洲欧美日韩视频二区| 成人精品网站在线观看| 涩涩视频在线观看免费| 中文字幕在线观看一区| 欧美黑人经典片免费观看 | 91黄色国产视频| 亚洲av片在线观看| 中文字幕中文字幕一区| 午夜精品久久久久久久无码| 久久久久毛片| 日韩精品在线免费观看视频| 中文字幕求饶的少妇| 99国产精品久久久久久久| 91精品啪在线观看麻豆免费| 婷婷五月综合激情| 亚洲视频一区在线观看| 国产欧美在线一区| 亚洲精品国产九九九| 在线精品播放av| 日韩成人免费在线视频| 精品一区二区三区免费观看| 麻豆av福利av久久av| 成人免费看片| 欧美三级资源在线| 中国黄色a级片| 国产在线成人| 91在线高清视频| 福利在线播放| 欧美小视频在线| 波多野结衣办公室双飞 | av在线播放亚洲| www.久久久.com| 中文国产成人精品久久一| 日韩欧美高清在线观看| 国产一区在线不卡| 亚洲国产婷婷香蕉久久久久久99 | 欧美日韩国产精品一区二区亚洲| 国产精品久久久久久久美男| 亚洲人午夜射精精品日韩| 亚洲综合清纯丝袜自拍| 黑人性生活视频| 欧美黄色大片在线观看| 国产精品狼人色视频一区| 日本一二三区在线视频| 亚洲aⅴ怡春院| 极品白嫩的小少妇| 亚洲无吗在线| 懂色中文一区二区三区在线视频| 日韩另类在线| 精品乱人伦一区二区三区| 欧美日韩国产精品一区二区三区| 国内精品久久久久影院薰衣草 | 精品无码在线视频| 亚洲久久视频| 美女主播视频一区| 性欧美18~19sex高清播放| 日韩高清av在线| wwwxxx亚洲| 久久久综合精品| 日本免费观看网站| 日韩精品91| 成人h视频在线| 天堂亚洲精品| 亚洲国产成人精品一区二区| 久久午夜无码鲁丝片| 9i在线看片成人免费| 国产 福利 在线| 国产一区二区三区四区五区| 国产精品91一区| 日韩大片在线永久免费观看网站| 欧美一区二区视频观看视频| 少妇影院在线观看| 不卡的av在线| 99久久久无码国产精品6| 精品国产一区二区三区| 国产日韩欧美电影在线观看| av理论在线观看| 日韩国产欧美精品一区二区三区| 伊人中文字幕在线观看| 国产精品久久久久永久免费观看| 黄色片免费网址| 亚洲国产高清一区| 视频二区一区| 国产一区一区| 97超级碰在线看视频免费在线看| 国产永久免费高清在线观看视频| 欧美电影一区二区| 在线免费观看毛片| 亚洲国产电影在线观看| 日韩欧美色视频| 翔田千里一区二区| www.午夜色| 亚洲视频分类| 亚洲xxxx视频| 欧美专区福利免费| 久久69精品久久久久久久电影好| 青青国产在线| 欧美一级久久久| 国产污视频网站| 亚洲激情av在线| 国产又大又粗又爽的毛片| 国产精选一区二区三区| 狠狠97人人婷婷五月| 亚洲一区 二区 三区| 久久亚洲一区二区| 精品国模一区二区三区欧美| 欧美一区二区三区免费观看 | 亚洲人吸女人奶水| 亚洲综合色一区| 国产成人免费高清| 日韩精品视频一二三| 午夜亚洲性色福利视频| 国产午夜精品视频一区二区三区| 视频一区中文| 高清视频一区| 国产精品va视频| 国产精品久久久999| 爱啪啪综合导航| 九九热精品在线| 午夜视频在线| 亚洲图片在区色| 色屁屁草草影院ccyycom| 337p亚洲精品色噜噜狠狠| 亚洲国产成人精品女人久久| 亚洲影视资源网| 欧美三级黄色大片| 国产午夜精品久久久久久久| 中文字幕天堂网| 国产成人免费av在线| 福利视频999| 精品一区二区三区的国产在线播放| 97在线播放视频| 亚洲人成免费| 可以看毛片的网址| 亚洲午夜黄色| 日韩 欧美 视频| 欧美日韩岛国| 污污污污污污www网站免费| 天天做天天爱综合| 天天好比中文综合网| 国产精品一区高清| 免费看污久久久| 性欧美lx╳lx╳| 久久久福利视频| 欧美综合自拍| 久久99精品久久久久久久久久| 中文字幕久久精品一区二区| 91超碰rencao97精品| 亚洲一区二区三区久久久| 国产美女精彩久久| 粉嫩91精品久久久久久久99蜜桃| 日韩av手机在线| 欧美18—19sex性hd| 欧美亚洲在线观看| 美女18一级毛片一品久道久久综合| 5278欧美一区二区三区| 亚洲涩涩在线| 国产精品91免费在线| 久久久久毛片| 91在线视频导航| 无码国模国产在线观看| 国产精品yjizz| 日韩三区视频| 欧美伦理一区二区| 国内亚洲精品| 一区二区成人国产精品| 99久久久久久中文字幕一区| 91精品一区二区三区四区| 女人色偷偷aa久久天堂| 老太脱裤子让老头玩xxxxx| 免费永久网站黄欧美| 男人天堂成人在线| 韩国精品一区二区| 喷水视频在线观看| 久久久久久久久伊人| 精品一区二区在线观看视频| 亚洲三级视频在线观看| 久久精品免费在线| 色av成人天堂桃色av| 国产精品久久久久久久久久久久久久久久久久 | 国模私拍一区二区| 91精品国产黑色紧身裤美女| 亚洲第一精品网站| 亚洲人成在线播放| 国产日产一区二区| 欧美亚洲视频在线观看| 国产亚洲人成a在线v网站| 91九色在线观看| 美女毛片一区二区三区四区| 亚洲国产一区在线| 亚洲午夜视频| 黄色成人免费看| 国产成a人亚洲精品| 亚洲天堂视频一区| 亚洲人精品午夜| 日韩精品1区2区| 91精品啪在线观看国产60岁| 人人妻人人澡人人爽久久av| 一区二区三区四区视频| 美女精品导航| 国产精品美女免费看| 国产 日韩 欧美 综合 一区| 亚洲欧美日韩另类精品一区二区三区| 午夜精品亚洲| 国产精品拍拍拍| 不卡的看片网站| 日韩欧美国产成人精品免费| 欧美性极品少妇精品网站| 国产精品怡红院| 亚洲天堂2020| 欧美xxxx做受欧美88bbw| 国产成人鲁鲁免费视频a| 亚洲成av人片在线观看www| 日韩欧美一区二区视频在线播放 | 免费a在线观看| 欧美激情欧美狂野欧美精品 | 玖玖在线精品| 最新国产精品自拍| 中文字幕亚洲电影| 日韩三级一区二区| 亚洲精品videossex少妇| dy888亚洲精品一区二区三区| 国产成人久久久精品一区| 欧美成人专区| 国产精品日韩三级| 国产主播一区二区三区| 国精产品视频一二二区| 日韩欧美精品在线观看| 外国精品视频在线观看 | 欧美日韩尤物久久| 快播日韩欧美| 亚洲经典三级| 丰满少妇xbxb毛片日本| 亚洲女同女同女同女同女同69| 日韩中文字幕高清| 亚洲欧美激情四射在线日| 91豆花视频在线播放| 99热国产免费| 综合一区在线| 亚洲国产欧美日韩在线| 1区2区3区国产精品| 一起草av在线| www.欧美免费| 欧美高清你懂的| 亚洲在线观看一区| 日本aⅴ免费视频一区二区三区| 中文字幕一区二区三区人妻不卡| 精品美女永久免费视频| 欧美一级淫片aaaaaa| 久久久久中文字幕2018| 成人午夜网址| 亚洲国产成人精品无码区99| 国产高清不卡一区二区| 久草成人在线视频| 精品久久人人做人人爽| 超碰97免费在线| 久久av一区二区三区亚洲| 国产视频一区三区| 国产精品亚洲无码| 91成人免费在线视频| 成人在线免费公开观看视频| 国产精品日韩在线一区| 欧美丰满日韩| 成年人看片网站| 亚洲444eee在线观看| 色哟哟在线观看| 国产精品高清在线观看| 99久久婷婷这里只有精品 | 中文天堂在线资源| 亚洲日本欧美中文幕| 涩涩网在线视频| 天天人人精品| 国产精品资源网站| 日本少妇裸体做爰| 亚洲视频在线观看| 欧美在线一级| 波多野结衣 作品| 99国产精品一区| 四虎影院在线免费播放| www亚洲精品| 成人偷拍自拍| 中文字幕在线观看第三页| 亚洲精品伦理在线| 亚洲人成色777777精品音频| 国产精品偷伦一区二区| 你懂的亚洲视频| 欧美成人国产精品一区二区| 欧美色图12p| 爱福利在线视频| 欧洲成人一区二区| 国产精品一品二品| 欧美一区二区三区不卡视频| 色老头一区二区三区在线观看| 久久国产精品美女| 99999精品视频| 亚洲视频中文字幕| 国产在线一在线二| 99在线看视频| 日本不卡在线视频| 黄色小视频在线免费看| 中文字幕在线成人| 精品自拍偷拍| 亚洲欧美天堂在线| 狠狠躁夜夜躁人人躁婷婷91| 欧洲美女少妇精品| 7m第一福利500精品视频| 免费av在线网站| 久久99精品久久久久久三级| 美女网站在线免费欧美精品|