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

在線(xiàn)等,Kafka如果丟了消息怎么辦?

開(kāi)發(fā) 架構(gòu) 開(kāi)發(fā)工具 Kafka
Kafka 存在丟消息的問(wèn)題,消息丟失會(huì)發(fā)生在 Broker,Producer 和 Consumer 三種。

[[383294]]

圖片來(lái)自 Pexels

 

Broker

Broker

丟失消息是由于 Kafka 本身的原因造成的,Kafka 為了得到更高的性能和吞吐量,將數(shù)據(jù)異步批量的存儲(chǔ)在磁盤(pán)中。

消息的刷盤(pán)過(guò)程,為了提高性能,減少刷盤(pán)次數(shù),Kafka 采用了批量刷盤(pán)的做法。即,按照一定的消息量,和時(shí)間間隔進(jìn)行刷盤(pán)。

這種機(jī)制也是由于 Linux 操作系統(tǒng)決定的。將數(shù)據(jù)存儲(chǔ)到 Linux 操作系統(tǒng)種,會(huì)先存儲(chǔ)到頁(yè)緩存(Page cache)中,按照時(shí)間或者其他條件進(jìn)行刷盤(pán)(從 Page Cache 到 file),或者通過(guò) fsync 命令強(qiáng)制刷盤(pán)。

數(shù)據(jù)在Page Cache中時(shí),如果系統(tǒng)掛掉,數(shù)據(jù)會(huì)丟失。

 

Broker 在 Linux 服務(wù)器上高速讀寫(xiě)以及同步到 Replica

上圖簡(jiǎn)述了 Broker 寫(xiě)數(shù)據(jù)以及同步的一個(gè)過(guò)程。Broker 寫(xiě)數(shù)據(jù)只寫(xiě)到 Page Cache 中,而 Page Cache 位于內(nèi)存。

這部分?jǐn)?shù)據(jù)在斷電后是會(huì)丟失的。Page Cache 的數(shù)據(jù)通過(guò) Linux 的 flusher 程序進(jìn)行刷盤(pán)。

刷盤(pán)觸發(fā)條件有三:

  • 主動(dòng)調(diào)用 sync 或 fsync 函數(shù)。
  • 可用內(nèi)存低于閾值。
  • dirty data 時(shí)間達(dá)到閾值。dirty 是 Page Cache 的一個(gè)標(biāo)識(shí)位,當(dāng)有數(shù)據(jù)寫(xiě)入到 Page Cache 時(shí),Page Cache 被標(biāo)注為 dirty,數(shù)據(jù)刷盤(pán)以后,dirty 標(biāo)志清除。

Broker 配置刷盤(pán)機(jī)制,是通過(guò)調(diào)用 fsync 函數(shù)接管了刷盤(pán)動(dòng)作。從單個(gè) Broker 來(lái)看,Page Cache 的數(shù)據(jù)會(huì)丟失。

Kafka 沒(méi)有提供同步刷盤(pán)的方式。同步刷盤(pán)在 RocketMQ 中有實(shí)現(xiàn),實(shí)現(xiàn)原理是將異步刷盤(pán)的流程進(jìn)行阻塞,等待響應(yīng),類(lèi)似 Ajax 的 callback 或者是 Java 的 future。

下面是一段 RocketMQ 的源碼:

  1. GroupCommitRequest request = new GroupCommitRequest(result.getWroteOffset() + result.getWroteBytes()); 
  2. service.putRequest(request); 
  3. boolean flushOK = request.waitForFlush(this.defaultMessageStore.getMessageStoreConfig().getSyncFlushTimeout()); // 刷盤(pán) 

也就是說(shuō),理論上,要完全讓 Kafka 保證單個(gè) Broker 不丟失消息是做不到的,只能通過(guò)調(diào)整刷盤(pán)機(jī)制的參數(shù)緩解該情況。

比如,減少刷盤(pán)間隔,減少刷盤(pán)數(shù)據(jù)量大小。時(shí)間越短,性能越差,可靠性越好(盡可能可靠)。這是一個(gè)選擇題。

為了解決該問(wèn)題,Kafka 通過(guò) Producer 和 Broker 協(xié)同處理單個(gè) Broker 丟失參數(shù)的情況。

一旦 Producer 發(fā)現(xiàn) Broker 消息丟失,即可自動(dòng)進(jìn)行 retry。除非 retry 次數(shù)超過(guò)閾值(可配置),消息才會(huì)丟失。

