精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

毛片在线免费| 国产在线免费视频| yy6080久久伦理一区二区| 国产亚洲福利社区一区| 国产精品扒开腿做| 免费在线观看黄色小视频| 日韩一二三区| 欧美日韩美女在线观看| 色一情一乱一伦一区二区三欧美 | 国产www视频在线观看| 99在线精品观看| 日韩美女激情视频| 一区二区成人免费视频| 亚洲人成网www| 欧美一区二区三区男人的天堂| 成人性生活视频免费看| 成人性生交大片免费看午夜| 成人免费视频一区| 国产日韩欧美在线| 啦啦啦免费高清视频在线观看| 99re66热这里只有精品8| 国产视频精品免费播放| 91丨porny丨九色| 国产国产一区| 一本一本大道香蕉久在线精品| 国产 欧美 日本| 午夜伦理在线| 国产亚洲综合色| 国产视频不卡| 国产伦精品一区二区| 超碰97人人射妻| 污污网站在线观看| 国产精品久久久久永久免费观看 | 99一区二区三区| 中文字幕日本视频| 国产精品乱看| 韩国v欧美v日本v亚洲| 亚洲一二三四五六区| 久久99免费视频| 日韩成人在线视频网站| 亚洲精品鲁一鲁一区二区三区| 国产精品无码久久久久| 色综合色综合色综合| 欧美精品久久久久久久免费| 青草在线视频在线观看| 亚洲女同一区二区| 中文字幕成人一区| 免费日本一区二区三区视频| 欧美激情一区二区三区在线| 日本在线播放不卡| 久久国产精品高清一区二区三区| 91一区二区在线| 国产一区再线| 午夜18视频在线观看| 经典一区二区| 亚洲一区二区三区免费在线观看| 日韩视频一区在线| 男人的午夜天堂| 97精品一区| 精品久久久999| 欧美日韩午夜视频| 欧美99久久| 欧美大片网站在线观看| 精品视频一区二区在线观看| 亚洲高清网站| 欧美综合在线第二页| 麻豆成人免费视频| 日本91福利区| 国产欧美精品日韩| 国产内射老熟女aaaa∵| 国产剧情一区在线| 国产精品日韩一区二区| 色视频在线看| 国产精品无遮挡| 日韩中文在线字幕| 久草免费在线色站| 欧美午夜片在线免费观看| 可以在线看的黄色网址| 国产精品麻豆成人av电影艾秋| 欧美精品aⅴ在线视频| 99精品视频免费版的特色功能| 一区二区三区免费在线看| 亚洲精品720p| 日本人亚洲人jjzzjjz| 亚洲精品91| 97精品在线视频| 国产亚洲欧美日韩高清| 韩国毛片一区二区三区| 国产综合第一页| yw193.com尤物在线| 最新国产成人在线观看| 精品亚洲porn| 日本韩国在线不卡| 一本色道久久综合无码人妻| 国产成人av一区二区三区在线观看| 国产在线一区二区三区四区| 夜级特黄日本大片_在线| 亚洲黄色录像片| 国产情侣av自拍| 日韩在线成人| 亚洲最新av在线| 久久久久黄色片| 日本中文字幕一区二区有限公司| 亚洲一区二区免费在线| 久青青在线观看视频国产| 亚洲欧洲制服丝袜| 99久久激情视频| 91精品久久久久久综合五月天| 国产亚洲精品一区二555| 久久精品一级片| 麻豆国产欧美日韩综合精品二区| 国产精品99久久久久久久 | 最新日韩中文字幕| 激情综合五月网| 久久精品国产亚洲一区二区三区| 韩国成人一区| 深夜国产在线播放| 欧美三级日韩三级| 日韩**中文字幕毛片| 欧美丰满少妇人妻精品| 中文字幕一区二区三区在线视频 | 超碰97免费观看| 新片速递亚洲合集欧美合集| 亚洲第一av网站| 91成人福利视频| 久久成人麻豆午夜电影| 日本精品一区二区三区不卡无字幕| 美足av综合网| 欧美一级黄色录像| 国产黄a三级三级| 日本伊人午夜精品| 日本一区二区不卡高清更新| 久草在线资源福利站| 精品久久一二三区| 国产十六处破外女视频| 久久国产综合精品| 四虎影院一区二区三区 | 日韩在线卡一卡二| 精品无码久久久久久久动漫| 欧美日韩经典丝袜| 日韩免费电影一区| 黄色一级免费视频| 国产伦精品一区二区三区视频青涩| 日韩1区2区3区| 日韩av色综合| 天堂成人在线| 午夜精品久久久久久不卡8050| 国产一级二级av| 中文在线播放一区二区 | 粉嫩的18在线观看极品精品| 美女久久久久久久久久久| 国产又爽又黄免费软件| 亚洲欧洲www| 天天操精品视频| 欧美99久久| 国产视频在线观看一区| 免费看男女www网站入口在线| 日韩电影中文字幕| 黄色在线免费观看| 久久久电影一区二区三区| 亚洲五月天综合| 久久在线视频| 91老司机精品视频| 日韩伦理av| 亚洲精品av在线| 国产黄网在线观看| 中文字幕 久热精品 视频在线| 欧美美女一级片| 欧美国产综合| 久久久久久国产精品mv| 国产精品极品美女在线观看| 日韩中文在线不卡| 性生交大片免费看女人按摩| 亚欧色一区w666天堂| av黄色免费网站| 精品一区二区三区免费视频| 成年丰满熟妇午夜免费视频| 牛牛影视一区二区三区免费看| 日韩免费在线看| 毛片免费不卡| 欧美精品一区二区高清在线观看| 日韩综合在线观看| 亚洲精品乱码久久久久久黑人| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 欧美激情精品久久| 91小视频在线免费看| 波多野结衣天堂| 日韩女同一区二区三区| 久久综合激情| 国产高清免费在线| 久久久免费毛片| 国产精品你懂得| 性欧美video高清bbw| 亚洲欧美激情另类校园| 国产乱码久久久久| 欧美网站在线观看| 91porn在线视频| 国产偷国产偷亚洲高清人白洁| 一级黄色片在线免费观看| 亚洲免费中文| 国产人妻互换一区二区| 杨幂一区二区三区免费看视频| 91日韩在线播放| 亚洲欧美小说色综合小说一区| 久久久精品亚洲| 青青久草在线| 精品va天堂亚洲国产| 7777久久亚洲中文字幕| 精品福利免费观看| 中文字幕在线观看成人| 国产欧美日韩中文久久| 99精品一区二区三区无码吞精| 久久成人av少妇免费| 国产免费黄色av| 韩国久久久久| 熟女熟妇伦久久影院毛片一区二区| 亚洲大片精品免费| 高清av免费一区中文字幕| 偷拍自拍亚洲| 国产精品∨欧美精品v日韩精品| xxxx另类黑人| 欧美精品在线免费| 免费黄色在线| 一色桃子一区二区| 欧美日韩国产综合视频| 亚洲缚视频在线观看| 国产国语亲子伦亲子| 欧美年轻男男videosbes| 波多野结衣二区三区| 五月开心婷婷久久| 久一视频在线观看| 麻豆久久精品| 欧美老女人xx| 麻豆影院在线观看| 中文字幕亚洲综合| 阿v免费在线观看| 国产一区二区三区中文 | 99精品热视频| 国产一线在线观看| 国产.欧美.日韩| 韩国三级在线看| 国产麻豆欧美日韩一区| 一级片黄色免费| 国产精品资源在线看| 一级黄色在线播放| 国产一区二区调教| 久久精品无码一区二区三区毛片| 久久激情五月婷婷| 中文字幕12页| 国产麻豆91精品| 国产在线观看免费播放| 成人一级视频在线观看| youjizz.com国产| 91一区二区在线观看| 欧美特级黄色录像| 久久麻豆一区二区| 91导航在线观看| 日韩美女啊v在线免费观看| 乱h高h女3p含苞待放| 一区二区三区中文免费| 欧美黄色免费在线观看| 亚洲在线视频免费观看| 日韩人妻无码一区二区三区99| 精品女厕一区二区三区| 久久99国产综合精品免费| 在线免费观看成人短视频| 中文字幕精品一区二| 欧美疯狂做受xxxx富婆| 亚洲国产日韩在线观看| 日韩国产在线看| yw193.com尤物在线| 欧美xxxx做受欧美.88| 久久久123| 国产精品成人一区二区三区吃奶| 精品久久毛片| 成人蜜桃视频| 欧美精美视频| 日本黄色播放器| 极品日韩av| 最近中文字幕一区二区| 在线一区av| 欧美日韩激情视频| 可以在线观看av的网站| 欧美视频在线一区二区三区 | 中文字幕亚洲欧美一区二区三区| 国产三区视频在线观看| 国内精品国产三级国产在线专| 久久野战av| 亚洲综合中文字幕68页| 亚洲资源网站| 欧美 亚洲 视频| 日韩1区2区日韩1区2区| www.com日本| 国产日产欧美一区| 精品无码人妻一区二区三区| 色婷婷av一区二区三区大白胸| 国产99视频在线| 亚洲天堂免费观看| 丝袜中文在线| 国产精品久久久久久久久久久久久 | 亚洲性色视频| 亚洲老女人av| 97久久超碰精品国产| 久久久精品少妇| 色综合网色综合| 亚洲精品无码久久久| 最近2019免费中文字幕视频三| heyzo高清国产精品| 国产在线观看精品| 国产日产精品一区二区三区四区的观看方式| 亚洲国产精品影视| 蜜桃在线一区二区三区| 国产伦精品一区二区三区精品视频| 91成人一区二区三区| 亚洲国产天堂久久国产91| 在线免费观看污| 国产精品日韩欧美| 妖精视频一区二区三区| 日韩日韩日韩日韩日韩| 国产一区二区精品久久99| 国产激情av在线| 一本大道综合伊人精品热热| 少妇无码一区二区三区| 欧美乱大交xxxxx另类电影| 日本亚洲欧洲无免费码在线| 免费精品视频一区| 99精品福利视频| 美女又黄又免费的视频| 亚洲欧美影音先锋| 中文在线免费观看| 夜夜嗨av一区二区三区四区 | 午夜久久福利影院| 精品久久久久久亚洲综合网站 | 蜜桃成人免费视频| 亚洲九九精品| 精品人妻在线视频| 亚洲网友自拍偷拍| www.我爱av| 欧美成人高清在线| 99国产精品久久久| 黄色一级片在线| 欧美一区二区人人喊爽| 色网站免费在线观看| 国产精品视频久久久| 欧美丝袜一区| 亚洲天堂av线| 国产精品免费视频网站| 久久久999久久久| 中文国产亚洲喷潮| 玖玖精品在线| 亚洲一区三区视频在线观看| 久久精品国产秦先生| 小向美奈子av| 欧美大胆人体bbbb| 波多野结衣精品| 久久精品99久久| 视频一区国产视频| 无码人中文字幕| 女同视频在线观看| 国产精品∨欧美精品v日韩精品| 自拍亚洲一区| 在线免费视频a| 中文字幕一区二区视频| 精品人妻一区二区三区含羞草 | 亚洲天堂导航| 欧美一区二区三区四区在线观看地址| 久久久成人网| 蜜桃av免费观看| 日韩视频在线你懂得| av3级在线| 欧美一区国产一区| 久久激情综合网| 国产精品不卡av| 国产亚洲激情在线| 亚洲一区有码| 国产freexxxx性播放麻豆| 91捆绑美女网站| 亚洲天堂自拍偷拍| 欧美激情在线播放| 自拍亚洲一区| 一级黄色免费毛片| 色婷婷综合久久久中文字幕| 在线观看的av| 高清视频在线观看一区| 久久精品一区二区三区中文字幕| 一本一本久久a久久| 亚洲精品一区二区三区四区高清 | 欧美不卡在线| 欧美性生交xxxxx| 在线观看一区日韩| 羞羞电影在线观看www| 麻豆91蜜桃| 国产九九视频一区二区三区| 国产精品久久久免费视频| 色999日韩欧美国产| 久久99国产精品久久99大师| 成人黄色一级大片| 福利一区福利二区微拍刺激| 麻豆视频在线播放| 欧美激情国产日韩|