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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kafka Consumer多线程消费

發布時間:2024/1/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kafka Consumer多线程消费 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 概述?
  • OrdinaryConsumer類
  • ConsumerWorker.java
  • MultiThreadedConsumer.java
  • MultiThreadedRebalanceListener.java
  • Test.java

上一篇《Kafka Consumer多線程實例續篇》修正了多線程提交位移的問題,但依然可能出現數據丟失的情況,原因在于多個線程可能拿到相同分區的數據,而消費的順序會破壞消息本身在分區中的順序,因而擾亂位移的提交。這次我使用KafkaConsumer的pause和resume方法來防止這種情形的發生。另外,本次我會編寫一個測試類用于驗證消費相同數量消息時,單線程消費速度要遠遜于多線程消費。

回到頂部

概述?

這一次,我編寫了5個java文件,它們分別是:

  • OrdinaryConsumer.java:普通的單線程Consumer,用于后面進行性能測試對比用。
  • ConsumerWorker.java:多線程消息處理類,本質上就是一個Runnable。會被提交給線程池用于實際消息處理。
  • MultiThreadedConsumer.java:多線程Consumer主控類,用于將消息分配給不同的ConsumerWorker,并且管理位移的提交。
  • MultiThreadedRebalanceListener.java:為多線程Consumer服務的Rebalance監聽器。
  • Test.java:用于測試單線程和多線程性能。

回到頂部

OrdinaryConsumer類

單線程的Consumer最簡單,我首先給出它的代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

package?huxihx.mtc;

?

import?org.apache.kafka.clients.consumer.Consumer;

import?org.apache.kafka.clients.consumer.ConsumerConfig;

import?org.apache.kafka.clients.consumer.ConsumerRecord;

import?org.apache.kafka.clients.consumer.ConsumerRecords;

import?org.apache.kafka.clients.consumer.KafkaConsumer;

import?org.apache.kafka.common.serialization.StringDeserializer;

?

import?java.time.Duration;

import?java.util.Collections;

import?java.util.Properties;

import?java.util.concurrent.ThreadLocalRandom;

?

/**

?* 單線程Consumer

?*/

public?class?OrdinaryConsumer {

?

????private?final?Consumer<String, String> consumer;

????private?final?int?expectedCount;?// 用于測試的消息數量

?

????public?OrdinaryConsumer(String brokerId, String topic, String groupID,?int?expectedCount) {

????????Properties props =?new?Properties();

????????props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerId);

????????props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

????????props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

????????props.setProperty(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,?"true");

????????props.setProperty(ConsumerConfig.GROUP_ID_CONFIG, groupID);

????????props.setProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,?"earliest");

????????consumer =?new?KafkaConsumer<>(props);

????????consumer.subscribe(Collections.singletonList(topic));

????????this.expectedCount = expectedCount;

????}

?

????public?void?run() {

????????try?{

????????????int?alreadyConsumed =?0;

????????????while?(alreadyConsumed < expectedCount) {

????????????????ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(1));

????????????????alreadyConsumed += records.count();

????????????????records.forEach(this::handleRecord);

????????????}

????????}?finally?{

????????????consumer.close();

????????}

????}

?

????private?void?handleRecord(ConsumerRecord<String, String> record) {

????????try?{

????????????// 模擬每條消息10毫秒處理

????????????Thread.sleep(ThreadLocalRandom.current().nextInt(10));

????????}?catch?(InterruptedException ignored) {

????????????Thread.currentThread().interrupt();

????????}

????????System.out.println(Thread.currentThread().getName() +?" finished message processed. Record offset = "?+ record.offset());

????}

} 

?代碼很簡單,沒什么可說的。唯一要說的是Consumer會模擬10毫秒處理一條事件。后面多線程Consumer我們也會使用相同的標準。

回到頂部

ConsumerWorker.java

接下來是消息處理的Runnable類:ConsumerWorker。和上一篇相比,這次最大的不同在于每個Worker只處理相同分區下的消息,而不是向之前那樣處理多個分區中的消息。這樣做的好處在于一旦某個分區的消息分配給了這個Worker,我可以暫停這個分區的可消費狀態,直到這個Worker全部處理完成。如果是混著多個分區的消息一起處理,實現這個就比較困難。ConsumerWorker代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

package?huxihx.mtc;

?

import?org.apache.kafka.clients.consumer.ConsumerRecord;

?

import?java.util.List;

import?java.util.concurrent.CompletableFuture;

import?java.util.concurrent.ThreadLocalRandom;

import?java.util.concurrent.TimeUnit;

import?java.util.concurrent.atomic.AtomicLong;

import?java.util.concurrent.locks.ReentrantLock;

?

public?class?ConsumerWorker<K, V> {

?

????private?final?List<ConsumerRecord<K, V>> recordsOfSamePartition;

????private?volatile?boolean?started =?false;

????private?volatile?boolean?stopped =?false;

????private?final?ReentrantLock lock =?new?ReentrantLock();

?

????private?final?long?INVALID_COMMITTED_OFFSET = -1L;

????private?final?AtomicLong latestProcessedOffset =?new?AtomicLong(INVALID_COMMITTED_OFFSET);

????private?final?CompletableFuture<Long> future =?new?CompletableFuture<>();

?

????public?ConsumerWorker(List<ConsumerRecord<K, V>> recordsOfSamePartition) {

????????this.recordsOfSamePartition = recordsOfSamePartition;

????}

?

????public?boolean?run() {

????????lock.lock();

????????if?(stopped)

????????????return?false;

????????started =?true;

????????lock.unlock();

????????for?(ConsumerRecord<K, V> record : recordsOfSamePartition) {

????????????if?(stopped)

????????????????break;

????????????handleRecord(record);

????????????if?(latestProcessedOffset.get() < record.offset() +?1)

????????????????latestProcessedOffset.set(record.offset() +?1);

????????}

????????return?future.complete(latestProcessedOffset.get());

????}

?

????public?long?getLatestProcessedOffset() {

????????return?latestProcessedOffset.get();

????}

?

????private?void?handleRecord(ConsumerRecord<K, V> record) {

????????try?{

????????????Thread.sleep(ThreadLocalRandom.current().nextInt(10));

????????}?catch?(InterruptedException ignored) {

????????????Thread.currentThread().interrupt();

????????}

????????System.out.println(Thread.currentThread().getName() +?" finished message processed. Record offset = "?+ record.offset());

????}

?

????public?void?close() {

????????lock.lock();

????????this.stopped =?true;

????????if?(!started) {

????????????future.complete(latestProcessedOffset.get());

????????}

????????lock.unlock();

????}

?

????public?boolean?isFinished() {

????????return?future.isDone();

????}

?

????public?long?waitForCompletion(long?timeout, TimeUnit timeUnit) {

????????try?{

????????????return?future.get(timeout, timeUnit);

????????}?catch?(Exception e) {

????????????if?(e?instanceof?InterruptedException)

????????????????Thread.currentThread().interrupt();

????????????return?INVALID_COMMITTED_OFFSET;

????????}

????}

}

