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

多對多業(yè)務(wù),數(shù)據(jù)庫水平切分架構(gòu)一次搞定

開發(fā) 開發(fā)工具
本文將以“好友中心”為例,介紹“多對多”類業(yè)務(wù),隨著數(shù)據(jù)量的逐步增大,數(shù)據(jù)庫性能顯著降低,數(shù)據(jù)庫水平切分相關(guān)的架構(gòu)實(shí)踐。

一、什么是多對多關(guān)系

所謂的“多對多”,來自數(shù)據(jù)庫設(shè)計中的“實(shí)體-關(guān)系”ER模型,用來描述實(shí)體之間的關(guān)聯(lián)關(guān)系,一個學(xué)生可以選修多個課程,一個課程可以被多個學(xué)生選修,這里學(xué)生與課程時間的關(guān)系,就是多對多關(guān)系。

二、好友中心業(yè)務(wù)分析

好友關(guān)系主要分為兩類,弱好友關(guān)系與強(qiáng)好友關(guān)系,兩類都有典型的互聯(lián)網(wǎng)產(chǎn)品應(yīng)用。

弱好友關(guān)系的建立,不需要雙方彼此同意:

  • 用戶A關(guān)注用戶B,不需要用戶B同意,此時用戶A與用戶B為弱好友關(guān)系,對A而言,暫且理解為“關(guān)注”;
  • 用戶B關(guān)注用戶A,也不需要用戶A同意,此時用戶A與用戶B也為弱好友關(guān)系,對A而言,暫且理解為“粉絲”;

微博粉絲是一個典型的弱好友關(guān)系應(yīng)用。

強(qiáng)好友關(guān)系的建立,需要好友關(guān)系雙方彼此同意:

  • 用戶A請求添加用戶B為好友,用戶B同意,此時用戶A與用戶B則互為強(qiáng)好友關(guān)系,即A是B的好友,B也是A的好友;

QQ好友是一個典型的強(qiáng)好友關(guān)系應(yīng)用。

好友中心是一個典型的多對多業(yè)務(wù),一個用戶可以添加多個好友,也可以被多個好友添加,其典型架構(gòu)為:

  • friend-service:好友中心服務(wù),對調(diào)用者提供友好的RPC接口
  • db:對好友數(shù)據(jù)進(jìn)行存儲

三、弱好友關(guān)系-元數(shù)據(jù)簡版實(shí)現(xiàn)

通過弱好友關(guān)系業(yè)務(wù)分析,很容易了解到,其核心元數(shù)據(jù)為:

  1. guanzhu(uid, guanzhu_uid); 
  2. fensi(uid, fensi_uid); 

其中:

  • guanzhu表,用戶記錄uid所有關(guān)注用戶guanzhu_uid
  • fensi表,用來記錄uid所有粉絲用戶fensi_uid

需要強(qiáng)調(diào)的是,一條弱關(guān)系的產(chǎn)生,會產(chǎn)生兩條記錄,一條關(guān)注記錄,一條粉絲記錄。

例如:用戶A(uid=1)關(guān)注了用戶B(uid=2),A多關(guān)注了一個用戶,B多了一個粉絲,于是:

  • guanzhu表要插入{1, 2}這一條記錄,1關(guān)注了2
  • fensi表要插入{2, 1}這一條記錄,2粉了1

(1) 如何查詢一個用戶關(guān)注了誰呢?

回答:在guanzhu的uid上建立索引:

  1. select * from guanzhu where uid=1

即可得到結(jié)果,1關(guān)注了2。

(2) 如何查詢一個用戶粉了誰呢?

回答:在fensi的uid上建立索引:

  1. select * from fensi where uid=2

即可得到結(jié)果,2粉了1。

四、強(qiáng)好友關(guān)系-元數(shù)據(jù)實(shí)現(xiàn)一

