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

我向《RocketMQ技術(shù)內(nèi)幕》一書的創(chuàng)始人請(qǐng)教了一個(gè)問題

開發(fā) 架構(gòu)
兩個(gè)一樣的Consumer Group的Consumer訂閱同一個(gè)Topic,但是是不同的tag,Consumer1訂閱Topic的tag1,Consumer2訂閱Topic的tag2,然后分別啟動(dòng)。

是這樣的,我在學(xué)習(xí)rocketmq的時(shí)候遇到了一個(gè)奇怪的問題,就是同一個(gè)消費(fèi)者組內(nèi)的消費(fèi)者訂閱同一個(gè)主題topic,不同的tag的時(shí)候看到一個(gè)消息丟失的問題

這個(gè)問題我也是向《RocketMQ技術(shù)內(nèi)幕》一書的作者丁威大哥,然后他給我解釋了我對(duì)于這個(gè)問題的困惑,我來給大家解釋一下

先給大家描述一下這個(gè)具體的內(nèi)容

兩個(gè)一樣的Consumer Group的Consumer訂閱同一個(gè)Topic,但是是不同的tag,Consumer1訂閱Topic的tag1,Consumer2訂閱Topic的tag2,然后分別啟動(dòng)。

這時(shí)候往Topic的tag1里發(fā)送10條數(shù)據(jù),Topic的tag2里發(fā)送10條。目測(cè)應(yīng)該是Consumer1和Consumer2分別收到對(duì)應(yīng)的10條消息。結(jié)果卻是只有Consumer2收到了消息,而且只收到了4-6條消息,不固定。

MQ底層數(shù)據(jù)結(jié)構(gòu)之精妙

圖片

RocketMQ專門按照Topic為每一個(gè)topic建立索引,方便消費(fèi)端按照topic進(jìn)行消費(fèi),其具體實(shí)現(xiàn)為消息隊(duì)列。

在RocketMQ中,ConsumeQueue的引入并不是為了提高消息寫入的性能,而是為消費(fèi)服務(wù)的。

消息消費(fèi)隊(duì)列中的每一個(gè)條目是一個(gè)定長(zhǎng)的,設(shè)計(jì)極具技巧性,其每個(gè)條目使用固定長(zhǎng)度(8字節(jié)commitlog物理偏移量、4字節(jié)消息長(zhǎng)度、8字節(jié)tag hashcode),這里不是存儲(chǔ)tag的原始字符串,而是存儲(chǔ)hashcode。

目的就是確保每個(gè)條目的長(zhǎng)度固定,可以使用訪問類似數(shù)組下標(biāo)的方式來快速定位條目,極大的提高了ConsumeQueue文件的讀取性能,這樣根據(jù)消費(fèi)進(jìn)度去訪問消息的方法為使用邏輯偏移量logicOffset * 20即可找到該條目的起始偏移量(consumequeue文件中的偏移量),然后讀取該偏移量后20個(gè)字節(jié)即得到了一個(gè)條目,無需遍歷consumequeue文件。

關(guān)于RocketMQ中的三個(gè)文件,來幫助RocketMQ完成如此高效率的偉業(yè),我也寫了一個(gè)文章來介紹這三個(gè)文件,大家可以看一下通過這三個(gè)文件徹底搞懂rocketmq的存儲(chǔ)原理

消息過濾實(shí)現(xiàn)機(jī)制

消費(fèi)端隊(duì)列存儲(chǔ)的是 tag 的 hashcode,眾所周知,不同的字符串得到的hashcode值可能一樣,故在服務(wù)端是無法精確對(duì)消息進(jìn)行過濾的,所以在RocketMQ中會(huì)進(jìn)行兩次消息過濾。

當(dāng)客戶端向服務(wù)端拉取消息時(shí),服務(wù)端在返回消息之前,會(huì)先根據(jù)hashcode進(jìn)行過濾,然后客戶端收到服務(wù)端的消息后,再根據(jù)消息的tag字符串進(jìn)行精確過濾。

