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

Java多線程并發(fā)數(shù)據(jù)錯(cuò)亂了,接口冪等性如何設(shè)計(jì)?

開(kāi)發(fā) 前端
如果要是基于數(shù)據(jù)庫(kù)表加一個(gè)唯一索引,就可以實(shí)現(xiàn)接口冪等了 ,可是如果業(yè)務(wù)邏輯過(guò)于復(fù)雜,有很多數(shù)據(jù)存儲(chǔ),或者涉及很多表,此時(shí)就不能單單依賴(lài)一個(gè)唯一索引了,需要依靠在接口入口處加分布式鎖,然后才可以解決復(fù)雜接口的冪等性。

業(yè)務(wù)背景

今天給大家聊聊線上系統(tǒng)的接口冪等問(wèn)題,以及如何通過(guò)分布式鎖來(lái)保障接口的冪等性,同時(shí)會(huì)給大家分享一下我們?cè)诨诜植际芥i實(shí)現(xiàn)接口冪等性的時(shí)候,一些生產(chǎn)實(shí)踐經(jīng)驗(yàn)的積累。

首先給大家說(shuō)說(shuō),假如說(shuō)要是我們線上系統(tǒng)的核心接口要是沒(méi)有冪等性保障機(jī)制的話,可能會(huì)出現(xiàn)什么情況?

其實(shí)非常簡(jiǎn)單,假設(shè)你有一個(gè)系統(tǒng),他有一個(gè)接口,這個(gè)接口接受請(qǐng)求的時(shí)候假設(shè)會(huì)在數(shù)據(jù)庫(kù)里插入一條數(shù)據(jù),正常情況下一個(gè)用戶(hù)對(duì)這個(gè)接口發(fā)起一次請(qǐng)求應(yīng)該就只有一條數(shù)據(jù),結(jié)果可能某一天你會(huì)發(fā)現(xiàn)這個(gè)用戶(hù)通過(guò)這個(gè)接口插入了多條數(shù)據(jù)。

如下圖 1 所示:

圖 1

初版防重代碼

那么為什么會(huì)這樣呢?其實(shí)我們一般這類(lèi)系統(tǒng)接口,但凡是寫(xiě)的稍微好一點(diǎn)的,都會(huì)在接口里加入防重代碼。

就是會(huì)有代碼判斷一下,當(dāng)前你要寫(xiě)入的這條數(shù)據(jù)是否存在,如果他要是不存在的話,就會(huì)進(jìn)行插入,但是如果他存在的話就不會(huì)允許你重復(fù)插入的。

這種防重代碼如下所示:

public void business(Request request) {   
// 1、先根據(jù)請(qǐng)求參數(shù)在db里查詢(xún)一下這條數(shù)據(jù)
Data data = findData(request);

// 2、如果這條數(shù)據(jù)在db里已經(jīng)存在了,此時(shí)就直接返回了
if(data != null) {
return;
}

// 3、如果要是這條數(shù)據(jù)在db里不存在,此時(shí)就會(huì)執(zhí)行數(shù)據(jù)插入邏輯了
insertData(request);
}

結(jié)合上面這段代碼的防重邏輯,我們可以看下圖 2 的運(yùn)行邏輯展示:

圖 2

在插入數(shù)據(jù)之前一定會(huì)先根據(jù)請(qǐng)求參數(shù)查詢(xún)這條數(shù)據(jù),如果查詢(xún)到了,則此時(shí)直接返回不會(huì)重復(fù)插入,但是如果沒(méi)有查詢(xún)到這條數(shù)據(jù),則此時(shí)會(huì)插入這條數(shù)據(jù)。

那么大家可能問(wèn)題來(lái)了,那既然都已經(jīng)有這個(gè)防重邏輯了,即使你用相同的請(qǐng)求參數(shù)重復(fù)多次調(diào)用這個(gè)接口插入數(shù)據(jù),也不應(yīng)該重復(fù)插入數(shù)據(jù)啊!

按說(shuō)確實(shí)是這樣子的,但是凡事總有例外,那就是大名鼎鼎的瞬時(shí)重試+多線程并發(fā)問(wèn)題。

瞬時(shí)重試+多線程并發(fā)問(wèn)題分析

下面我們給大家解釋一下,在上述的代碼防重邏輯下,如果要是短時(shí)間內(nèi)用戶(hù)用相同的請(qǐng)求參數(shù)重復(fù)的發(fā)起了兩次請(qǐng)求,為什么會(huì)穿透防重邏輯,在數(shù)據(jù)庫(kù)里插入兩條一樣的數(shù)據(jù)。