通過強(qiáng)好友關(guān)系業(yè)務(wù)分析,很容易了解到,其核心元數(shù)據(jù)為:

  1. friend(uid1, uid2); 

其中:

  • uid1,強(qiáng)好友關(guān)系中一方的uid
  • uid2,強(qiáng)好友關(guān)系中另一方的uid

(1) uid=1的用戶添加了uid=2的用戶,雙方都同意加彼此為好友,這個強(qiáng)好友關(guān)系,在數(shù)據(jù)庫中應(yīng)該插入記錄{1, 2}還是記錄{2,1}呢?

回答:都可以

為了避免歧義,可以人為約定,插入記錄時uid1的值必須小于uid2。

例如:有uid=1,2,3三個用戶,他們互為強(qiáng)好友關(guān)系,那邊數(shù)據(jù)庫中可能是這樣的三條記錄

  1. {1, 2} 
  2. {2, 3} 
  3. {1, 3} 

(2) 如何查詢一個用戶的好友呢?

回答:假設(shè)要查詢uid=2的所有好友,只需在uid1和uid2上建立索引,然后:

  1. select * from friend where uid1=2 
  2. union 
  3. select * from friend where uid2=2 

即可得到結(jié)果。

作業(yè),為何不使用:

  1. select * from friend uid1=2 or uid2=2 

五、強(qiáng)好友關(guān)系-元數(shù)據(jù)實(shí)現(xiàn)二

強(qiáng)好友關(guān)系是弱好友關(guān)系的一個特例,A和B必須互為關(guān)注關(guān)系(也可以說,同時互為粉絲關(guān)系),即也可以使用關(guān)注表和粉絲表來實(shí)現(xiàn):

  1. guanzhu(uid, guanzhu_uid); 
  2. fensi(uid, fensi_uid); 

例如:用戶A(uid=1)和用戶B(uid=2)為強(qiáng)好友關(guān)系,即相互關(guān)注:

用戶A(uid=1)關(guān)注了用戶B(uid=2),A多關(guān)注了一個用戶,B多了一個粉絲,于是:

  • guanzhu表要插入{1, 2}這一條記錄
  • fensi表要插入{2, 1}這一條記錄

同時,用戶B(uid=2)也關(guān)注了用戶A(uid=1),B多關(guān)注了一個用戶,A多了一個粉絲,于是:

  • guanzhu表要插入{2, 1}這一條記錄
  • fensi表要插入{1, 2}這一條記錄

六、數(shù)據(jù)冗余是實(shí)現(xiàn)多對多關(guān)系水平切分的常用實(shí)踐

對于強(qiáng)好友關(guān)系的兩類實(shí)現(xiàn):

  • friend(uid1, uid2)表
  • 數(shù)據(jù)冗余guanzhu表與fensi表(后文稱正表T1與反表T2)

在數(shù)據(jù)量小時,看似無差異,但數(shù)據(jù)量大時,數(shù)據(jù)冗余的優(yōu)勢就體現(xiàn)出來了:

  • friend表,數(shù)據(jù)量大時,如果使用uid1來分庫,那么uid2上的查詢就需要遍歷多庫
  • 正表T1與反表T2通過數(shù)據(jù)冗余來實(shí)現(xiàn)好友關(guān)系,{1, 2}{2,1}分別存在于兩表中,故兩個表都使用uid來分庫,均只需要進(jìn)行一次查詢,就能找到對應(yīng)的關(guān)注與粉絲,而不需要多個庫掃描

數(shù)據(jù)冗余,是多對多關(guān)系,在數(shù)據(jù)量大時,數(shù)據(jù)水平切分的常用實(shí)踐。

七、如何進(jìn)行數(shù)據(jù)冗余

接下來的問題轉(zhuǎn)化為,好友中心服務(wù)如何來進(jìn)行數(shù)據(jù)冗余,常見有三種方法。

方法一:服務(wù)同步冗余

服務(wù)同步冗余