上面的原理很好理解呀,那為什么會(huì)丟失消息呢?這其實(shí)和消息隊(duì)列負(fù)載機(jī)制有關(guān)。

在RocketMQ中使用集群模式消費(fèi)時(shí),同一個(gè)消費(fèi)組中的多個(gè)消費(fèi)者共同完成主題中的隊(duì)列的消費(fèi),即一個(gè)消費(fèi)者只會(huì)分配到其中某幾個(gè)隊(duì)列,并且同一時(shí)間,一個(gè)隊(duì)列只會(huì)分配給一個(gè)消費(fèi)者,這樣結(jié)合上面的的過濾機(jī)制,就會(huì)明顯有問題,請(qǐng)看示例圖:

圖片

其問題的核心關(guān)鍵是,同一個(gè)tag會(huì)分布在不同的隊(duì)列中,但消費(fèi)者C1分配到的隊(duì)列為q0,q1,q0,q1中有taga和tagb的消息,但tagb的消息會(huì)被消費(fèi)者C1過濾,但這部分消息卻不會(huì)被C2消費(fèi),造成了消息丟失。

所以在RocketMQ中,一個(gè)消費(fèi)組內(nèi)的所有消費(fèi)這,其訂閱關(guān)系必須保持一致。

我們?cè)賮砘剡^頭看這個(gè)問題

首先這是Broker決定的,而不是Consumer端決定的

Consumer端發(fā)心跳給Broker,Broker收到后存到consumerTable里(就是個(gè)Map),key是GroupName,value是ConsumerGroupInfo。

ConsumerGroupInfo里面是包含topic等信息的,但是問題就出在上一步驟,key是groupName,你同GroupName的話Broker心跳最后收到的Consumer會(huì)覆蓋前者的。相當(dāng)于如下代碼:

map.put(groupName, ConsumerGroupInfo);

這樣同key,肯定產(chǎn)生了覆蓋。所以Consumer1不會(huì)收到任何消息,但是Consumer2為什么只收到了一半(不固定)消息呢?

那是因?yàn)椋耗闶羌耗J较M(fèi),它會(huì)負(fù)載均衡分配到各個(gè)節(jié)點(diǎn)去消費(fèi),所以一半消息(不固定個(gè)數(shù))跑到了Consumer1上,結(jié)果Consumer1訂閱的是tag1,所以不會(huì)任何輸出。

如果換成BROADCASTING,那絕逼后者會(huì)收到全部消息,而不是一半,因?yàn)閺V播是廣播全部Consumer。

/**
* Consumer信息
*/
public class ConsumerGroupInfo {
// 組名
private final String groupName;
// topic信息,比如topic、tag等
private final ConcurrentMap<String/* Topic */, SubscriptionData> subscriptionTable =
new ConcurrentHashMap<String, SubscriptionData>();
// 客戶端信息,比如clientId等
private final ConcurrentMap<Channel, ClientChannelInfo> channelInfoTable =
new ConcurrentHashMap<Channel, ClientChannelInfo>(16);
// PULL/PUSH
private volatile ConsumeType consumeType;
// 消費(fèi)模式:BROADCASTING/CLUSTERING
private volatile MessageModel messageModel;
// 消費(fèi)到哪了
private volatile ConsumeFromWhere consumeFromWhere;
}
/**
* 通過心跳將Consumer信息注冊(cè)到Broker端。
*/
public boolean registerConsumer(final String group, final ClientChannelInfo clientChannelInfo,
ConsumeType consumeType, MessageModel messageModel, ConsumeFromWhere consumeFromWhere,
final Set<SubscriptionData> subList, boolean isNotifyConsumerIdsChangedEnable) {
// consumerTable:維護(hù)所有的Consumer
ConsumerGroupInfo consumerGroupInfo = this.consumerTable.get(group);
// 如果沒有Consumer,則put到map里
if (null == consumerGroupInfo) {
ConsumerGroupInfo tmp = new ConsumerGroupInfo(group, consumeType, messageModel, consumeFromWhere);
// put到map里
ConsumerGroupInfo prev = this.consumerTable.putIfAbsent(group, tmp);
consumerGroupInfo = prev != null ? prev : tmp;
}
// 更新Consumer信息,客戶端信息
boolean r1 =
consumerGroupInfo.updateChannel(clientChannelInfo, consumeType, messageModel,
consumeFromWhere);
// 更新訂閱Topic信息
boolean r2 = consumerGroupInfo.updateSubscription(subList);
if (r1 || r2) {
if (isNotifyConsumerIdsChangedEnable) {
this.consumerIdsChangeListener.handle(ConsumerGroupEvent.CHANGE, group, consumerGroupInfo.getAllChannel());
}
}
this.consumerIdsChangeListener.handle(ConsumerGroupEvent.REGISTER, group, subList);
return r1 || r2;
}

