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

RocketMQ 和 RabbitMQ 的比較以及 RocketMQ 的使用

開發 架構
消息隊列在項目中會經常用到,目前我們使用的是 RabbitMQ,但在 Java 技術棧下,RocketMQ 使用的比較多。下面比較下 RabbitMQ 和 RocketMQ。


RabbitMQ 和 RocketMQ 對比

1.設計理念和架構

RabbitMQ:

基于 AMQP(Advanced Message Queuing Protocol)協議,使用 Erlang 語言開發。Erlang 的天生高并發和容錯性使得 RabbitMQ 在穩定性方面表現出色。RabbitMQ 的核心概念是 Exchange(交換機)和 Queue(隊列),消息通過 Exchange 路由到 Queue,再由消費者消費。這種模型非常靈活,支持多種消息路由模式。

RocketMQ:

源于阿里巴巴,后捐獻給 Apache 基金會,所以現在的官網是:https://rocketmq.apache.org/ 。使用 Java 語言開發,更貼近 Java 技術棧。RocketMQ 的核心概念是 Topic(主題),消息發送到 Topic,消費者訂閱 Topic 進行消費。RocketMQ 的設計目標是高吞吐量、低延遲和高可靠性,適合大規模分布式系統。

RocketMQ 的設計理念更偏向于解決互聯網場景下的具體問題,如海量消息處理、消息順序性等。

2.性能

吞吐量:RocketMQ 在吞吐量方面通常優于 RabbitMQ,尤其是在高并發場景下。RocketMQ 的設計更偏向于高吞吐的消息傳遞,而 RabbitMQ 更注重消息的可靠性和靈活性。

延遲:兩者在延遲方面都表現不錯,但在極端高負載情況下,RocketMQ 的延遲可能更低一些。

不過在 ToB 的一些業務場景,RabbitMQ 是可以勝任的。

3.特性

消息路由:RabbitMQ 支持多種 Exchange 類型(Direct、Topic、Fanout、Headers),提供更豐富的消息路由策略。RocketMQ 主要使用 Topic 進行消息路由,相對簡單。

消息過濾:RocketMQ 支持基于 Tag 和 SQL 的消息過濾,方便消費者按需訂閱消息。RabbitMQ 的消息過濾相對較弱。

事務消息:RocketMQ 提供了分布式事務消息的支持,可以保證消息生產和本地事務的原子性。RabbitMQ 沒有直接提供事務消息的支持,需要通過其他方式實現。

延遲消息:RocketMQ 支持延遲消息,可以實現定時任務等功能。RabbitMQ 通過插件可以實現類似功能。

監控和管理:RocketMQ 和 RabbitMQ 都提供了豐富的監控指標和管理工具,相比之下我更喜歡 RocketMQ 的管理工具。

4.創新點

RabbitMQ:

  • 插件系統設計靈活,易于擴展
  • 虛擬主機(vhost)概念,實現多租戶隔離
  • 內存和磁盤節點的混合部署方案

RocketMQ:

  • 基于文件的消息存儲系統,避免了緩存未刷盤導致的消息丟失
  • Pull 模式和長輪詢機制的結合,平衡了實時性和性能
  • 消息過濾支持在 Broker 端完成,減少網絡傳輸開銷

5.Exchange 和 Topic 的區別

RabbitMQ的 Exchange 和 RocketMQ 的 Topic 在消息路由機制上有以下主要區別:

概念和角色

RabbitMQ Exchange 是一個路由組件,負責接收生產者發送的消息并將其路由到一個或多個隊列,作為消息的"交換機",它不存儲消息,只負責消息的路由轉發,需要通過 binding key 與 Queue 建立綁定關系。

RocketMQ Topic 是消息的邏輯分類,直接作為消息的存儲和投遞單元,包含多個消息隊列(MessageQueue),用于存儲消息,消費者直接訂閱 Topic 即可接收消息。

RabbitMQ 的 key 綁定和 Exchange、隊列的關系,一開始不太容易理解,相比之下 RocketMQ 的 Topic 和隊列關系更清晰。

路由方式

RabbitMQ Exchange 支持四種路由策略,路由更加靈活,可以實現復雜的消息分發模式

  • Direct:根據routing key精確匹配
  • Topic:根據routing key的模式匹配
  • Fanout:廣播到所有綁定的隊列
  • Headers:根據消息屬性匹配

