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

如何保證MySQL和Redis的數據一致性?

原創
存儲 存儲軟件 MySQL 開發工具 Redis
今天給大家剖析一下工作中常見的 MySQL 和 Redis 數據一致性問題。

  [[440215]]

圖片來自 包圖網

【51CTO.com原創稿件】今天給大家剖析一下工作中常見的 MySQL 和 Redis 數據一致性問題。

什么是數據的一致性

一致性就是數據保持一致,在分布式系統中,可以理解為多個節點中數據的值是一致的。

而一致性又可以分為強一致性與弱一致性。強一致性可以理解為在任意時刻,所有節點中的數據是一樣的。

同一時間點,你在節點 A 中獲取到的值與在節點 B 中獲取到的值應該都是一樣的。

弱一致性包含很多種不同的實現,目前分布式系統中廣泛實現的是最終一致性。

所謂最終一致性,就是不保證在任意時刻任意節點上的同一份數據都是相同的,但是隨著時間的遷移,不同節點上的同一份數據總是在向趨同的方向變化。

也可以簡單的理解為在一段時間后,節點間的數據會最終達到一致狀態。

當下互聯網絕大部分公司都進行了數據庫拆分和服務化(SOA)微服務。在這種情況下,完成某一個業務功能可能需要橫跨多個服務,操作多個數據庫(包含關系型數據庫,非關系型數據庫)。

這就涉及到需要操作的資源位于多個資源服務器上,而應用需要保證對于多個資源服務器的數據的操作,要么全部成功,要么全部失敗,因此我們必須保證不同資源服務器的數據一致性。

那么數據一致性有哪些類型呢?我在這里給他做個具體的分類,讓大家實現數據一致性到底在什么場景下需要實現數據一致性。

①跨庫數據一致性

庫數據量比較大或者預期未來的數據量比較大,都會進行分庫分表存儲。那就意味著同一個表的數據可能存儲在不同庫中。此時也存儲分布式場景下數據一致性問題。

②微服務拆分

現在互聯網企業都使用微服務架構,服務被拆分成很多不同的相互獨立的系統,系統之間通過網絡進行通信,每一個服務都自己獨立的數據庫。

例如:某個應用同時操作了多個庫,這樣的應用業務邏輯必然非常復雜,對于開發人員是極大的挑戰,應該拆分成不同的獨立服務,以簡化業務邏輯。拆分后,獨立服務之間通過 RPC 框架來進行遠程調用,實現彼此的通信。

此時上圖所描述的架構中對應 2 個對應分布式事務處理點:

  • 多個服務之間事務處理(一個服務調用多個服務)
  • 多數據源事務處理(一個服務訪問多個數據源)

Service A 完成某個功能需要直接操作數據庫,同時需要調用 Service B 和 Service C,而 Service B 又同時操作了 2 個數據庫,Service C 也操作了一個庫。

需要保證這些跨服務的對多個數據庫的操作要不都成功,要不都失敗,實際上這可能是最典型的數據一致性場景。

③基于不同類型數據存儲

數據一致性另一個場景就是同時操作不同的種類的數據庫,但同時還需要滿足不同的數據庫的數據一致性問題。

緩存數據一致基本上是指:如果緩存中有數據,那么緩存的數據值等于數據庫中的值。

但是根據緩存中是有數據為依據,則”一致“可以包含以下的兩種情況:

  • 緩存中有數據,那么緩存的數據值等同于數據庫中的值(需均為最新值,本文將“舊值的一致”歸類為“不一致狀態”)。
  • 緩存中本沒有數據,那么數據庫中的值等同于最新值(有請求查詢數據庫時,會將數據寫入緩存,則變為上面的“一致”狀態)。

數據不一致:緩存的數據值不等同于數據庫中的值;緩存或者數據庫中存在舊值,導致其他線程讀到舊數據。

本文將會帶大家詳細了解一下緩存一致性如何實現,以及緩存一致性的原理是什么樣的。

數據不一致情況及應對策略