從這一步可以看出消費(fèi)者信息是以groupName為key,ConsumerGroupInfo為value存到map(consumerTable)里的,那很明顯了,后者肯定會(huì)覆蓋前者的,因?yàn)閗ey是一樣的。

而后者的tag是tag2,那肯定覆蓋了前者的tag1,這部分是存到ConsumerGroupInfo的subscriptionTable里面的。

private final ConcurrentMap<String/* Topic */, SubscriptionData> subscriptionTable =
new ConcurrentHashMap<String, SubscriptionData>();

SubscriptionData包含了topic等信息

public class SubscriptionData implements Comparable<SubscriptionData> {
// topic
private String topic;
private String subString;
// tags
private Set<String> tagsSet = new HashSet<String>();
private Set<Integer> codeSet = new HashSet<Integer>();
}

其實(shí)到這里,這個(gè)問題已經(jīng)算是解決了七八成了,等同于是后來的消費(fèi)者的注冊(cè)信息會(huì)把之前的消費(fèi)者的注冊(cè)信息覆蓋掉,這也就導(dǎo)致了上述出現(xiàn)的現(xiàn)象。

先啟動(dòng)訂閱了tag1的消費(fèi)者,然后啟動(dòng)了訂閱了tag2的消費(fèi)者,這時(shí)最新的心跳信息是來源于tag2的這個(gè)消費(fèi)者,這就導(dǎo)致了這個(gè)消費(fèi)者的訂閱信息會(huì)覆蓋掉之前的訂閱信息,這是因?yàn)樵赗ocketMQ中會(huì)認(rèn)為同一個(gè)消費(fèi)者組的消費(fèi)者的訂閱信息是需要保持一致的,如果不保持一致是不被允許的做法。

如果真有那種,你去新建一個(gè)topic不就好了,或者新建一個(gè)消費(fèi)者組不就好了,在使用的過程中一定要保持消費(fèi)者組的訂閱信息保持一致。

這也就導(dǎo)致了發(fā)送者發(fā)送的tag1的消息壓根不會(huì)被這個(gè)消費(fèi)者接收到,而兩個(gè)消費(fèi)者自然不會(huì)消費(fèi)這個(gè)的消息。

而為什么只收到tag2的部分消息

這是因?yàn)閞ocketMQ默認(rèn)采用的是集群消費(fèi)的模式,也就是生產(chǎn)者的消息會(huì)通過負(fù)載均衡將消息均勻的發(fā)送到多個(gè)consumerqueue隊(duì)列中,默認(rèn)是4個(gè),也就是我們啟動(dòng)的兩個(gè)消費(fèi)者會(huì)分別監(jiān)聽兩個(gè)consumerqueue隊(duì)列

