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

解決MQ消息丟失問(wèn)題的五種方案

開(kāi)發(fā) 前端
有些小伙伴在工作中,一提到消息隊(duì)列就覺(jué)得很簡(jiǎn)單,但真正遇到線上消息丟失時(shí),排查起來(lái)卻讓人抓狂。其實(shí),我在實(shí)際工作中,也遇到過(guò)MQ消息丟失的情況。今天這篇文章,專(zhuān)門(mén)跟大家一起聊聊這個(gè)話題,希望對(duì)你會(huì)有所幫助。

前言

今天我們來(lái)聊聊一個(gè)讓很多開(kāi)發(fā)者頭疼的話題——MQ消息丟失問(wèn)題。

有些小伙伴在工作中,一提到消息隊(duì)列就覺(jué)得很簡(jiǎn)單,但真正遇到線上消息丟失時(shí),排查起來(lái)卻讓人抓狂。

其實(shí),我在實(shí)際工作中,也遇到過(guò)MQ消息丟失的情況。

今天這篇文章,專(zhuān)門(mén)跟大家一起聊聊這個(gè)話題,希望對(duì)你會(huì)有所幫助。

一、消息丟失的三大環(huán)節(jié)

在深入解決方案之前,我們先搞清楚消息在哪幾個(gè)環(huán)節(jié)可能丟失:

圖片圖片

1. 生產(chǎn)者發(fā)送階段

  • 網(wǎng)絡(luò)抖動(dòng)導(dǎo)致發(fā)送失敗
  • 生產(chǎn)者宕機(jī)未發(fā)送
  • Broker處理失敗未返回確認(rèn)

2. Broker存儲(chǔ)階段

  • 內(nèi)存消息未持久化,重啟丟失
  • 磁盤(pán)故障導(dǎo)致數(shù)據(jù)丟失
  • 集群切換時(shí)消息丟失

3. 消費(fèi)者處理階段

  • 自動(dòng)確認(rèn)模式下處理異常
  • 消費(fèi)者宕機(jī)處理中斷
  • 手動(dòng)確認(rèn)但忘記確認(rèn)

理解了問(wèn)題根源,接下來(lái)我們看5種實(shí)用的解決方案。

二、方案一:生產(chǎn)者確認(rèn)機(jī)制

核心原理

生產(chǎn)者發(fā)送消息后等待Broker確認(rèn),確保消息成功到達(dá)。

這是防止消息丟失的第一道防線。

圖片圖片

關(guān)鍵實(shí)現(xiàn)

// RabbitMQ生產(chǎn)者確認(rèn)配置
@Bean
public RabbitTemplate rabbitTemplate() {
    RabbitTemplate template = new RabbitTemplate(connectionFactory);
    template.setConfirmCallback((correlationData, ack, cause) -> {
        if (ack) {
            // 消息成功到達(dá)Broker
            messageStatusService.markConfirmed(correlationData.getId());
        } else {
            // 發(fā)送失敗,觸發(fā)重試
            retryService.scheduleRetry(correlationData.getId());
        }
    });
    return template;
}

// 可靠發(fā)送方法
public void sendReliable(String exchange, String routingKey, Object message) {
    String messageId = generateId();
    // 先落庫(kù)保存發(fā)送狀態(tài)
    messageStatusService.saveSendingStatus(messageId, message);
    
    // 發(fā)送持久化消息
    rabbitTemplate.convertAndSend(exchange, routingKey, message, msg -> {
        msg.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
        msg.getMessageProperties().setMessageId(messageId);
        return msg;
    }, new CorrelationData(messageId));
}

適用場(chǎng)景

  • 對(duì)消息可靠性要求高的業(yè)務(wù)
  • 金融交易、訂單處理等關(guān)鍵業(yè)務(wù)
  • 需要精確知道消息發(fā)送結(jié)果的場(chǎng)景

三、方案二:消息持久化機(jī)制

核心原理

將消息保存到磁盤(pán),確保Broker重啟后消息不丟失。

這是防止Broker端消息丟失的關(guān)鍵。