此時(shí)需要生產(chǎn)者客戶(hù)端手動(dòng)處理該情況。那么 Producer 是如何檢測(cè)到數(shù)據(jù)丟失的呢?是通過(guò) ack 機(jī)制,類(lèi)似于 http 的三次握手的方式。

The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are allowed:

acks=0 If set to zero then the producer will not wait for any acknowledgment from the server at all. The record will be immediately added to the socket buffer and considered sent. No guarantee can be made that the server has received the record in this case, and the retries configuration will not take effect (as the client won’t generally know of any failures). The offset given back for each record will always be set to -1.

acks=1 This will mean the leader will write the record to its local log but will respond without awaiting full acknowledgement from all followers. In this case should the leader fail immediately after acknowledging the record but before the followers have replicated it then the record will be lost.

acks=allThis means the leader will wait for the full set of in-sync replicas to acknowledge the record. This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. This is the strongest available guarantee. This is equivalent to the acks=-1 setting.

http://kafka.apache.org/20/documentation.html

以上的引用是 Kafka 官方對(duì)于參數(shù) acks 的解釋(在老版本中,該參數(shù)是 request.required.acks):

①acks=0,Producer 不等待 Broker 的響應(yīng),效率最高,但是消息很可能會(huì)丟。

②acks=1,leader broker 收到消息后,不等待其他 follower 的響應(yīng),即返回 ack。也可以理解為 ack 數(shù)為 1。

此時(shí),如果 follower 還沒(méi)有收到 leader 同步的消息 leader 就掛了,那么消息會(huì)丟失。

按照上圖中的例子,如果 leader 收到消息,成功寫(xiě)入 PageCache 后,會(huì)返回 ack,此時(shí) Producer 認(rèn)為消息發(fā)送成功。

但此時(shí),按照上圖,數(shù)據(jù)還沒(méi)有被同步到 follower。如果此時(shí) leader 斷電,數(shù)據(jù)會(huì)丟失。

③acks=-1,leader broker 收到消息后,掛起,等待所有 ISR 列表中的 follower 返回結(jié)果后,再返回 ack。

-1 等效與 all。這種配置下,只有 leader 寫(xiě)入數(shù)據(jù)到 pagecache 是不會(huì)返回 ack 的,還需要所有的 ISR 返回“成功”才會(huì)觸發(fā) ack。

如果此時(shí)斷電,Producer 可以知道消息沒(méi)有被發(fā)送成功,將會(huì)重新發(fā)送。如果在 follower 收到數(shù)據(jù)以后,成功返回 ack,leader 斷電,數(shù)據(jù)將存在于原來(lái)的 follower 中。在重新選舉以后,新的 leader 會(huì)持有該部分?jǐn)?shù)據(jù)。

數(shù)據(jù)從 leader 同步到 follower,需要 2 步:

  • 數(shù)據(jù)從 Page Cache 被刷盤(pán)到 disk。因?yàn)橹挥?disk 中的數(shù)據(jù)才能被同步到 replica。
  • 數(shù)據(jù)同步到 replica,并且 replica 成功將數(shù)據(jù)寫(xiě)入 Page Cache。在 Producer 得到 ack 后,哪怕是所有機(jī)器都停電,數(shù)據(jù)也至少會(huì)存在于 leader 的磁盤(pán)內(nèi)。

上面第三點(diǎn)提到了 ISR 的列表的 follower,需要配合另一個(gè)參數(shù)才能更好的保證 ack 的有效性。

ISR 是 Broker 維護(hù)的一個(gè)“可靠的 follower 列表”,in-sync Replica 列表,Broker 的配置包含一個(gè)參數(shù):min.insync.replicas。

該參數(shù)表示 ISR 中最少的副本數(shù)。如果不設(shè)置該值,ISR 中的 follower 列表可能為空。此時(shí)相當(dāng)于 acks=1。

如上圖中: 

  • acks=0,總耗時(shí) f(t)=f(1)。
  • acks=1,總耗時(shí) f(t)=f(1)+f(2)。
  • acks=-1,總耗時(shí) f(t)=f(1)+max( f(A) , f(B) )+f(2)。

性能依次遞減,可靠性依次升高。

Producer

Producer丟失消息,發(fā)生在生產(chǎn)者客戶(hù)端。