需要說明的地方有以下幾點:

  • latestProcessedOffset:使用這個變量保存該Worker當前已消費的最新位移。
  • future:使用CompletableFuture來保存Worker要提交的位移。
  • Worker成功操作與否的標志就是看這個future是否將latestProcessedOffset值封裝到結果中。
  • handleRecord和單線程Consumer中的一致,模擬10ms處理消息。

回到頂部

MultiThreadedConsumer.java

構建好了ConsumerWorker類之后,下面是編寫多線程Consumer的主控類,該類循環執行:1、創建Consumer;2、讀取訂閱分區的消息;3、將消息按照不同分區進行歸組分發給不同的線程;4、暫停這些分區的后續消費,同時等待Worker線程完成消息處理;5、提交這些分區的位移;6、恢復這些分區的消費。

以下代碼是MultiThreadedConsumer類的完整代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

package?huxihx.mtc;

?

import?org.apache.kafka.clients.consumer.Consumer;

import?org.apache.kafka.clients.consumer.ConsumerConfig;

import?org.apache.kafka.clients.consumer.ConsumerRecord;

import?org.apache.kafka.clients.consumer.ConsumerRecords;

import?org.apache.kafka.clients.consumer.KafkaConsumer;

import?org.apache.kafka.clients.consumer.OffsetAndMetadata;

import?org.apache.kafka.common.TopicPartition;

import?org.apache.kafka.common.serialization.StringDeserializer;

?

import?java.time.Duration;

import?java.util.Collections;

import?java.util.HashMap;

import?java.util.HashSet;

import?java.util.List;

import?java.util.Map;

import?java.util.Properties;

import?java.util.Set;

import?java.util.concurrent.CompletableFuture;

import?java.util.concurrent.Executor;

import?java.util.concurrent.Executors;

?

public?class?MultiThreadedConsumer {

?

????private?final?Map<TopicPartition, ConsumerWorker<String, String>> outstandingWorkers =?new?HashMap<>();

????private?final?Map<TopicPartition, OffsetAndMetadata> offsetsToCommit =?new?HashMap<>();

????private?long?lastCommitTime = System.currentTimeMillis();

????private?final?Consumer<String, String> consumer;

????private?final?int?DEFAULT_COMMIT_INTERVAL =?3000;

????private?final?Map<TopicPartition, Long> currentConsumedOffsets =?new?HashMap<>();

????private?final?long?expectedCount;

?

????private?final?static?Executor executor = Executors.newFixedThreadPool(

????????????Runtime.getRuntime().availableProcessors() *?10, r -> {

????????????????Thread t =?new?Thread(r);

????????????????t.setDaemon(true);

????????????????return?t;

????????????});

?

????public?MultiThreadedConsumer(String brokerId, String topic, String groupID,?long?expectedCount) {

????????Properties props =?new?Properties();

????????props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerId);

????????props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

????????props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

????????props.setProperty(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,?"false");

????????props.setProperty(ConsumerConfig.GROUP_ID_CONFIG, groupID);

????????props.setProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,?"earliest");

????????consumer =?new?KafkaConsumer<>(props);

????????consumer.subscribe(Collections.singletonList(topic),?new?MultiThreadedRebalanceListener(consumer, outstandingWorkers, offsetsToCommit));

????????this.expectedCount = expectedCount;

????}

?

????public?void?run() {

????????try?{

????????????while?(true) {

????????????????ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(1));

????????????????distributeRecords(records);

????????????????checkOutstandingWorkers();

????????????????commitOffsets();

????????????????if?(currentConsumedOffsets.values().stream().mapToLong(Long::longValue).sum() >= expectedCount) {

????????????????????break;

????????????????}

????????????}

????????}?finally?{

????????????consumer.close();

????????}

????}

?

????/**

?????* 對已完成消息處理并提交位移的分區執行resume操作

?????*/

????private?void?checkOutstandingWorkers() {

????????Set<TopicPartition> completedPartitions =?new?HashSet<>();

????????outstandingWorkers.forEach((tp, worker) -> {

????????????if?(worker.isFinished()) {

????????????????completedPartitions.add(tp);

????????????}

????????????long?offset = worker.getLatestProcessedOffset();

????????????currentConsumedOffsets.put(tp, offset);

????????????if?(offset > 0L) {

????????????????offsetsToCommit.put(tp,?new?OffsetAndMetadata(offset));

????????????}

????????});

????????completedPartitions.forEach(outstandingWorkers::remove);

????????consumer.resume(completedPartitions);

????}

?

????/**

?????* 提交位移

?????*/

????private?void?commitOffsets() {

????????try?{

????????????long?currentTime = System.currentTimeMillis();

????????????if?(currentTime - lastCommitTime > DEFAULT_COMMIT_INTERVAL && !offsetsToCommit.isEmpty()) {

????????????????consumer.commitSync(offsetsToCommit);

????????????????offsetsToCommit.clear();

????????????}

????????????lastCommitTime = currentTime;

????????}?catch?(Exception e) {

????????????e.printStackTrace();

????????}

????}

?

????/**

?????* 將不同分區的消息交由不同的線程,同時暫停該分區消息消費

?????* @param records

?????*/

????private?void?distributeRecords(ConsumerRecords<String, String> records) {

????????if?(records.isEmpty())

????????????return;

????????Set<TopicPartition> pausedPartitions =?new?HashSet<>();

????????records.partitions().forEach(tp -> {

????????????List<ConsumerRecord<String, String>> partitionedRecords = records.records(tp);

????????????pausedPartitions.add(tp);

????????????final?ConsumerWorker<String, String> worker =?new?ConsumerWorker<>(partitionedRecords);

????????????CompletableFuture.supplyAsync(worker::run, executor);

????????????outstandingWorkers.put(tp, worker);

????????});

????????consumer.pause(pausedPartitions);

????}

}  