顧名思義,由好友中心服務(wù)同步寫冗余數(shù)據(jù),如上圖1-4流程:

  • 業(yè)務(wù)方調(diào)用服務(wù),新增數(shù)據(jù)
  • 服務(wù)先插入T1數(shù)據(jù)
  • 服務(wù)再插入T2數(shù)據(jù)
  • 服務(wù)返回業(yè)務(wù)方新增數(shù)據(jù)成功

優(yōu)點(diǎn):

  • 不復(fù)雜,服務(wù)層由單次寫,變兩次寫
  • 數(shù)據(jù)一致性相對較高(因?yàn)殡p寫成功才返回)

缺點(diǎn):

  • 請求的處理時間增加(要插入次,時間加倍)
  • 數(shù)據(jù)仍可能不一致,例如第二步寫入T1完成后服務(wù)重啟,則數(shù)據(jù)不會寫入T2

如果系統(tǒng)對處理時間比較敏感,引出常用的第二種方案

方法二:服務(wù)異步冗余

服務(wù)異步冗余

數(shù)據(jù)的雙寫并不再由好友中心服務(wù)來完成,服務(wù)層異步發(fā)出一個消息,通過消息總線發(fā)送給一個專門的數(shù)據(jù)復(fù)制服務(wù)來寫入冗余數(shù)據(jù),如上圖1-6流程:

  • 業(yè)務(wù)方調(diào)用服務(wù),新增數(shù)據(jù)
  • 服務(wù)先插入T1數(shù)據(jù)
  • 服務(wù)向消息總線發(fā)送一個異步消息(發(fā)出即可,不用等返回,通常很快就能完成)
  • 服務(wù)返回業(yè)務(wù)方新增數(shù)據(jù)成功
  • 消息總線將消息投遞給數(shù)據(jù)同步中心
  • 數(shù)據(jù)同步中心插入T2數(shù)據(jù)

優(yōu)點(diǎn):

  • 請求處理時間短(只插入1次)

缺點(diǎn):

  • 系統(tǒng)的復(fù)雜性增加了,多引入了一個組件(消息總線)和一個服務(wù)(專用的數(shù)據(jù)復(fù)制服務(wù))
  • 因?yàn)榉祷貥I(yè)務(wù)線數(shù)據(jù)插入成功時,數(shù)據(jù)還不一定插入到T2中,因此數(shù)據(jù)有一個不一致時間窗口(這個窗口很短,最終是一致的)
  • 在消息總線丟失消息時,冗余表數(shù)據(jù)會不一致

如果想解除“數(shù)據(jù)冗余”對系統(tǒng)的耦合,引出常用的第三種方案

方法三:線下異步冗余

線下異步冗余

數(shù)據(jù)的雙寫不再由好友中心服務(wù)來完成,而是由線下的一個服務(wù)或者任務(wù)來完成,如上圖1-6流程:

  • 業(yè)務(wù)方調(diào)用服務(wù),新增數(shù)據(jù)
  • 服務(wù)先插入T1數(shù)據(jù)
  • 服務(wù)返回業(yè)務(wù)方新增數(shù)據(jù)成功
  • 數(shù)據(jù)會被寫入到數(shù)據(jù)庫的log中
  • 線下服務(wù)或者任務(wù)讀取數(shù)據(jù)庫的log
  • 線下服務(wù)或者任務(wù)插入T2數(shù)據(jù)

優(yōu)點(diǎn):

  • 數(shù)據(jù)雙寫與業(yè)務(wù)完全解耦
  • 請求處理時間短(只插入1次)

缺點(diǎn):

  • 返回業(yè)務(wù)線數(shù)據(jù)插入成功時,數(shù)據(jù)還不一定插入到T2中,因此數(shù)據(jù)有一個不一致時間窗口(這個窗口很短,最終是一致的)
  • 數(shù)據(jù)的一致性依賴于線下服務(wù)或者任務(wù)的可靠性

