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

為什么消息會重復消費,我從RocketMQ源碼中扒出了7種原因,有點小坑

開發 前端
為了解決這個問題,RocketMQ引入了定時清理的機制,定時清理長時間消費的消息,這樣消費進度就可以提交了。

大家好,我是三友~~

在眾多關于MQ的面試八股文中有這么一道題,“如何保證MQ消息消費的冪等性”。

為什么需要保證冪等性呢?是因為消息會重復消費。

為什么消息會重復消費?

明明已經消費了,為什么消息會被再次被消費呢?

不同的MQ產生的原因可能不一樣

本文就以RocketMQ為例,來扒一扒RocketMQ中會導致消息重復消息的原因,最終你會發現,其實消息重復消費算是RocketMQ無奈的“bug”。

如果有對RocketMQ不熟悉的小伙伴,可以看看我之前寫的 RocketMQ保姆級教程? 和 RocketMQ消息短暫而又精彩的一生 這兩篇文章。

圖片

消息發送異常時重復發送

首先,我們來瞅瞅RocketMQ發送消息和消費消息的基本原理。

如圖,簡單說一下上圖中的概念:

  • Broker,就是RocketMQ的服務端,如上圖就有兩個服務實例
  • Topic就是一類消息集合的名字
  • Queue就是Topic的對應的隊列,消息都存在Queue上,每個Topic都會有自己的幾個Queue

所以,整個消息發送和消費過程大致如下:

  • 生產者在發送消息之前根據負載均衡策略(默認是輪詢)選擇一個Queue,然后跟這個Queue所在的機器建立連接,把消息發送到這個Queue上
  • 消費者只要消費這個Queue,那么就能消費到消息

在正常情況下,生產者的確是按照這個方式來發送消息的

但是當出現了異常時,這種異常包括消息發送超時、響應超時等等,RocketMQ為了保證消息成功發送,會進行消息發送的重試操作,默認情況下會最多會重試兩次

圖片

重試操作比較簡單,就是選擇另一臺機器的Queue來發送。

雖然重試操作可以很大程度保證消息能夠發送成功,但是同時也會帶來消息重復發送的問題。

舉個例子,假設生產者向A機器發送消息,發生了異常,響應超時了,但是就一定代表消息沒發成功么?

不一定,有可能會出現服務端的確接受到并處理了消息,但是由于網絡波動等等,導致生產者接收不到服務端響應的情況,此時消息處理成功了,但是生成者還是以為發生了異常

此時如果發生重試操作,那么勢必會導致消息被發送了兩次甚至更多次,導致服務端存了多條相同的消息,那么就一定會導致消費者重復消費消息。

消費消息拋出異常

在RocketMQ的并發消費消息的模式下,需要用戶實現MessageListenerConcurrently接口來處理消息

圖片

當消費者獲取到消息之后會調用MessageListenerConcurrently?的實現,傳入需要消費的消息集合msgs?,這里提到的msgs很重要

圖片

如上代碼,當消息消費出現異常的時候,status?就會為null,后面就會將status?設置成為RECONSUME_LATER。

RECONSUME_LATER翻譯成功中文就是稍后重新消費的意思

所以從這可以看出,一旦拋出異常,那么消息之后就可以被重復消息。

到這其實可能有小伙伴覺得消息消費失敗重新消費很正常,保證消息盡可能消費成功。

對,這句話不錯,的確可以在一定程度上保證消費異常的消息可以消費成功。

但是坑不在這,而是前面提到的消費時傳入的整個集合中的消息都需要被重新消費。

具體的原因我們接著往下看

當消息處理之后,不論是成功還是異常,都需要對結果進行處理,代碼如下

圖片

當處理結果為RECONSUME_LATER?的時候(異常會設置為RECONSUME_LATER?),此時ackIndex?會設置成-1?,后面循環遍歷的時候就會遍歷到所有這次消費的消息,然后調用sendMessageBack?方法,sendMessageBack方式是用來實現消息重新消費的邏輯,這里就不展開說了。