這也就意味著有大約一半的tag2的消息會(huì)被運(yùn)送到消費(fèi)者1的機(jī)器上消費(fèi),而消費(fèi)者1監(jiān)聽的是tag1,不滿足消息的條件,所以監(jiān)聽不到消息

topic和tag信息是如何覆蓋的

/**
* 其實(shí)很簡(jiǎn)單,就是以topic為key,SubscriptionData為value。而SubscriptionData里包含了tags信息,所以直接覆蓋掉
*/
public boolean updateSubscription(final Set<SubscriptionData> subList) {
for (SubscriptionData sub : subList) {
SubscriptionData old = this.subscriptionTable.get(sub.getTopic());
if (old == null) {
SubscriptionData prev = this.subscriptionTable.putIfAbsent(sub.getTopic(), sub);
} else if (sub.getSubVersion() > old.getSubVersion()) {
this.subscriptionTable.put(sub.getTopic(), sub);
}
}
}

本文參考文章:

https://codingw.blog.csdn.net/article/details/116299837。

https://dalin.blog.csdn.net/article/details/107241375。

責(zé)任編輯:姜華 來源: 左耳君
相關(guān)推薦

2014-09-16 10:49:54

MineCraft微軟

2013-08-09 10:44:55

創(chuàng)始人創(chuàng)業(yè)獨(dú)立創(chuàng)業(yè)

2014-04-22 10:52:00

Github開源

2014-10-24 10:17:56

程序員

2010-06-17 15:43:50

UML創(chuàng)始人

2014-10-23 09:03:40

創(chuàng)業(yè)合伙人

2013-05-13 16:45:37

創(chuàng)業(yè)LinkedIn創(chuàng)始人

2010-11-08 14:11:04

云計(jì)算Spring框架創(chuàng)始人

2013-04-23 10:00:45

創(chuàng)業(yè)創(chuàng)始人

2015-09-07 13:46:29

技術(shù)聯(lián)合創(chuàng)始人

2014-11-19 11:50:39

OneAPM

2009-07-02 08:59:56

ubuntuLinux開源

2010-05-04 16:22:45

Unix系統(tǒng)

2013-01-09 17:19:45

Win 8操作系統(tǒng)

2013-08-05 10:57:21

編程學(xué)習(xí)

2010-09-14 09:23:57

jQuery

2020-04-01 09:00:56

容器安全操作

2021-02-20 08:30:40

Netflix996文化

2013-04-08 10:38:00

2013-02-21 08:35:42

蘋果云計(jì)算數(shù)據(jù)中心
點(diǎn)贊
收藏

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