根據是否接收寫請求,可以把緩存分成讀寫緩存和只讀緩存:

  • 只讀緩存:只在緩存進行數據查找,即可以使用 “更新數據庫+刪除緩存” 策略。
  • 讀寫緩存:需要在緩存中對數據進行增刪改查,即可以使用 “更新數據庫+更新緩存”策略。

①針對只讀緩存

只讀緩存:新增數據時,直接寫入數據庫;更新(修改/刪除)數據時,先刪除緩存。

后續,訪問這些增刪改的數據時,會發生緩存缺失,進而查詢數據庫,更新緩存。

新增數據時,寫入數據庫;訪問數據時,緩存缺失,查數據庫,更新緩存(始終是處于”數據一致“的狀態,不會發生數據不一致性問題)。

更新(修改/刪除)數據時,會有個時序問題:更新數據庫與刪除緩存的順序(這個過程會發生數據不一致性問題)。

在更新數據的過程中,可能會有如下問題:

  • 無并發請求下,其中一個操作失敗的情況。
  • 并發請求下,其他線程可能會讀到舊值。

因此,要想達到數據一致性,需要保證兩點:

  • 無并發請求下,保證 a 和 b 步驟都能成功執行。
  • 并發請求下,在 a 和 b 步驟的間隔中,避免或消除其他線程的影響。

接下來,我們針對有/無并發場景,進行分析并使用不同的策略。

②無并發情況

無并發請求下,在更新數據庫和刪除緩存值的過程中,因為操作被拆分成兩步,那么就很有可能存在“步驟 1 成功,步驟 2 失敗” 的情況發生。

由于單線程中步驟 1 和步驟 2 是串行執行的,不太可能會發生 “步驟 2 成功,步驟 1 失敗” 的情況。

先刪除緩存,再更新數據庫:

先更新數據庫,再刪除緩存:

因此,如果先刪除緩存,后更新數據庫,那么刪除緩存成功,更新數據庫失敗,以致于請求無法命中緩存,讀取數據庫舊值,存在一致性問題。

如果先更新數據庫,后刪除緩存,那么更新數據庫成功,刪除緩存失敗,以致于請求命中緩存,讀取命中緩存舊值,也存在一致性問題

那么它的解決策略是什么呢?消息隊列+異步重試。

無論使用哪一種執行時序,可以在執行步驟 1 時,將步驟 2 的請求寫入消息隊列,當步驟 2 失敗時,就可以使用重試策略,對失敗操作進行 “補償”。

③高并發情況

使用以上策略后,可以保證在單線程/無并發場景下的數據一致性。但是,在高并發場景下,由于數據庫層面的讀寫并發,會引發的數據庫與緩存數據不一致的問題(本質是后發生的讀請求先返回了)。

(1) 先刪除緩存,再更新數據庫

假設線程 1 刪除緩存值后,由于網絡延遲等原因導致未及更新數據庫,而此時,線程 2 開始讀取數據時會發現緩存缺失,進而去查詢數據庫。

而當線程 2 從數據庫讀取完數據、更新了緩存后,線程 1 才開始更新數據庫,此時,會導致緩存中的數據是舊值,而數據庫中的是最新值,產生“數據不一致”。

其本質就是,本應后發生的“線程 2-讀請求” 先于 “線程 1-寫請求” 執行并返回了。

那么針對這種問題,我們的解決策略如下所示:

設置緩存過期時間 + 延時雙刪:通過設置緩存過期時間,若發生上述淘汰緩存失敗的情況,則在緩存過期后,讀請求仍然可以從 DB 中讀取最新數據并更新緩存,可減小數據不一致的影響范圍。雖然在一定時間范圍內數據有差異,但可以保證數據的最終一致性。

此外,還可以通過延時雙刪進行保障:在線程 1 更新完數據庫值以后,讓它先 sleep 一小段時間,確保線程 2 能夠先從數據庫讀取數據,再把缺失的數據寫入緩存,然后,線程 1 再進行刪除。