大家要打起且精神來(lái),仔細(xì)來(lái)看這個(gè)過(guò)程了, 首先用戶(hù)可能會(huì)因?yàn)檫^(guò)于激動(dòng)、手抖或者是網(wǎng)絡(luò)抽風(fēng)等各種原因,在一瞬間發(fā)起兩次請(qǐng)求參數(shù)完全相同的請(qǐng)求。

如下圖 3 所示:

圖 3

接著呢,這兩個(gè)請(qǐng)求到了我們的系統(tǒng)后,其實(shí)是分別由一個(gè)線程來(lái)處理的,不管你是用 tomcat 部署提供的 controller 接口,還是基于 dubbo 提供的 rpc 接口,其實(shí)每個(gè)請(qǐng)求過(guò)來(lái)都是由一個(gè)獨(dú)立的線程來(lái)處理的。

如下圖 4 所示:

圖 4

接著呢,這兩個(gè)線程會(huì)并發(fā)的運(yùn)行相同的一段代碼邏輯,就是先根據(jù)請(qǐng)求參數(shù)查詢(xún)這條數(shù)據(jù)是否存在,存在就返回,不存在就進(jìn)行插入。

這個(gè)時(shí)候可能會(huì)出現(xiàn)一個(gè)問(wèn)題,因?yàn)槭嵌嗑€程并發(fā),所以很可能這兩個(gè)線程會(huì)同時(shí)執(zhí)行數(shù)據(jù)查詢(xún)邏輯,但是他們倆同時(shí)執(zhí)行數(shù)據(jù)查詢(xún)邏輯的時(shí)候,有一個(gè)問(wèn)題,那就是此時(shí)數(shù)據(jù)庫(kù)里沒(méi)數(shù)據(jù)啊!

所以說(shuō),這兩個(gè)線程并發(fā)運(yùn)行,完全可能會(huì)同時(shí)發(fā)現(xiàn)從數(shù)據(jù)庫(kù)里查詢(xún)出來(lái)的數(shù)據(jù)是空的。

如下圖 5 所示:

圖 5

然后這個(gè)時(shí)候,兩個(gè)線程既然發(fā)現(xiàn)自己查詢(xún)到的數(shù)據(jù)都是空的,那當(dāng)然都可以去插入數(shù)據(jù)了。

所以此時(shí)這兩個(gè)線程會(huì)基于這個(gè)請(qǐng)求參數(shù)分別插入一條數(shù)據(jù),而這條數(shù)據(jù)其實(shí)對(duì)于業(yè)務(wù)來(lái)說(shuō)是完全重復(fù)的,因?yàn)檎?qǐng)求參數(shù)是完全相同的。

如下圖 6 所示:

圖 6

這個(gè)時(shí)候就會(huì)導(dǎo)致本次數(shù)據(jù)重復(fù)問(wèn)題了,針對(duì)這種情況,我們一般把這種接口稱(chēng)之為沒(méi)有冪等性。

因?yàn)槿绻粋€(gè)接口是有冪等性的,其實(shí)對(duì)于這個(gè)接口如果說(shuō)用相同的參數(shù)發(fā)起請(qǐng)求,那肯定是只會(huì)有一條數(shù)據(jù),不可能會(huì)有重復(fù)數(shù)據(jù)的,這才叫做冪等性。

而現(xiàn)在的問(wèn)題是,這個(gè)接口用相同的請(qǐng)求參數(shù)發(fā)起多次,結(jié)果數(shù)據(jù)有重復(fù)了,此時(shí)接口就沒(méi)有冪等性。

數(shù)據(jù)庫(kù)唯一索引實(shí)現(xiàn)冪等

針對(duì)上述這種接口冪等問(wèn)題,其實(shí)比較簡(jiǎn)單的一種解決方案,就是基于我們依賴(lài)的數(shù)據(jù)庫(kù)去實(shí)現(xiàn)冪等。

也就是說(shuō),用數(shù)據(jù)庫(kù)的唯一索引來(lái)實(shí)現(xiàn)即可,如果我們要是基于請(qǐng)求中的某一個(gè)或者多個(gè)業(yè)務(wù)字段組成一個(gè)唯一索引,那么其實(shí)你要往數(shù)據(jù)庫(kù)中用相同參數(shù)插入重復(fù)數(shù)據(jù),那就是不可能的。