所以,一旦被消費的一批消息中出現一個消費異常的情況,那么就會導致整批消息被重新消費,從而會導致在出現異常之前的成功處理的消息都會被重復消費,非??印?/p>

不過好在消費時傳入的消息集合中的消息數量是可以設置的,并且默認就是1

圖片

也就說默認情況下那個集合中就一條消息,所以默認情況下不會出現消費成功的消息被重復消費的情況。

所以這個參數不要輕易設置,一旦設置大了,就可能導致消息被重新消費。

除了并發消費消息的模式以外,RocketMQ還支持順序消費消息的模式,也會造成重復消費,邏輯其實差不多,但是在實現消息重新消費的邏輯不一樣。

消費者提交offset失敗

首先來講一講什么是offset。

前面說過,消息在發送的時候需要指定發送到,消息最后會被放到Queue中,其實真正的消息不是在Queue中,Queue存的是每個消息的位置,但是你可以理解為Queue存的是消息。

而消息在Queue中是有序號的,這個序號就被稱為offset,從0開始,單調遞增1。

比如說,如上圖,消息1的offset就是0,消息2的offset就是1,依次類推。

這個offset的一個作用就是用來管理消費者的消費進度。

當消費者在成功消費消息之后,需要將所消費的消息的offset提交給RocketMQ服務端,告訴RocketMQ,這個Queue的消息我已經消費到了這個位置了。

提交offset的代碼就在上述第二節提到的處理結果的后面

這樣有一個好處,那么一旦消費者重啟了或者其它啥的要從這個Queue拉取消息的時候,此時他只需要問問RocketMQ服務端上次這個Queue消息消費到哪個位置了,之后消費者只需要從這個位置開始消費消息就行了,這樣就解決了接著消費的問題。

但是RocketMQ在設計的時候,當消費完消息的時候并不是同步告訴RocketMQ服務端offset,而是定時發送。

如圖,當消費者消費完消息的時候,會將offset保存到內存中的一個Map數據結構中,所以上面截圖的那段代碼其實是更新內存中的offset

而在消費者啟動的時候會開啟一個定時任務,默認是5s一次,會通過網絡請求將內存中的每個Queue的消費進度offset發送給RocketMQ服務端。

由于是定時任務,所以就可能出現服務器一旦宕機,導致最新消費的offset沒有成功告訴RocketMQ服務端的情況

此時,消費進度offset就丟了,那么消費者重啟的時候只能從RocketMQ中獲取到上一次提交的offset,從這里開始消費,而不是最新的offset,出現明明消費到了第8個消息,RocketMQ卻告訴他只消費到了第5個消息的情況,此時必然會導致消息又出現重復消費的情況。

服務端持久化offset失敗

上一節說到,消費者會有一個每隔5s鐘的定時任務將每個隊列的消費進度offset提交到RocketMQ服務端

當RocketMQ服務端接收到提交請求之后,會將這個消費進度offset保存到內存中

同時為了保證RocketMQ服務端重啟消費進度不會丟失,也會開啟一個定時任務,默認也是5s一次,將內存中的消費進度持久化到磁盤文件中

所以,整個消費進度offset的數據流轉過程如下

當RocketMQ服務端重啟之后,會從磁盤中讀取文件的數據加載到內存中。

跟消費者產生的問題一樣,一旦RocketMQ發生宕機,那么offset就有可能丟失5s鐘的數據,RocketMQ服務端一旦重啟,消費者從RocketMQ服務端獲取到的消息消費進度就比實際消費的進度低,同樣也會導致消息重復消費。

主從同步offset失敗

在RocketMQ的高可用模式中,有一種名叫主從同步的模式,當主節點掛了之后,從節點可以手動升級為主節點對外提供訪問,保證高可用。

在主從同步模式下,從節點默認每隔10s會向主節點發送請求,同步一些元數據,這些元數據就包括消費進度

當從節點獲取到主節點的消費進度之后,會將主節點的消費進度設置到自己的內存中,同時也會持久化到磁盤。

所以整個消費進度offset的數據的流轉過程就會變成如下

