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

原來Kafka也有事務(wù)啊,再也不擔(dān)心消息不一致了

開發(fā) 架構(gòu)
本文講解了通過kafka事務(wù)可以實(shí)現(xiàn)端到端的精確一次的消息語義,通過事務(wù)機(jī)制,KAFKA 實(shí)現(xiàn)了對(duì)多個(gè) topic? 的多個(gè) partition 的原子性的寫入,通過一個(gè)例子了解了一下如何使用事物。

前言

現(xiàn)在假定這么一個(gè)業(yè)務(wù)場景,從kafka中的topic獲取消息數(shù)據(jù),經(jīng)過一定加工處理后,發(fā)送到另外一個(gè)topic中,要求整個(gè)過程消息不能丟失,也不能重復(fù)發(fā)送,即實(shí)現(xiàn)端到端的Exactly-Once精確一次消息投遞。這該如何實(shí)現(xiàn)呢?

圖片

Kafka事務(wù)介紹

針對(duì)上面的業(yè)務(wù)場景,kafka已經(jīng)替我們想到了,在kafka 0.11版本以后,引入了一個(gè)重大的特性:冪等性和事務(wù)。

冪等性

這里提到冪等性的原因,主要是因?yàn)槭聞?wù)的啟用必須要先開啟冪等性,那么什么是冪等性呢?

冪等性是指生產(chǎn)者無論向kafka broker發(fā)送多少次重復(fù)的數(shù)據(jù),broker 端只會(huì)持久化一條,保證數(shù)據(jù)不會(huì)重復(fù)。

冪等性通過生產(chǎn)者配置項(xiàng)enable.idempotence=true開啟,默認(rèn)情況下為true。

冪等性實(shí)現(xiàn)原理

圖片

  1. 每條消息都有一個(gè)主鍵,這個(gè)主鍵由 <PID, Partition, SeqNumber>組成。
  • PID:ProducerID,每個(gè)生產(chǎn)者啟動(dòng)時(shí),Kafka 都會(huì)給它分配一個(gè) ID,ProducerID 是生產(chǎn)者的唯一標(biāo)識(shí),需要注意的是,Kafka 重啟也會(huì)重新分配 PID。
  • Partition:消息需要發(fā)往的分區(qū)號(hào)。
  • SeqNumber:生產(chǎn)者,他會(huì)記錄自己所發(fā)送的消息,給他們分配一個(gè)自增的 ID,這個(gè) ID 就是 SeqNumber,是該消息的唯一標(biāo)識(shí),每發(fā)送一條消息,序列號(hào)加 1。
  1. 對(duì)于主鍵相同的數(shù)據(jù),kafka 是不會(huì)重復(fù)持久化的,它只會(huì)接收一條。

冪等性缺點(diǎn)

根據(jù)冪等性的原理,我們發(fā)現(xiàn)它存在下面的缺點(diǎn):

  • 只能保證單分區(qū)、單會(huì)話內(nèi)的數(shù)據(jù)不重復(fù)
  • kafka 掛掉,重新給生產(chǎn)者分配了 PID,還是有可能產(chǎn)生重復(fù)的數(shù)據(jù)

那么如何實(shí)現(xiàn)跨分區(qū)、kafka broker重啟也能保證不重復(fù)呢?這就要使用事務(wù)了。

事務(wù)

所謂事務(wù),就是要求保證原子性,要么全部成功,要么全部失敗。那么具體該如何開啟呢?

  1. kafka要想開啟事務(wù)必須要啟用冪等性,即生產(chǎn)者配置enable.idempotence=true
  2. kafka生產(chǎn)者需要配置唯一的事務(wù)idtransactional.id, 最好為其設(shè)置一個(gè)有意義的名字。
  3. kafka消費(fèi)端也有一個(gè)配置項(xiàng)isolation.level和事務(wù)有很大關(guān)系。
  • read_uncommitted:默認(rèn)值,消費(fèi)端應(yīng)用可以看到(消費(fèi)到)未提交的事務(wù),當(dāng)然對(duì)于已提交的事務(wù)也是可見的。
  • read_committed:消費(fèi)端應(yīng)用只能消費(fèi)到提交的事務(wù)內(nèi)的消息。

Kafka事務(wù) API