上述三種方案各有優(yōu)缺點(diǎn),可以結(jié)合實(shí)際情況選取。

數(shù)據(jù)冗余固然能夠解決多對多關(guān)系的數(shù)據(jù)庫水平切分問題,但又帶來了新的問題,如何保證正表T1與反表T2的數(shù)據(jù)一致性呢?

八、如何保證數(shù)據(jù)的一致性

上一節(jié)的討論可以看到,不管哪種方案,因?yàn)閮刹讲僮鞑荒鼙WC原子性,總有出現(xiàn)數(shù)據(jù)不一致的可能,高吞吐分布式事務(wù)是業(yè)內(nèi)尚未解決的難題,此時的架構(gòu)優(yōu)化方向,并不是完全保證數(shù)據(jù)的一致,而是盡早的發(fā)現(xiàn)不一致,并修復(fù)不一致。

最終一致性,是高吞吐互聯(lián)網(wǎng)業(yè)務(wù)一致性的常用實(shí)踐。更具體的,保證數(shù)據(jù)最終一致性的方案有三種。

方法一:線下掃面正反冗余表全部數(shù)據(jù)

線下掃面正反冗余表全部數(shù)據(jù)

如上圖所示,線下啟動一個離線的掃描工具,不停的比對正表T1和反表T2,如果發(fā)現(xiàn)數(shù)據(jù)不一致,就進(jìn)行補(bǔ)償修復(fù)。

優(yōu)點(diǎn):

  • 比較簡單,開發(fā)代價小
  • 線上服務(wù)無需修改,修復(fù)工具與線上服務(wù)解耦

缺點(diǎn):

  • 掃描效率低,會掃描大量的“已經(jīng)能夠保證一致”的數(shù)據(jù)
  • 由于掃描的數(shù)據(jù)量大,掃描一輪的時間比較長,即數(shù)據(jù)如果不一致,不一致的時間窗口比較長

有沒有只掃描“可能存在不一致可能性”的數(shù)據(jù),而不是每次掃描全部數(shù)據(jù),以提高效率的優(yōu)化方法呢?

方法二:線下掃描增量數(shù)據(jù)

線下掃描增量數(shù)據(jù)

每次只掃描增量的日志數(shù)據(jù),就能夠極大提高效率,縮短數(shù)據(jù)不一致的時間窗口,如上圖1-4流程所示:

  • 寫入正表T1
  • 第一步成功后,寫入日志log1
  • 寫入反表T2
  • 第二步成功后,寫入日志log2

當(dāng)然,我們還是需要一個離線的掃描工具,不停的比對日志log1和日志log2,如果發(fā)現(xiàn)數(shù)據(jù)不一致,就進(jìn)行補(bǔ)償修復(fù)

優(yōu)點(diǎn):

  • 雖比方法一復(fù)雜,但仍然是比較簡單的
  • 數(shù)據(jù)掃描效率高,只掃描增量數(shù)據(jù)

缺點(diǎn):

  • 線上服務(wù)略有修改(代價不高,多寫了2條日志)
  • 雖然比方法一更實(shí)時,但時效性還是不高,不一致窗口取決于掃描的周期

有沒有實(shí)時檢測一致性并進(jìn)行修復(fù)的方法呢?

方法三:實(shí)時線上“消息對”檢測

實(shí)時線上“消息對”檢測

這次不是寫日志了,而是向消息總線發(fā)送消息,如上圖1-4流程所示:

  • 寫入正表T1
  • 第一步成功后,發(fā)送消息msg1
  • 寫入反表T2
  • 第二步成功后,發(fā)送消息msg2

這次不是需要一個周期掃描的離線工具了,而是一個實(shí)時訂閱消息的服務(wù)不停的收消息。