圖片圖片

關(guān)鍵實(shí)現(xiàn)

// 持久化隊(duì)列配置
@Bean
public Queue orderQueue() {
    return QueueBuilder.durable("order.queue")  // 隊(duì)列持久化
            .deadLetterExchange("order.dlx")    // 死信交換機(jī)
            .build();
}

// 發(fā)送持久化消息
public void sendPersistentMessage(Object message) {
    rabbitTemplate.convertAndSend("order.exchange", "order.create", message, msg -> {
        msg.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT); // 消息持久化
        return msg;
    });
}

// Kafka持久化配置
@Bean
public ProducerFactory<String, Object> producerFactory() {
    Map<String, Object> props = new HashMap<>();
    props.put(ProducerConfig.ACKS_CONFIG, "all"); // 所有副本確認(rèn)
    props.put(ProducerConfig.RETRIES_CONFIG, 3);   // 重試次數(shù)
    props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true); // 冪等性
    returnnew DefaultKafkaProducerFactory<>(props);
}

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

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

  • 有效防止Broker重啟導(dǎo)致的消息丟失
  • 配置簡(jiǎn)單,效果明顯

缺點(diǎn):

  • 磁盤(pán)IO影響性能
  • 需要足夠的磁盤(pán)空間

四、方案三:消費(fèi)者確認(rèn)機(jī)制

核心原理

消費(fèi)者處理完消息后手動(dòng)向Broker發(fā)送確認(rèn),Broker收到確認(rèn)后才刪除消息。

這是保證消息不丟失的最后一道防線。

圖片圖片

關(guān)鍵實(shí)現(xiàn)

// 手動(dòng)確認(rèn)消費(fèi)者
@RabbitListener(queues = "order.queue")
public void handleMessage(Order order, Message message, Channel channel) {
    long deliveryTag = message.getMessageProperties().getDeliveryTag();
    
    try {
        // 業(yè)務(wù)處理
        orderService.processOrder(order);
        
        // 手動(dòng)確認(rèn)
        channel.basicAck(deliveryTag, false);
        log.info("消息處理完成: {}", order.getOrderId());
        
    } catch (Exception e) {
        log.error("消息處理失敗: {}", order.getOrderId(), e);
        
        // 處理失敗,重新入隊(duì)
        channel.basicNack(deliveryTag, false, true);
    }
}

// 消費(fèi)者容器配置
@Bean
public SimpleRabbitListenerContainerFactory containerFactory() {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setAcknowledgeMode(AcknowledgeMode.MANUAL); // 手動(dòng)確認(rèn)
    factory.setPrefetchCount(10); // 預(yù)取數(shù)量
    factory.setConcurrentConsumers(3); // 并發(fā)消費(fèi)者
    return factory;
}

注意事項(xiàng)

  • 確保業(yè)務(wù)處理完成后再確認(rèn)
  • 合理設(shè)置預(yù)取數(shù)量,避免內(nèi)存溢出
  • 處理異常時(shí)要正確使用NACK

五、方案四:事務(wù)消息機(jī)制

核心原理

通過(guò)事務(wù)保證本地業(yè)務(wù)操作和消息發(fā)送的原子性,要么都成功,要么都失敗。

圖片圖片

關(guān)鍵實(shí)現(xiàn)

// 本地事務(wù)表方案
@Transactional
public void createOrder(Order order) {
    // 1. 保存訂單到數(shù)據(jù)庫(kù)
    orderRepository.save(order);
    
    // 2. 保存消息到本地消息表
    LocalMessage localMessage = new LocalMessage();
    localMessage.setBusinessId(order.getOrderId());
    localMessage.setContent(JSON.toJSONString(order));
    localMessage.setStatus(MessageStatus.PENDING);
    localMessageRepository.save(localMessage);
    
    // 3. 事務(wù)提交,本地業(yè)務(wù)和消息存儲(chǔ)保持一致性
}