同樣,由于也是定時任務,那么一旦主節點掛了,從節點就會丟10s鐘的消費進度,此時如果從節點升級為主節點對外提供訪問,就會出現跟上面提到的一樣的情況,消費者從這個新的主節點中拿到的消費進度比實際的低,自然而然就會重復消費消息。

所以,總的來說,在消費進度數據流轉的過程中,只要某個環節出現了問題,都有很有可能會導致消息重復消費。

重平衡

先來講一講什么是重平衡,其實重平衡很好理解,我說一下你就明白了。

前面說到,消費者是從隊列中獲取消息的

在RocketMQ中,有個消費者組的概念,一個消費者組中可以有多個消費者,不同消費者組之間消費消息是互不干擾的,所以前面提到的消費者其實都在消費組下

在同一個消費者組中,消息消費有兩種模式:

  • 集群消費模式
  • 廣播消費模式

由于RocketMQ默認是集群消費模式,并且絕大多數業務場景都是使用集群消費模式,所以這里就不討論廣播消費模式了,感興趣的同學可以看看RocketMQ消息短暫而又精彩的一生 這篇文章。

集群消費模式是指同一條消息只能被這個消費者組消費一次,這就叫集群消費。

并且前面提到提交消費進度給RocketMQ服務端的情況只會集群消費模式下才會有,在廣播消費模式不會提給到RocketMQ服務端,僅僅持久化到本地磁盤

同時前面說的消費者提交消費進度真正提交的是消費者組對于這個Queue的消費進度,而不是指具體的某個消費者對于Queue消費進度。

雖然說這里將前面提到的一些含義更深一步,但是并不妨礙前面的理解。

集群消費的實現就是將隊列按照一定的算法分配給消費者,默認是按照平均分配的。

如圖所示,假設某個topic有4個Queue,有個消費者組訂閱了這個topic,這個消費者組有兩個消費者1和消費者2,此時每個消費者就可以被分配兩個隊列,這樣就能保證消息正常情況下只會被消費一次。如果只有一個消費者,那么這個消費者就會消費所有隊列,很好理解。

接著后面又啟動了一個消費者3,此時為了保證剛上線的消費者3能夠消費消息,就要進行重平衡操作,重新分配每個消費者消費的隊列。

在重平衡之后就可能會出現下面這種情況

如上圖,原本被消費者2消費的Queue4被分配給消費者3,此時消費者3就能消費到消息了,這就是重平衡。

除了新增消費者會導致重平衡之外,消費者數量減少,隊列的數量增加或者減少都會觸發重平衡。

在了解了重平衡概念之后,接下來分析一下為什么重平衡會導致消息的重復消費。

假設在進行重平衡時,還未重平衡完之前,消費者2此時還是會按照上面第二節提到的消費消息的邏輯來消費Queue4的消息

當消費者2已經重平衡完成了,發現Queue4自己已經不能消費了,那么此時就會把這個Queue4設置為dropped,就是丟棄的意思

但是由于重平衡進行時消費者2仍然在消費Queue4的消息,但是當消費完之后,發現隊列被設置成dropped,那么此時被消費者2消費消息的offset就不會被提交,原因如下代碼

這段代碼前面已經出現過,一旦dropped被設置成true,這個if條件就通不過,消費進度就不會被提交。

成功消費消息了,但是卻不提交消費進度,這就非??恿?。。

于是當消費者3開始消費Queue4的消息的時候,他就會問問RocketMQ服務端,我消費者3所在的消費者組對于Queue4這個隊列消費到哪了,我接著消費就行了。

此時由于沒有提交消費進度,RocketMQ服務端告訴消費者3的消費進度就會比實際的低,這就造成了消息重復消費的情況。

清理長時間消費的消息

在RocketMQ中有這么一個機制,會定時清理長時間正在消費的消息。

如圖,假設有5條消息現在正在被消費者處理,這5條消息會被存在一個集合中,并且是按照offset的大小排序,消息1的offset最小,消息5的offset最大。