為了提升效率,減少 IO,Producer 在發(fā)送數(shù)據(jù)時(shí)可以將多個(gè)請(qǐng)求進(jìn)行合并后發(fā)送。被合并的請(qǐng)求咋發(fā)送一線(xiàn)緩存在本地 buffer 中。

緩存的方式和前文提到的刷盤(pán)類(lèi)似,Producer 可以將請(qǐng)求打包成“塊”或者按照時(shí)間間隔,將 buffer 中的數(shù)據(jù)發(fā)出。

通過(guò) buffer 我們可以將生產(chǎn)者改造為異步的方式,而這可以提升我們的發(fā)送效率。

但是,buffer 中的數(shù)據(jù)就是危險(xiǎn)的。在正常情況下,客戶(hù)端的異步調(diào)用可以通過(guò) callback 來(lái)處理消息發(fā)送失敗或者超時(shí)的情況。

但是,一旦 Producer 被非法的停止了,那么 buffer 中的數(shù)據(jù)將丟失,Broker 將無(wú)法收到該部分?jǐn)?shù)據(jù)。

又或者,當(dāng) Producer 客戶(hù)端內(nèi)存不夠時(shí),如果采取的策略是丟棄消息(另一種策略是 block 阻塞),消息也會(huì)被丟失。

抑或,消息產(chǎn)生(異步產(chǎn)生)過(guò)快,導(dǎo)致掛起線(xiàn)程過(guò)多,內(nèi)存不足,導(dǎo)致程序崩潰,消息丟失。

 

Producer 采取批量發(fā)送的示意圖

異步發(fā)送消息生產(chǎn)速度過(guò)快的示意圖 

根據(jù)上圖,可以想到幾個(gè)解決的思路:

  • 異步發(fā)送消息改為同步發(fā)送消。或者 service 產(chǎn)生消息時(shí),使用阻塞的線(xiàn)程池,并且線(xiàn)程數(shù)有一定上限。整體思路是控制消息產(chǎn)生速度。
  • 擴(kuò)大 Buffer 的容量配置。這種方式可以緩解該情況的出現(xiàn),但不能杜絕。
  • service 不直接將消息發(fā)送到 buffer(內(nèi)存),而是將消息寫(xiě)到本地的磁盤(pán)中(數(shù)據(jù)庫(kù)或者文件),由另一個(gè)(或少量)生產(chǎn)線(xiàn)程進(jìn)行消息發(fā)送。相當(dāng)于是在 buffer 和 service 之間又加了一層空間更加富裕的緩沖層。

Consumer

Consumer 消費(fèi)消息有下面幾個(gè)步驟:

  • 接收消息
  • 處理消息
  • 反饋“處理完畢”(commited)

Consumer的消費(fèi)方式主要分為兩種:

  • 自動(dòng)提交 offset,Automatic Offset Committing
  • 手動(dòng)提交 offset,Manual Offset Control

Consumer 自動(dòng)提交的機(jī)制是根據(jù)一定的時(shí)間間隔,將收到的消息進(jìn)行 commit。commit 過(guò)程和消費(fèi)消息的過(guò)程是異步的。