因?yàn)閿?shù)據(jù)庫(kù)層面就會(huì)阻止你插入的,唯一索引會(huì)確保這一點(diǎn),你要重復(fù)插入,他就會(huì)拋異常。

如下 7 所示:

圖 7

分布式鎖實(shí)現(xiàn)冪等

但是很多時(shí)候我們會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,那就是我們可能不一定說(shuō)每次都可以依賴(lài)數(shù)據(jù)庫(kù)的 唯一索引實(shí)現(xiàn)這種冪等性。

因?yàn)橛锌赡苣阍跇I(yè)務(wù)邏輯里,除了依賴(lài)數(shù)據(jù)庫(kù)以外,還依賴(lài)了別的服務(wù)接口,或者是 elasticsearch、redis 等多種數(shù)據(jù)存儲(chǔ),也可能是依賴(lài)了數(shù)據(jù)庫(kù)中的多張表里的數(shù)據(jù),你不可能每張表都做一個(gè)唯一索引來(lái)確保冪等性。

所以對(duì)于有復(fù)雜業(yè)務(wù)邏輯的接口來(lái)說(shuō),要確保冪等性,往往需要引入一個(gè)關(guān)鍵組件,那就是分布式鎖。

所謂的分布式鎖,意思就是依賴(lài)外部的某個(gè)系統(tǒng)來(lái)加一把鎖,鎖加了以后后續(xù)還可以釋放這把鎖,現(xiàn)在比較常見(jiàn)的分布式鎖實(shí)現(xiàn)主要是依賴(lài) redis 和 zookeeper 這兩個(gè)來(lái)實(shí)現(xiàn)的,我們這里就以 redis 分布式鎖來(lái)舉例說(shuō)明。

先往簡(jiǎn)單了說(shuō),我們可以在接口的入口代碼處,基于 redis 加一把分布式的鎖,這個(gè)時(shí)候只有一個(gè)線程可以成功加鎖。

加鎖之后,就這一個(gè)線程就可以去查詢(xún)這條數(shù)據(jù)是否存在,如果不存在,就可以插入一條數(shù)據(jù)進(jìn)去,然后再釋放鎖,在這個(gè)過(guò)程中,另外一個(gè)線程因?yàn)楂@取不到 redis 分布式鎖,所以只能干等著。

如下圖 8 所示:

圖 8

等第一個(gè)線程加鎖,然后查詢(xún)數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)不存在,接著插入一條數(shù)據(jù),最后釋放鎖之后,接著第二個(gè)線程就才能得到機(jī)會(huì)再次加鎖,接著第二個(gè)線程加鎖后查詢(xún)數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)已經(jīng)存在了,此時(shí)他就會(huì)直接返回,不會(huì)重復(fù)插入數(shù)據(jù)了。

如下圖 9 所示:

圖 9

如上圖,大家可以發(fā)現(xiàn),只要在核心接口的入口處加一把分布式鎖,就可以實(shí)現(xiàn)多線程并發(fā)下,復(fù)雜業(yè)務(wù)邏輯不會(huì)被重復(fù)執(zhí)行了,而且不依賴(lài)數(shù)據(jù)庫(kù)某個(gè)表的唯一索引,只要基于 redis 實(shí)現(xiàn)加鎖和釋放鎖就可以了。

而至于 redis 分布式鎖是如何實(shí)現(xiàn)的,就不在本文的討論中了,我們這次主要是給大家先分析一下線上系統(tǒng)接口的冪等問(wèn)題,當(dāng)沒(méi)有冪等性的時(shí)候,接口是如何在多線程并發(fā)場(chǎng)景下出現(xiàn)數(shù)據(jù)重復(fù)問(wèn)題的。

總結(jié)

然后我們分析了,如果要是基于數(shù)據(jù)庫(kù)表加一個(gè)唯一索引,就可以實(shí)現(xiàn)接口冪等了 ,可是如果業(yè)務(wù)邏輯過(guò)于復(fù)雜,有很多數(shù)據(jù)存儲(chǔ),或者涉及很多表,此時(shí)就不能單單依賴(lài)一個(gè)唯一索引了,需要依靠在接口入口處加分布式鎖,然后才可以解決復(fù)雜接口的冪等性。

責(zé)任編輯:武曉燕 來(lái)源: 石杉的架構(gòu)筆記
相關(guān)推薦

2020-07-15 08:14:12

高并發(fā)

2025-02-26 08:20:18

2024-03-13 15:18:00