// 定時(shí)任務(wù)掃描并發(fā)送消息
@Scheduled(fixedDelay = 5000)
public void sendPendingMessages() {
    List<LocalMessage> pendingMessages = localMessageRepository.findByStatus(MessageStatus.PENDING);
    
    for (LocalMessage message : pendingMessages) {
        try {
            // 發(fā)送消息到MQ
            rabbitTemplate.convertAndSend("order.exchange", "order.create", message.getContent());
            
            // 更新消息狀態(tài)為已發(fā)送
            message.setStatus(MessageStatus.SENT);
            localMessageRepository.save(message);
            
        } catch (Exception e) {
            log.error("發(fā)送消息失敗: {}", message.getId(), e);
        }
    }
}

// RocketMQ事務(wù)消息
public void sendTransactionMessage(Order order) {
    TransactionMQProducer producer = new TransactionMQProducer("order_producer");
    
    // 發(fā)送事務(wù)消息
    Message msg = new Message("order_topic", "create", 
                             JSON.toJSONBytes(order));
    
    TransactionSendResult result = producer.sendMessageInTransaction(msg, null);
    
    if (result.getLocalTransactionState() == LocalTransactionState.COMMIT_MESSAGE) {
        log.info("事務(wù)消息提交成功");
    }
}

適用場(chǎng)景

  • 需要嚴(yán)格保證業(yè)務(wù)和消息一致性的場(chǎng)景
  • 分布式事務(wù)場(chǎng)景
  • 金融、電商等對(duì)數(shù)據(jù)一致性要求高的業(yè)務(wù)

六、方案五:消息重試與死信隊(duì)列

核心原理

通過(guò)重試機(jī)制處理臨時(shí)故障,通過(guò)死信隊(duì)列處理最終無(wú)法消費(fèi)的消息。

圖片圖片

關(guān)鍵實(shí)現(xiàn)

// 重試隊(duì)列配置
@Bean
public Queue orderQueue() {
    return QueueBuilder.durable("order.queue")
            .withArgument("x-dead-letter-exchange", "order.dlx") // 死信交換機(jī)
            .withArgument("x-dead-letter-routing-key", "order.dead")
            .withArgument("x-message-ttl", 60000) // 60秒后進(jìn)入死信
            .build();
}

// 死信隊(duì)列配置
@Bean
public Queue orderDeadLetterQueue() {
    return QueueBuilder.durable("order.dead.queue").build();
}

// 消費(fèi)者重試邏輯
@RabbitListener(queues = "order.queue")
public void handleMessageWithRetry(Order order, Message message, Channel channel) {
    long deliveryTag = message.getMessageProperties().getDeliveryTag();
    
    try {
        orderService.processOrder(order);
        channel.basicAck(deliveryTag, false);
        
    } catch (TemporaryException e) {
        // 臨時(shí)異常,重新入隊(duì)重試
        channel.basicNack(deliveryTag, false, true);
        
    } catch (PermanentException e) {
        // 永久異常,直接確認(rèn)進(jìn)入死信隊(duì)列
        channel.basicAck(deliveryTag, false);
        log.error("消息進(jìn)入死信隊(duì)列: {}", order.getOrderId(), e);
    }
}

// 死信隊(duì)列消費(fèi)者
@RabbitListener(queues = "order.dead.queue")
public void handleDeadLetterMessage(Order order) {
    log.warn("處理死信消息: {}", order.getOrderId());
    // 發(fā)送告警、記錄日志、人工處理等
    alertService.sendAlert("死信消息告警", order.toString());
}

重試策略建議

  1. 指數(shù)退避:1s, 5s, 15s, 30s
  2. 最大重試次數(shù):3-5次
  3. 死信處理:人工介入或特殊處理流程

七、方案對(duì)比與選型指南

為了幫助大家選擇合適的方案,我整理了詳細(xì)的對(duì)比表:

方案

可靠性

性能影響

復(fù)雜度

適用場(chǎng)景

生產(chǎn)者確認(rèn)

所有需要可靠發(fā)送的場(chǎng)景

消息持久化

Broker重啟保護(hù)

消費(fèi)者確認(rèn)