假設(shè)正常情況下,msg1和msg2的接收時間應(yīng)該在3s以內(nèi),如果檢測服務(wù)在收到msg1后沒有收到msg2,就嘗試檢測數(shù)據(jù)的一致性,不一致時進(jìn)行補(bǔ)償修復(fù)

優(yōu)點(diǎn):

  • 效率高
  • 實(shí)時性高

缺點(diǎn):

  • 方案比較復(fù)雜,上線引入了消息總線這個組件
  • 線下多了一個訂閱總線的檢測服務(wù)

however,技術(shù)方案本身就是一個投入產(chǎn)出比的折衷,可以根據(jù)業(yè)務(wù)對一致性的需求程度決定使用哪一種方法。

九、總結(jié)

文字較多,希望盡量記住如下幾點(diǎn):

  • 好友業(yè)務(wù)是一個典型的多對多關(guān)系,又分為強(qiáng)好友與弱好友
  • 數(shù)據(jù)冗余是一個常見的多對多業(yè)務(wù)數(shù)據(jù)水平切分實(shí)踐
  • 冗余數(shù)據(jù)的常見方案有三種:服務(wù)同步冗余、服務(wù)異步冗余、線下異步冗余
  • 數(shù)據(jù)冗余會帶來一致性問題,高吞吐互聯(lián)網(wǎng)業(yè)務(wù),要想完全保證事務(wù)一致性很難,常見的實(shí)踐是最終一致性
  • 最終一致性的常見實(shí)踐是,盡快找到不一致,并修復(fù)數(shù)據(jù),常見方案有三種:線下全量掃描法、線下增量掃描法、線上實(shí)時檢測法

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-07-11 16:44:04

數(shù)據(jù)庫水平切分架構(gòu)

2017-06-19 16:45:41

數(shù)據(jù)庫水平切分用戶中心

2017-06-12 11:09:56

計數(shù)架構(gòu)數(shù)據(jù)庫

2009-06-04 16:14:22

Hibernate一對Hibernate一對Hibernate多對

2024-12-17 14:52:46

2023-11-29 12:12:24

Oceanbase數(shù)據(jù)庫

2025-08-05 02:25:00

2025-08-06 05:22:00

負(fù)載均衡HTTP連接RPC連接

2017-03-14 14:09:08

數(shù)據(jù)庫Oracle備份

2025-04-25 09:10:00

2017-09-08 15:34:01

2021-08-12 09:48:21

Webpack Loa工具Webpack

2010-04-15 09:09:02

Hibernate

2009-01-20 09:22:09

NGN下一代網(wǎng)絡(luò)電信

2019-10-12 16:15:13

MySQL數(shù)據(jù)庫多實(shí)例

2022-11-02 08:00:00

數(shù)據(jù)庫多區(qū)域應(yīng)用程序云平臺

2024-09-18 14:54:53

2021-10-14 10:53:20

數(shù)據(jù)庫查詢超時

2024-04-26 10:12:38

混合訓(xùn)練AI集群

2023-11-28 07:45:48

Rust自動化測試
點(diǎn)贊
收藏

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