激情成人开心网| 国产欧美久久一区二区| 中文字幕99页| 中文日产幕无线码一区二区| 91亚洲精品乱码久久久久久蜜桃| 日本亚洲精品在线观看| 青青操在线播放| 精品三级久久久| 粉嫩老牛aⅴ一区二区三区 | 中文字幕在线观看第二页| 欧美国产一级| 亚洲精品720p| 国产精品涩涩涩视频网站| 国产丝袜在线| av电影在线观看一区| 国产精品视频区1| 日本免费一二三区| 51精产品一区一区三区| 亚洲精品一区中文字幕乱码| 四虎成人在线播放| 日韩国产激情| 亚洲午夜成aⅴ人片| 视频一区二区三区在线观看| 97超视频在线观看| 国产日韩欧美在线播放不卡| 成人444kkkk在线观看| 日韩中文字幕电影| 在线日韩成人| 欧美精选一区二区| 日韩免费高清在线| 91超碰国产在线| 亚洲日本欧美天堂| 亚洲第一在线综合在线| 天堂中文字幕av| 网爆门在线观看| 麻豆久久久久| 色天使久久综合网天天| 精品成在人线av无码免费看| 日本免费在线视频| 久久精品亚洲乱码伦伦中文 | 91在线视频播放地址| 成人精品aaaa网站| 国产情侣小视频| 99精品国产福利在线观看免费| 久久手机免费视频| 国产又粗又猛又爽又黄的视频小说| 色综合久久中文| 欧美精品一区二区三区蜜臀| 亚洲制服中文字幕| 青青伊人久久| 欧美日韩免费一区二区三区视频| 亚洲乱码中文字幕久久孕妇黑人| heyzo在线欧美播放| 一区二区三区精品视频| 路边理发店露脸熟妇泻火| 国产精品剧情| 亚洲美腿欧美偷拍| 日本三日本三级少妇三级66| 黄色片免费在线观看| 国产午夜久久久久| 日韩片电影在线免费观看| 你懂的在线观看视频网站| 久久嫩草精品久久久久| 欧美国产一区二区在线| 青青草手机在线| 91福利国产在线观看菠萝蜜| 奇米在线7777在线精品| 国产精品免费久久久久久| 亚洲婷婷久久综合| 麻豆久久久久久久| 91精品在线国产| www久久久久久| 成人黄页毛片网站| 极品校花啪啪激情久久| 姝姝窝人体www聚色窝| 97精品电影院| 欧美主播一区二区三区美女 久久精品人| 少妇激情av一区二区| 久久久久久久电影| 亚洲.欧美.日本.国产综合在线| 国产一级片在线播放| 国产精品久久久一本精品| 大桥未久一区二区| 丰满的护士2在线观看高清| 天天色综合成人网| 欧美日韩在线免费播放| 91精品国产色综合久久不卡粉嫩| 欧美一级在线观看| 男男做爰猛烈叫床爽爽小说| 免费看成人吃奶视频在线| 中文字幕视频一区二区在线有码| 国产一区二区精彩视频| 伊人久久婷婷| 国产精品久久久久久五月尺| 国产免费一区二区三区最新不卡| 国产.欧美.日韩| 欧美1o一11sex性hdhd| 日本中文字幕在线2020| 一区二区三区四区av| www.国产区| 日韩成人18| 亚洲女人天堂视频| 欧美一区二区三区爽爽爽| 国产日产高清欧美一区二区三区| 国产精品欧美一区二区| 三级在线观看网站| 国产精品久久久久久久久动漫 | 亚洲国产三级| 国产精品国产三级国产专播精品人| 97人妻精品一区二区三区| 成人高清伦理免费影院在线观看| 手机看片福利永久国产日韩| 国内高清免费在线视频| 欧美亚洲一区二区三区四区| 91传媒理伦片在线观看| 欧美成人自拍| 日本精品视频网站| www.成人免费视频| 国产精品狼人久久影院观看方式| 成人在线观看你懂的| 成人日韩视频| 国产亚洲欧美视频| 日韩精品一卡二卡| 国产尤物一区二区| 亚洲精品成人自拍| 桃花岛tv亚洲品质| 日韩av网址在线| 欧美日韩免费做爰视频| 久久精品国产77777蜜臀| 欧美日韩亚洲免费| 中文日产幕无线码一区二区| 亚洲国产成人久久| 免费在线观看国产精品| 久久av资源站| 手机看片福利永久国产日韩| 国模套图日韩精品一区二区| 亚洲国产精品女人久久久| 精国产品一区二区三区a片| 美国毛片一区二区三区| 欧洲在线视频一区| 91精品论坛| 精品视频一区在线视频| 日韩欧美性视频| 男人天堂手机在线观看| 人人精品人人爱| 欧美日韩精品久久久免费观看| av在线视屏| 精品国产亚洲在线| 免费中文字幕在线观看| 国内不卡的二区三区中文字幕| 亚洲国产一区二区在线| 草莓视频成人appios| 中文字幕av日韩| 中日精品一色哟哟| 国产精品久久久久永久免费观看 | 喷白浆一区二区| 欧洲久久久久久| 国产成人精选| 日韩综合中文字幕| 国产伦理吴梦梦伦理| 最新久久zyz资源站| 三级性生活视频| 91精品国产91久久综合| 亚洲一区中文字幕在线观看| www久久日com| 精品国产一区二区三区久久久蜜月| 免看一级a毛片一片成人不卡| 成人在线一区二区三区| 国产伦精品一区二区三区四区视频_| 精品深夜福利视频| 国产999精品久久久| 成全电影播放在线观看国语| 欧美精品自拍偷拍动漫精品| 天堂网avav| 成人免费黄色在线| 六月丁香婷婷在线| 色综合久久一区二区三区| 91色中文字幕| √天堂8资源中文在线| 亚洲欧美中文另类| 91theporn国产在线观看| 一区二区三区高清在线| 国模私拍在线观看| 日韩成人伦理电影在线观看| 男人j进女人j| 偷拍亚洲精品| 国产日韩综合一区二区性色av| 亚洲小说区图片| 亚洲欧美国内爽妇网| 国产精品无码在线播放| 午夜欧美大尺度福利影院在线看 | 自拍视频在线观看一区二区| 国产精品熟妇一区二区三区四区 | 人妻少妇精品无码专区| 91久久精品一区二区三| www深夜成人a√在线| thepron国产精品| 亚洲第一中文av| 激情六月综合| 亚洲精品第一区二区三区| 成人性生交大片免费看96| 国产成人综合精品在线| 欧美另类tv| 中文字幕亚洲在线| 天天射天天色天天干| 欧美剧在线免费观看网站| 成人免费看片98欧美| 亚洲天天做日日做天天谢日日欢 | 欧美激情一区在线| xxxxwww一片| 美女视频一区二区| av免费播放网址| 午夜精品久久久久99热蜜桃导演 | 国产精品一区二区在线| 岛国av在线网站| 久热99视频在线观看| 黄色电影免费在线看| 欧美精品一区二区三区很污很色的| 亚洲一区二区视频在线播放| 精品久久久久久久中文字幕| 色婷婷在线视频观看| 国产精品私人自拍| 日本japanese极品少妇| 国产91精品一区二区麻豆网站| 国产精品主播视频| 欧美一区二区三区网站| 影音先锋中文字幕一区| 男女啪啪的视频| 成人羞羞视频播放网站| 狠狠色狠狠色综合人人| 精品一区二区三区亚洲| 国产欧美 在线欧美| 成人精品国产| 国产精品久久999| 中文av在线全新| 高清一区二区三区日本久| 中文字幕伦理免费在线视频 | 在线看不卡av| 亚洲欧美综合另类| 欧美日韩免费在线观看| 日韩精品视频免费播放| 亚洲v日本v欧美v久久精品| 九九九免费视频| 亚洲香肠在线观看| 久久这里只有精品国产| 一区二区三区四区av| 欧美黑人一级片| 亚洲韩国一区二区三区| 国产小视频在线观看免费| 亚洲一区二区偷拍精品| 国产一级视频在线播放| 亚洲国产日韩a在线播放| 久久免费少妇高潮99精品| 夜夜精品浪潮av一区二区三区| 强行糟蹋人妻hd中文| 亚洲精品va在线观看| 久久久无码一区二区三区| 亚洲一区二区三区精品在线| 五月天婷婷网站| 欧美性极品xxxx娇小| 无码人妻一区二区三区免费| 欧美亚洲国产bt| 6—12呦国产精品| 91精品国产综合久久婷婷香蕉| 国产模特av私拍大尺度| 欧美精品一区二区三区蜜桃视频| 亚洲三级中文字幕| 中文日韩在线观看| 97影院秋霞午夜在线观看| 久久久久亚洲精品| 黄色亚洲网站| 91网站免费观看| 嗯用力啊快一点好舒服小柔久久| 久草精品电影| 成人亚洲一区| 国产精品视频网站在线观看| 国产一区二区高清| 国产精品久久久毛片| 国产一区二区视频在线| 男人网站在线观看| 国产午夜三级一区二区三| 中国毛片直接看| 五月天中文字幕一区二区| 精品久久久久久久久久久久久久久久久久| 欧美日韩一区久久| 丰满人妻一区二区三区无码av | av漫画在线观看| 久久理论电影网| 伊人在线视频观看| 无码av中文一区二区三区桃花岛| 精品久久久久久久久久久国产字幕| 91超碰这里只有精品国产| 手机在线观看免费av| 中文字幕亚洲综合久久| 国精产品一区一区三区mba下载| 日本欧美一级片| 国产精品3区| 蜜桃精品久久久久久久免费影院 | 久久久久久一级片| 精品国产视频在线观看| 色综合中文综合网| 国产jzjzjz丝袜老师水多| 亚洲欧美一区二区激情| av免费在线观| 国产精品高潮呻吟久久av黑人| 亚洲精品高潮| 一本久久a久久精品vr综合| 999亚洲国产精| 特级黄色片视频| 亚洲国产高清在线观看视频| 日韩精品――中文字幕| 欧美福利一区二区| 久热av在线| 91av国产在线| 亚洲成人影音| 在线免费观看成人| 老司机午夜精品视频在线观看| 日本中文字幕有码| 最近中文字幕一区二区三区| 亚洲不卡视频在线观看| 精品粉嫩超白一线天av| 高清免费电影在线观看| 国产成人综合一区二区三区| 亚洲福利天堂| 精品久久一二三| 国产 日韩 欧美大片| 欧美三级日本三级| 欧美精品aⅴ在线视频| 超碰在线国产| 亲爱的老师9免费观看全集电视剧| 在线日韩成人| 99er在线视频| 国产成人高清视频| 国产精品久久久精品四季影院| 欧美日韩国产a| 亚洲成人三级| 国产乱肥老妇国产一区二| 欧美猛男男男激情videos| 男人靠女人免费视频网站 | 欧美亚洲高清一区| 免费人成黄页在线观看忧物| 97视频免费看| 青草久久视频| 久久久久久久久久久视频| av福利精品导航| 久久久精品免费看| 亚洲精品久久久久久久久| 国产精品13p| 久久久久一区二区| 亚洲一区国产一区| 五月婷婷综合在线观看| 欧美日韩中文字幕日韩欧美| 亚州精品国产精品乱码不99按摩| 97在线视频免费看| 网红女主播少妇精品视频| 久久久噜噜噜www成人网| 久久久精品日韩欧美| 国产suv精品一区二区33| 亚洲最新av网址| 国产一区高清| 成人短视频在线看| 国产寡妇亲子伦一区二区| 精品一区免费观看| 日韩精品亚洲元码| 欧美日韩视频免费观看| 亚洲午夜高清视频| 国产精品综合一区二区三区| 久久久久久久久久99| 亚洲国产日韩精品在线| 卡通欧美亚洲| 亚洲日本无吗高清不卡| 国产麻豆精品95视频| 国产无码精品久久久| 亚洲男人第一网站| 韩国精品视频在线观看| 国产成人亚洲综合无码| 91在线看国产| 这里只有精品免费视频| 久久亚洲综合国产精品99麻豆精品福利| 麻豆国产一区| 午夜精品久久久久久久无码| 国产精品天天摸av网| 亚洲福利在线观看视频| 国产91网红主播在线观看| 午夜免费一区| 中文字幕在线永久| 欧美午夜精品久久久久久超碰 | www.午夜激情| 人人澡人人澡人人看欧美| 国产精品久久久久久久久妇女| 东京热av一区| 欧美日韩一区国产| aa视频在线观看| 亚洲午夜精品久久久久久浪潮| 成人免费视频caoporn| wwwwww在线观看| 久久久视频精品| 91偷拍一区二区三区精品| 中文字幕一区三区久久女搜查官| 欧美三级日韩三级|