日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RocketMQ简介

發(fā)布時間:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocketMQ简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時消息、消息回溯等。
RocketMQ優(yōu)點

1 RocketMQ去除對zk的依賴

2 RocketMQ支持異步和同步兩種方式刷磁盤

3 RocketMQ單機支持的隊列或者topic數(shù)量是5w

4 RocketMQ支持消息重試

5 RocketMQ支持嚴格按照一定的順序發(fā)送消息

6 RocketMQ支持定時發(fā)送消息

7 RocketMQ支持根據(jù)消息ID來進行查詢

8 RocketMQ支持根據(jù)某個時間點進行消息的回溯

9 RocketMQ支持對消息服務(wù)端的過濾

10 RocketMQ消費并行度:順序消費 取決于queue數(shù)量,亂序消費 取決于consumer數(shù)量
RocketMQ架構(gòu)原理

RocketMQ專業(yè)名詞
Producer 生產(chǎn)者角色—投遞消息給mq。
Producer Group 生產(chǎn)者組 —
Consumer 消費者 采用拉取/mq推送方式 獲取消息offset
Consumer Group 消費者組----在同一個組中,是不允許多個不同的消費者消費同一條消息。
多個消費者消費同一條消息呢? 兩個分組 多個不同的分組中可以允許有不同分組中消費者消費同一條消息的。----
以組的名義關(guān)聯(lián)該組消費的offset位置—
Topic
業(yè)務(wù)隊列存放消息
異步發(fā)送短信
異步發(fā)送郵件
郵件Topic
短信Topic
業(yè)務(wù)區(qū)分不同的隊列消息
Queue
會將一個topic主題中的消息存放在多個不同的Queue 與kafka分區(qū)模型是一樣
中。

Message
生產(chǎn)者投遞消息會自動對給消息生成一個全局消息id,后期的可以根據(jù)該消息全局id實現(xiàn)業(yè)務(wù)的防止重復(fù)執(zhí)行------冪等性概念。

Tag
–區(qū)分 過濾

Broker
Mq服務(wù)器端
Name Server
與zk相同思想,作為rocketmq注冊中心 存放生產(chǎn)者消費者 topic主題信息。

Producer
消息生產(chǎn)者,位于用戶的進程內(nèi),Producer通過NameServer獲取所有Broker的路由信息,根據(jù)負載均衡策略選擇將消息發(fā)到哪個Broker,然后調(diào)用Broker接口提交消息。

Producer Group
生產(chǎn)者組,簡單來說就是多個發(fā)送同一類消息的生產(chǎn)者稱之為一個生產(chǎn)者組。

Consumer
消息消費者,位于用戶進程內(nèi)。Consumer通過NameServer獲取所有broker的路由信息后,向Broker發(fā)送Pull請求來獲取消息數(shù)據(jù)。Consumer可以以兩種模式啟動,廣播(Broadcast)和集群(Cluster),廣播模式下,一條消息會發(fā)送給所有Consumer,集群模式下消息只會發(fā)送給一個Consumer。

Consumer Group
消費者組,和生產(chǎn)者類似,消費同一類消息的多個 Consumer 實例組成一個消費者組。

Topic
Topic用于將消息按主題做劃分,Producer將消息發(fā)往指定的Topic,Consumer訂閱該Topic就可以收到這條消息。Topic跟發(fā)送方和消費方都沒有強關(guān)聯(lián)關(guān)系,發(fā)送方可以同時往多個Topic投放消息,消費方也可以訂閱多個Topic的消息。在RocketMQ中,Topic是一個上邏輯概念。消息存儲不會按Topic分開。

Message
代表一條消息,使用MessageId唯一識別,用戶在發(fā)送時可以設(shè)置messageKey,便于之后查詢和跟蹤。一個 Message 必須指定 Topic,相當(dāng)于寄信的地址。Message 還有一個可選的 Tag 設(shè)置,以便消費端可以基于 Tag 進行過濾消息。也可以添加額外的鍵值對,例如你需要一個業(yè)務(wù) key 來查找 Broker 上的消息,方便在開發(fā)過程中診斷問題。

Tag
標(biāo)簽可以被認為是對 Topic 進一步細化。一般在相同業(yè)務(wù)模塊中通過引入標(biāo)簽來標(biāo)記不同用途的消息。

Broker
Broker是RocketMQ的核心模塊,負責(zé)接收并存儲消息,同時提供Push/Pull接口來將消息發(fā)送給Consumer。Consumer可選擇從Master或者Slave讀取數(shù)據(jù)。多個主/從組成Broker集群,集群內(nèi)的Master節(jié)點之間不做數(shù)據(jù)交互。Broker同時提供消息查詢的功能,可以通過MessageID和MessageKey來查詢消息。Borker會將自己的Topic配置信息實時同步到NameServer。

Queue
Topic和Queue是1對多的關(guān)系,一個Topic下可以包含多個Queue,主要用于負載均衡。發(fā)送消息時,用戶只指定Topic,Producer會根據(jù)Topic的路由信息選擇具體發(fā)到哪個Queue上。Consumer訂閱消息時,會根據(jù)負載均衡策略決定訂閱哪些Queue的消息。

Offset
RocketMQ在存儲消息時會為每個Topic下的每個Queue生成一個消息的索引文件,每個Queue都對應(yīng)一個Offset記錄當(dāng)前Queue中消息條數(shù)。

NameServer
NameServer可以看作是RocketMQ的注冊中心,它管理兩部分數(shù)據(jù):集群的Topic-Queue的路由配置;Broker的實時配置信息。其它模塊通過Nameserv提供的接口獲取最新的Topic配置和路由信息。

Producer/Consumer :通過查詢接口獲取Topic對應(yīng)的Broker的地址信息
Broker : 注冊配置信息到NameServer, 實時更新Topic信息到NameServe

RocketMQ環(huán)境搭建