RocketMQ Topic 采用發布/訂閱模式,更加簡單直接,通過Tag機制實現消息過濾。支持消息隊列的負載均衡。

消息存儲

RabbitMQ Exchange 不存儲消息,消息存儲在 Queue 中,消息一旦被路由到 Queue 就與 Exchange 無關。

RocketMQ Topic 直接存儲消息,每個 Topic 包含多個消息隊列。消息存儲在 CommitLog 中,通過 ConsumeQueue 建立索引。

Docker-compose 部署 RocketMQ

同樣是使用容器進行部署,RabbitMQ 一個容器搞定,RocketMQ 需要兩個容器(NameServer 和 Broker),如果需要 web 管理工具,還需要再單獨部署一個容器。

當進行集群模式部署時,RocketMQ 的下載包中有各種集群模式的示例配置文件,這對新手非常友好。

下面是部署 RocketMQ 的 docker-comopose 文件的內容:

version: '3'

# 定義自定義網絡
networks:
  rmq_network:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.10.0/24

services:
  # RocketMQ Name Server
  namesrv:
    image: apache/rocketmq:5.1.4
    container_name: rmqnamesrv
    networks:
      rmq_network:
        ipv4_address: 192.168.10.2
    ports:
      - 9876:9876
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv
    environment:
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m

  # RocketMQ Broker
  broker:
    image: apache/rocketmq:5.3.1
    container_name: rmqbroker
    networks:
      rmq_network:
        ipv4_address: 192.168.10.3
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
      - ./data/broker/logs:/home/rocketmq/logs
      - ./data/broker/store:/home/rocketmq/store
      - ./conf/broker.conf:/home/rocketmq/conf/broker.conf
    command: sh mqbroker -c /home/rocketmq/conf/broker.conf
    environment:
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m
    depends_on:
      - namesrv

  # RocketMQ Dashboard 
  dashboard:
    image: apacherocketmq/rocketmq-dashboard:1.0.0
    container_name: rmqdashboard
    networks:
      rmq_network:
        ipv4_address: 192.168.10.4
    ports:
      - 19080:8080
    environment:
      - JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876
    depends_on:
      - namesrv

broker.conf 的內容如下:

# broker集群名稱
brokerClusterName = DefaultCluster
# broker名稱
brokerName = broker-a
# broker編號,0表示master,大于0表示slave
brokerId = 0
# 刪除過期文件時間點,默認是凌晨4點
deleteWhen = 04
# 文件保留時間,默認48小時
fileReservedTime = 48
# broker角色,ASYNC_MASTER=異步復制Master,SYNC_MASTER=同步雙寫Master,SLAVE=slave節點
brokerRole = ASYNC_MASTER
# 刷盤方式,ASYNC_FLUSH=異步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType = ASYNC_FLUSH
# nameServer地址,分號分割
namesrvAddr = namesrv:9876
# 在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums = 4
# 是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable = true
# 是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup = true
# brokerIP1 注意:本地測試使用本機的宿主機的IP
brokerIP1=192.168.1.109

代碼示例

對于消息隊列,單播、廣播、重試,這三種場景用的比較多。下面就看看這三個場景是怎么實現的。

創建生產者 Service 類來處理消息的發送:

@Slf4j
@Service
public class MessageProducerService {

    // RocketMQ消息主題
    public static final String TOPIC_UNICAST = "topic-unicast";
    public static final String TOPIC_BROADCAST = "topic-broadcast";
    public static final String TOPIC_RETRY = "topic-retry";

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    /**
     * 發送單播消息(點對點)
     * 單播消息會被消費組中的某一個消費者消費
     */
    public void sendUnicastMessage(MessageEvent message) {
        rocketMQTemplate.convertAndSend(TOPIC_UNICAST, message);
        log.info("Unicast message sent: {}", message);
    }

    /**
     * 發送廣播消息
     * 廣播消息會被所有訂閱該主題的消費者消費
     */
    public void sendBroadcastMessage(MessageEvent message) {
        rocketMQTemplate.convertAndSend(TOPIC_BROADCAST, message);
        log.info("Broadcast message sent: {}", message);
    }

    /**
     * 發送需要重試的消息
     * 使用異步發送方式,并在回調中處理發送結果
     */
    public void sendRetryMessage(MessageEvent message) {
        rocketMQTemplate.asyncSend(TOPIC_RETRY, message, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                log.info("Retry message sent successfully: {}, result: {}", message, sendResult);
            }

            @Override
            public void onException(Throwable throwable) {
                log.error("Failed to send retry message: {}, error: {}", message, throwable.getMessage());
            }
        });
    }
}