后續,其它線程讀取數據時,發現緩存缺失,會從數據庫中讀取最新值。

  1. redis.delKey(X) 
  2. db.update(X) 
  3. Thread.sleep(N) 
  4. redis.delKey(X) 

sleep 時間:在業務程序運行的時候,統計下線程讀數據和寫緩存的操作時間,以此為基礎來進行估算。

(2) 先更新數據庫,再刪除緩存

如果線程 1 更新了數據庫中的值,但還沒來得及刪除緩存值,線程 2 就開始讀取數據了,那么此時,線程 2 查詢緩存時,發現緩存命中,就會直接從緩存中讀取舊值。

其本質也是,本應后發生的“2 線程-讀請求” 先于 “1 線程-刪除緩存” 執行并返回了。

或者,在”先更新數據庫,再刪除緩存”方案下,“讀寫分離+主從庫延遲”也會導致不一致。

以上問題的解決方案如下所示:

延遲消息:憑借經驗發送「延遲消息」到隊列中,延遲刪除緩存,同時也要控制主從庫延遲,盡可能降低不一致發生的概率。

訂閱 binlog,異步刪除:通過數據庫的 binlog 來異步淘汰 key,利用工具(canal)將 binlog 日志采集發送到 MQ 中,然后通過 ACK 機制確認處理刪除緩存。

刪除消息寫入數據庫:通過比對數據庫中的數據,進行刪除確認 先更新數據庫再刪除緩存,有可能導致請求因緩存缺失而訪問數據庫,給數據庫帶來壓力,也就是緩存穿透的問題。針對緩存穿透問題,可以用緩存空結果、布隆過濾器進行解決。

加鎖:更新數據時,加寫鎖;查詢數據時,加讀鎖 保證兩步操作的“原子性”,使得操作可以串行執行。“原子性”的本質是什么?不可分割只是外在表現,其本質是多個資源間有一致性的要求,操作的中間狀態對外不可見。

建議,優先使用“先更新數據庫再刪除緩存”的執行時序,原因主要有兩個:

  • 先刪除緩存值再更新數據庫,有可能導致請求因緩存缺失而訪問數據庫,給數據庫帶來壓力。
  • 業務應用中讀取數據庫和寫緩存的時間有時不好估算,進而導致延遲雙刪中的 sleep 時間不好設置。

④針對讀寫緩存

讀寫緩存:增刪改在緩存中進行,并采取相應的回寫策略,同步數據到數據庫中

同步直寫:使用事務,保證緩存和數據更新的原子性,并進行失敗重試(如果 Redis 本身出現故障,會降低服務的性能和可用性)。

異步回寫:寫緩存時不同步寫數據庫,等到數據從緩存中淘汰時,再寫回數據庫(沒寫回數據庫前,緩存發生故障,會造成數據丟失) 該策略在秒殺場中有見到過,業務層直接對緩存中的秒殺商品庫存信息進行操作,一段時間后再回寫數據庫。

一致性:同步直寫>異步回寫,因此,對于讀寫緩存,要保持數據強一致性的主要思路是:利用同步直寫,同步直寫也存在兩個操作的時序問題:更新數據庫和更新緩存。

無并發情況:

高并發情況,有四種場景會造成數據不一致:

針對場景 1 和 2 的解決方案是:保存請求對緩存的讀取記錄,延時消息比較,發現不一致后,做業務補償。

針對場景 3 和 4 的解決方案是:對于寫請求,需要配合分布式鎖使用。

寫請求進來時,針對同一個資源的修改操作,先加分布式鎖,保證同一時間只有一個線程去更新數據庫和緩存;沒有拿到鎖的線程把操作放入到隊列中,延時處理。用這種方式保證多個線程操作同一資源的順序性,以此保證一致性。