RocketMQ消費者啟動時會開啟一個默認15分鐘執行一次的定時任務

圖片

這個定時任務會去檢查正在處理的消息的第一條消息,也就是圖中的消息1,一旦發現消息1已經處理了超過15分鐘了,那么此時就會將消息1從集合中移除,之后會隔一定時間再次消費消息1。

這也會有坑,雖然消息1從集合中被移除了,但是消息1并沒有消失,仍然被消費者繼續處理,但是消息1隔一定時間就會再次被消費,就會出現消息1被重復消費的情況。

這就是清理長時間消費的消息導致重復消費的原因。

但此時又會引出一個新的疑問,為什么要移除這個處理超過15分鐘的消息呢?

這就又跟前面提到的消費進度提交有關!

前面說過消息被消費完成之后會提交消費進度,提交的消費進度實際會有兩種情況:

第一種就是某個線程消費了所有的消息,當把所有的消息都消費完成之后,就會把消息從集合中全部移除,此時提交的消費進度offset就是圖中消息5的offset+1

加1的操作是為了保證如果發生重啟,那么消費者下次消費的起始位置就是消息5后面的消息,保證消息5不被重復消費

第二種情況就不太一樣了

假設現在有兩個線程來處理這5條消息,線程1處理前2條,線程2處理后3條,如圖

圖片

現在線程1出現了長時間處理消息的情況。

此時線程2處理完消息之后,移除后面三條消息,準備提交offset的時候發現集合中還有元素,就是線程1正在處理的前兩條消息,此時線程2提交的offset并不是消息5對應的offset,而是消息1的offset,代碼如下

圖片

這么做的主要原因就是保證消息1和消息2至少被消費一次。

因為一旦提交了消息5對應的offset,如果消費者重啟了,下次消費就會接著從消息5的后面開始消費,而對于消息1和消息2來說,并不知道有沒有被消費成功,就有可能出現消息丟失的情況。

所以,一旦集合中最前面的消息長時間處理,那么就會導致后面被消費的消息進度無法提交,那么重啟之后就會導致大量消息被重復消費。

為了解決這個問題,RocketMQ引入了定時清理的機制,定時清理長時間消費的消息,這樣消費進度就可以提交了。

最后

總得來說,RocketMQ中還是存在很多種導致消息重讀消費的情況,并且官方也說了,只是在大多數情況下消息不會重復

圖片

所以如果你的業務場景中需要保證消息不能重復消費,那么就需要根據業務場景合理的設計冪等技術方案。

責任編輯:武曉燕 來源: 三友的java日記
相關推薦

2024-03-12 00:00:00

RocketMQ服務端磁盤

2021-08-23 08:19:48

辭職Google工程師

2023-12-25 19:28:59

RocketMQ大數據

2013-06-18 10:55:26

PhoneGap

2024-05-23 12:11:39

2025-03-21 10:33:22

2021-09-07 15:41:35

Bug誘因代碼

2024-06-05 06:37:19

2010-03-09 13:16:11

LinuxWindows

2021-03-08 10:19:59

MQ消息磁盤

2021-03-13 11:23:51

源碼邏輯框架

2024-04-09 09:08:09

Kafka消息架構

2021-05-10 09:35:58

Kubernetes節點Join

2012-03-19 20:52:55

小米

2022-03-27 09:06:04

React類型定義前端

2019-11-20 09:00:52

Linux 開發操作系統

2022-10-31 08:40:06

消息RocketMQ消息重復

2017-10-19 12:45:07

PHP

2011-05-27 09:19:32

Windows 7崩潰

2016-12-14 08:30:14

點贊
收藏

51CTO技術棧公眾號