創建消費者 Service 類來處理消息的接收:

@Slf4j
@Service
public class MessageConsumerService {

    // RocketMQ消息主題
    public static final String TOPIC_UNICAST = "topic-unicast";
    public static final String TOPIC_BROADCAST = "topic-broadcast";
    public static final String TOPIC_RETRY = "topic-retry";
    /**
     * 單播消息消費者
     * consumeMode默認為CONCURRENTLY(并發消費)
     */
    @Service
    @RocketMQMessageListener(
            topic = TOPIC_UNICAST,
            consumerGroup = "unicast-consumer-group"
    )
    public class UnicastMessageListener implements RocketMQListener<MessageEvent> {
        @Override
        public void onMessage(MessageEvent message) {

            log.info("Received unicast message: {}", message);
        }
    }

    /**
     * 廣播消息消費者
     * messageModel設置為BROADCASTING表示廣播模式
     */
    @Service
    @RocketMQMessageListener(
            topic = TOPIC_BROADCAST,
            consumerGroup = "broadcast-consumer-group",
            messageModel = MessageModel.BROADCASTING
    )
    public class BroadcastMessageListener implements RocketMQListener<MessageEvent> {
        @Override
        public void onMessage(MessageEvent message) {
            log.info("Received broadcast message: {}", message);
        }
    }

    /**
     * 重試消息消費者
     * 配置了重試次數和重試間隔
     */
    @Service
    @RocketMQMessageListener(
            topic = TOPIC_RETRY,
            consumerGroup = "retry-consumer-group",
            maxReconsumeTimes = 3,    // 最大重試次數
            delayLevelWhenNextConsume = 2  // 重試間隔級別
    )
    public class RetryMessageListener implements RocketMQListener<MessageEvent> {
        @Override
        public void onMessage(MessageEvent message) {
            try {
                // 模擬處理失敗的情況
                if (message.getContent().contains("error")) {
                    throw new RuntimeException("Processing failed, will retry");
                }
                log.info("Received retry message: {}", message);
            } catch (Exception e) {
                log.error("Error processing message: {}, error: {}", message, e.getMessage());
                throw e; // 拋出異常觸發重試機制
            }
        }
    }
}

創建 MessageController 來進行測試:

@RestController
@RequestMapping("/api/messages")
public class MessageController {

    @Autowired
    private MessageProducerService producerService;

    @PostMapping("/unicast")
    public String sendUnicastMessage(@RequestParam String content) {
        MessageEvent message = new MessageEvent()
                .setId(UUID.randomUUID().toString())
                .setContent(content)
                .setTimestamp(System.currentTimeMillis());
        producerService.sendUnicastMessage(message);
        return "Unicast message sent successfully";
    }

    @PostMapping("/broadcast")
    public String sendBroadcastMessage(@RequestParam String content) {
        MessageEvent message = new MessageEvent()
                .setId(UUID.randomUUID().toString())
                .setContent(content)
                .setTimestamp(System.currentTimeMillis());
        producerService.sendBroadcastMessage(message);
        return "Broadcast message sent successfully";
    }

    @PostMapping("/retry")
    public String sendRetryMessage(@RequestParam String content) {
        MessageEvent message = new MessageEvent()
                .setId(UUID.randomUUID().toString())
                .setContent(content)
                .setTimestamp(System.currentTimeMillis());
        producerService.sendRetryMessage(message);
        return "Retry message sent successfully";
    }
}
責任編輯:姜華 來源: 不止dotNET
相關推薦

2023-03-10 08:00:03

KafkaActiveMQ

2019-04-11 10:26:15

架構運維技術

2021-07-09 07:15:48

RocketMQ數據結構kafka

2020-02-20 16:45:39

RabbitMQKafka架構

2022-07-27 22:48:29

消息中間件RocketMQ架構設計

2020-07-27 08:13:03

RabbitMQ代碼系統

2023-10-24 07:50:18

消息中間件MQ

2021-10-03 21:41:13

RocketMQKafkaPulsar

2021-06-11 21:46:31

RocketMQ數據JSON

2022-02-23 15:08:18

開發分布式Java

2024-11-01 13:49:24

RocketMQ消息類型業務

2024-04-11 09:45:31

2024-04-11 09:45:31