確保消息被成功處理

事務(wù)消息

最高

強(qiáng)一致性要求的業(yè)務(wù)

重試+死信

處理臨時(shí)故障和最終死信

選型建議

初創(chuàng)項(xiàng)目/簡(jiǎn)單業(yè)務(wù):

  • 生產(chǎn)者確認(rèn) + 消息持久化 + 消費(fèi)者確認(rèn)
  • 滿足大部分場(chǎng)景,實(shí)現(xiàn)簡(jiǎn)單

電商/交易系統(tǒng):

  • 生產(chǎn)者確認(rèn) + 事務(wù)消息 + 重試機(jī)制
  • 保證數(shù)據(jù)一致性,處理復(fù)雜業(yè)務(wù)

大數(shù)據(jù)/日志處理:

  • 消息持久化 + 消費(fèi)者確認(rèn)
  • 允許少量丟失,追求吞吐量

金融/支付系統(tǒng):

  • 全方案組合使用
  • 最高可靠性要求

總結(jié)

消息丟失問(wèn)題是消息隊(duì)列使用中的常見(jiàn)挑戰(zhàn),通過(guò)今天介紹的5種方案,我們可以構(gòu)建一個(gè)可靠的消息系統(tǒng):

  1. 生產(chǎn)者確認(rèn)機(jī)制 - 保證消息成功發(fā)送到Broker
  2. 消息持久化機(jī)制 - 防止Broker重啟導(dǎo)致消息丟失
  3. 消費(fèi)者確認(rèn)機(jī)制 - 確保消息被成功處理
  4. 事務(wù)消息機(jī)制 - 保證業(yè)務(wù)和消息的一致性
  5. 重試與死信隊(duì)列 - 處理異常情況和最終死信

有些小伙伴可能會(huì)問(wèn):"我需要全部使用這些方案嗎?

"我的建議是:根據(jù)業(yè)務(wù)需求選擇合適的組合

對(duì)于關(guān)鍵業(yè)務(wù),建議至少使用前三種方案;對(duì)于普通業(yè)務(wù),可以根據(jù)實(shí)際情況適當(dāng)簡(jiǎn)化。

記住,沒(méi)有完美的方案,只有最適合的方案。

責(zé)任編輯:武曉燕 來(lái)源: 蘇三說(shuō)技術(shù)
相關(guān)推薦

2012-03-29 09:57:06

jQuery

2024-04-23 08:46:45

消息積壓KafkaMQ

2021-03-08 10:19:59

MQ消息磁盤(pán)

2023-04-14 14:54:29

2018-05-04 07:36:35

醫(yī)療行業(yè)物聯(lián)網(wǎng)IoT

2024-06-05 06:37:19

2023-10-17 08:01:46

MQ消息重試

2025-08-18 08:26:14

2025-09-29 01:55:00

2016-11-27 19:21:05

2021-11-29 09:15:57

Github網(wǎng)絡(luò)Python

2021-08-04 07:47:18

Kafka消息框架

2009-07-22 17:37:06

ASP.NET Ses

2023-05-26 07:19:49

Spring聲明式事務(wù)

2022-08-29 18:14:55

MQ數(shù)據(jù)不丟失

2024-06-06 11:38:55

2025-09-16 00:00:25

2025-05-07 08:21:01

2024-12-02 14:30:20

2025-03-31 08:39:55

點(diǎn)贊
收藏

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