欧美日韩一二三四区| 免费在线观看污网站| 欧美成人免费| 免费日本视频一区| 欧美激情a∨在线视频播放| 国产精品一区二区入口九绯色| 日韩和的一区二在线| 一色桃子久久精品亚洲| 精品欧美一区二区精品久久| 姑娘第5集在线观看免费好剧| 91精品电影| 国产视频精品va久久久久久| 亚洲图色中文字幕| 三妻四妾完整版在线观看电视剧| 国产精品久久久久三级| 蜜桃狠狠色伊人亚洲综合网站| 亚洲图片小说视频| 国产精品久久国产愉拍| 欧美成人合集magnet| 精品人妻无码一区| 国产精品自在线拍| 日韩亚洲欧美在线| 97超碰成人在线| 91久久国产综合久久91猫猫| 一区二区三区四区在线免费观看| 日本视频精品一区| 偷拍25位美女撒尿视频在线观看| 国产在线播放一区二区三区| 国产精品96久久久久久| 国产在线成人精品午夜| 亚洲综合五月| 九色porny丨国产精品| 亚洲制服丝袜av| 亚洲精品日韩在线观看| 肉丝一区二区| av综合在线播放| 国产91视觉| 国产成人精品一区二区无码呦| 轻轻草成人在线| 国产成一区二区| 日本特级黄色片| 亚洲激情偷拍| 亚洲18私人小影院| 精品无码一区二区三区电影桃花| 亚洲精彩视频| 久久成人精品视频| 欧美精品一级片| 欧美激情性爽国产精品17p| 久久久www成人免费精品张筱雨| 久久亚洲AV无码专区成人国产| 香蕉国产成人午夜av影院| 日韩av一区在线| 精品无码人妻一区| 国产精品入口久久| 亚洲一区www| 在线观看天堂av| 91亚洲一区| 久久精品人人爽| 日本中文字幕免费在线观看| 国产大片一区| 欧美乱人伦中文字幕在线| 欧美精品入口蜜桃| 在线午夜精品| 日本在线精品视频| 一区二区三区在线免费观看视频| 欧美a级一区二区| 国产日韩在线精品av| 国产精品探花视频| 成人综合在线网站| 欧美一区二区三区四区在线观看地址| 黄视频在线观看免费| 欧美国产日韩一二三区| 亚洲一区二区在线看| jizzjizz亚洲| 天天色综合成人网| 一区二区在线播放视频| 超碰国产精品一区二页| 欧美成人一区二区| 欧美一区二区三区免费观看视频| 国产成人三级视频| 爱看av在线| 91成人免费网站| 日韩欧美中文在线视频| 美女呻吟一区| 一区二区三区 在线观看视| 亚洲波多野结衣| 亚洲精品日韩久久| 国产精品久久av| 国产视频在线免费观看| 99在线精品一区二区三区| 日韩三级电影| tube8在线hd| 欧美日韩一区二区三区高清| 日本wwww色| 成人av动漫在线观看| 欧美尺度大的性做爰视频| 国产精品第5页| 激情成人综合网| 欧美日韩精品免费观看视一区二区| 草碰在线视频| 午夜精品久久一牛影视| 美女网站色免费| 欧美男男freegayvideosroom| 中文国产成人精品久久一| 久草视频在线免费看| 日韩电影在线观看电影| 成人免费看片网址| 日本在线免费看| 欧美性猛交xxxx黑人猛交| 亚洲国产欧美91| 欧美一区二区性| 欧美亚洲第一页| 国产成人精品免费看视频| 国产亲近乱来精品视频 | 香蕉精品视频在线观看| 欧美在线一级va免费观看| 国产毛片毛片毛片毛片毛片| 久久久综合精品| 成人在线国产视频| 国产午夜久久av| 色一区av在线| 天堂免费在线视频| 97久久精品人人做人人爽 | 污片在线免费观看| 欧美日韩另类一区| 欧美成人午夜激情视频| 在线免费观看黄色小视频| 欧美成人综合| 成人免费淫片aa视频免费| 国产精品视频一区二区久久| 天天综合色天天| 蜜臀av粉嫩av懂色av| 中文字幕一区二区三区乱码图片 | 日韩手机在线视频| 成人激情小说网站| 国产曰肥老太婆无遮挡| 日本免费精品| 欧美国产精品va在线观看| 国产精品国产三级国产普通话对白| 久久精品男人的天堂| 久久久久久久久久久福利| 精品欧美午夜寂寞影院| 欧美激情18p| 黄色一级大片在线免费看国产一 | 久久精品99无色码中文字幕 | 久热这里只有精品在线| 国产美女一区二区| 欧美与动交zoz0z| 日韩精品一级| 高清亚洲成在人网站天堂| 亚洲精品.www| 亚洲成人av在线电影| 无码国产精品一区二区免费式直播 | 日韩欧美精品电影| 中文字幕久热精品视频在线| 中文字幕在线观看第二页| 国产精品天干天干在观线 | 成人av综合在线| 日韩黄色短视频| 青青草久久爱| 日韩av手机在线观看| 国产在线网站| 欧美日韩视频在线第一区 | 日韩一级在线| 蜜桃视频成人| 国产精品亲子伦av一区二区三区| 久久精品国产久精国产思思| 国产精品嫩草影院8vv8| 国产乱码精品一区二区| 欧美激情在线观看视频免费| 色国产在线视频| 国模吧视频一区| 久久精品女人的天堂av| 日韩免费小视频| 久久福利视频网| 天天操天天干天天爱| 在线精品视频免费播放| 韩国一级黄色录像| 成人av网址在线| 亚洲视频在线a| 中文乱码免费一区二区三区下载| 99视频免费观看| 丝袜美腿一区| 精品久久久91| 五月天婷婷社区| 欧美三级中文字幕| 久久久美女视频| 久久蜜桃一区二区| 久久久精品视频国产| 亚洲经典自拍| 亚洲一区二区三区免费观看| av综合网站| 国产精品普通话| 51av在线| yellow中文字幕久久| 亚洲人视频在线观看| 欧美精品在线观看一区二区| 日本少妇激情视频| 国产精品福利一区| 精品国产人妻一区二区三区| 蜜臀久久99精品久久久久久9| 国产freexxxx性播放麻豆| 成人激情开心网| 精品卡一卡二| 精品国产18久久久久久二百| 国产suv精品一区二区| 青青在线视频| 色狠狠久久aa北条麻妃| 外国精品视频在线观看| 7777女厕盗摄久久久| 久久久久久久久久久久久av| 亚洲精品国产成人久久av盗摄 | 国产xxxxxx| 欧美中文字幕不卡| 香蕉免费毛片视频| 亚洲男同性视频| 91社区视频在线观看| 91视频在线看| 久久久老熟女一区二区三区91| 极品少妇一区二区| 污视频网站观看| 日韩高清不卡一区| 人妻内射一区二区在线视频| 天天躁夜夜躁狠狠是什么心态 | 日本wwwxx| 青青草精品视频| 麻豆传传媒久久久爱| 日韩午夜黄色| 全黄性性激高免费视频| 欧美日本一区二区高清播放视频| 亚洲一二区在线| 日韩成人精品一区| 日韩成人在线资源| 精品国产一区一区二区三亚瑟| 狠狠色综合一区二区| 久久porn| 激情伦成人综合小说| 丁香婷婷成人| 国产伦精品一区二区三毛| 91麻豆精品激情在线观看最新| 91久久国产自产拍夜夜嗨| 成人激情久久| 99在线影院| 成人爽a毛片免费啪啪红桃视频| 91麻豆蜜桃| 日本成人手机在线| 国产精品10p综合二区| 都市激情亚洲| 久久精品二区| 亚洲桃色综合影院| 色阁综合av| 天天影视天天精品| 国内精品国产三级国产99| 欧美精品一线| 青娱乐自拍偷拍| 老**午夜毛片一区二区三区 | 99国内精品久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品777| 1卡2卡3卡精品视频| 中文字幕亚洲在线观看| 激情久久av| 精品视频黄色| 手机看片日韩国产| 激情综合网址| 日本va中文字幕| 精品在线播放午夜| 波多野结衣加勒比| 国产日韩一级二级三级| 日韩在线视频免费看| 亚洲一区在线观看免费观看电影高清| 久久久久99精品| 91成人免费网站| www.精品视频| 国产视频精品va久久久久久| 日本视频在线免费观看| 九九热这里只有在线精品视| 韩国成人二区| 成人黄在线观看| 欧美天堂影院| 欧美极品美女视频网站在线观看免费| 波多野结衣亚洲色图| 亚洲成人精品在线观看| 一级片免费在线播放| 91精品国产91久久综合桃花| 少妇无码一区二区三区| 中文字幕av一区中文字幕天堂 | 小毛片在线观看| 国产欧美一区二区精品婷婷| 99热精品免费| 日本高清无吗v一区| 精品国产无码一区二区三区| 亚洲乱码国产乱码精品精天堂| 国产在线观看91| 欧美在线视频网站| 美女精品视频在线| 日韩亚洲视频| 99综合在线| 国产资源中文字幕| 国产欧美日韩另类视频免费观看| 麻豆亚洲av成人无码久久精品| 色婷婷av一区二区三区大白胸| 国产黄色片网站| 中文字幕免费国产精品| 性欧美xxx69hd高清| 97人人干人人| 91亚洲自偷观看高清| 18禁男女爽爽爽午夜网站免费| 国产麻豆午夜三级精品| 影音先锋制服丝袜| 天天色综合天天| 国产1区在线观看| 久久精品国产亚洲一区二区| 欧美激情喷水| 久久国产精品久久| 亚洲国产一区二区精品专区| 欧美国产日韩在线视频| 国产精品视频观看| 中文字幕a级片| 亚洲欧美日韩在线一区| www.九色在线| 国产精品制服诱惑| 成年人在线观看视频| 欧美日韩中文字幕在线视频| 国产免费高清av| 日韩综合中文字幕| 国产日本久久| 色一情一乱一伦一区二区三区| 午夜一级久久| 欧美bbbbb性bbbbb视频| 亚洲18色成人| 亚洲精品福利网站| 色综合久久精品亚洲国产| 国产精品一站二站| 国产三级中文字幕| 久久精品久久精品| 免费观看特级毛片| 欧美日本不卡视频| 精精国产xxxx视频在线| 国产女同一区二区| 99成人在线视频| 天天看片天天操| 日韩理论片网站| 国产三级伦理片| 欧美裸体男粗大视频在线观看| 欧美9999| 国产精品视频网站在线观看| 国产福利精品一区| 久久精品国产亚洲av麻豆色欲| 日韩精品一区二区三区中文精品 | 国语自产在线不卡| 大奶在线精品| 欧美 丝袜 自拍 制服 另类| 91小视频免费看| 天天干天天操天天操| 日日噜噜噜夜夜爽亚洲精品| 99精品美女视频在线观看热舞| 一区在线电影| 成人午夜视频在线| 99久久久久久久久| 色999日韩欧美国产| 永久免费观看精品视频| 青青草原网站在线观看| 国产999精品久久| 日韩美女视频网站| 亚洲图片欧美日产| 国产精品18| 好吊妞无缓冲视频观看| 久久久精品一品道一区| 亚洲图片中文字幕| 欧美精品videosex牲欧美| 欧美绝顶高潮抽搐喷水合集| 久草在在线视频| 亚洲欧洲日产国产综合网| 高h放荡受浪受bl| 国产97在线观看| 午夜精品一区二区三区国产| av影片在线播放| 欧美在线制服丝袜| av在线导航| 蜜桃狠狠色伊人亚洲综合网站| 麻豆国产精品官网| 国产精品2020| 日韩在线视频免费观看| 91精品国产自产在线丝袜啪| 国产精品免费成人| 亚洲黄色小视频| 第九色区av在线| 国产精品视频500部| 强制捆绑调教一区二区| 久久9999久久免费精品国产| 国产一区二区动漫| 北条麻妃一区二区三区在线观看| 免费在线观看毛片网站| 一卡二卡欧美日韩| a中文在线播放| 国产一区二区精品在线| 精品一区二区成人精品| 欧美日韩综合一区二区三区| 欧美成人一区二区三区电影|