.NETRabbitMQEasyNetQ

2023-08-07 08:32:05

RocketMQ名字服務

2024-10-29 08:34:27

RocketMQ消息類型事務消息

2024-11-11 13:28:11

RocketMQ消息類型FIFO

2022-10-08 09:33:00

平臺中間件

2021-05-08 08:33:00

Rocketmq日志數據源

2021-01-21 07:16:03

RocketMQKafka中間件

2021-07-08 07:16:24

RocketMQ數據結構Message
點贊
收藏

51CTO技術棧公眾號

欧美电影免费播放| 国内av一区二区三区| 国产精品成人av| 欧美一区二区三区精品| 大陆av在线播放| 久蕉依人在线视频| 国产一区91精品张津瑜| 午夜精品蜜臀一区二区三区免费| b站大片免费直播| 四虎精品在线观看| 欧美日韩国产页| 一区二区三区四区五区视频| 亚洲第一天堂影院| 日韩不卡一区二区三区| 欧美激情视频在线观看| 91精品人妻一区二区| 国产精品白丝久久av网站| 婷婷六月综合网| 中文字幕久久一区| 欧美另类自拍| 成人小视频在线| 国产精品一区二区三区毛片淫片 | 依依综合在线| 国产女同互慰高潮91漫画| 99re热精品| 中文字幕在线观看第二页| 精品69视频一区二区三区Q| 在线观看欧美成人| 久久人妻无码aⅴ毛片a片app| 国产毛片在线看| 国产精品一区二区x88av| 欧美中文在线观看国产| 久久久久成人精品无码| 日韩欧美午夜| 亚洲欧美综合区自拍另类| 色综合伊人色综合网| 色婷婷一区二区三区在线观看| 在线能看的av网址| 一个色在线综合| 中文字幕欧美日韩一区二区三区 | 国产亚洲精品91在线| 国偷自产av一区二区三区麻豆| 国内自拍亚洲| 在线观看日产精品| av动漫免费看| 亚洲午夜天堂| 精品国产老师黑色丝袜高跟鞋| 精品免费久久久久久久| gogo在线观看| 亚洲色欲色欲www在线观看| 亚洲精品中文字幕乱码三区不卡| 精品视频二区| 久久久久国色av免费看影院| 美女三级99| 四虎影院在线域名免费观看| 99久久精品国产毛片| 韩国成人一区| 完全免费av在线播放| 伊人久久综合一区二区| 欧美日韩国产一区二区| www.中文字幕在线| 日韩理论视频| 色噜噜夜夜夜综合网| 国产精品wwwww| 色成人免费网站| 欧美色爱综合网| 手机视频在线观看| 亚洲欧美专区| 日韩欧美国产系列| 88av在线播放| 亚洲a级精品| 国产一区二区久久精品| 粉嫩精品久久99综合一区| 日韩在线第七页| 乱亲女秽乱长久久久| 久久网免费视频| 亚洲一区视频| 国产精品入口免费视频一| 在线观看视频二区| 国产精品一区二区在线看| 岛国视频一区| 久久天堂电影| 亚洲人成在线播放网站岛国 | 久久精品网址| 国产精品一区二区在线| 99视频国产精品免费观看a | 精品乱子伦一区二区三区| 青青草免费观看免费视频在线| 国产婷婷色一区二区三区| 亚洲在线观看一区| 欧美高清另类hdvideosexjaⅴ | 一本到在线视频| 国产99久久久久| 欧洲亚洲一区二区| 中文字幕有码在线视频| 精品日本高清在线播放| 在线观看高清免费视频| 成人春色在线观看免费网站| 亚洲欧美中文字幕| 青青草原在线免费观看| 国产一区二区你懂的| 国产精品亚洲自拍| 日本黄色三级视频| 日本一二三四高清不卡| 妞干网在线观看视频| 麻豆久久久久| 国产稀缺真实呦乱在线| 日韩欧美不卡| 欧美精品激情blacked18| 国产精品第5页| 国产在线精品一区二区| 欧美日韩综合久久| 亚洲国产精品精华素| 在线视频观看一区| 国产日韩视频一区| 色小子综合网| 欧洲中文字幕国产精品| 好吊视频一二三区| 国产精品女人毛片| 乱妇乱女熟妇熟女网站| 精品国产一区二区三区性色av| 亚洲视频在线播放| 日本少妇裸体做爰| 国产精品自拍三区| 亚洲一二三区精品| 午夜av成人| 日韩精品久久久久久福利| 九九热只有精品| 美女在线观看视频一区二区| 欧美一区二区三区成人久久片| 亚洲精品久久久久久一区二区| 林心如三级全黄裸体| 欧美人成在线| 国产日本欧美视频| 黄色影院在线播放| 欧美午夜视频在线观看| 亚洲国产精品第一页| 国产精品久久久久久久| 国产美女主播一区| 触手亚洲一区二区三区| 色激情天天射综合网| 巨胸大乳www视频免费观看| 亚洲黄色毛片| 国产精品区一区二区三含羞草| av在线免费网站| 91精品国产综合久久婷婷香蕉| 免费一级suv好看的国产网站| 日日摸夜夜添夜夜添亚洲女人| 看高清中日韩色视频| 超碰aⅴ人人做人人爽欧美| 日韩成人在线观看| 一区二区三区福利视频| 2024国产精品| 国产精品天天av精麻传媒| 午夜视频1000| 亚洲午夜羞羞片| 乱码一区二区三区| 亚洲一级黄色| 久久国产主播精品| 日本免费久久| 在线播放国产一区二区三区| 日韩欧美国产另类| 国产精品久久久久久久裸模| 亚洲高清免费在线观看| 久久综合国产| 亚洲一区二区三| 国产一线二线在线观看 | 久久久久国产精品一区| 国产91久久久| 欧美视频中文字幕在线| www.av天天| 久久成人免费日本黄色| 视色,视色影院,视色影库,视色网| 欧美影院精品| 97精品视频在线播放| 国产资源在线观看| 欧美男人的天堂一二区| 免费看一级一片| 91视频你懂的| 中文字幕66页| 狠狠88综合久久久久综合网| 麻豆久久久av免费| 91亚洲精品在看在线观看高清| 九九精品在线视频| 色综合久久网女同蕾丝边| 欧美性猛交xxxxxx富婆| 成人免费视频网站入口::| 成人av综合一区| 一区二区三区入口| 欧美日韩免费| 日产中文字幕在线精品一区 | 久久亚洲国产精品日日av夜夜| 播放一区二区| 久久久久久免费精品| 九色视频成人自拍| 欧美一级夜夜爽| 国产免费一区二区三区四区五区| 中文字幕日本不卡| 亚洲制服丝袜在线播放| 看片的网站亚洲| 少妇高潮毛片色欲ava片| 日韩av在线播放网址| 国产伦精品一区二区| 欧美aaaaaa| 欧美性一区二区三区| www红色一片_亚洲成a人片在线观看_| 精品一区电影国产| 国产成年妇视频| 在线免费观看日韩欧美| 日本一区二区网站| 亚洲少妇最新在线视频| 国产精品天天干| 99视频精品在线| 久久久久中文字幕亚洲精品| 日韩va欧美va亚洲va久久| 国产美女主播在线播放| 亚洲激情五月| 视频一区二区在线| 欧美日韩一区二区三区不卡视频| 91九色在线免费视频| av成人免费看| 国产97人人超碰caoprom| a级片在线免费| 欧美xxxx14xxxxx性爽| av电影在线观看| 一区二区三区天堂av| 亚洲欧美日韩综合在线| 亚洲风情亚aⅴ在线发布| a天堂中文在线观看| 欧美日韩国产精品成人| 国产suv精品一区二区33| 五月天中文字幕一区二区| 青青青在线免费观看| 亚洲免费资源在线播放| 色哟哟一一国产精品| 中文字幕一区二区三区乱码在线| 欧美巨胸大乳hitomi| 国产欧美日韩麻豆91| 欧美成人国产精品一区二区| 久久在线免费观看| 亚洲精品理论片| 久久人人超碰精品| 亚洲欧美日本一区| 91亚洲精品久久久蜜桃| aaaa黄色片| 久久众筹精品私拍模特| 亚洲国产精品无码久久久久高潮| 99久久婷婷国产综合精品| 性色av蜜臀av浪潮av老女人| 99久久伊人网影院| 国产一区中文字幕| 亚洲三区在线观看| 激情五月综合网| 欧美日韩三区四区| 久久99影视| 日韩中文字幕一区| 青青草成人影院| 亚洲成人一区二区三区| 全球成人免费直播| 伊人久久大香线蕉av一区| 中文字幕av亚洲精品一部二部| 亚洲乱码日产精品bd在线观看| 欧美三级黄美女| 亚洲美免无码中文字幕在线| 亚洲一区网站| 依人在线免费视频| 国产精品一卡二| 亚洲精品国产成人av在线| 91网站视频在线观看| japanese中文字幕| 亚洲色大成网站www久久九九| 青娱乐国产在线| 欧美性xxxxxxx| 中文字幕乱码人妻无码久久| 91精品国产综合久久香蕉的特点| 熟妇高潮一区二区高潮| 亚洲欧美日韩另类| 麻豆网站在线观看| 久久久天堂国产精品女人| 欧美gay囗交囗交| 成人h猎奇视频网站| 高潮按摩久久久久久av免费| 久久国产日韩欧美| 国产精品成人一区二区不卡| 欧美,日韩,国产在线| 日本午夜精品一区二区三区电影| 日本网站在线看| 久久综合久久综合亚洲| 免费中文字幕日韩| 精品久久中文字幕久久av| 一女二男一黄一片| 亚洲精美色品网站| 麻豆传媒在线免费| 欧洲午夜精品久久久| 久久伊人影院| 欧洲一区二区在线观看| 女人天堂亚洲aⅴ在线观看| www黄色av| 国产v日产∨综合v精品视频| 欧美激情 一区| 亚洲国产综合在线| 一级aaaa毛片| 日韩精品小视频| 永久免费网站在线| 国产精品久久久久久一区二区 | 亚洲综合三区| 国产xxx在线观看| 中文在线一区二区| 制服.丝袜.亚洲.中文.综合懂色| 91麻豆精品国产自产在线| 欧美日韩伦理片| 久久久噜噜噜久噜久久| 精品视频在线观看免费观看 | 久草中文在线观看| 国产成人拍精品视频午夜网站| 57pao国产一区二区| 中文字幕久精品免| 免费在线视频一区| 欧美 日本 国产| 亚洲va欧美va人人爽午夜| 国产精品一级视频| 一区二区三区回区在观看免费视频| 国内老司机av在线| av一区二区三区四区电影| 五月婷婷六月综合| 性chinese极品按摩| 久久精品日韩一区二区三区| 日韩激情在线播放| 日韩三级视频中文字幕| 欧美成人xxx| 国产精品一区二区三| 欧美日韩有码| 乱子伦视频在线看| 久久亚洲精华国产精华液 | 国产伦精品一区| 一区福利视频| 最新版天堂资源在线| 亚洲午夜免费电影| 亚洲av无码一区二区乱子伦| 大量国产精品视频| 精品一区视频| xxxxxx在线观看| 国产精品1区2区| 久久视频免费看| 亚洲护士老师的毛茸茸最新章节| av色在线观看| 久久精品美女| 久久亚洲一区| 天天操天天舔天天射| 欧美熟乱第一页| 成人av免费| 国产精品一区二区免费看| 亚洲精品婷婷| 在线免费观看成年人视频| 色综合中文字幕国产| 懂色av中文在线| 国产免费一区视频观看免费| 99精品视频在线观看播放| 69久久精品无码一区二区| 一级做a爱片久久| 黄色一级a毛片| 18性欧美xxxⅹ性满足| 国产成人精品免费视| 色多多视频在线播放| 自拍偷在线精品自拍偷无码专区| 国产视频www| 久久全国免费视频| 要久久爱电视剧全集完整观看| 中文字幕第80页| 亚洲视频每日更新| 嫩草影院一区二区| 奇米成人av国产一区二区三区| 久久综合国产| 欧美图片自拍偷拍| 一本一道久久a久久精品综合蜜臀| 懂色一区二区三区| 91丝袜脚交足在线播放| 亚洲美女一区| 超碰人人人人人人人| 日韩视频一区在线观看| 中文字幕高清在线播放| 亚洲精品一区二区毛豆| 国产成人在线视频播放| 国产原创视频在线| 永久免费毛片在线播放不卡| 免费观看亚洲视频大全| 夫妻免费无码v看片| 中文字幕亚洲综合久久菠萝蜜| 亚洲精品无码久久久| 国产精品黄视频| 很黄很黄激情成人| 人与嘼交av免费| 亚洲国产黄色片| 日日夜夜一区| 欧美一级黄色片视频| 一区二区视频在线看| 国产专区在线| 国产精品久久精品国产| 美女网站色91| 亚洲欧美精品一区二区三区|