其中,分布式鎖的實現可以使用以下策略:

  • 樂觀鎖:使用版本號、updatetime;緩存中只容許高版本覆蓋低版本。
  • Watch 實現 Redis 樂觀鎖:Watch 監控 Rediskey 的狀態值,創建 Redis 事務,key+1,執行事務,key 被修改過則回滾。
  • Setnx:獲取鎖:set/setnx;釋放鎖:del/lua。

Redisson 分布式鎖:利用 Redis 的 hash 結構作為儲存單元,將業務指定的名稱作為 key,將隨機 UUID 和線程 ID 作為 fleld,最后將加鎖的次數作為 value 來儲存,線程安全。

⑤強一致性策略

上述策略只能保證數據的最終一致性。要想做到強一致,最常見的方案是 2PC、3PC、Paxos、Raft 這類一致性協議,但它們的性能往往比較差,而且這些方案也比較復雜,還要考慮各種容錯問題。

如果業務層要求必須讀取數據的強一致性,可以采取以下策略:

暫存并發讀請求:在更新數據庫時,先在 Redis 緩存客戶端暫存并發讀請求,等數據庫更新完、緩存值刪除后,再讀取數據,從而保證數據一致性。

串行化:讀寫請求入隊列,工作線程從隊列中取任務來依次執行,修改服務 Service 連接池,id 取模選取服務連接,能夠保證同一個數據的讀寫都落在同一個后端服務上。

修改數據庫 DB 連接池,id 取模選取 DB 連接,能夠保證同一個數據的讀寫在數據庫層面是串行的。

使用 Redis 分布式讀寫鎖:將淘汰緩存與更新庫表放入同一把寫鎖中,與其他讀請求互斥,防止其間產生舊數據。

讀寫互斥、寫寫互斥、讀讀共享,可滿足讀多寫少的場景數據一致,也保證了并發性。并根據邏輯平均運行時間、響應超時時間來確定過期時間。

作者:JackHu

簡介:水滴健康基礎架構資深技術專家

編輯:陶家龍

征稿:有投稿、尋求報道意向技術人請聯絡 editor@51cto.com

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

 

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2023-05-26 07:34:50

RedisMySQL緩存

2025-03-27 08:20:54

2024-08-20 16:13:52

2022-02-17 21:04:27

數據庫MysqlRedis

2024-12-26 15:01:29

2022-09-15 10:37:46

MySQLRedis數據一致性

2023-09-07 08:11:24

Redis管道機制

2021-10-14 10:00:46

MYSQL開發數據

2024-01-22 08:52:00

AQS雙異步數據一致性

2024-07-04 12:36:50

2023-09-24 14:35:43

Redis數據庫

2023-09-15 14:24:54

ByteHouseClickHouse開源

2025-04-27 08:52:21

Redis數據庫緩存

2018-08-14 10:39:04

數據錯誤DIX

2022-08-23 07:46:45

數據一致性數據庫

2023-06-29 08:00:59

redis數據MySQL

2019-08-30 12:46:10

并發扣款查詢SQL

2022-12-05 08:24:32

mongodb數據庫數據

2022-10-19 12:22:53

并發扣款一致性

2023-12-19 09:43:43

MongoDB并發
點贊
收藏

51CTO技術棧公眾號