?該類代碼需要說明的地方包括:

  • executor:我創建了一個包含10倍CPU核數的線程數。具體線程數根據你自己的業務需求而定。如果你的事件處理邏輯是I/O密集型操作(比如寫入外部系統),那么設置一個大一點的線程數通常都是有意義的。當然,我個人覺得最好不要超過Consumer分配到的總分區數。
  • 一定要將自動提交位移的參數設置為false。多線程Consumer的一個關鍵設計就是要手動提交位移。
  • Rebalance監聽器設置為MultiThreadedRebalanceListener。這個類如何響應分區的回收與分配我們稍后討論。
  • run方法的邏輯基本上遵循了上面提到的流程:消息獲取 -> 分發 -> 檢查消費進度 -> 提交位移
  • expectedCount:這是為了后面進行性能測試比對用到的總消息消費數。

回到頂部

MultiThreadedRebalanceListener.java

多線程Consumer在Rebalance操作開啟后要小心處理。首先,主線程的poll方法與Worker線程處理消息是并行執行的。此時如果發生Rebalance,那么有些分區就會被分配給其他Consumer,但Worker線程依然可能正在處理這些分區。因此,就可能出現這樣的場景:兩個Consumer都會處理這些分區中的消息。這就破壞了消費者組的設計理念。針對這種情況,我們必須要確保要被回收的那些分區的處理必須首先完成,之后才能被重新分配。