注意:一定要配置rocketmq 環(huán)境變量 不然啟動 mqnamesrv.cmd
報錯: Please set the ROCKETMQ_HOME variable in your environment!
啟動mqnamesrv

  • 下載rocketmq安裝包
  • 解壓rocketmq安裝包
  • 配置rocketmq環(huán)境變量
    系統(tǒng)環(huán)境變量配置
    變量名:ROCKETMQ_HOME
    變量值:MQ解壓路徑\MQ文件夾名
    eg、ROCKETMQ_HOME=D:\rocketmq-all-4.3.0-bin-release
    4.啟動 mqnamesrv.cmd
  • 啟動mqBroker
    Cmd命令框執(zhí)行進入至‘MQ文件夾\bin’下,然后執(zhí)行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,啟動BROKER。成功后會彈出提示框,此框勿關(guān)閉。
    啟動Rocketmq-console
    1.下載rocketmq-externals-master
    ,進入‘rocketmq-externals\rocketmq-console\src\main\resources’文件夾,打開‘a(chǎn)pplication.properties’進行配置。
    2. 新增:rocketmq.config.namesrvAddr=127.0.0.1:9876
    3. 執(zhí)行
    用CMD進入‘\rocketmq-externals\rocketmq-console’文件夾,執(zhí)行‘mvn clean package -Dmaven.test.skip=true’,編譯生成。
    編譯成功之后,Cmd進入‘target’文件夾,執(zhí)行‘java -jar rocketmq-console-ng-2.0.0.jar’,啟動‘rocketmq-console-ng-1.0.0.jar’。
    4.瀏覽器中輸入‘127.0.0.1:配置端口’,成功后即可查看。
    eg:http://127.0.0.1:8088

    RocketMQ集群環(huán)境
    1.集群支持:
      RocketMQ天生對集群的支持非常友好
    2.單Master:
      優(yōu)點:除了配置簡單沒什么優(yōu)點
      缺點:不可靠,該機器重啟或宕機,將導(dǎo)致整個服務(wù)不可用
    3.多Master:
      優(yōu)點:配置簡單,性能最高
    缺點:可能會有少量消息丟失(配置相關(guān)),單臺機器重啟或宕機期間,該機器下未被消費的消息在機器恢復(fù)前不可訂閱,影響消息實時性
    4.多Master多Slave異步模式:
      每個Master配一個Slave,有多對Master-Slave,集群采用異步復(fù)制方式,主備有短消息延遲,毫秒級
      優(yōu)點:性能同多Master幾乎一樣,實時性高,主備間切換對應(yīng)用透明,不需人工干預(yù)
      缺點:Master宕機或磁盤損壞時會有少量消息丟失

    Rocketmq偽集群搭建

    集群:Master節(jié)點、Slave節(jié)點

    Master節(jié)點:讀寫 生產(chǎn)者可以投遞消息到Master節(jié)點、消費者讀取該Master節(jié)點消費消息。
    Slave節(jié)點:只能讀 不能夠?qū)?消費者只能夠讀,生產(chǎn)者不能夠?qū)⑾⑼哆f到Slave節(jié)點中。

  • 新增兩個broker-a.conf broker-b.conf
    broker-a.conf 配置
    brokerClusterName=DefaultCluster
    #從節(jié)點的brokerName必須和主節(jié)點一樣
    brokerName=broker-a
    #0表示是一個主節(jié)點, >0表示Slave
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    #nameServer地址,分號分割
    namesrvAddr=127.0.0.1:9876
    #允許自動創(chuàng)建主題
    autoCreateTopicEnable=true
    #注意需改端口,并且要和默認的10911相差5以上
    listenPort=10911
    #存儲路徑
    storePathRootDir=D:\rocketmq\store_master
    #commitLog存儲路徑
    storePathCommitLog=D:\rocketmq\store_master\commitLog
    #消費隊列存儲路徑
    storePathConsumerQueue=D:\rocketmq\store_master\consumerqueue
    #消息索引存儲路徑
    storePathIndex=D:\rocketmq\store_master\index
    #checkpoint 文件存儲路徑
    storeCheckpoint=D:\rocketmq\store_master\checkpoint
    #abort 文件存儲路徑
    abortFile=D:\rocketmq\store_master\abort
  • broker-b.conf配置
    brokerClusterName=DefaultCluster
    #從節(jié)點的brokerName必須和主節(jié)點一樣
    brokerName=broker-a
    #0表示是一個主節(jié)點, >0表示Slave
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    #nameServer地址,分號分割
    namesrvAddr=127.0.0.1:9876
    #允許自動創(chuàng)建主題
    autoCreateTopicEnable=true
    #注意需改端口,并且要和默認的10911相差5以上
    listenPort=10921
    #存儲路徑
    storePathRootDir=D:\rocketmq\store_slave
    #commitLog存儲路徑
    storePathCommitLog=D:\rocketmq\store_slave\commitLog
    #消費隊列存儲路徑
    storePathConsumerQueue=D:\rocketmq\store_slave\consumerqueue
    #消息索引存儲路徑
    storePathIndex=D:\rocketmq\store_slave\index
    #checkpoint 文件存儲路徑
    storeCheckpoint=D:\rocketmq\store_slave\checkpoint
    #abort 文件存儲路徑
    abortFile=D:\rocketmq\store_slave\abort

    啟動broker集群

    啟動broker-a—
    F:\path\alibabamq\rocketmq-all-4.3.2-bin-release\bin>mqbroker.cmd -c F:\path\ali
    babamq\rocketmq-all-4.3.2-bin-release\conf\cluster\broker-a.conf
    The broker[broker-a, 192.168.31.1:10911] boot success. serializeType=JSON and na
    me server is 127.0.0.1:9876

    啟動broker-b—
    F:\path\alibabamq\rocketmq-all-4.3.2-bin-release\bin>mqbroker.cmd -c F:\path\ali
    babamq\rocketmq-all-4.3.2-bin-release\conf\cluster\broker-b.conf
    The broker[broker-a, 192.168.31.1:10921] boot success. serializeType=JSON and na
    me server is 127.0.0.1:9876

    展示界面

    Rocketmq集群同步方案

    在RocketMQ中 Broker需要實現(xiàn)集群保證高可用(HA)

  • 構(gòu)建環(huán)境為 一主和一從
    生產(chǎn)者投遞消息都是存放在主的Broker中
    從Broker每次定時同步主Brokercommitlog日志文件。
  • 消費者獲取消息— 利弊:
    A.如果實現(xiàn)一主一從讀寫分離消費模型----
    消費者訂閱從節(jié)點消費消息,可能會存在延遲問題。(網(wǎng)絡(luò)數(shù)據(jù)傳輸過程中,延遲必然)
    B. 消費者直接訂閱我們主Broker消費消息 延遲概率比較低
    默認的情況下,消費者:訂閱我們主的Broker消費消息,如果主的Broker節(jié)點物理內(nèi)存占用達到40%,開始采用訂閱從節(jié)點實現(xiàn)消費,可以提高讀寫性能。----讀寫分離消費模型架構(gòu)物理內(nèi)存占用達到40%----消息堆積—
  • 如果主Broker宕機的情況下,生產(chǎn)者是無法投遞消息,而我們消費者可以
    訂閱我們從節(jié)點實現(xiàn)數(shù)據(jù)的消費。

    消費者 消費進度同步問題

    在每個Broker服務(wù)器中, 在C:\Users\Administrator\store\config

    consumerOffset.json 記錄每個分組消費主題消息隊列 消費進度。

    “topic_2020_mayikt@mayikt-group23”:{0:2,1:1,2:3,3:0

    topic_2020_mayikt 主題名稱
    mayikt-group23消費者分組名稱

    0:2,1:1,
    0:隊列id 消費進度 offset為2的位置
    1:隊列id 消費者進度 offset為1的位置

    1.從節(jié)點定時的形式同步主節(jié)點消費記錄信息,不管消費者訂閱主節(jié)點還是從節(jié)點
    最終都會優(yōu)先的將消費記錄結(jié)果給主節(jié)點,如果節(jié)點真的宕機的情況下,先記錄在
    從節(jié)點。
    2.如果主節(jié)點現(xiàn)在突然存活的情況下,從哪個位置開始消費呢?
    如果我們消費者內(nèi)存中有緩存消費進度的情況下,連接到主節(jié)點修改最新消費者進度記錄。
    如果消費者內(nèi)存沒有緩存消費進度的情況下,可能會發(fā)生重復(fù)消費的問題。

    在RocketMQ中 Broker需要實現(xiàn)集群保證高可用(HA)

  • 在RocketMQ Broker集群中 分為 Master、Slave
  • Master做寫操作Slave(備份主節(jié)點commitlog日志文件)數(shù)據(jù)
  • ----Slave會同步Master節(jié)點中所有commitlog文件數(shù)據(jù)。
    如果當(dāng)Master節(jié)點宕機了,這時候Master節(jié)點就無法寫入數(shù)據(jù)(生產(chǎn)者無法投遞數(shù)據(jù)),
    但是消費者可以根據(jù)Slave(備份)節(jié)點消費數(shù)據(jù),注意的是 從Slave(備份)節(jié)點無法
    寫入數(shù)據(jù)。

    設(shè)置該參數(shù):slaveReadEnable 從服務(wù)器不允許讀;

    RocketMQ讀寫分離機制:

  • 默認的情況下,RocketMQ優(yōu)先從主Master節(jié)點拉取數(shù)據(jù)信息;
  • 如果主服務(wù)器的消息堆積過多,占用物理內(nèi)存40%后,開始建議使用從節(jié)點消費,實現(xiàn)
    讀寫分離消費模型,提高IO讀寫的性能。
  • RocketMQ消費者進度如何同步:

  • 當(dāng)主節(jié)點宕機之后,消費者會使用從服務(wù)器提交消費記錄,每次消費的記錄會保存在當(dāng)前Broker存儲目錄:D:\rocketmq\store_slave\config consumerOffset.json
  • 從服務(wù)器會開啟一個定時任務(wù)向主服務(wù)器發(fā)送同步消費進度, 實現(xiàn)主從消費進度同步、不管是在主消費還是在從消費,消費者會優(yōu)先將該消費的進度匯報給主的服務(wù)器,而且我們消費者將消費的進度保存在內(nèi)存中,當(dāng)主節(jié)點宕機之后,有恢復(fù)的話,發(fā)送最新消費者進度給主的服務(wù)器,這時候就避免了重復(fù)消費進度的問題。
  • Springboot整合方式

    注意springboot整合rocketmq server端 版本一定要與rocketmq 不然可能啟動報錯

    Maven依賴

    org.springframework.boot
    spring-boot-starter-parent
    2.2.4.RELEASE





    org.springframework.boot
    spring-boot-starter-web


    org.projectlombok
    lombok


    org.apache.rocketmq
    rocketmq-spring-boot-starter
    2.0.1

    生產(chǎn)者
    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    /**

    • 普通消息投遞 單向發(fā)送
      */
      @GetMapping("/sendMsg")
      public String sendMsg() {
      MsgEntity msg = new MsgEntity(“mayikt” + UUID.randomUUID().toString(), 1234);
      rocketMQTemplate.convertAndSend(RocketMQConfig.TOPIC_NAME, msg);
      return “投遞消息 => " + msg.toString() + " => 成功”;
      }

    消費者
    /**

    • @ClassName RocketMQConsumer

    • @Author 螞蟻課堂余勝軍 QQ644064779 www.mayikt.com

    • @Version V1.0
      **/
      @Service
      @Slf4j
      @RocketMQMessageListener(consumerGroup = “mayikt-group5”, topic = “topic_meite”)
      public class RocketMQConsumer implements RocketMQListener {
      @Override
      public void onMessage(MsgEntity msgEntity) {

      log.info("消費者監(jiān)聽到消息:<msg:{}>", msgEntity);

      }
      }

    配置文件
    spring:
    application:
    name: mayikt-rocketmq
    server:
    port: 8000
    rocketmq:

    rocketmq地址

    name-server: 127.0.0.1:9876
    producer:
    # 必須填寫 group
    group: mayikt-group

    Rocketmq配置文件詳解
    所屬集群名字
    brokerClusterName=rocketmq-cluster
    此處需手動更改
    broker名字,注意此處不同的配置文件填寫的不一樣
    附加:按配置文件文件名來匹配
    brokerName=broker-a
    0 表示Master, > 0 表示slave
    brokerId=0
    此處許手動更改
    (此處nameserver跟host配置相匹配,9876為默認rk服務(wù)默認端口)nameServer 地址,分號分割
    附加:broker啟動時會跟nameserver建一個長連接,broker通過長連接才會向nameserver發(fā)新建的topic主題,然后java的客戶端才能跟nameserver端發(fā)起長連接,向nameserver索取topic,找到topic主題之后,判斷其所屬的broker,建立長連接進行通訊,這是一個至關(guān)重要的路由的概念,重點,也是區(qū)別于其它版本的一個重要特性
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
    在發(fā)送消息時,自動創(chuàng)建服務(wù)器不存在的Topic,默認創(chuàng)建的隊列數(shù)
    defaultTopicQueueNums=4
    是否允許Broker 自動創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
    autoCreateTopicEnable=true
    是否允許Broker自動創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
    autoCreateSubscriptionGroup=true
    Broker 對外服務(wù)的監(jiān)聽端口
    listenPort=10911
    刪除文件時間點,默認是凌晨4點
    deleteWhen=04
    文件保留時間,默認48小時
    fileReservedTime=120
    commitLog每個文件的大小默認1G
    附加:消息實際存儲位置,和ConsumeQueue是mq的核心存儲概念,之前搭建2m環(huán)境的時候創(chuàng)建在store下面,用于數(shù)據(jù)存儲,consumequeue是一個邏輯的概念,消息過來之后,consumequeue并不是把消息所有保存起來,而是記錄一個數(shù)據(jù)的位置,記錄好之后再把消息存到commitlog文件里
    mapedFileSizeCommitLog=1073741824
    ConsumeQueue每個文件默認存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
    mapedFileSizeConsumeQueue=300000
    destroyMapedFileIntervalForcibly=120000
    redeleteHangedFileInterval=120000
    檢測物理文件磁盤空間
    diskMaxUsedSpaceRatio=88
    存儲路徑
    storePathRootDir=/usr/local/rocketmq/store
    commitLog存儲路徑
    storePathCommitLog=/usr/local/rocketmq/store/commitlog
    消費隊列存儲路徑
    storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
    消息索引存儲路徑
    storePathIndex=/usr/local/rocketmq/store/index
    checkpoint 文件存儲路徑
    storeCheckpoint=/usr/local/rocketmq/store/checkpoint
    abort 文件存儲路徑
    abortFile=/usr/local/rocketmq/store/abort
    限制的消息大小
    maxMessageSize=65536
    flushCommitLogLeastPages=4
    flushConsumeQueueLeastPages=2
    flushCommitLogThoroughInterval=10000
    flushConsumeQueueThoroughInterval=60000
    Broker 的角色
    ? ASYNC_MASTER 異步復(fù)制Master
    ? SYNC_MASTER 同步雙寫Master
    ? SLAVE
    brokerRote=ASYNC_MASTER
    刷盤方式
    ? ASYNC_FLUSH 異步刷盤
    ? SYNC_FLUSH 同步刷盤
    flushDiskType=ASYNC_FLUSH
    checkTransactionMessageEnable=false
    發(fā)消息線程池數(shù)量
    sendMessageTreadPoolNums=128
    拉消息線程池數(shù)量
    pullMessageTreadPoolNums=128

    Rocketmq隊列分區(qū)模型

    Rocketmq 底層存儲結(jié)構(gòu)中 將一個主題分成n多個不同的
    隊列來實現(xiàn)存放消息。
    創(chuàng)建了一個主題:需要指定隊列個數(shù) 默認是4和16
    寫隊列數(shù)量: 對我們生產(chǎn)者寫投遞隊列數(shù)量 16
    讀隊列數(shù)量: 對我們消費者獲取消息隊列數(shù)量 16

    在rocketmq中,如果一個topic只有一個隊列的情況下支持的并行能力比較弱,所以會將一個topic分成分成n多個不同的隊列queue來實現(xiàn)存放, 類似于Kafka的分區(qū)模型概念。

    writeQueueNums:寫隊列數(shù),表示producer發(fā)送到的MessageQueue的隊列個數(shù)
    readQueueNums:讀隊列數(shù),表示Consumer讀取消息的MessageQueue隊列個數(shù)
    注:這兩個值需要相等,在集群模式下如果不相等,writeQueueNums=6,readQueueNums=3, 那么每個broker上會有3個queue的消息是無法消費的。
    perm 隊列的權(quán)限:2表示w、4表示r 6表示rw
    架構(gòu)模擬圖

    注意我們rocketmq與kafka設(shè)計思想原理相同,消息存儲在mq服務(wù)器端中,消費者不管消費失敗還是成功,最終消息還是會存在mq服務(wù)器端,可以通過日志策略清理消息。

    RocketMQ解決方案

    如果現(xiàn)在消費者獲取消息、處理器都是同一個線程的情況下,
    有可能會影響到我們消費者速率—
    消費者獲取消息10毫秒—處理消息5s 5.001s
    Rocketmq中 消費者消費的消息,采用多線程的形式,需要注意消息順序一致性的問題。

    與kafka思想是一樣的,消費者不管消費成功還是失敗,最終消息不會立即被刪除。
    后期都是通過日志刪除策略,定時刪除消息。

    NameServer原理

    NameServer注冊中心 類似于zookeeper、nacos 存儲 服務(wù)節(jié)點信息。

    Rocketmq 不使用Zookeeper而使用Nameserver實現(xiàn)注冊中心呢?
    Cp(每個節(jié)點副本必須要保證數(shù)據(jù)一致性) ap(每個節(jié)點副本數(shù)據(jù)不一致
    ,保證可用性。)
    Kafka:副本機制 副本選舉依賴 控制器 選舉依賴Zookeeper—選舉過程

    在Rocketmq中 人為在配置文件中指定那個Broker 為主節(jié)點 ,而在kafka中依賴
    與zookeeper實現(xiàn)選舉的。

    NameServer 每個節(jié)點相互之間沒有數(shù)據(jù)過程、都是獨立的 (ap模式)
    保證可用性、不保證每個NameServer 數(shù)據(jù)的一致性問題。

    NameServer 與Broker 、生產(chǎn)者、消費者關(guān)系。

    NameServer 中存放那些信息呢?

  • NameServer 存儲Broker ip和端口號信息
  • 存放topic主題信息
  • NameServer 與Broker 關(guān)系

  • 在Broker配置文件中配置了多個不同的NameServer 集群地址
  • Broker 啟動的時候,讀取到該多個不同的NameServer 地址
  • Broker會與所有的NameServer 建立長連接
  • 會將自己的信息注冊到每個NameServer 上存儲起來。
  • nameServer如何知道Broker 宕機呢?

  • 續(xù)命的設(shè)計:Broker 與每個NameServer 建立長連接之后,每隔30s的時間
    發(fā)送一個心跳續(xù)約包給Broker 告訴我還在存活狀態(tài)
  • nameServer 定時器每隔10s的時間檢測 故障Broker ,如果發(fā)生故障Broker 會直接剔除。
    與nacos、eureka 實現(xiàn)服務(wù)注冊中心原理是一樣的。
  • 生產(chǎn)者:

  • 在生產(chǎn)者客戶端配置文件中,配置了多個連接nameserver地址
  • 采用輪詢算法 連接nameserver 如果能夠獲取到BrokerIP和端口信息
    發(fā)送請求
  • 獲取到BrokerIP 發(fā)送請求存儲該消息。
  • Broker 與 nameserver心跳續(xù)約間隔30s

    如果生產(chǎn)者獲取到一個故障的Broker地址,實現(xiàn)發(fā)送消息如果失敗的情況下
    如何處理
    答案:

  • 生產(chǎn)者會默認的情況下 會重試三次
  • 重試多次還是失敗的情況下,就從新連接nameserver 獲取下一條Broker地址
    實現(xiàn)調(diào)用 存儲消息。
  • 生產(chǎn)者ack模式 ,生產(chǎn)者必須要將消息落地存放在硬盤中 才認為消息投遞成功。
  • NameServer類似于zookeeper實現(xiàn)服務(wù)注冊中心

    為什么RocketMQ不使用zookeeper?而使用NameServer作為注冊中心呢?
    Zookeeper實現(xiàn)注冊中心 模式CP模式 保證數(shù)據(jù)的一致性
    NameServer 保證AP模式 可用性

    特點:
    NameServer集群之間不需要數(shù)據(jù)同步

    注冊分析:
    Broker啟動的時候,會讀取Broker.config 配置文件,獲取到多個不同的nameServer集群的地址列表,會將Broker信息注冊給所有的NameServer存儲與所有的NameServer保持長連接。
    注冊信息:
    Broker 的IP和端口號 主題信息、集群信息 過濾器等。

    NameSever如何知道我們Broker宕機呢?
    續(xù)約機制:
    Broker:
    Rocketmq底層基于netty實現(xiàn)的,每個Broker在默認每隔30
    S時間給nameServer發(fā)送一個心跳續(xù)約包,告訴我Broker還在存活。

    Name 每隔10s時間檢測,故障Broker節(jié)點,則剔除。

    Broker關(guān)系
    每個NameServer相互之間都是獨立,不會做任何數(shù)據(jù)同步,采用ap模式思想

    Broker信息注冊:Broker啟動的時候,會根據(jù)配置文件讀取到多個NameServer地址,輪詢的將Broker信息注冊到每個NameServer上,這樣每個NameServer都有該Broker信息。

    剔除:Broker需要每隔30s時間給每個NameServer發(fā)送一個心跳續(xù)約,如果沒有發(fā)送心跳續(xù)約的話,NameServer 會有一個定時器每隔每10s中掃描一次,檢測故障的Broker,則會剔除。
    最終每個Broker與NameSserver保持長連接。

    生產(chǎn)者關(guān)系

    如果是每隔30s發(fā)送續(xù)約,也就是意味著30s后 才能夠剔除該Broker
    真好在這時候 生產(chǎn)者發(fā)送到該故障節(jié)點如何處理?

    使用ack模式 確認刷盤成功 才屬于生產(chǎn)者消息投遞成功。

    相關(guān)疑問

    生產(chǎn)者發(fā)送消息三種模式
    Producer發(fā)送消息有三種方式:同步、異步和單向
    三種發(fā)送方式

  • 單向 生產(chǎn)者投遞消息到mq中,不需要返回結(jié)果。
    優(yōu)點:延遲概率比較低
    缺點:丟失消息數(shù)據(jù)
    投遞消息過程比較耗時時間5毫秒

  • 異步 生產(chǎn)者投遞消息到mq中,使用回調(diào)形式返回。
    投遞消息過程比較耗時時間5毫秒
    補償----

  • 同步
    生產(chǎn)者投遞消息到mq中,采用同步的形式獲取到返回消息是否有
    投遞成功的結(jié)果,導(dǎo)致接口延遲概率比較大。
    投遞消息過程比較耗時時間10毫秒

  • 發(fā)送請求 基于請求與響應(yīng)

    1.同步發(fā)送:發(fā)送請求模式屬于同步的,發(fā)送該條消息不需等待該條消息發(fā)送成功之后,才可以繼續(xù)發(fā)送下一條。
    2.異步發(fā)送:采用異步的發(fā)送模式,不需要同步阻塞等待,通過回調(diào)的形式監(jiān)聽生產(chǎn)者消息投遞結(jié)果
    3單向發(fā)送:只負責(zé)發(fā)送消息給mq,不管是否有發(fā)送成功。

    同步發(fā)送

    /**

    • 同步發(fā)送
    • @throws Exception
      */
      @GetMapping("/sync")
      public void sync() {
      MsgEntity msg = new MsgEntity(“mayikt” + UUID.randomUUID().toString(), 1234);
      SendResult sendResult = rocketMQTemplate.syncSend(RocketMQConfig.TOPIC_NAME, msg);
      log.info(“同步發(fā)送字符串{}, 發(fā)送結(jié)果{}”, msg.toString(), sendResult);
      }

    異步發(fā)送
    /**

    • 異步發(fā)送

    • @throws Exception
      */
      @GetMapping(“async”)
      public void async() {
      MsgEntity msg = new MsgEntity(“mayikt” + UUID.randomUUID().toString(), 1234);
      log.info(">msg:<<" + msg);
      rocketMQTemplate.asyncSend(RocketMQConfig.TOPIC_NAME, msg.toString(), new SendCallback() {
      @Override
      public void onSuccess(SendResult var1) {
      log.info(“異步發(fā)送成功{}”, var1);
      }

      @Overridepublic void onException(Throwable var1) {log.info("異步發(fā)送失敗{}", var1);}

      });
      }

    單向發(fā)送

    /**

    • 普通消息投遞 單向發(fā)送
      */
      @GetMapping("/sendMsg")
      public String sendMsg() {
      MsgEntity msg = new MsgEntity(“mayikt” + UUID.randomUUID().toString(), 1234);
      rocketMQTemplate.convertAndSend(RocketMQConfig.TOPIC_NAME, msg);
      return “投遞消息 => " + msg.toString() + " => 成功”;
      }

    順序消息

    Rocketmq中,消費者處理消息業(yè)務(wù)邏輯的時候 是采用多線程。

    如何解決消息順序一致性的問題?

  • 生產(chǎn)者投遞消息根據(jù)key 投遞到同一個隊列中存放
  • 消費者應(yīng)該訂閱到同一個隊列實現(xiàn)消費
  • 最終應(yīng)該使用同一個線程去消費消息(不能夠?qū)崿F(xiàn)多線程消費。)
  • 實際上做業(yè)務(wù)邏輯開發(fā)中,很少有需要保證消息順序一致性問題。

    1.在rocketmq 消費者默認是多線程異步消費的,開發(fā)者需要設(shè)定指定保證消息順序一致性問,也就是同一個隊列消息最終被同一個線程實現(xiàn)消費。

  • 生產(chǎn)者指定相同的消息key,根據(jù)hashKey運算投遞到同一個隊列中,最終被同一個消費者消費。
  • 相關(guān)代碼

    生產(chǎn)者

    String uuid = UUID.randomUUID().toString();
    SendResult result1 = rocketMQTemplate.syncSendOrderly(RocketMQConfig.TOPIC_SEQUENTIAL, “insert”, uuid);
    log.info(“insert:” + result1.toString());
    SendResult result2 = rocketMQTemplate.syncSendOrderly(RocketMQConfig.TOPIC_SEQUENTIAL, “update”, uuid);
    log.info(“update:” + result2.toString());
    SendResult result3 = rocketMQTemplate.syncSendOrderly(RocketMQConfig.TOPIC_SEQUENTIAL, “delete”, uuid);
    log.info(“delete:” + result3.toString());

    消費者

    @Service
    @Slf4j
    @RocketMQMessageListener(consumerGroup = “mayikt-group20”, topic = “topic_seq”, consumeMode = ConsumeMode.ORDERLY
    )
    public class RocketMQConsumer01 implements RocketMQListener {
    @Override
    public void onMessage(String msg) {
    try {
    Random r = new Random(100);
    int i = r.nextInt(500);
    Thread.sleep(i);
    } catch (Exception e) {

    }log.info("消費者監(jiān)聽到消息:<msg:{}>", msg); }

    }

    結(jié)果

    消息存儲結(jié)構(gòu)
    在win的安裝rocketmq,消息物理存放在
    C:\Users\Administrator\store

    commitlog:消息的存儲目錄
    config:運行期間一些配置信息
    consumequeue:消息消費隊列存儲目錄
    index:消息索引文件存儲目錄
    abort:如果存在abort文件說明Broker非正常關(guān)閉,該文件默認啟動時創(chuàng)建,正常退出時刪除
    checkpoint:文件檢測點。存儲commitlog文件最后一次刷盤時間戳、consumequeue最后一次刷盤時間、index索引文件最后一次刷盤時間戳。

    學(xué)習(xí)kafka 的時候,topic主題消息分成n多個不同的partition 分區(qū)存放,
    而在我們的rocketmq中,將一個topic主題的消息分成多個不同的Queue存放。

    前提條件:commitlog日志文件沒有滿的情況下:
    在rocketmq中所有topic主題對應(yīng)的隊列的消息都會存放在同一個commitlog日志文件中,

    消費者在消費消息的時候 不會直接與commitlog日志文件打交道。
    Rocketmq 提供消費隊列 (邏輯概念)

    Commitlog日志文件 存放消息內(nèi)容主體----Commitlogoffset

    ConsumeQueue 不存放消息主體,只存放消息的Commitlogoffset、msgsize、msgtag

    Queue offset與Commitlogoffset 之間區(qū)別?
    Queue offset—消息存放在ConsumeQueue 消費偏移量的位置
    Commitlogoffset ----消息物理存放位置

    [queueId=2, storeSize=242, queueOffset=25, sysFlag=0, bornTimestamp=1611665447721, bornHost=/192.168.31.1:55706, storeTimestamp=1611665447722, storeHost=/192.168.31.1:10911, msgId=C0A81F0100002A9F0000000000039330, commitLogOffset=234288, bodyCRC=336380854, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic=‘topic_ide_mayikt’, flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=26,

    生產(chǎn)者如何投遞消息:

  • 生產(chǎn)者在投遞消息到mq服務(wù)器端,會將該消息存放在commitlog日志文件中(順序?qū)?#xff09;、
  • Mq后臺就會開啟一個異步的線程將該commitlogoffset實現(xiàn)分配存放到不同隊列中。
  • 消費者如何消費:

  • 消費者消費消息的時候訂閱到隊列(consumequeue),根據(jù)queueoffset 獲取到該commitlogoffset
  • 在根據(jù)commitlogoffset 去commitlog日志文件中查找到該消息主體返回給客戶端。
  • 消息的commitlogoffset 如何存放在不同的consumequeue中。
    Consumequeue==16
    投遞消息 消息key
    消息key%16=1
    Consumequeue 中 Consumeoffset 對應(yīng) 一條消息(沒有對應(yīng)消息主體)—commitlogoffset

    消費者消費我們消息 在(kafka、rocketmq)中 消費成功或者失敗都不會立即將該消息刪除,日志清理策略刪除。

    Rocketmq消息存儲結(jié)構(gòu)
    1.(commitlog日志文件沒有滿的情況下)在rocketmq中所有的消息日志,都存放在同一個commitlog日志文件中,(默認是1GB來存儲 好處1零拷貝映射 好處2 分段 非常好方式管理清理日志文件 commitlog命名就是上一個commitlog日志文件中最后一個commitlog-offset值)
    ,ConsumeQueue類似于在kafka中的 partition 分區(qū)模型, 而ConsumeQueue存放的是commitlog開始的commitLogoffset、msgsize、tag。
    2.每次消費者讀取消息的時候,先讀取ConsumeQueue中獲取到commitLogoffset,在根據(jù)該
    commitLogoffset查找commitLog日志文件獲取到消息體返回給消費者客戶端。

    3.與kafka的設(shè)計不同
    根據(jù)阿里巴巴消息中間件團隊的測試,如果每個topic中的partition 分區(qū)存儲的消息過多
    ,可能會影響到磁盤io的讀寫性能,所以采用ConsumeQueue存放少量的數(shù)據(jù),消息讀取還是通過commitlog文件中查找。

  • 官方:為什么rocketmq commitlog日志文件大小最多只能有一個GB.
  • 分段存儲 后期日志清理比較方便;
  • 零拷貝
    Rocketmq讀寫使用:MappedByteBuffer 零拷貝
    因為rocketmq 中日志文件存儲采用文件映射機制+mmap 減少用戶態(tài)與內(nèi)核態(tài)來回拷貝的次數(shù),從而可以提高性能
    MappedByteBuffer 文件存儲映射,只能映射用戶態(tài)1.5GB-2GB 所以RocketMQ日志文件存儲commitlog默認為1G大小。
  • commitLog文件
    commitlog文件的存儲地址:KaTeX parse error: Undefined control sequence: \store at position 5: HOME\?s?t?o?r?e?\commitlog{fileName},每個文件的大小默認1G =102410241024,commitlog的文件名fileName,名字長度為20位,左邊補零,剩余為起始偏移量;比如00000000000000000000代表了第一個文件,起始偏移量為0,文件大小為1G=1073741824;當(dāng)這個文件滿了,第二個文件名字為00000000001073741824,起始偏移量為1073741824,以此類推,第三個文件名字為00000000002147483648,起始偏移量為2147483648 ,消息存儲的時候會順序?qū)懭胛募?#xff0c;當(dāng)文件滿了,寫入下一個文件。

    冪等問題

    整合方式

    消費者冪等問題

    當(dāng)消費者消費消息失敗的時候,可以返回繼續(xù)重復(fù)消費,這時候rocketmq會給
    該消費者不斷的重試,重試的過程中需要注意冪等性問題。
    在rocketmq中,根據(jù)返回ack 狀態(tài):
    ConsumeConcurrentlyStatus
    CONSUME_SUCCESS --消費成功
    RECONSUME_LATER— 消費失敗繼續(xù)重試消費。

    Messageid

    對我們每條消息生成一個messageid------根據(jù)該id 實現(xiàn)消費者冪等性問題

    Messageid 生成規(guī)則:關(guān)聯(lián)存放在那個mq服務(wù)器端、commitlog-offset值。

    Messageid --C0A812E0495C18B4AAC276054FC20005 轉(zhuǎn)碼
    獲取到commitlog-offset —查找物理對應(yīng)消息位置。

    Rocketmq中的 messageid 長度一共占用16個字節(jié),其中包含消息存儲的ip和端口號,
    消息commitLogOffset,客戶端發(fā)送請求傳遞messageid 給mq服務(wù)器端,mq服務(wù)器端
    根據(jù)該commitlogoffset值查找對應(yīng)的消息返回給客戶端。
    消息過濾

    1.Tag就是相當(dāng)于給消息打一個標(biāo)簽,比如我的文章 屬于那些標(biāo)簽下,用戶如果訂閱了該標(biāo)簽就可能刷到該文章。
    2. 一個消息可能打上了多個tag標(biāo)簽,消費者訂閱該主題和tag標(biāo)簽,標(biāo)簽如果一致的情況下就可以獲取到該消息。
    原理:在我們ConsumeQueue中,存儲結(jié)構(gòu)為 commitoffset、size、messagetag 會根據(jù)消費者傳遞的tag hash值與隊列中每條消息的tag hash 做比較,如果相等的情況則獲取該消息,如果不相等的情況下,則不會獲取該消息。

    消費者組
    與kafka基本原理相同,同一個消費者中,只能有一個消費者消費消息,
    多個不同的消費者組可以消費同一條消息。
    消費成功之后,提交offset。
    分布式事務(wù)
    消息的可用性

    刷盤:將數(shù)據(jù)從pagecache中刷盤到硬盤中存儲
    ,避免數(shù)據(jù)的丟失。
    刷盤模式:
    1.同步刷盤:
    生產(chǎn)者必須等待該消息 從pagecache刷盤到硬盤中,在返回
    Ack給生產(chǎn)者。
    優(yōu)點:可以保證消息不丟失
    缺點:影響到整體接口吞吐量
    應(yīng)用場景:金融支付類 msg

    2.異步刷盤

    生產(chǎn)者不需要等待pagecache刷盤到硬盤中結(jié)果,完全采用異步的形式
    優(yōu)點:
    提高整體接口吞吐量
    缺點:
    有可能消息會丟失 (概率不是很大)

    應(yīng)用場景:行為分析---- 100 -12 98%

    刷盤策略

    RocketMQ,默認會將消息持久化存放在硬盤,首先會
    寫入到系統(tǒng)PageCahe中,讓后再刷盤到硬盤,這樣就可以保證
    硬盤與PageCache中數(shù)據(jù)完全一致性。

    同步刷盤:

    消息真正刷盤到磁盤中,才會返回給生產(chǎn)者,只要磁盤沒有壞,這樣做
    可以保證消息不丟失,但是可能會影響整體的吞吐量。

    異步刷盤:

    讀寫充分利用pagecache,消息寫入到pagecache成功之后,采用異步的形式
    刷盤到硬盤中,可以提高系統(tǒng)的吞吐量,但是可能消息會丟失。

    RocketMQ解決分布式事務(wù)問題

    RocketMQ解決分布式事務(wù)思想與原理

    RocketMQ在其消息定義的基礎(chǔ)上,對事務(wù)消息擴展了兩個相關(guān)的概念:
    1.Half(Prepare) Message——半消息(預(yù)處理消息)
    半消息是一種特殊的消息類型,該狀態(tài)的消息暫時不能被Consumer消費。當(dāng)一條事務(wù)消息被成功投遞到Broker上,但是Broker并沒有接收到Producer發(fā)出的二次確認時,該事務(wù)消息就處于"暫時不可被消費"狀態(tài),該狀態(tài)的事務(wù)消息被稱為半消息。
    2.Message Status Check——消息狀態(tài)回查
    由于網(wǎng)絡(luò)抖動、Producer重啟等原因,可能導(dǎo)致Producer向Broker發(fā)送的二次確認消息沒有成功送達。如果Broker檢測到某條事務(wù)消息長時間處于半消息狀態(tài),則會主動向Producer端發(fā)起回查操作,查詢該事務(wù)消息在Producer端的事務(wù)狀態(tài)(Commit 或 Rollback)。可以看出,Message Status Check主要用來解決分布式事務(wù)中的超時問題。

    RocketMQ的事務(wù)消息是基于兩階段提交實現(xiàn)的,也就是說消息有兩個狀態(tài),prepared和commited。當(dāng)消息執(zhí)行完send方法后,進入的prepared狀態(tài),進入prepared狀態(tài)以后,就要執(zhí)行executeLocalTransaction方法,這個方法的返回值有3個,也決定著這個消息的命運,

    COMMIT_MESSAGE:提交消息,這個消息由prepared狀態(tài)進入到commited狀態(tài),消費者可以消費這個消息;
    ROLLBACK_MESSAGE:回滾,這個消息將被刪除,消費者不能消費這個消息;
    UNKNOW:未知,這個狀態(tài)有點意思,如果返回這個狀態(tài),這個消息既不提交,也不回滾,還是保持prepared狀態(tài),而最終決定這個消息命運的,是checkLocalTransaction這個方法。

    RocketMQ實現(xiàn)分布式事務(wù)的原理:

  • 生產(chǎn)者投遞一個半消息給我們RocketMQ服務(wù)器端存放,該消息暫時無法被我們消費者
    消費。
  • RocketMQ將該消息落地存放硬盤中,RocketMQ發(fā)送ACK給生產(chǎn)者。
  • 生產(chǎn)者收到事件監(jiān)聽之后,開始執(zhí)行生產(chǎn)者本地事務(wù)的操作;
  • 如果生產(chǎn)者執(zhí)行本地的事務(wù)操作,如果成功的情況下,則發(fā)送一個提交通知給RocketMQ
    服務(wù)器端,RocketMQ服務(wù)器端將該消息,推送給消費者消費。
  • 如果生產(chǎn)者執(zhí)行本地事務(wù)操作,如果失敗的情況下,則發(fā)送一個回滾通知給rocketmq服務(wù)器端,rocketmq服務(wù)器端在從本地將該消息刪除,不會給消費者消費。
    核心思想:確保生產(chǎn)者一定將消息投遞到mq服務(wù)器端,生產(chǎn)者必須先一定執(zhí)行完成,在執(zhí)行消費者。
  • RocketMQLocalTransactionState.ROLLBACK;—回滾
    RocketMQLocalTransactionState.COMMIT—提交
    RocketMQLocalTransactionState.UNKNOWN— 不是提交也不是回滾。

    存在的一些問題:

  • 如果生產(chǎn)者將該消息投遞成功之后,但是生產(chǎn)者如果執(zhí)行本地事務(wù)如果失敗的情況下,
    發(fā)送ack給rocketmq 回滾該消息即可,不會被消費者消費。
  • 如果生產(chǎn)者將該消息投遞成功之后,本地事務(wù)執(zhí)行成功呢,但是不返回狀態(tài)給rocketmq,如何處理呢?
  • Rocketmq服務(wù)器端 在默認的情況下 每隔60s 檢查本地事務(wù)是否已經(jīng)執(zhí)行過,如果執(zhí)行過的情況下,則提交該提交,如果沒有執(zhí)行該事務(wù)的情況下,則回滾。

    常見錯誤
    Lock failed,MQ already started

    將 broker 的 master 和 slave 節(jié)點放在同一臺機器上,配置的storePath相同導(dǎo)致的,修改配置文件,改為不同的路徑即可解決。

    總結(jié)

    以上是生活随笔為你收集整理的RocketMQ简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    亚洲精品h | 精品91视频 | www麻豆视频 | 五月婷丁香网 | 免费看91的网站 | 欧美成人按摩 | 国产在线欧美在线 | 国产精品久久久久久吹潮天美传媒 | 成人a免费 | av黄免费看 | 在线中文字幕播放 | 91麻豆精品国产自产在线游戏 | 日韩系列在线观看 | 久久久久久久久毛片 | 日韩免费电影 | 色先锋资源网 | 天天操天天射天天爽 | 久草视频一区 | 五月天激情综合 | 国产在线高清视频 | 色婷婷久久久综合中文字幕 | 天天操天天综合网 | 亚洲热久久 | 精壮的侍卫呻吟h | 免费福利片2019潦草影视午夜 | 偷拍福利视频一区二区三区 | 91av资源网| 亚洲电影一区二区 | 日韩com | 99视频久久 | 成人av免费在线看 | 亚洲激情 在线 | 在线亚洲天堂网 | 99久久精品国产欧美主题曲 | 欧美日韩午夜在线 | 九月婷婷色 | 在线视频你懂得 | 日本中文字幕网址 | 狠狠色狠狠色 | 国产系列 在线观看 | 91试看 | 99re6热在线精品视频 | 久久午夜网 | 久久久久在线视频 | 日韩一区二区免费在线观看 | 国产97碰免费视频 | 五月婷香 | 成人午夜黄色 | 久草在线免费电影 | 中文字幕 国产视频 | 国产欧美在线一区 | 日本高清dvd | 69国产精品成人在线播放 | 91桃色国产在线播放 | 五月婷影院 | 色91在线| 亚洲欧洲精品一区 | 99成人免费视频 | 久草视频免费观 | 国产午夜视频在线观看 | 久久久久激情电影 | 免费高清国产 | 免费成人在线视频网站 | 国产精品 中文在线 | 免费黄色激情视频 | 在线黄色国产电影 | 久久久久免费电影 | 伊人影院av| 最新av网站在线观看 | 国产露脸91国语对白 | 欧美二区视频 | 91麻豆国产福利在线观看 | 狠狠操天天操 | 超碰大片| 日韩精品第一区 | 日韩中文久久 | 久久精品国产亚洲精品 | 欧美日bb| 久久午夜网 | 免费男女网站 | 日韩av快播电影网 | 黄色网址中文字幕 | 在线观看av国产 | 911国产在线观看 | 国产成人福利片 | 一级黄色片毛片 | 午夜视频在线观看一区 | 一区二区三区福利 | 亚洲九九九在线观看 | www日韩视频 | 日日夜日日干 | 99综合影院在线 | 日韩在线中文字幕视频 | 免费在线观看国产精品 | 日韩欧美精品一区二区三区经典 | 久久9999久久 | 久久高清 | 波多野结衣小视频 | 五月天国产 | 一区二区观看 | 欧美精品久久久久久久久久白贞 | 日本黄色一级电影 | 三级黄色在线 | 国产视频精品免费 | 97电影手机版 | 国产麻豆精品一区二区 | 国产91国语对白在线 | 国产成人在线免费观看 | 婷婷综合久久 | 成人在线观看免费视频 | 中文字幕在线字幕中文 | 国产资源网 | 三级免费黄色 | 黄色一级性片 | 日韩视频免费在线 | 日韩精品影视 | www.五月天激情 | 日日综合| 免费能看的av | 国产精品日韩欧美 | 色网站免费在线观看 | 午夜精品视频福利 | 韩国av在线 | 国产精品99久久久久久久久久久久 | 免费激情网 | 在线观看91精品国产网站 | av黄色大片| 最新日韩电影 | 91亚洲综合 | av在线免费网站 | 久草在线一免费新视频 | 天天射天天艹 | 亚洲欧洲精品一区二区 | av专区在线 | 亚洲人精品午夜 | 精品国产伦一区二区三区免费 | 四虎亚洲精品 | 天天操 夜夜操 | 天天综合网 天天综合色 | 一区二区三区四区久久 | 韩国av电影在线观看 | 伊人资源站 | 久久草草热国产精品直播 | 日韩色区| 国产黄色片免费 | 蜜桃av久久久亚洲精品 | 国产小视频你懂的 | 久久久久久久久久电影 | 国产在线播放一区 | 国产免费高清视频 | 99精品国产99久久久久久97 | 欧美视频xxx| 久久婷婷色 | 午夜久久久久久久久久久 | 国产人成看黄久久久久久久久 | 97视频免费观看 | 国产精品久久久久久久久久久久久 | 精品国产乱码久久久久久1区2匹 | a v在线观看 | 国产精品乱码久久久久 | 日韩和的一区二在线 | 国产精品theporn | 日韩一区二区三区免费视频 | 国产一级视频在线观看 | 日本黄色一级电影 | 免费无遮挡动漫网站 | 日韩高清观看 | 在线观看中文字幕2021 | 国产精品久久久免费 | 午夜aaaa| 久99热| 91精品国产综合久久久久久久 | 91av视频网站| www.色五月 | 久久经典视频 | a在线v| 干综合网| 久草在线观看视频免费 | 国产午夜麻豆影院在线观看 | 一区二区视频电影在线观看 | 精品久久久久久电影 | 久久综合日 | 黄网站a| 国语久久| www.亚洲激情.com | 激情九九 | 国产免费小视频 | 五月婷婷六月丁香 | 亚洲精品资源 | 97视频在线观看播放 | www好男人 | 97人人爽| 很黄很污的视频网站 | 成人久久久久久久久久 | 国产精品久久一区二区三区不卡 | 国产一级片久久 | 午夜aaaa | 在线视频黄 | 丁香婷婷激情国产高清秒播 | 国产欧美在线一区二区三区 | 人人舔人人爱 | 免费一级毛毛片 | 国产精品少妇 | a级国产乱理论片在线观看 伊人宗合网 | 美女免费av| 国产精品久久久久久欧美 | 亚洲另类视频在线观看 | 成人在线观看你懂的 | 97精品久久 | 99热这里只有精品1 av中文字幕日韩 | 成人av影视在线 | 尤物九九久久国产精品的分类 | 成人久久电影 | 国产一区二区不卡在线 | 中文字幕在线观看网站 | 久久久精品影视 | 国产亚洲视频系列 | 国产成人亚洲精品自产在线 | 99精品视频网站 | 国产精品美女久久久久久久久 | 国产资源站 | 成人av片免费看 | 天天干天天干天天干天天干天天干天天干 | 人人干在线 | 在线a视频免费观看 | 国产精品视频全国免费观看 | 久久精品中文字幕一区二区三区 | 黄色软件视频大全免费下载 | 黄色在线成人 | 久久精品8 | 欧美日韩另类视频 | 91av在线电影 | 91重口视频 | 亚洲最大av在线播放 | 欧美最猛性xxxxx亚洲精品 | 国产高清免费av | 国语麻豆| 免费av片在线| 天天操天天干天天爱 | 久草资源在线观看 | 日韩资源在线 | 91在线看黄 | 亚洲免费专区 | 欧美91精品久久久久国产性生爱 | 男女精品久久 | 人人干在线观看 | 一区二区视频在线观看免费 | 天天草av| 亚洲伊人天堂 | 久久免费高清 | 国产高清在线 | 又污又黄网站 | 国产精品欧美一区二区三区不卡 | 91大神精品视频在线观看 | 久久黄色网址 | 国产亚洲精品美女久久 | 天天干婷婷 | 国产一区二区三区在线免费观看 | av一级久久 | 亚洲婷婷综合色高清在线 | 欧美在线视频一区二区三区 | 中文字幕一区二区三区四区 | 欧美一级大片在线观看 | 最近日本韩国中文字幕 | 韩国av三级 | 久久成人人人人精品欧 | 亚洲成人精品在线 | 一级欧美日韩 | 久久久久久看片 | 国产伦理精品一区二区 | 91探花国产综合在线精品 | 久久国产剧场电影 | 日韩影视在线观看 | 99久久影院| 婷婷六月在线 | 在线国产福利 | 日产乱码一二三区别在线 | 91视频麻豆 | 美女网站黄在线观看 | 亚洲欧美成人综合 | 国产精品 中文字幕 亚洲 欧美 | 99精品成人| 一区二区观看 | 成人91在线 | 日本三级不卡视频 | av 在线观看 | 一区二区高清在线 | 激情丁香婷婷 | 中文字幕一区二区三区乱码不卡 | 成年人免费观看国产 | 色在线观看网站 | 欧美激情视频一区 | 国产精品久久久久久久久久久久午 | 国产福利91精品 | 蜜臀久久99精品久久久久久网站 | 久久久电影 | 国产高清99| 人人看黄色 | 黄网站色视频 | 天天天干天天天操 | 国产尤物视频在线 | 蜜臀av夜夜澡人人爽人人桃色 | 天天射天天舔天天干 | 免费三级黄色片 | 久久视频精品在线 | 毛片美女网站 | 在线免费观看成人 | 91在线观看视频网站 | 婷婷色综合网 | 国产精品久久久久久久久久ktv | 亚洲精品88欧美一区二区 | 久久综合久久综合久久综合 | 中文字幕在线中文 | 欧洲一区二区三区精品 | 国产一区二区电影在线观看 | 欧美日韩国产精品一区二区亚洲 | 日韩一级理论片 | 久久久不卡影院 | 日本不卡一区二区三区在线观看 | 在线观看mv的中文字幕网站 | 天天插一插 | 999视频精品 | 一区二区视频在线播放 | av片子在线观看 | 中文在线字幕观看电影 | 欧美乱淫视频 | 高清不卡免费视频 | 国产一区免费在线观看 | 亚洲专区在线视频 | 欧美人体xx| av先锋中文字幕 | 在线中文字幕视频 | 精品自拍网 | 这里只有精品视频在线 | www.久久爱.cn | 色偷偷中文字幕 | 亚洲精品字幕在线观看 | 精品久久久99 | 日本黄色免费大片 | 国产精品尤物视频 | 久久草网站 | 欧美一二三区在线观看 | 欧美性久久久久久 | 91精彩在线视频 | 精品亚洲男同gayvideo网站 | 亚洲日本中文字幕在线观看 | 久久久久一区二区三区四区 | 国产丝袜美腿在线 | 久久国产精品久久w女人spa | 激情久久久 | 日日干日日操 | 日韩中文字幕亚洲一区二区va在线 | 国产精品96久久久久久吹潮 | 国产视频资源在线观看 | 中文字幕中文字幕中文字幕 | 国产v在线播放 | 天天色天天操综合网 | 欧美日韩在线观看视频 | 婷婷色在线| 欧美一级在线 | 精品久久久久久国产 | 欧美激情视频免费看 | 天天天天射 | 超碰97久久 | 最新色站 | 免费精品视频 | 日韩视频二区 | 人人超在线公开视频 | 欧美日韩国产色综合一二三四 | 欧美性色综合网站 | 国产精品一区在线 | 免费人做人爱www的视 | 中文字幕黄色网 | 四虎永久国产精品 | 手机av在线不卡 | 96精品高清视频在线观看软件特色 | 在线一级片 | 月丁香婷婷 | 免费三级骚 | 精品国产免费观看 | 色综合色综合久久综合频道88 | 97精产国品一二三产区在线 | 精品在线视频一区 | 97精品在线视频 | av中文天堂 | 婷婷激情综合网 | 成人影视免费 | 深爱激情五月综合 | 久久久精品国产免费观看同学 | 91成年视频| 色婷婷成人| 日韩一区精品 | 亚洲一级性 | 国产一区二区网址 | 欧美污污网站 | 国产精品久久久久久久久费观看 | 欧美成人影音 | 二区三区在线观看 | 九色91av | 久久精品激情 | 国产日韩在线看 | 久久精品三级 | 婷婷干五月 | 欧美男同网站 | 国产资源在线免费观看 | 99久久精品国产一区二区三区 | 日韩av电影免费在线观看 | 91av看片| 97免费公开视频 | 午夜av日韩 | 亚洲一区在线看 | 中文字幕精品在线 | 91精品在线看 | 亚洲伦理电影在线 | av一级网站 | 91高清免费 | 亚洲精品tv久久久久久久久久 | 丁香六月天 | 麻豆国产精品永久免费视频 | 亚洲精品日韩一区二区电影 | 久久久久免费精品 | 午夜精品一区二区三区可下载 | 久草在线视频新 | 色综合色综合久久综合频道88 | 91免费版在线 | 91片在线观看| 欧美精品一区二区在线观看 | 91高清完整版在线观看 | 久久新视频| 91麻豆精品久久久久久 | 日韩在线视频免费观看 | 99热这里只有精品1 av中文字幕日韩 | 日韩动态视频 | 亚洲va综合va国产va中文 | 日韩在线观看av | 狠狠五月天| 中文字幕在线观看完整 | 高潮久久久久久久久 | 久久成人国产精品 | www.天堂av| 在线观看黄网站 | 久久精品2 | 久久久五月天 | 欧美日韩一区二区在线观看 | 国产在线观看免 | 亚洲婷婷综合色高清在线 | 视频三区 | 亚洲国产福利视频 | 五月婷婷丁香综合 | 丁香色婷| 深爱综合网 | 蜜臀久久99精品久久久久久网站 | 亚洲欧洲成人精品av97 | 久久不卡免费视频 | 国产在线视频一区二区 | 成人电影毛片 | 狠狠色狠狠色合久久伊人 | av综合站| 国产女人免费看a级丨片 | 伊人影院av | 精品视频在线免费 | 欧美亚洲国产一卡 | 五月天激情开心 | 香蕉网在线播放 | 在线视频亚洲 | 国产精品一码二码三码在线 | 日韩免费观看一区二区 | 日韩字幕 | 91成人精品一区在线播放 | 四虎影视成人精品国库在线观看 | 特级西西www44高清大胆图片 | www.国产视频| 中文字幕在线免费播放 | 成人av网站在线 | 亚洲视频分类 | 西西4444www大胆视频 | 久久综合偷偷噜噜噜色 | 国产黄色免费看 | 国产精品美女视频 | 欧美高清成人 | 黄毛片在线观看 | 中文字幕在线观看第一页 | 丰满少妇一级 | 久久久久麻豆v国产 | 欧美专区亚洲专区 | avove黑丝| 国模视频一区二区 | 久草在线手机观看 | 日韩手机在线观看 | 欧美日韩国产色综合一二三四 | 欧美一区二视频在线免费观看 | 精品二区视频 | 丁香婷婷久久 | 天天天天爱天天躁 | 中文字幕在线观看完整 | 亚洲五月激情 | 日日干夜夜骑 | wwxxxx日本 | 人人玩人人添人人澡超碰 | av一级在线观看 | 日本系列中文字幕 | 成人国产一区二区 | 亚洲黄色一级视频 | 国产精品18久久久久久久 | 亚洲a资源 | 免费在线观看日韩视频 | 国产亚洲成人网 | 欧美精品国产综合久久 | 免费观看91 | 在线免费看黄色 | 午夜久久久久久久 | 91亚洲国产 | 亚洲精品午夜aaa久久久 | 在线亚洲欧美日韩 | 久久久久国产免费免费 | 国产不卡免费视频 | 最新av在线网站 | 国产色拍拍拍拍在线精品 | 日韩中文久久 | 97超碰免费 | 国产1区在线观看 | 91麻豆国产福利在线观看 | 三级av中文字幕 | 亚洲最大成人免费网站 | 成人av电影免费在线观看 | 国产成人精品一区二区三区福利 | 五月婷在线 | 欧美精品中文在线免费观看 | 在线观看视频精品 | 在线观看日韩国产 | 日韩一二三区不卡 | 97综合在线 | 中文字幕在线观看2018 | 久久情爱 | 毛片永久新网址首页 | 又黄又网站 | 成人av久久 | 成人av播放 | 中文乱码视频在线观看 | 国产日产精品一区二区三区四区的观看方式 | 玖玖精品在线 | 午夜久久久精品 | 国产69久久 | 欧美少妇的秘密 | 国产一级高清 | 97精品在线视频 | 国产视频日韩 | 久久视频精品在线 | 成人a级网站 | 久久久久久久久综合 | 国产视频在线看 | 国产精品九九视频 | 日本中文字幕在线免费观看 | 免费看v片网站 | www.大网伊人| 亚洲成av人片 | 在线免费观看国产精品 | 日本在线观看黄色 | 午夜精品久久久久久久99 | 亚洲精品久久久久久久不卡四虎 | 亚洲欧美视频网站 | www麻豆视频 | 国产区精品区 | 日韩精品一区二区久久 | 国产日韩精品一区二区三区 | 久久人人爽人人片 | 国产精品黑丝在线观看 | 91成品人影院 | 人人草网站 | 久久久久国 | 久久男人免费视频 | 亚洲视频分类 | 国模视频一区二区三区 | 亚洲精品视频免费 | 最近中文字幕mv免费高清在线 | 国产精品18久久久久久不卡孕妇 | 最近最新mv字幕免费观看 | 午夜av剧场 | 日韩高清免费无专码区 | 久久激情片 | 狠狠撸电影 | 夜夜躁日日躁狠狠躁 | 国产高清视频在线播放 | 看污网站| 亚洲黄色激情小说 | 国产成人l区 | 美女一级毛片视频 | 日日操夜| 国产精品国产三级国产aⅴ9色 | 韩国三级在线一区 | 8x成人在线 | 久久免费福利 | 国产亚洲精品久久网站 | 91av九色 | 日韩a级免费视频 | 久久久综合精品 | 亚洲精品乱码久久久久久9色 | 精品产品国产在线不卡 | 国产婷婷精品 | 一本一本久久a久久 | 天天综合精品 | 国产精品免费一区二区三区在线观看 | 激情视频国产 | 免费试看一区 | 五月开心色 | 97成人免费视频 | 国产 日韩 在线 亚洲 字幕 中文 | 国产成人一级电影 | 精品一区二区三区久久久 | 美女久久久久 | www.夜夜骑.com | 日韩精品在线免费观看 | 亚洲欧洲日韩在线观看 | 天天操伊人 | 亚洲成a人片综合在线 | 国产亚洲精品成人av久久影院 | 久久不卡日韩美女 | 一区二区免费不卡在线 | 日日干日日| 午夜国产一区二区 | 久久综合色8888 | 在线黄色av电影 | 黄色精品一区 | 午夜三级毛片 | 激情欧美日韩一区二区 | 在线观看www. | 久久成人免费视频 | 久久天堂影院 | 亚洲精品乱码久久久久久高潮 | 91 在线视频| 最近免费中文字幕 | 97超碰人人爱 | 久久精品九色 | 日韩av手机在线观看 | 久久优 | 中文字幕一区二区在线观看 | 夜夜骑日日 | 欧美日韩一区二区视频在线观看 | 在线观看理论 | 在线观看日韩中文字幕 | 久久99久久99精品免观看软件 | 国产日韩欧美视频在线观看 | 亚洲精品女 | 免费看高清毛片 | 99精品视频在线看 | 韩日电影在线 | 日韩久久久久久久 | 欧美性生活一级片 | 最近在线中文字幕 | 国产精品视频观看 | 日本爱爱免费视频 | 天天色综合1 | 爱情影院aqdy鲁丝片二区 | 国产视频在线免费 | 国产99久久久国产精品免费二区 | 在线不卡a| 色综合天天综合网国产成人网 | 欧美性网站 | 欧美国产精品久久久久久免费 | 免费看黄的 | 日韩欧美高清视频在线观看 | 黄色毛片在线观看 | 久久露脸国产精品 | 日本黄色免费在线 | 在线a亚洲视频播放在线观看 | 国产五月色婷婷六月丁香视频 | 欧美先锋影音 | 麻豆视频免费版 | 在线播放精品一区二区三区 | 欧美狠狠操 | 高清av免费看 | 99视频久 | 99视频在线观看免费 | av电影在线不卡 | 久草视频免费观 | 国产精品va视频 | 久久免费视频1 | 91精品在线视频观看 | 亚洲va天堂va欧美ⅴa在线 | 国产精品videossex国产高清 | 亚洲电影一区二区 | 久久精品一区 | 天天拍天天爽 | 国产精品99精品久久免费 | 天天做天天干 | 欧美色噜噜噜 | 天天干天天干 | 国产二区视频在线观看 | 成片视频免费观看 | 日韩在线高清 | 激情自拍av | av在线观 | 国产在线国偷精品产拍 | 国产中文字幕视频在线 | 欧美最爽乱淫视频播放 | 久久亚洲成人网 | 亚洲视频 一区 | 国产不卡在线观看视频 | 国产视频精品在线 | 国产在线日本 | 免费情趣视频 | 99精品欧美一区二区 | 深爱激情av| 久久情爱 | 久久久精品亚洲 | 欧美日韩国产二区三区 | 亚洲在线| 天天躁天天躁天天躁婷 | 一二区精品 | 久久午夜精品视频 | 午夜色大片在线观看 | 在线观看911视频 | 99免费精品视频 | 国内外成人免费在线视频 | 亚洲成人资源在线 | 在线观看日韩精品视频 | 精品国精品自拍自在线 | 久久午夜精品视频 | 丰满少妇在线观看网站 | 99精品乱码国产在线观看 | 日韩av电影一区 | 久久人人做| 亚洲精品国偷自产在线99热 | 懂色av一区二区三区蜜臀 | 亚洲综合视频在线播放 | 4438全国亚洲精品在线观看视频 | 日韩精品在线视频免费观看 | 国产黄色片网站 | 91精选在线 | 成年人在线视频观看 | 久草在线综合 | 五月婷婷操 | 色婷婷综合在线 | 午夜美女福利 | 亚洲黄色区 | 欧美午夜精品久久久久久孕妇 | 国产在线国产 | 中文字幕日韩无 | 免费观看午夜视频 | 日日爽天天操 | 国产无区一区二区三麻豆 | 香蕉视频网站在线观看 | 超碰最新网址 | 精品免费久久久久 | 久久狠狠亚洲综合 | 欧美精品第一 | 亚洲黄色小说网址 | 国产在线a免费观看 | 日韩免费电影网站 | 亚洲国产av精品毛片鲁大师 | 五月婷婷开心 | 99亚洲精品视频 | av免费电影在线观看 | 久久99久久99精品免观看软件 | 国产综合小视频 | 免费黄色网止 | 中文在线免费观看 | 高清有码中文字幕 | 91九色蝌蚪在线 | 精品欧美一区二区精品久久 | 毛片美女网站 | 国产视频69 | 日本爽妇网| 91社区国产高清 | 成人午夜电影网 | zzijzzij亚洲日本少妇熟睡 | 激情偷乱人伦小说视频在线观看 | av永久网址 | 欧美日韩国产网站 | 日韩欧美视频在线免费观看 | 色综合久久五月 | 中文字幕乱码一区二区 | 91尤物国产尤物福利在线播放 | 五月婷婷丁香在线观看 | 亚洲精品中文在线资源 | 一区三区视频 | 国产aaa免费视频 | 亚洲经典视频在线观看 | 91九色视频观看 | 婷婷丁香综合 | 国产一区二区在线免费视频 | 欧美一级片免费在线观看 | 天天色天天干天天色 | 操操操天天操 | av在线网站免费观看 | 午夜av在线 | 日本性高潮视频 | 亚洲一区精品人人爽人人躁 | 国产欧美日韩视频 | 蜜桃传媒一区二区 | 又紧又大又爽精品一区二区 | 久久免费播放视频 | 久久久久夜色 | 91亚洲精品久久久中文字幕 | 一区二区三区 中文字幕 | 国产一二区免费视频 | 2019av在线视频| 成 人 a v天堂 | 亚洲天堂激情 | 国产精品剧情在线亚洲 | 精品美女国产在线 | 在线只有精品 | 久久国产精品精品国产色婷婷 | 在线观看亚洲精品视频 | 国内精品久久久久影院一蜜桃 | 久久久国产网站 | 日韩免费视频线观看 | 成年人在线电影 | 国产精品久久久久久久久久了 | 高清国产午夜精品久久久久久 | 免费h精品视频在线播放 | 在线免费观看黄 | 国产91精品久久久久 | 久久久久久久久久久久av | 久久精品视频免费观看 | 中文字幕一区二区三区乱码在线 | 精品999在线观看 | 伊人五月综合 | 九九精品视频在线看 | 国产精品久久久久久久久久了 | 国产最新在线视频 | 免费看的国产视频网站 | 2019中文字幕第一页 | 久久久免费精品国产一区二区 | 色综合久久中文字幕综合网 | 亚洲欧美激情精品一区二区 | 91日本在线播放 | 国产又粗又猛又黄又爽视频 | 久久经典视频 | 欧美日韩在线电影 | 久久精品男人的天堂 | 免费看一级黄色大全 | 插综合网 | 成人免费精品 | 91.dizhi永久地址最新 | 免费精品在线观看 | 免费成视频 | 国产精品中文字幕在线 | 亚洲精品中文在线 | 少妇bbw搡bbbb搡bbb | 久久字幕 | 一二三区高清 | 九九免费精品视频在线观看 | 91传媒在线看 | 午夜免费视频网站 | 久久精品99精品国产香蕉 | 97视频入口免费观看 | 欧美另类重口 | 欧美久久久 | 国精产品一二三线999 | 日韩欧美xxx | 国产免费又爽又刺激在线观看 | 久久久久国产精品免费免费搜索 | 在线观看国产日韩欧美 | 99久久99久久精品 | 久久精品国产亚洲精品 | 久久免费观看少妇a级毛片 久久久久成人免费 | av电影免费 | 国产精品va | 久草爱视频 | 91亚洲精品久久久 | 99色资源| 国产麻豆电影 | 成人av网站在线观看 | 成人欧美日韩国产 | 97国产精品一区二区 | 国产亲近乱来精品 | 97人人射| 亚洲欧洲国产视频 | 欧美激情精品久久久久久免费印度 | 丁香午夜 | 亚洲精品国产精品久久99 | 欧美影片 | 91看片在线观看 | 激情伊人五月天 | 五月天国产 | 成人毛片一区二区三区 | 国产网红在线观看 | 人人澡人人添人人爽一区二区 | 99久久99久久精品 | 久久专区 | 国产视频欧美视频 | 激情喷水| av免费观看高清 | 99国产精品视频免费观看一公开 | 欧美综合色在线图区 | 99国产精品久久久久老师 | 婷婷国产在线观看 | 激情综合啪啪 | 人人舔人人插 | 国产一区二区高清视频 | 91麻豆精品国产91久久久久久久久 | 国产看片网站 | 久久成人午夜 | 国产精品五月天 | 久草在线播放视频 | 爱爱一区 | 日韩欧美在线观看一区 | 国产精品午夜免费福利视频 | 一区二区视频播放 | 国产露脸91国语对白 | 日韩理论在线视频 | 在线看v片 | 一区二区三区不卡在线 | 天天撸夜夜操 | 国产黄色片一级 | 久久视频这里有久久精品视频11 | 欧美日韩亚洲精品在线 | 伊人婷婷 | 亚洲国产电影在线观看 | 成年人电影免费看 | 91桃色免费观看 | 婷婷爱五月天 | 免费在线观看一区二区三区 | 四虎在线观看精品视频 | 黄色av电影| 96久久| 综合色亚洲 | 国产视频第二页 | 另类老妇性bbwbbw高清 | 9在线观看免费高清完整版在线观看明 | 色婷婷天天干 | 99热在线国产 | 日韩中文字幕免费 | 色婷婷欧美 | 亚洲精品国产精品乱码不99热 | 国产精品国产三级国产aⅴ无密码 | 免费av大全 | 最近2019中文免费高清视频观看www99 | 国产高清一 | 91亚色视频 | 91中文字幕在线视频 | av成人免费 | 久久优| 午夜视频导航 | www.神马久久| 怡红院av久久久久久久 | 亚洲伦理电影在线 | 色综合天天在线 | 中文字幕九九 | 久久久久亚洲精品国产 | 美女精品 | 日本精品久久久久中文字幕 | 国产精品久久久久婷婷二区次 | 中文字幕综合在线 | 久久草草热国产精品直播 | 97av在线视频免费播放 | 国产免费一区二区三区最新6 | 国产1区2| 97热久久免费频精品99 | 国产一级大片在线观看 | 天堂av在线免费 | 久久综合免费视频 | 日韩在线免费小视频 | 久久精品久久久久电影 | 91专区在线观看 | 狠狠色噜噜狠狠狠狠 | 久久手机视频 | 国产资源在线免费观看 | 99热国产精品 | 永久av免费在线观看 | 国产亚洲激情视频在线 | 成人亚洲精品国产www | av在线电影网站 | 丁香六月在线 | 国产精品自在线拍国产 | 天天操操操操操操 | 欧美日本不卡 | 亚洲砖区区免费 | 在线午夜 | 国产精品一区二区av麻豆 | 久久久久久久久精 | 色综合人人 | 日韩电影一区二区在线 | 午夜视频免费在线观看 | 亚洲欧洲精品一区二区精品久久久 | 亚洲精品国产精品国自产观看 | 日韩大片在线免费观看 | 奇米网8888 | 久久久午夜精品理论片中文字幕 | 日韩视频在线观看视频 | 99精品福利| 丝袜美女在线观看 | 狠狠网亚洲精品 | 久久线视频 | 亚洲精品乱码久久久久久久久久 | 国产群p| 亚洲一区二区三区毛片 | www.黄色网.com| 在线观看av小说 | 久久久久久久电影 | 91精品天码美女少妇 | 免费看一及片 | 国产精品视频一二三 | 亚洲精品影视在线观看 | 日韩欧美在线国产 | 伊人天天操| 精品a在线 |