国产精品剧情在线亚洲| 美女日韩在线中文字幕| 一本久久综合亚洲鲁鲁五月天| 欧美二级三级| 国产精品视频在线观看免费| 国模大胆一区二区三区| 亚洲欧美制服中文字幕| 又黄又爽又色的视频| 色偷偷色偷偷色偷偷在线视频| 日本一区二区免费在线观看视频| 国产精品成人观看视频免费| 亚洲大片免费观看| 国内精品嫩模av私拍在线观看| 亚洲天天在线日亚洲洲精| 中文字幕欧美视频| 日韩视频网站在线观看| 亚洲亚洲精品在线观看| 婷婷精品国产一区二区三区日韩| www.成人精品| 蜜臀久久99精品久久久久久9 | 1pondo在线播放免费| 高清不卡一区二区| 成人写真视频福利网| www.色国产| 亚洲三级色网| 久久久久久久一| 肉色超薄丝袜脚交69xx图片 | a屁视频一区二区三区四区| 午夜一区二区三区视频| 欧美成人一区二区三区| 成人黄色在线播放| 影音先锋亚洲天堂| 中文字幕av亚洲精品一部二部| 亚洲天堂网在线观看| 捆绑裸体绳奴bdsm亚洲| 秋霞一区二区| 中文字幕黄色片| 国产激情视频在线看| 国产精品嫩草99a| 黑人巨大精品欧美一区二区小视频| 在线播放亚洲精品| 三级一区在线视频先锋| 成人黄色av网站在线| 欧美亚洲日本黄色| 久久精品性爱视频| 欧美黄色精品| 久久成人一区二区| 国产成人精品视频免费| 欧洲视频一区| 一区二区三欧美| 国产特黄级aaaaa片免| 日韩av资源网| 日韩成人xxxx| 91视频啊啊啊| 清纯唯美亚洲经典中文字幕| 亚洲福利视频网| 国产精品日日摸夜夜爽| 4438全国亚洲精品观看视频| 日韩一级黄色大片| 中文字幕99页| 欧美日韩一本| 亚洲欧美色婷婷| 免费看91的网站| 日韩午夜电影网| www亚洲欧美| 草视频在线观看| 久久久久国产精品| 色综合男人天堂| 成人一级毛片| 国产精品99久| 51精品国产人成在线观看| 91无套直看片红桃| 国产伦理精品不卡| 成人免费视频视频在| 亚洲国产精品视频在线| 99精品久久99久久久久| 欧美日韩三区四区| 久草资源在线观看| 夜夜操天天操亚洲| 日韩av资源在线| 九九热这里有精品| 欧美一区二区三区视频| 天堂www中文在线资源| 九九免费精品视频在线观看| 日日狠狠久久偷偷四色综合免费| 68精品国产免费久久久久久婷婷| 日韩欧美亚洲另类| 精品一区91| 精品在线小视频| 男女男精品视频网站| 亚洲调教视频在线观看| 国产91色在线|| 国产内射老熟女aaaa∵| 99久久精品国产网站| 色综合久久久久久久久五月| 日韩影视在线| 色爱区综合激月婷婷| 第一区免费在线观看| 精品福利网址导航| 中文字幕亚洲一区二区三区| 国产亚洲精品久久久久久无几年桃| 久久国产精品久久w女人spa| 91国产在线播放| 国产裸舞福利在线视频合集| 亚洲一区二区偷拍精品| 亚洲精品一二三四五区| 91综合久久爱com| 亚洲最新av在线| 日本三级中文字幕| 狠狠色丁香婷婷综合久久片| 欧美一级日本a级v片| 亚洲婷婷噜噜| 欧美日韩中字一区| aa片在线观看视频在线播放| 欧美激情1区2区| 国产精品一区电影| 成人免费网视频| 五月婷婷丁香花| 亚洲人成伊人成综合网小说| 欧美tk丨vk视频| 97av视频在线观看| 日韩欧美久久| 中文字幕日本精品| 无码人妻一区二区三区线| 99视频一区二区| 青青在线免费观看| 日韩精品视频在线看| x99av成人免费| 亚洲精品国产欧美在线观看| 97久久精品人人澡人人爽| 日韩中文字幕在线不卡| 91丨精品丨国产| 搡老女人一区二区三区视频tv| 影音先锋在线国产| 91在线高清观看| 国产日韩欧美精品在线观看| 中文在线综合| 欧美韩国理论所午夜片917电影| 国产精品九九九九| 中文字幕亚洲欧美在线不卡| 视频在线观看免费高清| 日韩一区二区在线免费| 国产精品久久激情| yw在线观看| 欧美无砖专区一中文字| www.av天天| 日韩国产高清影视| 色一情一乱一伦一区二区三欧美| 午夜精品成人av| 亚洲欧美日韩区| 高潮毛片又色又爽免费 | 99久久www免费| 国产精品一区二区3区| 亚乱亚乱亚洲乱妇| 欧美精品在线视频| 国产精品视频一区二区三| 久久精品国产一区二区| 亚洲一区3d动漫同人无遮挡 | 欧美一区二区在线播放| 四虎永久免费在线| 成人丝袜高跟foot| 久久综合九色综合88i| 亚州av日韩av| 国产精品久久久久久久久久ktv | 日韩高清电影免费| 国产成人精品视频在线| 69久久精品| 日韩欧美一级二级三级| 国产污视频在线看| 91麻豆产精品久久久久久| 日韩精品无码一区二区三区免费| 青青草91久久久久久久久| 国产在线精品成人一区二区三区| 草莓福利社区在线| 亚洲国产成人爱av在线播放| 男人日女人网站| 国产精品入口麻豆原神| 中文字幕55页| 国产一区二区你懂的| 亚洲欧洲一区二区在线观看| 一区二区三区欧洲区| 欧美一级黄色网| avtt亚洲| 日韩美女天天操| 国产伦精品一区二区三区视频网站| 国产精品美女久久久久高潮| 99riav国产精品视频| 老司机精品视频网站| 最新视频 - x88av| 日本国产精品| 91精品啪aⅴ在线观看国产| 俄罗斯一级**毛片在线播放| 国产一区二区三区在线播放免费观看| 国产视频在线观看免费| 日韩欧美国产免费播放| 波多野结衣不卡视频| 久久影视一区二区| av中文字幕网址| 国产精品尤物| 欧美日韩dvd| 欧美亚洲高清| 国产一区二区在线网站| av国产精品| 日本欧美一二三区| 97天天综合网| 久久精品在线视频| 国产在线观看免费网站| 精品国产91乱码一区二区三区| 欧美激情一区二区三区免费观看| 亚洲国产日韩精品| 国产精品99久久久久久成人| 99国产精品一区| 自拍偷拍激情视频| 美女精品一区二区| 国产自产在线视频| 亚洲精品网址| 亚洲国产欧美日韩| 亚洲区小说区图片区qvod按摩| av免费精品一区二区三区| 欧美黄页在线免费观看| 青青草成人在线| 国产精品论坛| 久久久久久久久久久成人| av在线免费观看网址| 日韩视频―中文字幕| 邻居大乳一区二区三区| 亚洲加勒比久久88色综合 | 亚洲精品中文字幕av| 亚洲欧美另类一区| 欧美一卡二卡三卡| 国产美女裸体无遮挡免费视频| 欧美在线啊v一区| 一区二区三区在线观看av| 婷婷国产在线综合| 日本三级欧美三级| 午夜精品福利视频网站| 国产在线视频卡一卡二| 亚洲一区成人在线| 免费麻豆国产一区二区三区四区| 亚洲视频免费观看| 9999热视频| 樱桃视频在线观看一区| 在线免费日韩av| 亚洲自拍偷拍av| 久久久香蕉视频| 亚洲一区二区高清| 日本在线视频中文字幕| 亚洲va韩国va欧美va精品| 国产无套在线观看| 精品福利樱桃av导航| 天天综合天天干| 日本精品一区二区三区高清 | 51漫画成人app入口| 欧美精品久久久久| 日本在线影院| 国产盗摄xxxx视频xxx69| 一区二区视频免费完整版观看| 国产精品美女在线观看| 四虎视频在线精品免费网址| 91香蕉电影院| 国产精品毛片视频| 欧美日韩精品一区| 日韩精品看片| 黄色一级大片免费| 国产精品久久久久久模特| 日韩精品免费播放| 久久国产精品免费| 熟女人妻一区二区三区免费看| 99久久婷婷国产| 69xxx免费| 夜夜操天天操亚洲| 黄色一级视频免费看| 欧美精品一二三| 国产综合无码一区二区色蜜蜜| 精品亚洲国产成av人片传媒 | 久久久久久97| 浪潮色综合久久天堂| 91亚洲精品一区| 国产精品一线| 亚洲国产精品一区二区第一页| 欧美在线亚洲| 粉嫩虎白女毛片人体| 狠狠狠色丁香婷婷综合久久五月| 国产一线在线观看| 欧美国产禁国产网站cc| 国产在线成人精品午夜| 欧美午夜精品理论片a级按摩| 精品人妻一区二区三区日产乱码| 日韩精品欧美激情| 日本电影全部在线观看网站视频| 久久久免费精品| 久久精品国产精品亚洲毛片| 国产精品久久久久久久小唯西川| 精品理论电影| 97在线国产视频| 老司机午夜精品| 性欧美丰满熟妇xxxx性久久久| 国产精品美女久久久久高潮| 在线观看免费国产视频| 91精品国产综合久久精品app | 九九热精品在线| 456亚洲精品成人影院| 国产福利久久精品| 四虎国产精品免费观看| 国产日产欧美视频| 成人午夜在线播放| 午夜爽爽爽男女免费观看| 色噜噜狠狠成人网p站| 亚洲乱码国产乱码精品精软件| 自拍偷拍亚洲区| av日韩电影| 国产区一区二区| 欧美黄色精品| 日本人69视频| 国产亚洲精品免费| 草久久免费视频| 精品国产免费人成在线观看| 国产一二区在线观看| 国产精品久久久久久亚洲调教| 欧美日韩导航| 国内精品在线观看视频| 国产成人精品免费在线| 北条麻妃在线观看视频| 欧美性生活影院| 黄色软件在线观看| 国产69久久精品成人| 北条麻妃一区二区三区在线| 成人污网站在线观看| 国产呦精品一区二区三区网站| 欧美xxxx精品| 欧美午夜精品一区二区蜜桃| 国产高清视频免费最新在线| 日本成人在线视频网址| 亚洲理论电影片| 女人喷潮完整视频| 99精品欧美一区二区三区小说| 久久精品无码人妻| 亚洲国产精品va在线看黑人动漫| 人人澡人人添人人爽一区二区| 99re在线观看| 国内揄拍国内精品久久| 国产精品欧美性爱| 亚洲网友自拍偷拍| 手机看片福利永久| 91精品国产91久久久久福利| 欧美成人基地| 91黄色小网站| 国产日韩欧美综合一区| 无码久久精品国产亚洲av影片| 中文字幕日韩欧美精品在线观看| 久久不卡日韩美女| 男插女免费视频| 粉嫩嫩av羞羞动漫久久久| 黄色小视频在线免费看| 日韩av网站电影| 三上悠亚激情av一区二区三区| 日韩偷拍一区二区| 黄一区二区三区| 九九视频在线免费观看| 精品国产乱码久久久久久图片| 国产传媒av在线| 欧洲亚洲一区二区| 麻豆成人在线观看| 免费人成年激情视频在线观看| 亚洲精品电影久久久| 精品免费av在线| 青草全福视在线| 99riav一区二区三区| japanese国产在线观看| 久久精品国产96久久久香蕉| 999久久久精品一区二区| 成年人视频网站免费观看| 国产精品进线69影院| 性生活黄色大片| 日本国产一区二区三区| 欧美国产小视频| 88av在线播放| 欧美丝袜丝nylons| 日本片在线观看| 日本高清久久一区二区三区| 黄一区二区三区| 天堂а√在线中文在线新版| www日韩欧美| 亚洲理论电影片| 永久看看免费大片| 日韩欧美在线字幕| av免费在线观| 日本欧洲国产一区二区| 国产剧情av麻豆香蕉精品| 国产精品视频123| 欧美人成在线视频| 欧美日韩一区二区综合| 日本一区二区免费视频| 欧美三级在线看| 欧美少妇精品| 在线观看污视频| 日本一区二区三级电影在线观看| 蜜桃视频污在线观看| 国产日韩欧美中文| 性欧美暴力猛交另类hd|