總體而言,在要回收分區前,多線程Consumer必須完成:

  • 停止對應的Worker線程
  • 提交位移
  • 當然,一旦分區被重新分配后,事情就變得簡單了,我們調用resume恢復這些分區的可消費狀態即可。如果這些分區之前就是可以消費的,那么調用resume方法就沒有任何效果,總之是一個“無害”操作。MultiThreadedRebalanceListener類完整代碼如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    package?huxihx.mtc;

    ?

    import?org.apache.kafka.clients.consumer.Consumer;

    import?org.apache.kafka.clients.consumer.ConsumerRebalanceListener;

    import?org.apache.kafka.clients.consumer.OffsetAndMetadata;

    import?org.apache.kafka.common.TopicPartition;

    ?

    import?java.util.Collection;

    import?java.util.HashMap;

    import?java.util.Map;

    import?java.util.concurrent.TimeUnit;

    ?

    public?class?MultiThreadedRebalanceListener?implements?ConsumerRebalanceListener {

    ?

    ????private?final?Consumer<String, String> consumer;

    ????private?final?Map<TopicPartition, ConsumerWorker<String, String>> outstandingWorkers;

    ????private?final?Map<TopicPartition, OffsetAndMetadata> offsets;

    ?

    ????public?MultiThreadedRebalanceListener(Consumer<String, String> consumer,

    ??????????????????????????????????????????Map<TopicPartition, ConsumerWorker<String, String>> outstandingWorkers,

    ??????????????????????????????????????????Map<TopicPartition, OffsetAndMetadata> offsets) {

    ????????this.consumer = consumer;

    ????????this.outstandingWorkers = outstandingWorkers;

    ????????this.offsets = offsets;

    ????}

    ?

    ????@Override

    ????public?void?onPartitionsRevoked(Collection<TopicPartition> partitions) {

    ????????Map<TopicPartition, ConsumerWorker<String, String>> stoppedWorkers =?new?HashMap<>();

    ????????for?(TopicPartition tp : partitions) {

    ????????????ConsumerWorker<String, String> worker = outstandingWorkers.remove(tp);

    ????????????if?(worker !=?null) {

    ????????????????worker.close();

    ????????????????stoppedWorkers.put(tp, worker);

    ????????????}

    ????????}

    ?

    ????????stoppedWorkers.forEach((tp, worker) -> {

    ????????????long?offset = worker.waitForCompletion(1, TimeUnit.SECONDS);

    ????????????if?(offset > 0L) {

    ????????????????offsets.put(tp,?new?OffsetAndMetadata(offset));

    ????????????}

    ????????});

    ?

    ????????Map<TopicPartition, OffsetAndMetadata> revokedOffsets =?new?HashMap<>();

    ????????partitions.forEach(tp -> {

    ????????????OffsetAndMetadata offset = offsets.remove(tp);

    ????????????if?(offset !=?null) {

    ????????????????revokedOffsets.put(tp, offset);

    ????????????}

    ????????});

    ?

    ????????try?{

    ????????????consumer.commitSync(revokedOffsets);

    ????????}?catch?(Exception e) {

    ????????????e.printStackTrace();

    ????????}

    ????}

    ?

    ????@Override

    ????public?void?onPartitionsAssigned(Collection<TopicPartition> partitions) {

    ????????consumer.resume(partitions);

    ????}

    }

    該類代碼需要說明的地方包括:

    • 任何Rebalance監聽器都要實現ConsumerRebalanceListener接口。
    • 該類定義了3個字段,分別保存Consumer實例、要停掉的Worker線程實例以及要提交的位移數據。
    • 主要的邏輯在onPartitionsRevoked方法中實現。第一步是停掉Worker線程;第二步是手動提交位移。

    回到頂部

    Test.java

    說完了以上4個Java類之后,現在我們編寫一個測試類來比較單線程Consumer和多線程Consumer的性能對比。首先我們創建一個topic,50個分區,單副本,并使用kafka-producer-perf-test工具創建5萬條消息,每個分區1000條。之后編寫如下代碼分別測試兩個Consumer的消費耗時:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    package?huxihx.mtc;

    ?

    public?class?Test {

    ????public?static?void?main(String[] args)?throws?InterruptedException {

    ????????int?expectedCount =?50?*?900;

    ????????String brokerId =?"localhost:9092";

    ????????String groupId =?"test-group";

    ????????String topic =?"test";

    ?

    ????????OrdinaryConsumer consumer =?new?OrdinaryConsumer(brokerId, topic, groupId +?"-single", expectedCount);

    ????????long?start = System.currentTimeMillis();

    ????????consumer.run();

    ????????System.out.println("Single-threaded consumer costs "?+ (System.currentTimeMillis() - start));

    ?

    ????????Thread.sleep(1L);

    ?

    ????????MultiThreadedConsumer multiThreadedConsumer =

    ????????????????new?MultiThreadedConsumer(brokerId, topic, groupId +?"-multi", expectedCount);

    ????????start = System.currentTimeMillis();

    ????????multiThreadedConsumer.run();

    ????????System.out.println("Multi-threaded consumer costs "?+ (System.currentTimeMillis() - start));

    ????}

    }

    最后結果顯示。單線程Consumer消費45000條消息共耗時232秒,而多線程Consumer耗時6.2秒,如下:

    Single-threaded consumer costs 232336

    Multi-threaded consumer costs 6246

    顯然,采用多線程Consumer的消費性能大約是單線程Consumer的37倍。當然實際的提升效果依具體環境而定。不過結論是肯定的,多線程Consumer在CPU核數很多且消息處理邏輯為I/O密集型操作的情形下會比單線程Consumer表現更好。

    總結

    以上是生活随笔為你收集整理的Kafka Consumer多线程消费的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久久精品国产一区二区电影四季 | 性色av一区二区三区在线观看 | 91午夜精品| 天天躁天天狠天天透 | 久久免费精品国产 | 亚洲电影黄色 | 久久av影院 | 日韩免费在线视频 | 日韩av手机在线观看 | 在线免费高清一区二区三区 | 欧美日韩免费一区二区 | a级成人毛片 | 天天操夜夜拍 | 国产亚洲综合性久久久影院 | 欧美aaa大片 | 一区二区视频免费在线观看 | 亚洲四虎在线 | 国产成人福利在线观看 | 蜜臀aⅴ国产精品久久久国产 | 久久久久久久久毛片精品 | 黄色精品一区 | 欧美男男tv网站 | 麻豆果冻剧传媒在线播放 | 久久综合偷偷噜噜噜色 | 91成人蝌蚪 | 久操久 | 五月婷婷另类国产 | 日韩一区二区免费播放 | 精品久久久久久久久久岛国gif | 在线观看视频国产一区 | 亚洲精品一区二区三区新线路 | 亚洲涩涩涩涩涩涩 | 国产精品美女久久久 | 国产高清av | 91亚洲激情| 在线免费观看欧美日韩 | 五月婷婷色综合 | 九九视频一区 | 狠狠狠狠狠狠狠狠 | 国产高清在线免费 | 日韩午夜电影院 | 99re8这里有精品热视频免费 | 中文字幕在线观看免费 | 亚洲精品动漫久久久久 | 日韩毛片在线一区二区毛片 | 超碰免费在线公开 | 狠狠干夜夜 | 亚洲精品视频网站在线观看 | 日日干,天天干 | 看片一区二区三区 | 日本黄色大片免费看 | 91久久精品一区二区三区 | 最近中文字幕高清字幕在线视频 | 亚洲国产成人久久综合 | 91成人精品一区在线播放 | 日韩精品久久久久久久电影99爱 | 国产做aⅴ在线视频播放 | 黄色av电影在线观看 | 亚洲天堂网在线视频 | 午夜久久久精品 | 免费婷婷| 三级黄色在线 | 91精品啪啪 | 久色婷婷 | 久久国产精品精品国产色婷婷 | 精品国产99国产精品 | 五月天婷亚洲天综合网精品偷 | 特级黄色一级 | 亚洲视屏在线播放 | 91网站免费观看 | 天天草天天插 | 麻豆一精品传二传媒短视频 | 国产精品一区在线 | 国产 欧美 日韩 | 亚洲日本va午夜在线电影 | 欧美专区国产专区 | 欧美一级电影在线观看 | 亚洲视频免费在线 | 精品久久久久久电影 | 黄色a视频免费 | 伊人亚洲综合网 | 一区二区影院 | 国产一区二区观看 | 91在线观 | 久久久久久久久久影院 | 天天色天天操天天爽 | 天天操夜夜摸 | 亚洲精品综合一二三区在线观看 | 97精品免费视频 | 午夜国产一区 | 麻豆精品视频在线观看免费 | 日日夜夜综合网 | 亚洲一级片在线看 | 色在线亚洲 | 欧洲不卡av| 欧美一区二区在线刺激视频 | 日本在线观看视频一区 | 亚洲精品久久久久中文字幕m男 | 国产免费影院 | 日本久久影视 | 国产理论免费 | 中文字幕国产一区二区 | 欧美一区二区三区在线视频观看 | 日韩在线观看中文字幕 | 久久免费黄色大片 | 国产色 在线 | 亚洲影院国产 | 欧美日韩三级在线观看 | 久草精品视频 | 日韩在线观看 | 国产精品一区在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 91手机电影 | 国产精品va在线播放 | 欧美最猛性xxxxx(亚洲精品) | 日本不卡123 | 亚洲清纯国产 | 顶级bbw搡bbbb搡bbbb | 四虎在线免费 | 亚洲视频在线免费看 | 日韩美女久久 | 啪啪肉肉污av国网站 | 亚洲免费av在线播放 | 亚洲日本精品视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 九色激情网 | 草草草影院| 91在线视频免费播放 | 久久国语| 伊人天天狠天天添日日拍 | 国产免费国产 | 97超碰人人模人人人爽人人爱 | 欧美激情另类文学 | 97在线观看免费 | 人人搞人人搞 | 成人免费观看电影 | www.国产在线视频 | 国产99久久久国产精品免费看 | 亚洲欧洲国产日韩精品 | 一区二区三区免费看 | 日韩av不卡在线 | 亚洲精品在线观看中文字幕 | 免费视频你懂的 | 亚州免费视频 | 久久久久99精品国产片 | av电影免费在线看 | 亚洲国产中文字幕在线视频综合 | 亚洲一级影院 | 激情深爱.com | 成人污视频在线观看 | 免费看片网站91 | 亚洲女人av | 午夜视频色| 97热久久免费频精品99 | 免费看国产曰批40分钟 | 国产精品av一区二区 | 香蕉视频在线观看免费 | 久久男人免费视频 | 91成人午夜| 中文字幕在线免费看 | 日韩在线观看不卡 | 欧美色插 | 91中文在线观看 | 日韩欧美一区二区在线播放 | 性色大片在线观看 | 婷婷激情av | 欧美aaa视频 | 国产精品色视频 | 久草在线视频免赞 | 五月av在线 | 久久久999精品视频 国产美女免费观看 | 国产精品成久久久久 | 一区二区三区四区五区在线 | 亚洲国产三级在线观看 | 日韩中文幕 | 综合网伊人 | 久久久久国产精品视频 | 三级视频日韩 | 久久影视精品 | 国产一区欧美二区 | 久久9视频 | 日韩高清免费无专码区 | 日韩高清成人在线 | 国产午夜精品一区二区三区欧美 | 午夜黄色 | 综合久久久久久久 | 欧美色图视频一区 | 国产专区精品 | 国产成人久久精品一区二区三区 | 日韩成人精品 | 欧美日韩精品二区第二页 | 一级片免费观看视频 | 亚洲h在线播放在线观看h | 97网站| 日本精品一区二区三区在线播放视频 | 精品视频免费观看 | 久久精品综合一区 | 午夜av网站 | a级片韩国 | 欧美日韩视频免费 | av电影在线免费 | 一区二区不卡视频在线观看 | www.伊人色.com | 成年人免费电影 | 黄色毛片电影 | 涩涩色亚洲一区 | 麻豆激情电影 | 婷婷在线免费视频 | 成人免费看片网址 | 韩国一区二区三区视频 | 欧美狠狠色 | 国产福利资源 | 欧美精品久久久久久久久老牛影院 | 久久欧美精品 | 在线观看www视频 | 天天操操操操操操 | 国产黄网在线 | 欧美日韩一区二区三区视频 | 亚洲色影爱久久精品 | 97涩涩视频 | 99精品在线看 | 久久成人午夜视频 | 福利一区在线视频 | 国产手机在线观看视频 | 亚洲欧洲日韩 | 欧美日韩免费一区 | 久久久精品欧美一区二区免费 | 免费在线成人av | 三级黄色网址 | 97视频一区 | 成人av在线一区二区 | 亚洲精品无 | 99久久视频| 手机成人在线 | 夜色在线资源 | 免费欧美高清视频 | 麻豆视频国产 | 精品国产一区二区三区不卡 | 日韩精品视频在线免费观看 | 激情综合啪| 色噜噜日韩精品欧美一区二区 | 国产精品99久久久久久久久 | 国产精品你懂的在线观看 | 五月婷婷精品 | 日韩亚洲精品电影 | 成人在线黄色电影 | 人人射 | 91九色蝌蚪视频网站 | 午夜精品福利一区二区三区蜜桃 | 日韩精品视频免费专区在线播放 | 亚洲资源一区 | 91精品国| 亚洲精品在线二区 | av综合网址 | 国产精品久久久久久久久免费看 | 亚洲成色777777在线观看影院 | 黄色大片免费播放 | 久久久网页 | 在线国产91 | 中文字幕精品www乱入免费视频 | 国产精品一区二区免费 | 伊人婷婷色 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 日韩在线理论 | 成人av网址大全 | av久久久| 日韩高清在线看 | 中文字幕4 | 97精品在线| 久操97| 久久精品一区二区三区国产主播 | 欧美一性一交一乱 | 欧美一区二区免费在线观看 | 999成人 | 久久久久久久久久亚洲精品 | 久久久久免费精品视频 | 国产黄色资源 | 超碰人人在 | av大片免费看 | 成人97视频 | 亚欧洲精品视频在线观看 | 日韩精品欧美专区 | 一区二区精品视频 | 激情综合中文娱乐网 | 久久99国产视频 | 欧美日韩色婷婷 | 丁香婷婷综合激情五月色 | 91九色精品女同系列 | 亚洲精品视频网址 | 成人亚洲欧美 | 亚洲码国产日韩欧美高潮在线播放 | 99精品热视频只有精品10 | 黄色中文字幕 | 天天干天天拍天天操 | 久久精品中文字幕少妇 | 中文字幕乱码亚洲精品一区 | 国产一区二区在线免费播放 | 中文字幕在线观看一区 | 一区在线免费观看 | 一区二区在线电影 | 久久在线免费观看视频 | 日韩二区在线观看 | 久久99视频免费观看 | 偷拍精品一区二区三区 | 亚洲精品456在线播放乱码 | 国产精品久久久久久久久久尿 | 美女一区网站 | 国产一区二区免费 | 天天色成人网 | 国产精品人人做人人爽人人添 | 欧美午夜一区二区福利视频 | 人人爽人人爽 | 亚洲成人欧美 | 精品亚洲va在线va天堂资源站 | 激情综合亚洲 | 久久综合欧美精品亚洲一区 | 色国产精品一区在线观看 | www.99在线观看 | 国产色视频网站 | 天天综合导航 | 亚洲黄色在线 | 国产99久久久精品视频 | 91c网站色版视频 | 四虎国产永久在线精品 | 91亚洲精品久久久蜜桃借种 | 日韩专区一区二区 | 欧美成人精品三级在线观看播放 | www蜜桃视频 | 美女天天操 | 亚洲涩涩色 | 91精品国产九九九久久久亚洲 | 美女久久久久 | 日本黄色免费在线 | 久久免费看视频 | www黄色com| 日日日日日 | 婷婷深爱五月 | 超级碰视频 | av成人免费在线观看 | av在线播放观看 | 91成人免费观看视频 | 日韩最新理论电影 | 久久精品亚洲 | 国产日韩精品一区二区三区 | 国产小视频免费在线网址 | 国产女教师精品久久av | 国产精品久久久久永久免费 | 超碰97国产精品人人cao | 一级黄色在线免费观看 | 亚洲国产小视频在线观看 | 久久精彩视频 | 国产精品免费一区二区三区在线观看 | 国产视频在线一区二区 | 精品黄色在线观看 | 欧美专区国产专区 | 久久精品第一页 | 99久久精品久久亚洲精品 | 青青河边草免费观看完整版高清 | 免费毛片一区二区三区久久久 | 992tv成人免费看片 | bayu135国产精品视频 | 日韩在线精品 | 亚洲精品 在线视频 | 国产在线视频资源 | 久久永久免费视频 | 一本一道久久a久久精品 | 欧美日性视频 | 在线视频一区观看 | 欧美精品免费视频 | 成人黄色在线视频 | 国产亚洲精品精品精品 | 久久在现视频 | 91手机电视 | 天天爱综合| 在线免费色视频 | 亚洲午夜av久久乱码 | 香蕉在线观看视频 | 最近日韩免费视频 | 色视频在线免费观看 | 国产精品去看片 | 亚洲免费不卡 | 天天色天天干天天 | 色婷婷亚洲精品 | 中文字幕婷婷 | 久久视频国产精品免费视频在线 | 中国美女一级看片 | 特黄色大片 | 国产拍在线 | 日韩影视精品 | 国产精品涩涩屋www在线观看 | 园产精品久久久久久久7电影 | 久久99国产视频 | 色婷婷狠狠干 | 亚洲激情六月 | 久久久久女人精品毛片 | 国产最新视频在线观看 | av中文天堂 | 欧美日韩在线观看一区二区三区 | 91视频午夜 | 国产精品久久久久久久久婷婷 | 亚洲精选在线观看 | 国产欧美久久久精品影院 | 蜜桃视频在线观看一区 | 91高清在线看 | 在线视频婷婷 | 亚洲污视频 | 国产精品99久久免费黑人 | 午夜在线观看一区 | 在线免费观看欧美日韩 | 国产高清中文字幕 | 免费色婷婷 | 午夜性福利 | 久草电影免费在线观看 | 91麻豆.com| 欧美一级电影免费观看 | 成人免费看视频 | 欧美精品成人在线 | 日本精品小视频 | 久久精品视频3 | 日韩在线字幕 | 日本精品免费看 | 九九热在线视频免费观看 | 欧美在线视频一区二区三区 | 国产亚洲综合在线 | 综合色影院 | 久久视频在线观看中文字幕 | 麻豆成人小视频 | 夜夜嗨av色一区二区不卡 | 美女福利视频一区二区 | 亚洲国产999| 天天干天天拍天天操 | 色偷偷中文字幕 | 国产精品免费看久久久8精臀av | 成年人电影免费在线观看 | 国产自偷自拍 | 视色网站 | www.天天干.com| 在线观看理论 | 国产亚洲精品久久网站 | 国产香蕉久久精品综合网 | 国产小视频你懂的在线 | 黄色在线免费观看网站 | 色成人亚洲 | 国产精品久久久久久欧美 | 911精品视频 | 最近中文字幕视频完整版 | 看黄色.com | 西西4444www大胆视频 | 91视频免费 | 国产亚洲久久 | 久久成人国产精品一区二区 | 国产黄色在线观看 | 伊人中文字幕在线 | 国产一区二区中文字幕 | 黄色免费网站大全 | 国产精品毛片一区二区三区 | 最新日韩在线 | 麻豆传媒在线免费看 | 日本韩国精品一区二区在线观看 | 最新国产福利 | 国产精品永久在线观看 | 国产成人精品999在线观看 | 日韩高清无线码2023 | 午夜精品电影一区二区在线 | 免费的黄色的网站 | 久久精品理论 | 手机看片| zzijzzij亚洲日本少妇熟睡 | 久久国产麻豆 | av一级二级 | 热久久这里只有精品 | 激情五月开心 | 久久国产精品久久久 | 国产麻豆视频网站 | 天天干,天天操,天天射 | 五月天六月色 | www.久久成人| 精品欧美乱码久久久久久 | 日本丶国产丶欧美色综合 | 成 人 黄 色 片 在线播放 | 国产专区视频在线观看 | 超碰在线人人 | 三级在线国产 | 久久99影院| 黄色日批网站 | 国产精品女人久久久久久 | 国内精品久久久久影院男同志 | 欧美一区二区三区特黄 | 精品视频成人 | 在线免费观看国产 | 日韩欧美大片免费观看 | 国产成人三级一区二区在线观看一 | 久久亚洲婷婷 | 狠狠色丁香久久婷婷综合丁香 | 久久综合狠狠综合久久综合88 | 午夜国产影院 | 国产日韩视频在线观看 | 精品少妇一区二区三区在线 | 久久久久综合 | 99亚洲天堂 | 国产色a在线观看 | 在线免费黄色毛片 | 午夜精品久久久久久久99 | 91视频免费看片 | 99精品免费在线观看 | 欧美a级成人淫片免费看 | 婷婷在线视频观看 | 日日操天天操狠狠操 | 人人爽人人干 | 亚洲激情视频 | 在线黄色免费av | 国产91区 | 69视频国产| 欧美激情视频一区 | 国产成人不卡 | 中文有码在线 | 麻豆91小视频 | 国产.精品.日韩.另类.中文.在线.播放 | 久久久综合精品 | 激情网站| 国产精品扒开做爽爽的视频 | 中文在线 | 狠狠亚洲| 日韩女同一区二区三区在线观看 | 成人在线免费观看视视频 | 天天爱天天射 | 精品一区二区三区久久 | 日韩三级在线 | 亚洲理论在线观看 | 亚洲精品国产麻豆 | 中文字幕一区三区 | 综合激情伊人 | 亚洲一区 影院 | 国产精品入口a级 | 四虎影视成人精品国库在线观看 | 一区二区三区精品久久久 | 久久精品99久久 | 精品爱爱| 欧美a性 | 国产高清绿奴videos | 黄色av网站在线观看免费 | 91免费版在线观看 | 中文乱码视频在线观看 | 久草视频在线免费播放 | 奇米影视四色8888 | 日韩视频精品在线 | 美女精品 | 91看片在线播放 | 亚洲香蕉在线观看 | 日韩毛片久久久 | 青青河边草免费观看完整版高清 | 久久精品免费播放 | 成人在线免费观看网站 | 日韩电影中文字幕在线观看 | 中文字幕日本特黄aa毛片 | 免费黄色av片| 亚洲美女在线国产 | 成人h视频在线播放 | 97国产精品久久 | 中文字幕日韩国产 | 久久久久久国产精品亚洲78 | 亚洲精品乱码久久久久久高潮 | 综合激情网... | 国产综合在线视频 | 91亚洲精品久久久蜜桃网站 | 99色精品视频 | 日韩在线观看av | 久久不射影院 | 久久草在线视频国产 | 色网站在线观看 | 久久五月婷婷丁香社区 | 在线观看理论 | 精品国产一区在线观看 | 丁香久久综合 | 亚洲精品人人 | 麻豆视频在线免费观看 | 亚洲精品高清视频在线观看 | 国产精品久久久久久久久久免费 | 少妇精69xxtheporn| 91网站在线视频 | 蜜臀av一区 | 精品伦理一区二区三区 | 福利电影一区二区 | 国产精品久久久视频 | 91视频成人免费 | 午夜精品婷婷 | 久久亚洲二区 | 久久久久免费精品国产 | 手机在线黄色网址 | 超碰在线官网 | 91在线视频在线观看 | 91免费看黄 | 欧美一二区视频 | 操夜夜操| 免费看一级一片 | 丝袜美女视频网站 | 国产精品不卡av | 欧美日韩性视频在线 | 27xxoo无遮挡动态视频 | 超碰在线人人爱 | 久久国产精品区 | 亚洲黄色高清 | 夜夜操天天摸 | 久久久久久久久免费视频 | 国产不卡精品 | 亚洲国产大片 | 色偷偷av男人天堂 | 国产精品99久久免费黑人 | 日韩超碰 | 日韩精品视频久久 | 欧美午夜视频在线 | 久久精品第一页 | 丝袜美腿亚洲综合 | 狠狠激情中文字幕 | 日韩中文字幕在线观看 | 91日韩精品视频 | 91精品导航| 中文字幕在线看视频 | 久久精品人 | 国产三级国产精品国产专区50 | 一级理论片在线观看 | 日日夜夜免费精品视频 | 成人精品999 | 97操碰| 日韩中文免费视频 | 人人玩人人添人人 | 丝袜一区在线 | 9在线观看免费高清完整版 玖玖爱免费视频 | 亚洲综合在线五月 | 美女视频永久黄网站免费观看国产 | 色久av| 国产美女主播精品一区二区三区 | 91在线免费观看网站 | 久久精品亚洲综合专区 | 国产精品精品国产色婷婷 | 欧美一级片免费在线观看 | 免费观看的av网站 | 久久久久久蜜av免费网站 | 天天摸天天干天天操天天射 | 麻豆一区在线观看 | 日韩福利在线观看 | 欧美日韩视频一区二区三区 | 天天天干夜夜夜操 | 国产精品午夜久久 | 天天天天天天天天操 | 国产资源在线免费观看 | 国产无套一区二区三区久久 | 一区二区视频电影在线观看 | 午夜精品久久久久99热app | 久久精品免费电影 | 日韩特黄一级欧美毛片特黄 | 久久精品久久精品久久 | 91视频在线看 | 国产做爰视频 | 92国产精品久久久久首页 | 日日夜夜精品免费 | 亚洲一级特黄 | 香蕉视频在线看 | 亚洲在线免费视频 | 国产精品日韩在线 | 国产视频日韩 | 久久精品综合一区 | 国产99久久久久 | 欧美日本啪啪无遮挡网站 | 亚洲欧洲日韩在线观看 | 91精品国产综合久久福利不卡 | 色偷偷人人澡久久超碰69 | 在线观看视频你懂 | 免费国产亚洲视频 | 国产精品18久久久久久久网站 | 日韩中文字幕免费视频 | 久久午夜影视 | 亚洲黄网站 | 国产福利在线免费观看 | 日韩精品久久久久久 | 99精品99| 久久精品一二三区 | 国产精品2020 | 天天操天天操天天操天天操天天操 | 精品国产乱码久久久久久浪潮 | 久久综合色婷婷 | 国产精品乱码一区二区视频 | 日本性视频 | 中文字幕av最新更新 | 久久高清视频免费 | 国产区第一页 | 91免费日韩 | 亚洲国产成人精品久久 | 制服丝袜在线91 | 亚洲欧洲国产日韩精品 | 91精品国产成 | 亚洲成人一区 | 91专区在线观看 | 中文字幕国语官网在线视频 | 欧美国产不卡 | 97超碰国产在线 | 国内精品久久影院 | 欧美在线观看小视频 | 99久久国产免费,99久久国产免费大片 | 99精品国自产在线 | 在线综合 亚洲 欧美在线视频 | 精品国产免费人成在线观看 | 狠狠干狠狠色 | 99精彩视频在线观看免费 | 国内精品国产三级国产aⅴ久 | 国产在线精品区 | 中文字幕传媒 | 免费手机黄色网址 | 97成人精品视频在线观看 | 久久久国产精品视频 | 亚洲人人av | 四虎成人在线 | 亚洲精品动漫在线 | 国产成人av在线影院 | 欧美日韩在线视频观看 | 亚洲综合欧美激情 | 99精品视频在线观看视频 | 一级黄色片网站 | 97国产精品| 日本不卡久久 | 欧美一二三视频 | 亚洲国产欧美一区二区三区丁香婷 | 日韩欧美在线视频一区二区三区 | 国产成人福利在线 | 亚洲欧美乱综合图片区小说区 | 五月婷婷六月丁香激情 | 久精品视频 | 91麻豆精品国产91久久久无限制版 | 中文资源在线播放 | 成人午夜影院在线观看 | 九九综合九九 | 精品国产大片 | 亚洲视屏在线播放 | 国产一级淫片免费看 | 国产精品久久久久久久久久久不卡 | 国产亚洲人 | 99久久婷婷国产一区二区三区 | 久久九九久久精品 | www四虎影院 | 五月天中文字幕 | 国产色区| 中文字幕频道 | 成人在线视频在线观看 | 色a网| 免费看毛片网站 | 夜夜躁狠狠躁日日躁视频黑人 | 成人黄色免费观看 | 热精品| 久久午夜精品影院一区 | 久久爱导航 | 毛片激情永久免费 | 久久免费高清 | 日韩高清三区 | 中文字幕观看视频 | 17videosex性欧美 | 九九亚洲精品 | 丁香婷婷激情国产高清秒播 | 在线中文字幕网站 | 免费在线观看不卡av | 91成版人在线观看入口 | 国产精品久免费的黄网站 | 69国产精品视频免费观看 | 日韩精品一区二区在线观看视频 | 国产视频精选 | 91九色视频观看 | 国产精品久久久久久久久免费 | 欧美日韩视频一区二区 | 91免费日韩| 操久久免费视频 | 天天做天天爱天天爽综合网 | 日韩色av色资源 | 日韩在线观看免费 | 日韩精品久久一区二区 | 天天草天天色 | 国产日本在线 | 99精品国产一区二区 | 国产黄色片久久 | 成人激情开心网 | 成人网大片 | 久久精美视频 | 久久综合五月婷婷 | 精品久久久久久久久亚洲 | 在线精品视频在线观看高清 | 九九免费在线看完整版 | 日韩免费在线观看网站 | 中文字幕久久亚洲 | 国产精品久久毛片 | 天天干天天插伊人网 | 一区二三国产 | 999日韩| 91精品国产91久久久久福利 | 日p视频| 久久综合一本 | 狠狠躁日日躁狂躁夜夜躁av | 一区在线观看 | 蜜臀aⅴ国产精品久久久国产 | 国产精品免费视频观看 | 亚洲激情在线视频 | 日韩理论 | 免费a网| 天天av天天 | 曰韩在线 | 日韩在线免费视频观看 | 91入口在线观看 | 色综合网在线 | 精品免费一区二区三区 | 国产精国产精品 | 久九视频 | 国产美女免费观看 | av丝袜在线 | 国产精品毛片一区二区 | 麻豆小视频在线观看 | 99精品视频在线观看视频 | 免费看黄在线看 | 麻豆视频免费入口 | 欧美激情va永久在线播放 | 九九激情视频 | 久久久精品日本 | 丁香六月天 | 日韩av有码在线 | 国产黄色美女 | 丁香婷婷综合激情 | 麻豆传媒视频在线播放 | 成人免费视频观看 | 日韩影视大全 | 中文久久精品 | 91精品国产乱码久久 | 九九热精品视频在线播放 | 久久久久久不卡 | 91黄色视屏 | 亚洲欧洲精品视频 | 久久视频这里有精品 | 国产成人av在线 | 91在线播放视频 | 国内精品在线看 | 国产精品毛片网 | 亚洲国产精品成人女人久久 | 韩国在线一区 | 免费观看成人 | 欧美日韩高清一区二区三区 | 欧美日韩观看 | 99久久久久成人国产免费 | 激情av在线播放 | 国产最顶级的黄色片在线免费观看 | 亚洲 欧洲av | 久久综合狠狠综合久久激情 | 亚洲精品国偷拍自产在线观看 | 国产伦精品一区二区三区高清 | 国产无遮挡又黄又爽在线观看 | 波多野结衣综合网 | 日韩欧美高清在线观看 | 色综合天天色综合 | 黄色毛片大全 | 久久精品国产免费看久久精品 | 日韩一区二区三区免费视频 | 久久久影院 | 欧美另类老妇 | 亚洲资源在线 | 一区二区三区播放 | 国产一线天在线观看 | 亚洲三级黄色 | 天天干天天干天天干天天干天天干天天干 | 九九视频在线观看视频6 | 亚洲精品高清一区二区三区四区 | av蜜桃在线| 欧洲av在线| 亚洲精品国产品国语在线 | 色综合久久精品 | 精品视频区 | 精品一区二区在线免费观看 | 亚洲精品观看 | 三级黄免费看 | 99精品国产兔费观看久久99 | 久久久私人影院 | 欧美激情综合五月色丁香小说 | 97视频在线观看免费 | 激情五月在线观看 | 色综合久久久久久久久五月 | 96亚洲精品久久久蜜桃 | 99久久99久国产黄毛片 | 日本不卡123区 | 丁香九月婷婷综合 | 日本激情动作片免费看 | 蜜桃av综合网 | av超碰在线 | 天天操夜夜逼 | 欧美日韩精品在线观看 | 精品福利视频在线 | 久久免费视频2 | 国产在线最新 | 国产午夜精品一区二区三区欧美 | 美女视频网站久久 | 97碰视频| 韩日色视频 | 美女黄频免费 | 久久中文精品视频 | 在线免费av电影 | 国产啊v在线观看 | 国产精品永久免费在线 | 国产黄色大片免费看 | 天天激情天天干 | 毛片一二区 | 色爱成人网 | 欧美日韩亚洲一 | 美女视频国产 | 国产91亚洲 | 精品久久久久免费极品大片 | 高清国产一区 | 中文字幕中文字幕 | 日本激情视频中文字幕 | 九九免费在线观看视频 | 一区二区 精品 | 久草在线综合网 | 91精品国产成人观看 | 亚洲精品乱码久久久久久 | a天堂最新版中文在线地址 久久99久久精品国产 | 99久久99视频只有精品 | 精品视频在线观看 | 亚洲一一在线 | 999抗病毒口服液 | 五月婷婷丁香在线观看 | 黄色aaa毛片 | 又黄又爽免费视频 | 国产91丝袜在线播放动漫 | 亚洲 欧美 国产 va在线影院 | 免费看一及片 | 在线观看免费高清视频大全追剧 | 五月视频 | 婷婷射五月 | 伊人五月综合 | 激情图片区| 久久久免费精品视频 | 毛片的网址 | 成人免费大片黄在线播放 | 国产免费又爽又刺激在线观看 | 色综合久久综合网 | www.夜夜爱 | 一区二区欧美在线观看 | 四虎在线观看视频 | 91中文字幕在线 | 日韩免费视频线观看 | 久久久久久久综合色一本 | 国产一级免费播放 | 99在线热播 | 国产精品一区二区果冻传媒 | 久久综合欧美 | 国产精美视频 | 成人在线视频在线观看 | 精品久久久久久久 | 精品国产欧美 | 美女精品在线观看 | 夜夜夜夜操 | 日韩一区二区三免费高清在线观看 | 日韩欧美在线视频一区二区三区 | 久久人人看 | 国产偷国产偷亚洲清高 | 午夜.dj高清免费观看视频 | 色婷婷亚洲| 亚洲1区 在线 | 国产精品99久久久久人中文网介绍 | 超碰97人人射妻 | 日韩高清免费无专码区 | 免费在线观看av网站 | 久久免费成人精品视频 | 久久久久久久久久久免费 | www.黄色| 91久久丝袜国产露脸动漫 | 亚洲国产欧洲综合997久久, | 91麻豆精品国产自产在线 | 亚洲永久精品一区 | 97成人在线免费视频 | www.色综合.com | 天天色.com| 欧美日韩一区二区在线观看 | 美女福利视频 | 男女男视频 | 午夜视频播放 | 韩国精品一区二区三区六区色诱 | 九九热99视频 | 午夜精品视频一区二区三区在线看 | 国产成人av电影在线 | 综合久久久久久久久 | 亚洲国产精彩中文乱码av | 亚洲欧洲av| avav99| 久久高清国产视频 | 丁香五月亚洲综合在线 | 亚洲婷婷免费 | 亚洲视频在线免费观看 | 欧美极品久久 | 99国内精品 | 成人午夜精品久久久久久久3d | 丰满少妇麻豆av | 日韩色中色 | 欧美在线观看视频免费 | 三级黄色大片在线观看 | 日韩在线视频精品 | 日韩一区二区免费播放 |