欧美第一页在线| 欧美日韩在线不卡| 久久99国产精品| 久久国产黄色片| 精品一区二区三| 91精品国产综合久久福利| 黄色一级片在线看| 国产九九在线| 精品一区二区三区免费毛片爱| 欧美理论电影在线播放| 欧美大片免费播放器| 国产精品蜜月aⅴ在线| 亚洲男人的天堂在线观看| 国产专区一区二区| 91精品国产乱码久久久| 亚洲高清自拍| 一区二区三区动漫| 韩国三级在线播放| www.精品国产| 五月婷婷久久综合| 一本二本三本亚洲码| 香蕉视频911| 麻豆国产精品官网| 136fldh精品导航福利| 一级片一级片一级片| 亚洲精品亚洲人成在线| 欧美一区二区日韩一区二区| 亚洲熟妇av一区二区三区| 成人日韩欧美| 久久精品欧美一区二区三区不卡 | 少妇精品久久久久久久久久| 性生交大片免费看女人按摩| 免费在线观看精品| 欧美在线精品免播放器视频| 青青青在线视频| 日韩精品电影| 国产视频精品va久久久久久| 佐佐木明希电影| 成人在线日韩| 欧美日韩在线播放三区| 中文字幕乱码人妻综合二区三区| 牛牛电影国产一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲美女一区| 欧美黄色www| 人妻少妇精品一区二区三区| 婷婷久久国产对白刺激五月99| 日韩精品中文字| 亚洲视频天天射| 日本综合精品一区| 91麻豆精品国产91久久久久久久久| 毛片av免费在线观看| av手机在线观看| 亚洲综合免费观看高清在线观看| 特色特色大片在线| 欧美性天天影视| 欧美国产日韩亚洲一区| 秋霞在线观看一区二区三区| 欧美在线一卡| 国产亚洲欧美激情| 日韩精品伦理第一区| 久久电影中文字幕| 国产视频一区二区三区在线观看| 欧美一区1区三区3区公司| 日韩成人黄色| 国产日韩在线不卡| 亚洲成色www久久网站| 成av人电影在线观看| 中文文精品字幕一区二区| 日本在线视频一区| 在线国产情侣| 亚洲欧美韩国综合色| www.激情网| 国产网红女主播精品视频| 午夜精品久久久久久久久久久| 你真棒插曲来救救我在线观看| sm在线观看| 欧美性生活大片免费观看网址| 无码人妻丰满熟妇区五十路百度| 欧美色网在线| 91精品欧美久久久久久动漫| 四虎1515hh.com| 国产精品jk白丝蜜臀av小说| 亚洲精品日韩久久久| 在线观看免费小视频| 天天插综合网| 性欧美xxxx| 欧美成人一区二区三区四区| 激情欧美一区二区三区在线观看| 91九色蝌蚪嫩草| 日韩午夜影院| 日韩理论片网站| 人人妻人人做人人爽| 男人最爱成人网| 欧美精品日韩一本| 日本一级片在线播放| 精品国产aⅴ| 久久99精品久久久久久琪琪| 天堂а√在线中文在线新版| 久久国产三级精品| 久久riav二区三区| 欧美激情午夜| 欧美日韩免费在线观看| 日本不卡一区在线| 欧美电影免费网站| 久久久精品国产网站| 日韩三级视频在线| 精品一区二区免费看| 国产一级特黄a大片99| 亚洲成人三级| 懂色av影视一区二区三区| 一起操在线视频| 亚州综合一区| 欧美日韩福利视频| 伊人久久中文字幕| 不卡视频一二三| 综合视频免费看| 免费电影日韩网站| 欧美精品一区二区在线播放| 国产成人在线网址| 久久蜜桃精品| 国产在线观看一区| 在线观看三级视频| 欧美高清dvd| 蜜桃av乱码一区二区三区| 亚洲伦伦在线| 成人欧美一区二区三区视频xxx| av女优在线| 一本一道久久a久久精品| 亚洲色图欧美另类| 欧美 日韩 国产精品免费观看| 国产精品极品尤物在线观看 | 粉嫩高潮美女一区二区三区 | 97人人模人人爽人人少妇| 国产在线观看免费| 欧美色播在线播放| 中文字幕人妻一区| 欧美特黄一区| 成人影片在线播放| 成人影院www在线观看| 精品视频在线看| 亚洲国产av一区| 亚洲欧美日本国产专区一区| 国产日韩欧美亚洲一区| 五月花成人网| 日韩一区二区三| 国产精品99久久久久久成人| 久久er99精品| 中文字幕中文字幕在线中一区高清| 福利一区二区免费视频| 中文字幕亚洲无线码a| 国语对白做受69按摩| 国产婷婷精品av在线| www.日日操| 欧美亚洲国产精品久久| 国产精品高潮呻吟视频| 大地资源中文在线观看免费版| 91国产精品成人| 久久久久久国产免费a片| 日韩不卡一区二区三区| 任我爽在线视频精品一| 日本少妇一区| 最近2019中文字幕mv免费看| 在线观看国产精品入口男同| 亚洲欧洲一区二区三区| 亚洲欧美日韩网站| 国语精品一区| 久久久综合亚洲91久久98| 深夜成人福利| 久久精品国产2020观看福利| 国产精品爽爽久久久久久| 亚洲黄色av一区| 2一3sex性hd| 视频一区视频二区中文字幕| 亚洲图片在线观看| 亚洲天堂av资源在线观看| 97国产一区二区精品久久呦| 猫咪在线永久网站| 欧美日韩黄视频| 国产又黄又爽又无遮挡| www.亚洲色图| 亚洲欧美另类动漫| 忘忧草精品久久久久久久高清| 91在线看www| 国产乱码精品一区二三赶尸艳谈| 亚洲日韩中文字幕在线播放| 亚洲影院一区二区三区| 亚洲午夜电影网| 亚欧洲乱码视频| 狠狠v欧美v日韩v亚洲ⅴ| www.日本少妇| 日韩国产一区二区| 鬼打鬼之黄金道士1992林正英| 中文字幕资源网在线观看免费 | 国产一区二区免费电影| 黄色精品视频| 欧美精品videofree1080p| 久久经典视频| 精品国产髙清在线看国产毛片| 久久久免费高清视频| 亚洲欧洲99久久| 日韩无码精品一区二区| 奇米色一区二区| 免费人成自慰网站| 波多野结衣的一区二区三区| 不卡的av一区| 成人久久网站| 欧美一级片久久久久久久| 黄色一级片在线观看| 国产丝袜一区二区三区| 国产黄色av网站| 欧洲色大大久久| 日韩av在线天堂| 自拍偷拍国产精品| 少妇无套高潮一二三区| 不卡一区中文字幕| www.成人黄色| 青青草精品视频| 人人妻人人添人人爽欧美一区| 五月天综合网站| 日韩激情视频| 亚洲丝袜美腿一区| 国产精品视频在线免费观看| 日日狠狠久久| 国产精品电影在线观看| 鲁鲁在线中文| 欧美黑人xxxx| 污视频网站免费在线观看| 综合国产在线视频| 国产精品一区二区婷婷| 日韩精品在线免费播放| 蜜桃在线一区二区| 日韩一区二区精品| 国产又粗又长视频| 欧美午夜在线一二页| 天天爽夜夜爽人人爽| 欧美日韩日本国产| 毛片基地在线观看| 亚洲高清视频的网址| 青青草国产在线观看| 亚洲视频综合在线| 国产福利视频网站| 国产精品超碰97尤物18| 久久午夜福利电影| 日本一区二区三区四区| 精品欧美一区二区久久久| 97se亚洲国产综合自在线观| 人妻av一区二区| 成人国产精品视频| 国产精品成人无码专区| 成人成人成人在线视频| aaa黄色大片| 成人精品国产福利| 免费黄色三级网站| 91免费版在线| 亚洲第一香蕉网| 久久久久久麻豆| 少妇av片在线观看| 国产精品国产自产拍在线| 日本在线观看网址| 亚洲视频免费在线观看| 91高清免费观看| 一区二区在线观看免费| 国产一级在线播放| 欧美日韩中国免费专区在线看| www亚洲视频| 欧美性videosxxxxx| 国产露脸91国语对白| 欧美久久久久久久久中文字幕| 国产又粗又猛又黄又爽无遮挡| 日韩三级高清在线| 无码h黄肉3d动漫在线观看| 精品调教chinesegay| 东凛在线观看| 久久久97精品| 草草影院在线| 国产精品久久久久久久久男| 亚洲影视资源| 国产精品视频一区二区三区经| 你懂的视频欧美| 中文字幕精品—区二区日日骚| 影音先锋日韩精品| 欧美在线观看成人| 蜜桃精品视频在线| 女人扒开双腿让男人捅| 99精品视频中文字幕| 日本综合在线观看| 亚洲一区二区在线视频| 无码人妻精品一区二区三区9厂| 欧美日韩mp4| 粉嫩av一区二区夜夜嗨| 国产亚洲精品日韩| av超碰免费在线| 青草热久免费精品视频| 国产美女精品视频免费播放软件| 国产偷国产偷亚洲高清97cao| 精品香蕉视频| 国产黄色片免费在线观看| 男人的天堂久久精品| 久久久久亚洲无码| 综合av第一页| 日批视频免费在线观看| 日韩一级成人av| 国产三级视频在线播放线观看| 欧美成人午夜激情视频| 亚州一区二区三区| 国产精品国产精品国产专区不卡| 欧美日一区二区| a在线视频观看| 国产精品一区二区三区四区| 久操视频在线观看免费| 亚洲二区在线视频| 国产精品一区二区免费视频| 亚洲性猛交xxxxwww| 2001个疯子在线观看| 成人激情综合网| 精品国产一区二区三区小蝌蚪 | 日韩精品乱码av一区二区| 中文字幕在线国产| 中文字幕视频一区| 国产女主播喷水视频在线观看| 精品国产凹凸成av人导航| 久草免费在线| 国产精品都在这里| 久久av电影| 男的插女的下面视频| 国产乱人伦偷精品视频不卡| 人妻互换一区二区激情偷拍| 色婷婷av一区二区三区gif| 日韩一区二区三区不卡| 欧美精品日韩三级| 91成人app| 91香蕉视频网址| 日av在线不卡| avhd101老司机| 在线观看一区日韩| 国产区av在线| 国产精品va在线播放| 久久爱www成人| 人妻有码中文字幕| 久久噜噜亚洲综合| 日本免费在线观看视频| 日韩电影中文 亚洲精品乱码 | 成人精品在线播放| 欧美日本在线视频中文字字幕| 四虎影视国产精品| 一区二区三区在线视频看| 蜜臀av性久久久久蜜臀av麻豆| 在线视频第一页| 欧美三电影在线| 日本高清视频在线观看| 91久久国产精品| 中文字幕av亚洲精品一部二部| 天天做天天干天天操| 亚洲女同女同女同女同女同69| 国产农村老头老太视频| 欧美乱大交xxxxx另类电影| 538任你躁精品视频网免费| 男人的天堂狠狠干| wwwwww.欧美系列| 久久久久久久久久久影院| 亚洲性线免费观看视频成熟| 搜成人激情视频| 一本久道久久综合狠狠爱亚洲精品| 久久精品国产99国产精品| 国产67194| 亚洲福利在线视频| 日本综合字幕| 一本色道久久综合亚洲二区三区| 黄色小说综合网站| 免费一级a毛片夜夜看 | 精品女厕一区二区三区| 九色在线视频| 国产啪精品视频| 欧美黄色一区二区| 黄色国产在线观看| 欧美制服丝袜第一页| 国产一二区在线| 国产综合欧美在线看| 免费亚洲电影在线| 深夜福利影院在线观看| 亚洲国产天堂久久综合| 亚洲电影有码| 人妻av无码专区| 99re这里只有精品6| 国产精品国产精品国产| 久久99精品久久久久久噜噜| 日韩精品丝袜美腿| 亚洲欧美偷拍另类| 亚洲电影中文字幕在线观看| 免费在线观看污视频| 91久久久久久| 香蕉久久夜色精品国产| 亚洲精品卡一卡二| 精品网站999www| 精品久久亚洲| 黄色片在线免费| 亚洲成人免费电影| 伊人在线视频| 久久久av水蜜桃|