接口冪等性高并發(fā)

2021-03-28 09:45:05

冪等性接口數(shù)據(jù)

2021-01-18 14:34:59

冪等性接口客戶(hù)端

2021-01-20 07:16:07

冪等性接口token

2021-04-14 17:18:27

冪等性數(shù)據(jù)源MySQL

2023-09-01 15:27:31

2021-01-13 11:23:59

分布式冪等性支付

2025-03-17 08:07:11

2022-05-01 21:43:38

SQL設(shè)計(jì)模式

2025-02-23 08:00:00

冪等性Java開(kāi)發(fā)

2024-06-24 01:00:00

2023-03-07 08:19:16

接口冪等性SpringBoot

2022-05-23 11:35:16

jiekou冪等性

2024-08-29 09:01:39

2020-06-28 11:14:36

多線程性能結(jié)構(gòu)

2024-07-10 12:23:10

2024-11-01 09:28:02

2025-04-27 03:22:00

系統(tǒng)接口冪等性
點(diǎn)贊
收藏

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

五月婷婷色综合| 国产91精品欧美| 久久激情视频久久| 风韵丰满熟妇啪啪区老熟熟女| 美女航空一级毛片在线播放| 久久久久综合网| 成人自拍性视频| 天天操天天摸天天干| 久久精品国产www456c0m| 欧美成人综合网站| 日本a√在线观看| 女子免费在线观看视频www| 久久中文字幕电影| 亚洲综合中文字幕68页| 久久久黄色大片| 欧美在线不卡| 少妇高潮久久77777| 男人的天堂影院| 久久三级毛片| 色综合久久天天| 久久久久久久久久久综合| 在线日本视频| 久久综合国产精品| 国产精品一区免费观看| 91精东传媒理伦片在线观看| 久久婷婷影院| 欧美极品少妇xxxxx| 国产一级淫片久久久片a级| 欧洲亚洲视频| 亚洲高清一二三区| 亚洲少妇一区二区| 曰本一区二区| 欧美日韩一区二区欧美激情| 国产男女无遮挡| 黑人精品视频| 亚洲久本草在线中文字幕| 亚洲免费不卡| 成年人视频在线免费观看| 99re8在线精品视频免费播放| 亚洲精品欧美极品| 国产精品视频a| 看电视剧不卡顿的网站| 人体精品一二三区| 永久免费无码av网站在线观看| 亚洲国产二区| 久久久久亚洲精品国产| 免费一级a毛片夜夜看| 围产精品久久久久久久| 最好看的2019的中文字幕视频| 实拍女处破www免费看| 久久草在线视频| 欧美精品一区二区三区很污很色的 | 国产精品偷伦一区二区| 夜夜爽妓女8888视频免费观看| 妖精视频成人观看www| 97在线免费视频| 亚洲精品1区2区3区| 国产一区二区精品| 国产成人91久久精品| 欧美亚洲另类小说| 青青草国产成人99久久| 国产日韩换脸av一区在线观看| 中文字幕有码无码人妻av蜜桃| 美女视频黄频大全不卡视频在线播放| 国产精品久久久久久久久免费看| 中国黄色一级视频| 国内精品伊人久久久久影院对白| 91精品视频网站| 亚洲a视频在线| 不卡av在线网| 欧美一级二级三级| 日韩伦理在线电影| 一区二区三区中文字幕| 欧美午夜性视频| 欧美xxxxxx| 欧美性猛交xxxxxx富婆| 亚洲AV无码久久精品国产一区| 91国内精品| 亚洲欧美在线播放| 大地资源高清在线视频观看| 欧美视频网站| 国产98色在线| 国内精品久久久久久久久久久| 成人免费视频视频在线观看免费| 久久天天狠狠| 成年人黄视频在线观看| 午夜成人免费电影| 中国黄色片免费看| 91麻豆精品激情在线观看最新 | 看黄在线观看| 欧美日韩国产一二三| 野花视频免费在线观看| 神马日本精品| 久久久久www| 亚洲天堂日韩av| 久草热8精品视频在线观看| 国产精品视频500部| av在线二区| 亚洲国产成人av| 日韩中文字幕a| 国产精品x8x8一区二区| 中文字幕日韩免费视频| 国产成人自拍视频在线| 激情综合亚洲精品| 欧美aaaaa喷水| а√中文在线8| 一本到不卡免费一区二区| 欧美人与性动交α欧美精品| 国内成人精品| 97久久伊人激情网| 99久久免费国产精精品| 国产欧美日韩麻豆91| 国产不卡一区二区视频| 国产精久久久| 中文字幕不卡av| 成人午夜淫片100集| 国产成人av电影在线观看| 一区二区三区欧美在线| 男人皇宫亚洲男人2020| 亚洲国产精品成人精品| 国产大片免费看| 九色综合国产一区二区三区| 日本不卡在线观看| 色是在线视频| 亚洲电影在线观看| 国产精品成人免费观看| 久久国产精品露脸对白| 日韩高清三级| 成人免费直播| 国产婷婷色综合av蜜臀av| 国产主播在线观看| 国产99久久久国产精品潘金网站| 天天综合中文字幕| 精品美女一区| 一区二区在线视频播放| 国产精品xxxxxx| 久久久精品国产免费观看同学| 性欧美大战久久久久久久| 51亚洲精品| 欧美黄色免费网站| 国产成人麻豆精品午夜在线| 亚洲免费在线观看视频| 黄色a级三级三级三级| 97精品国产福利一区二区三区| 国产精品免费久久久久久| 国内av一区二区三区| 色综合色综合色综合色综合色综合| 亚洲精品女人久久久| 野花国产精品入口| 蜜桃成人免费视频| 欧美性猛交xxx高清大费中文| 亚洲欧美国产一区二区三区| 日韩手机在线视频| 欧美国产日韩在线观看| 亚洲国产日韩欧美在线观看| 久久综合99| 91亚洲永久免费精品| 手机在线免费看av| 亚洲成年人在线播放| 800av免费在线观看| 久久久99精品久久| 91制片厂毛片| 91精品天堂福利在线观看| 97中文在线| av色在线观看| 亚洲视频欧洲视频| 国产精品毛片久久久久久久av | 日韩中文在线视频| 国产女无套免费视频| 亚洲二区视频在线| 麻豆精品免费视频| 久久99久久99精品免视看婷婷| 国产日产欧美一区二区| 欧美日韩导航| 国产伦精品一区二区三区精品视频| 黄色精品免费看| 精品国产乱码久久久久久夜甘婷婷| 日韩特黄一级片| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲77777| 激情综合亚洲| 日韩视频精品| 国产成人一二片| 国产精品日韩欧美| 日日夜夜天天综合入口| 亚洲日韩中文字幕| 国产av无码专区亚洲av| 色婷婷一区二区| 放荡的美妇在线播放| 久久精品人人做人人综合 | 国产清纯在线一区二区www| 999久久久精品视频| 亚洲黄色影片| 中文字幕一区二区三区精彩视频| 精品国内亚洲2022精品成人| 国产精品一区久久| 交100部在线观看| 久久精品视频在线| 青青青草原在线| 日韩免费高清av| 中文字幕乱码视频| 红桃视频成人在线观看| 久久久精品视频免费观看| 久久理论电影网| 久久久久无码国产精品一区李宗瑞| 天堂精品中文字幕在线| 成人一级生活片| 视频在线不卡免费观看| 欧美区高清在线| 成人台湾亚洲精品一区二区| 成人黄色av免费在线观看| 手机在线观看av| 欧美高跟鞋交xxxxhd| 日韩精品成人av| 国产一区二区三区在线看| 污视频网站在线播放| 日韩美女天天操| 国产巨乳在线观看| 欧美调教femdomvk| 亚洲第一网站在线观看| 午夜激情一区二区| 男女免费视频网站| 一区二区三区日韩欧美| 91麻豆精品久久毛片一级| 久久网站最新地址| 少妇一级淫免费观看| 福利一区二区在线| 日韩欧美中文在线视频| 激情都市一区二区| 日本激情视频在线播放| 免费看欧美女人艹b| 激情五月婷婷久久| 久久婷婷麻豆| 欧美午夜性生活| 日韩精品免费专区| 日韩一级片播放| 蜜臀av亚洲一区中文字幕| 日韩免费高清在线| 久久久蜜桃一区二区人| 久久婷婷国产精品| 久久久噜噜噜| 免费看污污网站| 久久国产夜色精品鲁鲁99| 我看黄色一级片| 麻豆精品一二三| 日本中文字幕精品—区二区| 久久国产生活片100| 在线观看免费污视频| 九九热在线视频观看这里只有精品| 五月激情婷婷在线| 韩国av一区二区三区四区 | 91av久久久| 91精品麻豆日日躁夜夜躁| av网站在线免费看| 亚洲成人av中文字幕| 欧美777四色影视在线| 国产亚洲精品一区二555| av午夜在线| 欧美精品一区在线播放| 黄页在线观看免费| 国产91精品久久久| 日本成人福利| 91久久久在线| 粉嫩的18在线观看极品精品| 免费久久一级欧美特大黄 | 国产精品成人久久电影| 国产精品视区| 美女网站色免费| 国产馆精品极品| 99久久久久久久久久| 欧美激情一区二区三区| 中文字幕人妻一区二| 亚洲第一成人在线| 中文字幕一区二区三区四区欧美| 欧美日韩国产首页| 欧美一级一区二区三区| 亚洲人永久免费| a黄色片在线观看| 欧洲精品在线视频| www.久久爱.com| 久久精品中文字幕一区二区三区| 日韩欧美伦理| 国产精品久久..4399| 麻豆成人免费电影| 国产在线不卡av| 欧美激情一区不卡| 国产精品999久久久| 欧美色图在线观看| 成人免费视频国产| 在线视频中文亚洲| 高清毛片在线观看| 91社区国产高清| 一区二区三区韩国免费中文网站| 中文视频一区视频二区视频三区| 亚洲美女啪啪| 一级黄色片在线免费观看| 26uuu亚洲综合色欧美| 国产精品视频一区二区三| 91搞黄在线观看| 色窝窝无码一区二区三区| 最近2019中文字幕大全第二页 | 在线不卡欧美| 中文字幕国内自拍| 91热门视频在线观看| 欧美日韩一级在线观看| 欧美中文字幕一区二区三区| 国产小视频一区| 成年人精品视频| 高清电影一区| 精品1区2区| 欧美日本在线| 亚洲第一成肉网| 国产免费久久精品| 六月丁香激情综合| 亚洲国产成人av在线| 在线中文字幕第一页| 国产欧美一区二区白浆黑人| 一区三区在线欧| 黄色一级在线视频| 成人免费视频视频| 午夜69成人做爰视频| 91精品国产综合久久福利| 成人亚洲综合天堂| 国产精品r级在线| 人人精品视频| 免费在线观看亚洲视频 | 4438亚洲最大| 日本高清视频在线播放| 国产精品精品久久久| 蜜桃a∨噜噜一区二区三区| 久久久久久久久久网| www.日韩av| 日本三级黄色大片| 精品国产免费一区二区三区香蕉| 亚洲夜夜综合| 99在线热播| 国产精品豆花视频| 极品白嫩的小少妇| 一区二区高清免费观看影视大全| 99国产揄拍国产精品| 欧美黄色小视频| 99a精品视频在线观看| 亚洲中文字幕无码av永久| 成人午夜电影小说| 亚洲精品77777| 亚洲美女视频网| 欧美色网在线| 亚洲精品视频一区二区三区| 六月婷婷色综合| 一区二区视频免费看| 日韩精品一区在线观看| av小说在线播放| 欧美一区亚洲二区| 老汉av免费一区二区三区| 久久福利免费视频| 精品日韩在线观看| 岛国在线视频网站| 日本婷婷久久久久久久久一区二区 | 国产视频在线观看视频| 欧美黄色免费网站| 日韩在线麻豆| 亚欧美在线观看| 亚洲另类中文字| 姝姝窝人体www聚色窝| 国产999精品视频| 亚洲成av人片乱码色午夜| 欧美图片自拍偷拍| 91福利视频网站| 免费看美女视频在线网站| 爱情岛论坛亚洲入口| 久久九九电影| 91久久久久久久久久久久久久| 日韩精品在线看片z| 欧美特大特白屁股xxxx| 亚洲国产欧美一区二区三区不卡| 国产一区二区三区日韩| 欧美一二三区视频| 中文日韩电影网站| 91麻豆精品激情在线观看最新| 精品视频无码一区二区三区| 亚洲欧美韩国综合色| 四虎成人免费在线| 91视频国产精品| 蜜桃av一区| 黄色一级视频在线观看| 在线看福利67194| 成人看片爽爽爽| 中文字幕 欧美日韩| 亚洲二区在线视频| 麻豆影院在线| 欧美日韩综合精品| 国产精品一区二区你懂的| 伊人中文字幕在线观看| 欧美成人午夜激情| 国产精品手机在线播放 | 久久久久久久久久久亚洲| 欧美日韩国产在线观看网站| 一级黄色片毛片| 在线播放日韩导航| 日韩不卡免费高清视频|