現(xiàn)在我們用java的api來實(shí)現(xiàn)一下前面這個(gè)“消費(fèi)-處理-生產(chǎn)“的例子吧。

  1. 引入依賴
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.4.0</version>
</dependency>
  1. 創(chuàng)建事務(wù)的生產(chǎn)者
Properties prodcuerProps = new Properties();
// kafka地址
prodcuerProps.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");
// key序列化
prodcuerProps.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
// value序列化
prodcuerProps.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
// 啟用冪等性
producerProps.put("enable.idempotence", "true");
// 設(shè)置事務(wù)id
producerProps.put("transactional.id", "prod-1");
KafkaProducer<String, String> producer = new KafkaProducer(prodcuerProps);
  • enable.idempotence配置項(xiàng)目為true
  • 設(shè)置transactional.id
  1. 創(chuàng)建事務(wù)的消費(fèi)者
Properties consumerProps = new Properties();
consumerProps.put("bootstrap.servers", "localhost:9092");
consumerProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); 
consumerProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
consumerProps.put("group.id", "my-group-id");
// 設(shè)置consumer手動(dòng)提交
consumerProps.put("enable.auto.commit", "false");
// 設(shè)置隔離級(jí)別,讀取事務(wù)已提交的消息
consumerProps.put("isolation.level", "read_committed");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(consumerProps);
//訂閱主題
consumer.subscribe(Collections.singletonList("topic1"));
  • enable.auto.commit=false,設(shè)置手動(dòng)提交消費(fèi)者offset
  • 設(shè)置isolation.level=read_committed,消費(fèi)事務(wù)已提交的消息

4.核心邏輯

// 初始化事務(wù) 
producer.initTransactions();
while(true) {
 // 拉取消息 
 ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000L));
    if(!records.isEmpty()){
        // 準(zhǔn)備一個(gè) hashmap 來記錄:"分區(qū)-消費(fèi)位移" 鍵值對(duì)
        HashMap<TopicPartition, OffsetAndMetadata> offsetsMap = new HashMap<>();
        // 開啟事務(wù) 
        producer.beginTransaction();
        try {
            // 獲取本批消息中所有的分區(qū)
            Set<TopicPartition> partitions = records.partitions();
            // 遍歷每個(gè)分區(qū)
            for (TopicPartition partition : partitions) {
                // 獲取該分區(qū)的消息
                List<ConsumerRecord<String, String>> partitionRecords = records.records(partition);
                // 遍歷每條消息
                for (ConsumerRecord<String, String> record : partitionRecords) {
                    // 執(zhí)行數(shù)據(jù)的業(yè)務(wù)處理邏輯
                    ProducerRecord<String, String> outRecord = new ProducerRecord<>("topic2", record.key(), record.value().toUpperCase());
                    // 將處理結(jié)果寫入 kafka
                    producer.send(outRecord);
                }

                // 將處理完的本分區(qū)對(duì)應(yīng)的消費(fèi)位移記錄到 hashmap 中
                long offset = partitionRecords.get(partitionRecords.size() - 1).offset();
                // 事務(wù)提交的是即將到來的偏移量,這意味著我們需要加 1
                offsetsMap.put(partition,new OffsetAndMetadata(offset+1));
            }
            // 向事務(wù)管理器提交消費(fèi)位移 
            producer.sendOffsetsToTransaction(offsetsMap,"groupid");
            // 提交事務(wù) 
            producer.commitTransaction();
        } catch(Exeception e) {
            e.printStackTrace();
            // 終止事務(wù) 
            producer.abortTransaction();
        }
    }
}
  • initTransactions(): 初始化事務(wù)
  • beginTransaction(): 開啟事務(wù)
  • sendOffsetsToTransaction(): 在事務(wù)內(nèi)提交已經(jīng)消費(fèi)的偏移量(主要用于消費(fèi)者)
  • commitTransaction(): 提交事務(wù)
  • abortTransaction(): 放棄事務(wù)

Kafka事務(wù)實(shí)現(xiàn)原理

kafka事務(wù)的實(shí)現(xiàn)引入了事務(wù)協(xié)調(diào)器,如下圖所示:

圖片

  1. 生產(chǎn)者使用事務(wù)必須配置事務(wù)id, kafka根據(jù)事務(wù)id計(jì)算分配事務(wù)協(xié)調(diào)器
  2. 事務(wù)協(xié)調(diào)器返回pid,前面的冪等性中需要
  3. 開始發(fā)送消息到topic中,不過這些消息與普通的消息不同,它們帶著一個(gè)字段標(biāo)識(shí)自己是事務(wù)消息
  4. 當(dāng)生產(chǎn)者事務(wù)內(nèi)的消息發(fā)送完畢,會(huì)向事務(wù)協(xié)調(diào)器發(fā)送 commit 或 abort 請(qǐng)求,等待 kafka 響應(yīng)
  5. 事務(wù)協(xié)調(diào)器收到請(qǐng)求后先持久化到內(nèi)置事務(wù)主題__transaction_state中,__transaction_state默認(rèn)有50個(gè)分區(qū),每個(gè)分區(qū)負(fù)責(zé)一部分事務(wù)。事務(wù)劃分是根據(jù)transactional.id的hashcode值%50,計(jì)算出該事務(wù)屬于哪個(gè)分區(qū)。 該分區(qū)Leader副本所在的broker節(jié)點(diǎn)即為這個(gè)transactional.id對(duì)應(yīng)的Transaction Coordinator節(jié)點(diǎn),這也是上面第一步中的計(jì)算邏輯。
  6. 事務(wù)協(xié)調(diào)器后臺(tái)會(huì)跟topic通信,告訴它們事務(wù)是成功還是失敗的。
  • 如果是成功,topic會(huì)匯報(bào)自己已經(jīng)收到消息,協(xié)調(diào)者收到主題的回應(yīng)便確認(rèn)了事務(wù)完成,并持久化這一結(jié)果。
  • 如果是失敗的,主題會(huì)把這個(gè)事務(wù)內(nèi)的消息丟棄,并匯報(bào)給協(xié)調(diào)者,協(xié)調(diào)者收到所有結(jié)果后再持久化這一信息,事務(wù)結(jié)束。
  1. 持久化第6步中的事務(wù)成功或者失敗的信息, 如果kafka broker配置max.transaction.timeout.ms之前既不提交也不中止事務(wù), kafka broker將中止事務(wù)本身。 此屬性的默認(rèn)值為 15 分鐘。

總結(jié)

本文講解了通過kafka事務(wù)可以實(shí)現(xiàn)端到端的精確一次的消息語義,通過事務(wù)機(jī)制,KAFKA 實(shí)現(xiàn)了對(duì)多個(gè) topic 的多個(gè) partition 的原子性的寫入,通過一個(gè)例子了解了一下如何使用事物。同時(shí)也簡單介紹了事務(wù)實(shí)現(xiàn)的原理,它底層必須要依賴kafka的冪等性機(jī)制,同時(shí)通過類似“二段提交”的方式保證事務(wù)的原子性。

責(zé)任編輯:武曉燕 來源: JAVA旭陽
相關(guān)推薦

2021-12-06 15:02:37

RabbitMQ系統(tǒng)消息

2021-12-21 09:05:46

命令Linux敲錯(cuò)

2020-04-30 09:19:56

Docker容器虛擬機(jī)

2024-05-11 07:37:43

數(shù)據(jù)Redis策略

2020-01-21 21:15:16

WiFi網(wǎng)絡(luò)WiFi6

2025-04-03 09:51:37

2015-05-29 09:01:48

2020-06-15 08:03:17

大文件OOM內(nèi)存

2017-06-20 09:42:52

網(wǎng)絡(luò)安全法數(shù)據(jù)隱私法網(wǎng)絡(luò)安全

2023-07-14 21:34:40

JVM上下線線程

2017-08-25 17:59:41

浮點(diǎn)運(yùn)算C語言

2018-07-15 08:18:44

緩存數(shù)據(jù)庫數(shù)據(jù)

2021-08-13 22:38:36

大數(shù)據(jù)互聯(lián)網(wǎng)技術(shù)

2019-09-04 10:00:07

手機(jī)人臉識(shí)別

2020-07-20 14:06:38

數(shù)據(jù)庫主從同步服務(wù)

2018-07-08 07:38:28

數(shù)據(jù)庫緩存數(shù)據(jù)

2022-03-18 10:53:49

數(shù)據(jù)系統(tǒng)架構(gòu)

2021-05-27 18:06:30