日韩欧美国产一二三区| 国产色产综合产在线视频 | a在线免费观看| 丁香婷婷综合五月| 国产精品电影一区| 麻豆疯狂做受xxxx高潮视频| 人人精品亚洲| 91精品视频网| 毛葺葺老太做受视频| 综合图区亚洲| 国产日韩综合av| av一区二区三区在线观看| 91青青草视频| 好吊一区二区三区| 亚洲网在线观看| 中文字幕人妻一区| 婷婷丁香久久| 色88888久久久久久影院野外| 中文字幕乱码免费| 国产系列在线观看| www.爱久久.com| 亚洲综合色av| 中文字幕 自拍偷拍| av成人国产| 欧美另类极品videosbestfree| 国产免费无遮挡吸奶头视频| 国产精品chinese在线观看| 在线电影院国产精品| 亚洲精品无码久久久久久| 污视频在线免费观看网站| 国产免费久久精品| 美女被啪啪一区二区| 亚洲精品.www| 国产精品一二三区| 成人在线播放av| 日韩xxx视频| 免费看的黄色欧美网站| 欧美激情综合色综合啪啪五月| 亚洲激情 欧美| 99精品中文字幕在线不卡| 欧美高清精品3d| 一区二区在线播放视频| xx欧美视频| 好吊成人免视频| 18岁网站在线观看| 欧美男人天堂| 黑人精品xxx一区一二区| 91成人在线观看喷潮教学| 2021中文字幕在线| 亚洲高清视频的网址| 国产精品久久久久久久久电影网| 好吊日视频在线观看| 中文字幕一区在线观看视频| 先锋影音亚洲资源| 在线观看的av| 国产精品初高中害羞小美女文| 亚洲欧洲精品一区二区| 日本不卡在线| 亚洲男女一区二区三区| 偷拍盗摄高潮叫床对白清晰| 黄网页免费在线观看| 亚洲精品成人天堂一二三| 中文字幕人妻熟女人妻洋洋| 欧美黄色视屏| 精品久久久一区| 凹凸国产熟女精品视频| 韩国成人动漫| 欧美日韩一级片网站| 国产一区二区在线观看免费视频| 国产午夜亚洲精品一级在线| 精品欧美乱码久久久久久 | 国内精品麻豆美女在线播放视频| 亚洲福利影片在线| 亚洲黄色在线网站| 青青草成人影院| 久久九九亚洲综合| 精品少妇爆乳无码av无码专区| 伊人久久久大香线蕉综合直播| 国外成人免费在线播放| 日韩精品成人免费观看视频| 久久激五月天综合精品| 5566av亚洲| 天天操天天干天天干| 成人黄色在线看| 91入口在线观看| 性高潮久久久久久久久久| 国产无遮挡一区二区三区毛片日本| 亚洲一区二区精品在线| 国产99re66在线视频| 色女孩综合影院| 亚洲欧美手机在线| 欧美日日夜夜| xxx欧美精品| 亚洲一区欧美在线| 久久99久国产精品黄毛片色诱| 粉嫩av免费一区二区三区| 色视频精品视频在线观看| 国产精品女同一区二区三区| 东北少妇不带套对白| 123成人网| 精品国产乱码久久久久久夜甘婷婷| 一区二区三区四区免费| 亚洲破处大片| 国产精彩精品视频| 东京干手机福利视频| 国产精品久久久久一区二区三区| 人妻少妇精品无码专区二区 | 欧美在线综合视频| 亚洲v在线观看| 欧美3p视频| 欧美孕妇性xx| 黑人乱码一区二区三区av| 国产精品少妇自拍| 国产超级av在线| 亚洲一区二区电影| 久久久国产91| 中文字幕av久久爽| 91丨九色丨蝌蚪丨老版| 久久久久久久久网| jizz亚洲女人高潮大叫| 亚洲国产高清自拍| 久久黄色小视频| 久久91精品久久久久久秒播| 日韩中文不卡| 中文在线аv在线| 亚洲电影av在线| 国产精品国产精品88| 美女性感视频久久| 日韩av一区二区三区美女毛片| 菠萝蜜视频在线观看www入口| 777奇米四色成人影色区| 精品人妻互换一区二区三区| 国产九九精品| 精品国产乱码久久久久久郑州公司| 亚洲羞羞网站| 欧美一区二区三区性视频| 一区二区三区在线播放视频| 日韩av一区二区在线影视| 欧美性大战久久久久| 欧美激情网站| 亚洲美女性视频| 日日夜夜操视频| 久久一区二区视频| 成人午夜视频免费在线观看| 日韩美女毛片| 欧美中文字幕视频| 日韩电影网址| 欧美性极品xxxx做受| xxx在线播放| 日韩高清电影一区| 亚洲欧美在线网| 亚洲国产91视频| 成年人精品视频| 亚洲va天堂va欧美ⅴa在线| 亚洲精品久久久久久国产精华液| 拔插拔插华人永久免费| 我不卡伦不卡影院| 99国精产品一二二线| 精品孕妇一区二区三区| 欧美一级久久久| 国产精品a成v人在线播放| 99这里只有精品| 日韩毛片在线免费看| 欧美亚洲精品在线| 91精品在线影院| 青春草在线免费视频| 亚洲精品在线电影| 欧美激情黑白配| 欧美国产日韩a欧美在线观看| 羞羞的视频在线| 欧美色一级片| 欧美精品欧美精品系列c| 成人免费视频观看| 色中色综合影院手机版在线观看| 国内精品小视频| 中文字幕欧美在线观看| 中文字幕在线一区二区三区| 日韩精品aaa| 亚洲日本国产| 色大师av一区二区三区| 国产精品中文| 欧美亚洲在线观看| 色网站免费在线观看| 欧美不卡123| 中文字幕精品视频在线观看| 综合久久久久久| 亚洲av成人片色在线观看高潮 | 亚洲精品日韩一| 无码成人精品区在线观看| 日本成人超碰在线观看| 青青草视频国产| 亚洲欧洲av| 91精品视频免费| 一个人看的www视频在线免费观看| 最好看的2019的中文字幕视频| 不卡视频在线播放| 91久久奴性调教| 久青草免费视频| 国产精品短视频| 香蕉视频黄色在线观看| 国产老妇另类xxxxx| 无码aⅴ精品一区二区三区浪潮| 一本一本久久a久久综合精品| 久久香蕉综合色| 99精品国产九九国产精品| 欧美在线视频一区| 日本不卡影院| 久久精品视频亚洲| 成人高清免费观看mv| 亚洲国产精彩中文乱码av在线播放| 亚洲天堂一二三| 一本色道久久加勒比精品| 久草视频免费播放| ...av二区三区久久精品| 天天躁日日躁aaaxxⅹ| 成人激情午夜影院| 黄色一级片免费播放| 麻豆视频观看网址久久| 97超碰青青草| 亚洲高清在线| 艳色歌舞团一区二区三区| 午夜精品福利影院| 国产v亚洲v天堂无码| 国产美女亚洲精品7777| 国产女同一区二区| 成人四虎影院| 国产精品久久久av久久久| 周于希免费高清在线观看| 性色av一区二区三区红粉影视| 羞羞的网站在线观看| 久久视频在线看| 欧美18hd| 久久亚洲精品网站| 免费在线看a| 综合欧美国产视频二区| 国产区在线视频| 国产午夜精品一区理论片飘花| 青青草手机在线| 国产视频在线观看一区二区| 色偷偷在线观看| 亚洲第一视频网站| 深爱五月激情五月| 日韩电影大全免费观看2023年上| 日本人妻熟妇久久久久久| 精品捆绑美女sm三区| 黄色av一区二区三区| 亚洲第一视频网站| 手机福利在线| 夜夜嗨av一区二区三区四区| 91亚洲欧美| 精品国产一区二区三区久久久| 免费**毛片在线| 精品自在线视频| 国产蜜臀一区二区打屁股调教| 欧美猛交免费看| 欧洲性视频在线播放| 久久免费少妇高潮久久精品99| 久草在线资源福利站| 欧美专区中文字幕| 亚洲精品555| 亚洲xxxxx电影| 成人动漫视频| 欧美亚洲另类久久综合| av中文一区| 可以免费看的黄色网址| 黄色国产精品| 成人黄色片视频| 蜜桃精品视频在线| 少妇性l交大片7724com| av在线不卡观看免费观看| 9.1成人看片免费版| 国产精品美女视频| 青青草偷拍视频| 色综合久久天天综合网| 一卡二卡三卡在线| 精品对白一区国产伦| 国产在线一二三区| 久久成人精品电影| 亚洲天堂手机| 国产精品专区第二| 中文字幕一区二区三区中文字幕| 久久久久国产精品视频| 久久人人88| 国产毛片视频网站| 久久草av在线| 国产伦精品一区二区三区妓女 | 国产精品久久久久久久久电影网| 午夜在线一区| 91亚洲一区二区| 久久伊人中文字幕| 麻豆一区产品精品蜜桃的特点| 欧美午夜精品久久久久久浪潮| 国产又粗又猛又黄又爽无遮挡| 亚洲精品91美女久久久久久久| 在线观看a视频| 欧美怡春院一区二区三区| 久久99国产精品二区高清软件| 国产一区二区三区色淫影院| 精品国产乱码久久久久久蜜坠欲下 | 在线观看天堂av| 自拍偷拍欧美精品| 日韩视频在线观看一区| 欧美一级免费观看| 九色视频网站在线观看| 欧美激情亚洲视频| 亚州精品国产| 欧美精品一区二区三区在线四季| 一区二区三区午夜探花| 成人性做爰aaa片免费看不忠| 国产精品1024| 日本高清黄色片| 精品久久久久久国产| 国产视频手机在线观看| 伊人亚洲福利一区二区三区| 成人免费观看在线观看| 亚洲最大福利网站| 欧美独立站高清久久| 日本wwww视频| 不卡一区二区三区四区| 亚洲综合网在线| 欧美理论片在线| 日本在线免费中文字幕| 亚洲国产va精品久久久不卡综合| 337p粉嫩色噜噜噜大肥臀| 亚洲精品乱码久久久久久按摩观| av黄色在线| 91久久久在线| 99精品视频在线观看播放| mm1313亚洲国产精品无码试看| 91麻豆高清视频| 日本在线观看视频网站| 日韩欧美精品在线视频| 麻豆免费在线视频| 成人免费视频网址| 久久资源中文字幕| 成年网站在线播放| 国产女人水真多18毛片18精品视频| 亚洲欧美偷拍视频| 亚洲老板91色精品久久| 亚洲第一av| 久久这里精品国产99丫e6| 国产亚洲在线观看| 中文字幕一区二区人妻电影丶| 一区二区三区精密机械公司| a级片在线视频| 欧美成人全部免费| 亚洲1区在线| 男人添女人荫蒂免费视频| 成人一区在线看| 精品无码人妻一区二区三区| 精品国产成人系列| 日本不卡免费高清视频在线| 久草精品电影| 日韩精品乱码av一区二区| 女人丝袜激情亚洲| 国产精品夫妻激情| 国产亚洲一卡2卡3卡4卡新区 | 国产免费一区二区三区香蕉精| 欧美日韩国产免费观看视频| 日韩一区二区三区不卡视频| 中文字幕成人网| 一区二区三区日| 久久久国产精品视频| 97青娱国产盛宴精品视频| 国产极品尤物在线| 久久综合狠狠综合| 中文字幕理论片| 久久久精品网站| 成人av地址| 久久午夜夜伦鲁鲁一区二区| 国产精品久久综合| 亚洲精品.www| 国产成人精品一区二区在线| 91麻豆国产自产在线观看亚洲| 人人爽人人爽av| 午夜精品视频一区| 成人免费视频| 成人动漫视频在线观看免费| 久久久精品五月天| www.毛片com| 国产视频亚洲视频| 亚洲伊人精品酒店| 国产欧美日韩网站| 中文字幕欧美日韩一区| 99久久久久久久| 欧洲成人午夜免费大片| 中文一区一区三区免费在线观看| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 久久一级免费视频| 亚洲国产精品成人va在线观看| 成人在线网站| 337p亚洲精品色噜噜狠狠p| 久久婷婷成人综合色| 精品国产无码AV| 人人爽久久涩噜噜噜网站| 91精品国产91久久久久久密臀| 亚洲男人在线天堂| 欧美一级理论片| 91九色综合| 中文字幕无码精品亚洲35|