也就是說(shuō),可能存在消費(fèi)過(guò)程未成功(比如拋出異常),commit 消息已經(jīng)提交了。此時(shí)消息就丟失了。

  1. Properties props = new Properties(); 
  2. props.put("bootstrap.servers""localhost:9092"); 
  3. props.put("group.id""test"); 
  4. // 自動(dòng)提交開(kāi)關(guān) 
  5. props.put("enable.auto.commit""true"); 
  6. // 自動(dòng)提交的時(shí)間間隔,此處是1s 
  7. props.put("auto.commit.interval.ms""1000"); 
  8. props.put("key.deserializer""org.apache.kafka.common.serialization.StringDeserializer"); 
  9. props.put("value.deserializer""org.apache.kafka.common.serialization.StringDeserializer"); 
  10. KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); 
  11. consumer.subscribe(Arrays.asList("foo""bar")); 
  12. while (true) { 
  13.         // 調(diào)用poll后,1000ms后,消息狀態(tài)會(huì)被改為 committed 
  14.   ConsumerRecords<String, String> records = consumer.poll(100); 
  15.   for (ConsumerRecord<String, String> record : records) 
  16.     insertIntoDB(record); // 將消息入庫(kù),時(shí)間可能會(huì)超過(guò)1000ms 

上面的示例是自動(dòng)提交的例子。如果此時(shí),insertIntoDB(record) 發(fā)生異常,消息將會(huì)出現(xiàn)丟失。

接下來(lái)是手動(dòng)提交的例子:

  1. Properties props = new Properties(); 
  2. props.put("bootstrap.servers""localhost:9092"); 
  3. props.put("group.id""test"); 
  4. // 關(guān)閉自動(dòng)提交,改為手動(dòng)提交 
  5. props.put("enable.auto.commit""false"); 
  6. props.put("key.deserializer""org.apache.kafka.common.serialization.StringDeserializer"); 
  7. props.put("value.deserializer""org.apache.kafka.common.serialization.StringDeserializer"); 
  8. KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); 
  9. consumer.subscribe(Arrays.asList("foo""bar")); 
  10. final int minBatchSize = 200; 
  11. List<ConsumerRecord<String, String>> buffer = new ArrayList<>(); 
  12. while (true) { 
  13.         // 調(diào)用poll后,不會(huì)進(jìn)行auto commit 
  14.   ConsumerRecords<String, String> records = consumer.poll(100); 
  15.   for (ConsumerRecord<String, String> record : records) { 
  16.     buffer.add(record); 
  17.   } 
  18.   if (buffer.size() >= minBatchSize) { 
  19.     insertIntoDb(buffer); 
  20.                 // 所有消息消費(fèi)完畢以后,才進(jìn)行commit操作 
  21.     consumer.commitSync(); 
  22.     buffer.clear(); 
  23.  } 

將提交類(lèi)型改為手動(dòng)以后,可以保證消息“至少被消費(fèi)一次”(at least once)。但此時(shí)可能出現(xiàn)重復(fù)消費(fèi)的情況,重復(fù)消費(fèi)不屬于本篇討論范圍。

上面兩個(gè)例子,是直接使用 Consumer 的 High level API,客戶(hù)端對(duì)于 offset 等控制是透明的。

也可以采用 Low level API 的方式,手動(dòng)控制 offset,也可以保證消息不丟,不過(guò)會(huì)更加復(fù)雜。

  1. try { 
  2.      while(running) { 
  3.          ConsumerRecords<String, String> records = consumer.poll(Long.MAX_VALUE); 
  4.          for (TopicPartition partition : records.partitions()) { 
  5.              List<ConsumerRecord<String, String>> partitionRecords = records.records(partition); 
  6.              for (ConsumerRecord<String, String> record : partitionRecords) { 
  7.                  System.out.println(record.offset() + ": " + record.value()); 
  8.              } 
  9.              long lastOffset = partitionRecords.get(partitionRecords.size() - 1).offset(); 
  10.              // 精確控制offset 
  11.              consumer.commitSync(Collections.singletonMap(partition, new OffsetAndMetadata(lastOffset + 1))); 
  12.          } 
  13.      } 
  14.  } finally { 
  15.    consumer.close(); 
  16.  } 

作者:DongGuoChao

編輯:陶家龍

出處:https://blog.dogchao.cn/?p=305

責(zé)任編輯:武曉燕 來(lái)源: blog.dogchao
相關(guān)推薦

2022-10-31 09:30:32

kafkaconsumer服務(wù)端

2021-01-05 10:48:38

RedisAOF日志RDB快照

2022-04-22 10:30:07

框架JavaScript前端

2021-11-16 07:02:05

函數(shù)Python返回值

2018-09-04 16:01:33

工作挑戰(zhàn)性技術(shù)

2021-01-23 23:18:21

Windows 10Windows微軟

2024-12-12 14:56:48

消息積壓MQ分區(qū)

2018-12-29 08:31:35

2017-12-08 11:14:21

2023-07-07 00:54:05

2017-06-30 13:23:59

SaaS供應(yīng)商破產(chǎn)

2015-10-10 10:42:03

企業(yè)級(jí)云服務(wù)AWS

2022-02-17 08:57:18

內(nèi)存設(shè)計(jì)進(jìn)程

2022-07-14 10:23:39

數(shù)據(jù)

2022-07-14 10:16:22

Flink

2010-12-22 14:40:51

3Q大戰(zhàn)

2018-10-30 10:49:53

物聯(lián)網(wǎng)IoT智能設(shè)備

2020-06-19 07:42:04

人工智能

2013-02-28 11:00:51

IE10瀏覽器

2015-10-28 17:09:13

技術(shù)創(chuàng)業(yè)
點(diǎn)贊
收藏

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

色琪琪一区二区三区亚洲区| 亚洲在线免费| 欧美一区二区免费| 欧美激情亚洲天堂| a天堂在线视频| 在线免费高清一区二区三区| 亚洲美女福利视频网站| 凹凸日日摸日日碰夜夜爽1| 激情在线视频| 久久国产精品第一页| 欧美国产日韩精品| 日韩av在线看免费观看| 最新亚洲国产| 狠狠躁夜夜躁人人躁婷婷91| 亚洲精品国产精品国自产观看| 99国产精品久久久久久久成人| 日韩亚洲在线| 久久夜精品香蕉| 成年人网站免费在线观看| 成人免费在线观看视频| 亚洲国产日韩一级| 一区二区三区精品国产| 五月婷婷免费视频| 国产最新精品免费| 欧美亚洲另类激情另类| 男人av资源站| 欧美女王vk| 亚洲精品在线三区| 五月天av在线播放| 国产在线观看www| 国产精品国产三级国产三级人妇| 国产一区二区在线网站| 夜夜躁日日躁狠狠久久av| 欧美天堂亚洲电影院在线观看| 亚洲香蕉成人av网站在线观看| 苍井空张开腿实干12次| 亚洲我射av| 在线观看av一区二区| 精品少妇人妻av免费久久洗澡| 麻豆tv在线| 欧美激情一区在线观看| 久久国产一区| 欧美一区二区三区黄片| 国产高清在线观看免费不卡| 国产精品自产拍在线观| 亚洲欧美自拍视频| 一区在线视频| 欧美精品久久久久久久久久| 三级影片在线看| 国产精品99久久| 日韩中文字在线| 亚洲色图第四色| 国产伦精品一区二区三区视频| 日韩av在线免费看| 国内精品免费视频| 亚洲精品高潮| 日韩成人一区二区三区在线观看| 久久男人av资源网站| 日韩黄色免费观看| 欧美永久精品| 欧美另类在线播放| 99热精品免费| 欧美激情成人在线| 久久国产精彩视频| 三级影片在线看| 欧美三级在线| 午夜精品福利视频| 香蕉免费毛片视频| 午夜在线a亚洲v天堂网2018| 日本精品视频在线观看| 天天射天天干天天| 日韩电影在线免费看| 国产精品成人播放| 怡红院成永久免费人全部视频| 日韩高清不卡在线| 国产精品一区二区性色av| 亚洲网站免费观看| 国模大尺度一区二区三区| 亚洲一区二区三区成人在线视频精品 | 国产精品久久久国产盗摄| 国产真实精品久久二三区| 96国产粉嫩美女| 日本免费不卡视频| 国产视频不卡一区| 路边理发店露脸熟妇泻火| av白虎一区| 欧美在线一区二区| 日本成人在线免费观看| 日本欧美韩国国产| 色老头一区二区三区在线观看| 亚洲成人生活片| 国产精品永久| 91视频免费网站| 香蕉视频911| 亚洲视频一二三区| 日韩在线视频在线观看| 91成人小视频| 日韩国产欧美区| 999精品在线视频| 亚洲一区亚洲| 亚洲一区二区三区在线视频| 日韩一区二区三区中文字幕| 亚洲欧美怡红院| 亚洲 高清 成人 动漫| 国产黄色精品| 精品国产乱码久久久久久闺蜜| 91av在线免费| 欧美在线高清| 日韩av片免费在线观看| 91亚洲欧美激情| av在线不卡免费看| 好吊妞www.84com只有这里才有精品 | 老妇喷水一区二区三区| 国产在线999| 亚洲精品综合久久| 国产精品第五页| 国产成人永久免费视频| 日韩精品分区| 欧美色视频在线观看| 国产sm在线观看| 欧美日韩亚洲在线观看| 欧美老女人xx| 中文在线字幕免费观| 国产69精品久久99不卡| 在线播放豆国产99亚洲| 成人观看网址| 制服.丝袜.亚洲.另类.中文| 黄色国产在线观看| 自拍偷拍欧美| 国产精品视频网站| 五十路在线视频| 亚洲国产成人精品视频| 国产日韩欧美久久| 蜜桃久久久久| 九九热精品视频| www.五月婷婷.com| 成人av电影在线网| 亚洲精品成人三区| 精品无人乱码一区二区三区| 欧美激情综合五月色丁香| 亚洲加勒比久久88色综合| 调教驯服丰满美艳麻麻在线视频| 亚洲精品888| 国产精品99久久99久久久二8| 色屁屁草草影院ccyycom| 中文字幕一区免费在线观看| 好吊妞无缓冲视频观看| 视频二区欧美毛片免费观看| 中文字幕视频在线免费欧美日韩综合在线看 | 日韩一区二区三区免费播放| 97人人做人人爱| 国产成人免费看一级大黄| 久久久久久黄色| av网址在线观看免费| 欧美韩一区二区| 欧美极品美女电影一区| 国产av无码专区亚洲av麻豆| 一区免费观看视频| gogogo高清免费观看在线视频| 偷拍亚洲色图| 国产精品成人va在线观看| 韩国福利在线| 一本一本久久a久久精品综合麻豆| 奇米777第四色| 我不卡伦不卡影院| 91久久在线观看| 成人在线观看亚洲| 日韩欧美在线不卡| 国产1区2区3区4区| 精品一区二区免费在线观看| 在线不卡视频一区二区| 999精品视频在线观看| 日韩在线小视频| 国产又大又粗又硬| 亚洲美女屁股眼交3| 波多野结衣办公室双飞 | 色老头一区二区三区在线观看| 国产日韩久久久| 国产精品久久久久久亚洲毛片| 亚洲一级片免费| 欧美韩国日本在线观看| 成人午夜激情免费视频| 黄页网站大全在线免费观看| 精品久久久久av影院| 精品无码人妻一区二区三| 成人高清在线视频| 精品人妻一区二区三区四区在线 | 欧美大香线蕉线伊人久久| 中国字幕a在线看韩国电影| 日韩国产在线看| 无码人妻精品一区二区三区不卡| ●精品国产综合乱码久久久久| www.国产福利| 影音先锋国产精品| 久久人人九九| 四虎国产精品免费久久5151| 操日韩av在线电影| 日韩a在线观看| 欧美日韩和欧美的一区二区| 日韩影院一区二区| 不卡视频一二三四| 日本免费观看网站| 一区二区电影| 日韩一本精品| 亚洲成人影音| 欧美孕妇孕交黑巨大网站| 欧美激情午夜| 亚洲成人在线网| 国产偷人爽久久久久久老妇app| 亚洲国产成人va在线观看天堂| 中文字幕免费高清| 国产精品 日产精品 欧美精品| av免费观看国产| 日韩一级毛片| 精品国产一区二区三区四区vr| 免费欧美网站| 日韩av黄色在线观看| av免费在线观| 一区二区欧美激情| 老牛影视av牛牛影视av| 日本精品一区二区三区高清 | 亚洲午夜久久久久久久久| 日韩在线一区二区| 久久这里只有精品8| 乱中年女人伦av一区二区| 91日本视频在线| 欧美色网在线| 91精品国产色综合久久不卡98| 亚洲s色大片| 亚洲女人天堂成人av在线| 国产视频一区二区三区四区五区| 91成人免费网站| 日韩伦理在线视频| 亚洲欧美日韩一区二区| 激情无码人妻又粗又大| 97久久精品人人爽人人爽蜜臀| 天堂av.com| 日本不卡123| 欧美a在线视频| 性欧美xxxx大乳国产app| 成人在线免费观看网址| 日韩国产综合| 奇米影视首页 狠狠色丁香婷婷久久综合| 4438全国亚洲精品观看视频| 国产精品精品一区二区三区午夜版 | 国产一区二区女| 免费涩涩18网站入口| 一区二区日韩免费看| 中文字幕无码精品亚洲资源网久久| 欧美日韩爆操| 人人妻人人澡人人爽欧美一区| 国产精品久久久久久麻豆一区软件 | 电影91久久久| 成人免费观看a| 95精品视频| 国产成人精品日本亚洲11| 国产精品日本一区二区三区在线| 国产美女高潮久久白浆| 国产福利亚洲| 国产日韩欧美电影在线观看| 亚洲青青一区| 91综合免费在线| 亚洲欧美在线人成swag| 91久久在线播放| 国产精品久久久久久av公交车| 国产日韩在线视频| 欧美成人aaa| 国产情人节一区| 久久69av| 俄罗斯精品一区二区三区| 一区二区在线视频观看| 高清av免费一区中文字幕| silk一区二区三区精品视频| 国内一区在线| 嫩草影视亚洲| 欧美日韩一区在线播放| 欧美电影免费| 成人区一区二区| 亚洲麻豆av| 熟妇人妻va精品中文字幕| 国产毛片一区| 日韩一级理论片| 久久成人精品无人区| 久久精品视频在线观看免费| 国产精品综合久久| 久久艹这里只有精品| 99精品久久免费看蜜臀剧情介绍| 素人fc2av清纯18岁| 日本一区二区三区四区| 免费中文字幕日韩| 亚洲国产精品久久艾草纯爱| 青青艹在线观看| 黄色日韩在线| 亚洲手机成人高清视频| 91精品国产91久久久久久最新毛片| 深夜福利影院在线观看| 一区二区三区在线观看欧美| 国产午夜免费视频| 狠狠综合久久av一区二区小说| 欧美日韩在线视频播放| 6080yy午夜一二三区久久| 视频一区二区三区国产| 在线播放精品一区二区三区 | 国产精品av免费| 韩国自拍一区| 日本va中文字幕| 国产乱人伦偷精品视频免下载 | 拔插拔插海外华人免费| 乱码第一页成人| 99精品视频免费版的特色功能| 91在线porny国产在线看| 国产91在线播放九色| 色欲综合视频天天天| 精品国产亚洲av麻豆| 亚洲少妇中文在线| 日本中文字幕中出在线| 欧美在线激情视频| 66精品视频在线观看| 婷婷久久伊人| 一区二区福利| 成人一区二区三区仙踪林| 国产夜色精品一区二区av| 亚洲一级免费在线观看| 亚洲精品毛片一区二区三区| 成人做爰视频www| 久久综合中文字幕| 欧美最顶级丰满的aⅴ艳星| 五十路六十路七十路熟婆| 伊人手机在线| 成人丝袜视频网| 热门国产精品亚洲第一区在线| www.超碰97| 成人午夜视屏| 高清在线观看日韩| 免费精品视频一区二区三区| 久久中文字幕二区| 欧美日韩在线免费播放| 成人av免费观看| 紧身裙女教师波多野结衣| 欧美综合一区二区| 无码国产伦一区二区三区视频| 欧美成人免费一级人片100| 黄色日韩网站| 日本不卡一区二区三区在线观看| 影音先锋久久| 久久久久亚洲av无码网站| 综合婷婷亚洲小说| 曰批又黄又爽免费视频| 亚洲欧美国产精品| 亚洲天堂手机| 美乳视频一区二区| 亚洲国产专区校园欧美| 麻豆免费在线观看视频| 尤物在线观看一区| www夜片内射视频日韩精品成人| 色偷偷av一区二区三区| 欧美性片在线观看| 色中色综合成人| 日韩电影免费在线观看网站| 日本激情视频一区二区三区| 欧美色窝79yyyycom| 午夜免费视频在线国产| 国产日韩av在线播放| 综合一区二区三区| 九九九久久久久久久| 亚洲一区二区三区中文字幕 | 亚洲国内欧美| 高清中文字幕mv的电影| 亚洲成a天堂v人片| 亚洲第一大网站| 午夜精品久久久99热福利| 国产欧美一区二区三区米奇| 国产v片免费观看| 91麻豆免费视频| 一本色道久久综合亚洲| 精品国产欧美成人夜夜嗨| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 蜜桃视频污在线观看| 97精品久久久| 国产精品tv| 91最新在线观看| 亚洲欧洲国产专区| 精品国产av一区二区| 午夜精品久久久久久久久久久久久| 欧美人与拘性视交免费看| 中文字幕第88页| 一区二区在线观看视频在线观看| 亚洲男女视频在线观看| 国产精品入口夜色视频大尺度| 天天射综合网视频| 欧美图片自拍偷拍| 欧美午夜www高清视频| av电影在线播放高清免费观看| 国产主播在线一区| 亚洲午夜极品| 成人黄色免费网址| 欧美视频一区在线| 成年人黄色大片在线| 色综合影院在线观看| 国产精品亚洲一区二区三区妖精|