MySQL編碼數(shù)據(jù)

2024-04-07 09:00:00

MySQL

2010-06-02 10:53:28

MySQL版本
點(diǎn)贊
收藏

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

天天操天天爱天天爽| 免费中文日韩| 日韩和一区二区| 精品影片在线观看的网站| 欧美中文字幕不卡| 男插女免费视频| 色综合久久久久久| 青青草伊人久久| 久久香蕉国产线看观看av| 最新版天堂资源在线| 中文字幕这里只有精品| 中文字幕在线一区免费| 国产欧美欧洲| 一级黄色免费片| 99在线观看免费视频精品观看| 在线观看免费高清视频97| 国产免费中文字幕| 黄色漫画在线免费看| 久久一区二区三区国产精品| 亚洲精品免费av| 依依成人综合网| 中文在线播放一区二区| 亚洲毛片在线免费观看| 亚洲第一成肉网| 日韩免费va| 亚洲国产精品一区二区久久| 亚洲精品tv久久久久久久久| 天天操天天干天天操| 极品少妇xxxx精品少妇| 国产精品高清在线| 一级片中文字幕| 欧美日本国产| 爱福利视频一区| 久久美女免费视频| 青青草久久爱| 欧美成人激情免费网| 污污网站在线观看视频| 精品成人免费一区二区在线播放| 午夜精品福利一区二区三区av| 三年中文高清在线观看第6集 | 日韩欧美黄色影院| 亚洲色图 在线视频| 波多野结衣久久精品| 亚洲电影在线播放| 强开小嫩苞一区二区三区网站| 岛国视频免费在线观看| 久久亚洲影视婷婷| 久久国产精品99久久久久久丝袜| 性中国xxx极品hd| 国产一区二区久久| 成人亚洲激情网| 国产精品熟女久久久久久| 日本不卡一区二区三区| 国产精品老女人视频| 国产视频1区2区| 久久亚洲精选| 国产成人精品综合久久久| 亚洲成人第一网站| 久久资源在线| 国产精品99导航| 久久久久精彩视频| 久久精品二区亚洲w码| 国产精品丝袜高跟| 在线观看毛片网站| 精品无码三级在线观看视频| 成人欧美在线视频| 精品国产av一区二区| 国产成人在线影院| 国产精品白丝jk白祙| 欧洲成人一区二区三区| 99国产精品久久久久久久久久 | 国产精品视频午夜| 亚洲影院一区二区三区| 国内外成人在线| 成人精品水蜜桃| 日韩一区二区三区不卡| 26uuu国产电影一区二区| 欧美午夜视频在线| 思思99re6国产在线播放| |精品福利一区二区三区| 国产人妻互换一区二区| a级大胆欧美人体大胆666| 精品国产1区2区| 美女网站免费观看视频| 日韩色性视频| 欧美精品一区男女天堂| 精品久久久久久中文字幕人妻最新| 亚洲精品无吗| www亚洲欧美| 国产一级一片免费播放放a| 9久re热视频在线精品| 国产97在线播放| 99久久婷婷国产一区二区三区| 丁香网亚洲国际| 欧美一区免费视频| 国产成人无吗| 欧美日韩一区二区三区| 天天综合网久久| 成人午夜大片| 国产一区二区三区久久精品| 国产精品老熟女一区二区| 在线视频精品| 91久久久国产精品| 头脑特工队2在线播放| 亚洲欧洲在线观看av| 毛片在线播放视频| 日本久久久久| 日韩精品黄色网| 久久久久久久久久97| 国产视频欧美| 亚洲a在线播放| 成人在线观看黄色| 精品国产成人av| 亚洲一区二区图片| 欧美伦理在线视频| 97在线看免费观看视频在线观看| 国产一区二区在线不卡| 久久蜜桃av一区精品变态类天堂| 蜜臀在线免费观看| 日韩欧美精品一区二区综合视频| 欧美va亚洲va| 国产一区二区三区在线视频观看| 久久久人人人| 成人在线看片| 高清免费电影在线观看| 91久久人澡人人添人人爽欧美| 亚洲v在线观看| 久久久久免费av| 国产精品白嫩美女在线观看 | 久久久国产精品x99av| 黄色片免费观看视频| 国产成人在线网站| 一区二区三区四区久久| 成人亚洲网站| 国产亚洲激情在线| 国产精品男女视频| 99精品欧美一区二区三区小说 | 午夜激情电影在线播放| 精品粉嫩超白一线天av| 亚洲av鲁丝一区二区三区| 麻豆国产一区二区| 欧美日韩精品一区| 神马久久午夜| 精品亚洲一区二区三区四区五区| 国产精品16p| 成人妖精视频yjsp地址| 一二三四中文字幕| 国产在线一区不卡| 久久久黄色av| 国产肥老妇视频| 最新热久久免费视频| 亚洲欧美aaa| 婷婷综合激情| 亚洲综合在线小说| 七七成人影院| 精品久久久久久综合日本欧美| 久久黄色免费视频| www.av精品| 日韩在线一级片| 国内精品久久久久久久影视简单 | 在线观看免费中文字幕| 欧美国产综合一区二区| 2025韩国理伦片在线观看| 日韩在线不卡| 91理论片午午论夜理片久久| 八戒八戒神马在线电影| 欧美va在线播放| 成年人免费看毛片| 久久蜜臀精品av| 亚洲黄色av网址| 亚洲网色网站| 国产高清一区视频| 乱人伦视频在线| 亚洲人在线视频| 中文字幕日韩第一页| 成人免费一区二区三区在线观看| 欧美体内she精高潮| 影音先锋久久久| 欧美视频1区| 日韩黄色三级| 久久久综合免费视频| 九色网友自拍视频手机在线| 欧美三级视频在线播放| 一级黄色录像视频| 91蝌蚪porny| 一女二男3p波多野结衣| 亚洲大胆在线| 天堂资源在线亚洲资源| 日韩欧美中文字幕在线视频| 91精品国产成人www| 91xxx在线观看| 精品女同一区二区| 无码人妻丰满熟妇区五十路| 亚洲欧美区自拍先锋| 亚洲制服丝袜在线播放| 久久精品国产一区二区| 久艹在线免费观看| 成人三级视频| 国产一区二区三区无遮挡 | 5g影院天天爽成人免费下载| а√在线中文网新版地址在线| 中日韩美女免费视频网址在线观看 | ririsao久久精品一区| 中文字幕日韩欧美在线| 黄色一级a毛片| 欧美日韩精品一区二区天天拍小说| 欧美日韩精品在线观看视频| 久久久美女艺术照精彩视频福利播放| 亚洲成人手机在线观看| 模特精品在线| 久久久久久av无码免费网站下载| 国产影视一区| 激情视频一区二区| 日韩三级精品| 国产精品中文在线| 亚洲www免费| 国语自产精品视频在线看一大j8| 麻豆传媒视频在线观看| 亚洲欧美国产制服动漫| 性欧美8khd高清极品| 欧美日韩和欧美的一区二区| 日本免费观看视| 亚洲精品日韩综合观看成人91| 韩国女同性做爰三级| 成+人+亚洲+综合天堂| 亚洲高清在线不卡| 久久精品免费看| 美女少妇一区二区| 久久成人免费| 五十路熟女丰满大屁股| 欧美三级乱码| 国产制服91一区二区三区制服| 热久久天天拍国产| 精品国产一区二区三区四区精华| 91成人短视频| 97久久人人超碰caoprom欧美| 95精品视频| 成人春色激情网| 欧美不卡高清一区二区三区| 欧美在线视频免费播放| 欧美少妇精品| 91高潮在线观看| 亚洲美女炮图| 5566成人精品视频免费| 国产自产自拍视频在线观看| 国内精品一区二区三区| 女子免费在线观看视频www| 久久国产精品免费视频| 91精品久久久| 欧美激情成人在线视频| 国产精品186在线观看在线播放| 九九热最新视频//这里只有精品 | 亚洲欧美色图小说| 精品一区二区在线观看视频| 中文文精品字幕一区二区| 我不卡一区二区| 亚洲国产精品v| 992在线观看| 日韩理论片在线| 黄色一级视频免费观看| 亚洲综合精品自拍| 日韩精品在线免费看| 日韩欧美在线视频| 免费在线不卡av| 欧美日本国产一区| 国产极品久久久| 精品福利一二区| 黄色的视频在线免费观看| 在线观看国产精品91| 里番在线观看网站| 欧美黑人一区二区三区| 高端美女服务在线视频播放| 欧美伊久线香蕉线新在线| 肉色欧美久久久久久久免费看| 国产精品久久久久久久久久久新郎| yiren22亚洲综合| 亚洲最大福利视频| 久久悠悠精品综合网| 欧美一区二区在线视频观看| 91综合网人人| 日韩专区第三页| 香蕉久久夜色精品| 男人添女人下面免费视频| 国产精品一区二区在线观看不卡| 五月天丁香社区| 国产亚洲女人久久久久毛片| 老熟妇高潮一区二区三区| 午夜精品一区二区三区三上悠亚| 无码人妻精品一区二区三区9厂 | 国产精品jvid在线观看蜜臀| 日日夜夜一区| 国产在线播放一区二区| 欧美色女视频| 2019日韩中文字幕mv| 日日夜夜免费精品| 中国老熟女重囗味hdxx| 久久精品视频一区二区| 午夜国产福利一区二区| 色综合色狠狠综合色| 国产成人av免费看| 亚洲欧美激情另类校园| 在线观看中文字幕的网站| 欧美制服第一页| 色妞ww精品视频7777| 日韩欧美亚洲在线| 国内精品嫩模av私拍在线观看| 国产精品久久久久9999小说| 国产成人av一区二区| 极品尤物一区二区| 欧美日韩国产精品一区二区三区四区 | 欧美午夜精品理论片a级按摩| 亚洲第一视频在线| 在线国产精品播放| 草草在线观看| 91九色蝌蚪嫩草| 成人激情开心网| 久久国产亚洲精品无码| 高潮精品一区videoshd| 欧美一级特黄高清视频| 色婷婷精品久久二区二区蜜臀av| 国产黄色大片网站| 色yeye香蕉凹凸一区二区av| 日本黄色免费在线| 国产伦精品一区二区三区照片91| 亚洲精品国产成人影院| 国产一线二线三线在线观看| 99r国产精品| 亚洲国产综合久久| 精品剧情v国产在线观看在线| 拍真实国产伦偷精品| 国产精品九九九| 欧美男同视频网| 每日在线更新av| 99re这里只有精品视频首页| 激情综合网五月天| 欧美一区二区三区婷婷月色| 麻豆tv免费在线观看| 国产精品人成电影在线观看| 国产精品片aa在线观看| 国产91对白刺激露脸在线观看| www.欧美亚洲| 日韩av免费网址| 亚洲精品99久久久久| 操人在线观看| 久久综合一区| 久久不射2019中文字幕| 日韩人妻无码一区二区三区| 精品免费在线视频| 日本五码在线| 日本韩国欧美精品大片卡二| 九一国产精品| 国产一二三四在线视频| 欧美国产视频在线| 中文区中文字幕免费看| 中文字幕日韩欧美在线| 日韩毛片免费视频一级特黄| 爱爱爱视频网站| 国产一区二区三区久久悠悠色av| 全网免费在线播放视频入口| 欧美成人a∨高清免费观看| 波多野结衣中文字幕久久| 精品国产aⅴ麻豆| 鲁大师影院一区二区三区| 国产美女免费网站| 69av一区二区三区| 污污视频在线看| 精品国产乱码久久久久久88av| 亚洲永久在线| 欧美另类z0zx974| 91麻豆精品91久久久久久清纯| 日韩另类在线| 久久精精品视频| 免费人成网站在线观看欧美高清| 欧美大片xxxx| 亚洲国产精品久久久久| 性欧美1819sex性高清| 亚洲伊人婷婷| 国产suv一区二区三区88区| 可以免费在线观看的av| 伊人久久免费视频| 亚洲码欧美码一区二区三区| 一女被多男玩喷潮视频| 国产精品美女一区二区| 亚洲av无码一区二区三区性色| 97色在线播放视频| 欧美高清视频手机在在线| 少妇熟女视频一区二区三区| 色综合夜色一区| a黄色片在线观看| 蜜桃91精品入口| 精品一区二区三区在线播放视频 | 精品日本一区二区| 毛片av一区二区三区| 久热这里只有精品在线| 国产亚洲美女久久| 视频一区中文字幕精品| 搡女人真爽免费午夜网站| 伊人开心综合网| caoporn国产精品免费视频| 国产女人水真多18毛片18精品|