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

實(shí)時(shí)監(jiān)視同步數(shù)據(jù)庫(kù)變更,這個(gè)框架真是神器

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
我們數(shù)據(jù)庫(kù)中的數(shù)據(jù)一直在變化,有時(shí)候我們希望能監(jiān)聽(tīng)數(shù)據(jù)庫(kù)數(shù)據(jù)的變化并根據(jù)變化做出一些反應(yīng),比如更新對(duì)應(yīng)變化數(shù)據(jù)的緩存、增量同步到其它數(shù)據(jù)源、對(duì)數(shù)據(jù)進(jìn)行檢測(cè)和審計(jì)等等。而這種技術(shù)就叫變更數(shù)據(jù)捕獲(Change Data Capture)。

[[403537]]

我們數(shù)據(jù)庫(kù)中的數(shù)據(jù)一直在變化,有時(shí)候我們希望能監(jiān)聽(tīng)數(shù)據(jù)庫(kù)數(shù)據(jù)的變化并根據(jù)變化做出一些反應(yīng),比如更新對(duì)應(yīng)變化數(shù)據(jù)的緩存、增量同步到其它數(shù)據(jù)源、對(duì)數(shù)據(jù)進(jìn)行檢測(cè)和審計(jì)等等。而這種技術(shù)就叫變更數(shù)據(jù)捕獲(Change Data Capture)。對(duì)于這種技術(shù)我們可能知道一個(gè)國(guó)內(nèi)比較知名的框架Canal,非常好用!但是Canal有一個(gè)局限性就是只能用于Mysql的變更數(shù)據(jù)捕獲。今天來(lái)介紹另一種更加強(qiáng)大的分布式CDC框架Debezium。

Debezium

提起Debezium這個(gè)框架,相信大多數(shù)普通開(kāi)發(fā)者都比較陌生,但是提及它所屬的公司大家一定不會(huì)陌生。

紅帽公司

沒(méi)錯(cuò)就是開(kāi)源界最成功的紅帽公司。Debezium是為捕獲數(shù)據(jù)更改的流式處理框架,開(kāi)源免費(fèi)。Debezium近乎實(shí)時(shí)地監(jiān)控?cái)?shù)據(jù)庫(kù)行級(jí)別(row-level)的數(shù)據(jù)變更,并針對(duì)變更可以做出反應(yīng)。而且只有已提交的變更才是可見(jiàn)的,所以不用擔(dān)心事務(wù)問(wèn)題或者更改被回滾的問(wèn)題。Debezium為所有的數(shù)據(jù)庫(kù)更改事件提供了一個(gè)統(tǒng)一的模型,所以不用擔(dān)心每種數(shù)據(jù)庫(kù)系統(tǒng)的復(fù)雜性。Debezium提供了對(duì)MongoDB、MySQL、PostgreSQL、SQL Server、Oracle、DB2等數(shù)據(jù)庫(kù)的支持。

另外借助于Kafka Connector可以開(kāi)發(fā)出一個(gè)基于事件流的變更捕獲平臺(tái),具有高容錯(cuò)率和極強(qiáng)的擴(kuò)展性。

Debezium Kafka 架構(gòu)

如圖所示,部署了用于 MySQL 和 PostgresSQL 的 Debezium Kafka連接器以捕獲對(duì)這兩種類型數(shù)據(jù)庫(kù)的更改事件,然后將這些更改通過(guò)下游的Kafka Connector將記錄傳輸?shù)狡渌到y(tǒng)或者數(shù)據(jù)庫(kù)(例如 Elasticsearch、數(shù)據(jù)倉(cāng)庫(kù)、分析系統(tǒng))或緩存。

另一種玩法就是將Debezium內(nèi)置到應(yīng)用程序中,來(lái)做一個(gè)類似消息總線的設(shè)施,將數(shù)據(jù)變更事件傳遞給訂閱的下游系統(tǒng)中。

Debezium內(nèi)置服務(wù)器架構(gòu)

Debezium對(duì)數(shù)據(jù)的完整性和可用性也是做了不少的工作。Debezium用持久化的、有副本備份的日志來(lái)記錄數(shù)據(jù)庫(kù)數(shù)據(jù)變化的歷史,因此,你的應(yīng)用可以隨時(shí)停止再重啟,而不會(huì)錯(cuò)過(guò)它停止運(yùn)行時(shí)發(fā)生的事件,保證了所有的事件都能被正確地、完全地處理掉。

稍后我會(huì)演示一個(gè)Spring Boot集成Debezium的數(shù)據(jù)捕獲系統(tǒng)。

Spring Boot集成Debezium

理論介紹并不能讓你直觀感受到Debezium的能力,所以接下來(lái)我將使用嵌入式Debezium引擎來(lái)演示一下。

流程圖

如上圖所示,當(dāng)我們變更MySQL數(shù)據(jù)庫(kù)中的某行數(shù)據(jù)時(shí),通過(guò)Debezium實(shí)時(shí)監(jiān)聽(tīng)到binlog日志的變化觸發(fā)捕獲變更事件,然后獲取到變更事件模型,并做出響應(yīng)(消費(fèi))。接下來(lái)我們來(lái)搭建環(huán)境。

MySQL開(kāi)啟binlog日志

為了方便這里使用MySQL的Docker容器,對(duì)應(yīng)的腳本為:

  1. # 運(yùn)行mysql容器  
  2. docker run --name mysql-service -v d:/mysql/data:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time_zone="+8:00" 
  3. # 設(shè)置binlog位置 
  4. docker exec mysql-service bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf" 
  5. # 配置 mysql的server-id 
  6. docker exec mysql-service bash -c "echo 'server-id=123454' >> /etc/mysql/mysql.conf.d/mysqld.cnf" 

上面的腳本運(yùn)行了一個(gè)用戶名為root、密碼為123456并且將數(shù)據(jù)掛載到本地路徑d:/mysql/data的MySQL容器,同時(shí)開(kāi)啟了binlog日志,并設(shè)置server-id為123454,這些信息后面配置會(huì)用。

請(qǐng)注意如果不使用root用戶的話,需要保證用戶具有SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT四種權(quán)限。

Spring Boot集成嵌入式Debezium

Debezium依賴

Spring Boot的應(yīng)用中加入下列依賴:

  1. <dependency> 
  2.      <groupId>io.debezium</groupId> 
  3.      <artifactId>debezium-api</artifactId> 
  4.      <version>${debezium.version}</version> 
  5.  </dependency> 
  6.  <dependency> 
  7.      <groupId>io.debezium</groupId> 
  8.      <artifactId>debezium-embedded</artifactId> 
  9.      <version>${debezium.version}</version> 
  10.  </dependency> 
  11.  <dependency> 
  12.      <groupId>io.debezium</groupId> 
  13.      <artifactId>debezium-connector-mysql</artifactId> 
  14.      <version>${debezium.version}</version> 
  15.  </dependency> 

目前最新的版本號(hào)為1.5.2.Final。

聲明配置

然后聲明需要的配置:

  1. /** 
  2.      * Debezium 配置. 
  3.      * 
  4.      * @return configuration 
  5.      */ 
  6.     @Bean 
  7.     io.debezium.config.Configuration debeziumConfig() { 
  8.         return io.debezium.config.Configuration.create() 
  9. //            連接器的Java類名稱 
  10.                 .with("connector.class", MySqlConnector.class.getName()) 
  11. //            偏移量持久化,用來(lái)容錯(cuò) 默認(rèn)值 
  12.                 .with("offset.storage""org.apache.kafka.connect.storage.FileOffsetBackingStore"
  13. //                偏移量持久化文件路徑 默認(rèn)/tmp/offsets.dat  如果路徑配置不正確可能導(dǎo)致無(wú)法存儲(chǔ)偏移量 可能會(huì)導(dǎo)致重復(fù)消費(fèi)變更 
  14. //                如果連接器重新啟動(dòng),它將使用最后記錄的偏移量來(lái)知道它應(yīng)該恢復(fù)讀取源信息中的哪個(gè)位置。 
  15.                 .with("offset.storage.file.filename""C:/Users/n1/IdeaProjects/spring-boot-debezium/tmp/offsets.dat"
  16. //                捕獲偏移量的周期 
  17.                 .with("offset.flush.interval.ms""6000"
  18. //               連接器的唯一名稱 
  19.                 .with("name""mysql-connector"
  20. //                數(shù)據(jù)庫(kù)的hostname 
  21.                 .with("database.hostname""localhost"
  22. //                端口 
  23.                 .with("database.port""3306"
  24. //                用戶名 
  25.                 .with("database.user""root"
  26. //                密碼 
  27.                 .with("database.password""123456"
  28. //                 包含的數(shù)據(jù)庫(kù)列表 
  29.                 .with("database.include.list""etl"
  30. //                是否包含數(shù)據(jù)庫(kù)表結(jié)構(gòu)層面的變更,建議使用默認(rèn)值true 
  31.                 .with("include.schema.changes""false"
  32. //                mysql.cnf 配置的 server-id 
  33.                 .with("database.server.id""123454"
  34. //                 MySQL 服務(wù)器或集群的邏輯名稱 
  35.                 .with("database.server.name""customer-mysql-db-server"
  36. //                歷史變更記錄 
  37.                 .with("database.history""io.debezium.relational.history.FileDatabaseHistory"
  38. //                歷史變更記錄存儲(chǔ)位置  
  39.                 .with("database.history.file.filename""C:/Users/n1/IdeaProjects/spring-boot-debezium/tmp/dbhistory.dat"
  40.                 .build(); 
  41.     } 

配置分為兩部分:

  • 一部分是Debezium Engine的配置屬性,參見(jiàn)Debezium Engine配置[1]。
  • 一部分是Mysql Connector的配置屬性,參見(jiàn)Mysql Connector配置[2]。

實(shí)例化Debezium Engine

應(yīng)用程序需要為運(yùn)行的Mysql Connector啟動(dòng)一個(gè)Debezium引擎,這個(gè)引擎會(huì)以異步線程的形式運(yùn)行,它包裝了整個(gè)Mysql Connector連接器的生命周期。聲明一個(gè)引擎需要以下幾步:

聲明收到數(shù)據(jù)變更捕獲信息的格式,提供了JSON、Avro、Protobuf、Connect、CloudEvents等格式。

加載上面定義的配置。

聲明消費(fèi)數(shù)據(jù)更改事件的函數(shù)方法。

聲明的偽代碼:

  1. DebeziumEngine<RecordChangeEvent<SourceRecord>> debeziumEngine = DebeziumEngine.create(ChangeEventFormat.of(Connect.class)) 
  2.         .using(configuration.asProperties()) 
  3.         .notifying(this::handlePayload) 
  4.         .build(); 

handlePayload方法為:

  1. private void handlePayload(List<RecordChangeEvent<SourceRecord>> recordChangeEvents, DebeziumEngine.RecordCommitter<RecordChangeEvent<SourceRecord>> recordCommitter) { 
  2.     recordChangeEvents.forEach(r -> { 
  3.         SourceRecord sourceRecord = r.record(); 
  4.         Struct sourceRecordChangeValue = (Struct) sourceRecord.value(); 
  5.  
  6.         if (sourceRecordChangeValue != null) { 
  7.             // 判斷操作的類型 過(guò)濾掉讀 只處理增刪改   這個(gè)其實(shí)可以在配置中設(shè)置 
  8.             Envelope.Operation operation = Envelope.Operation.forCode((String) sourceRecordChangeValue.get(OPERATION)); 
  9.  
  10.             if (operation != Envelope.Operation.READ) { 
  11.                 String record = operation == Envelope.Operation.DELETE ? BEFORE : AFTER
  12.                 // 獲取增刪改對(duì)應(yīng)的結(jié)構(gòu)體數(shù)據(jù) 
  13.                 Struct struct = (Struct) sourceRecordChangeValue.get(record); 
  14.                 // 將變更的行封裝為Map 
  15.                 Map<String, Object> payload = struct.schema().fields().stream() 
  16.                         .map(Field::name
  17.                         .filter(fieldName -> struct.get(fieldName) != null
  18.                         .map(fieldName -> Pair.of(fieldName, struct.get(fieldName))) 
  19.                         .collect(toMap(Pair::getKey, Pair::getValue)); 
  20.                 // 這里簡(jiǎn)單打印一下 
  21.                 System.out.println("payload = " + payload); 
  22.             } 
  23.         } 
  24.     }); 

引擎的啟動(dòng)和關(guān)閉正好契合Spring Bean的生命周期:

  1. @Data 
  2. public class DebeziumServerBootstrap implements InitializingBean, SmartLifecycle { 
  3.  
  4.     private final Executor executor = Executors.newSingleThreadExecutor(); 
  5.     private DebeziumEngine<?> debeziumEngine; 
  6.  
  7.     @Override 
  8.     public void start() { 
  9.         executor.execute(debeziumEngine); 
  10.     } 
  11.  
  12.     @SneakyThrows 
  13.     @Override 
  14.     public void stop() { 
  15.         debeziumEngine.close(); 
  16.     } 
  17.  
  18.     @Override 
  19.     public boolean isRunning() { 
  20.         return false
  21.     } 
  22.  
  23.     @Override 
  24.     public void afterPropertiesSet() throws Exception { 
  25.         Assert.notNull(debeziumEngine, "debeziumEngine must not be null"); 
  26.     } 

啟動(dòng)

啟動(dòng)該Spring Boot項(xiàng)目,你可以采用各種手段往數(shù)據(jù)庫(kù)增刪改數(shù)據(jù),觀察會(huì)有類似下面的打印:

  1. payload = {user_id=1123213, username=felord.cn, age=11 , gender=0, enabled=1} 

說(shuō)明Debezium監(jiān)聽(tīng)到了數(shù)據(jù)庫(kù)的變更。你可以想想這種技術(shù)在哪些場(chǎng)景有用武之地。好了今天的分享就到這里,感謝大家的支持,我是:碼農(nóng)小胖哥。原創(chuàng)不易,請(qǐng)多多關(guān)注、點(diǎn)贊、轉(zhuǎn)發(fā)、再看。

參考資料

[1]Debezium Engine配置: https://debezium.io/documentation/reference/1.5/development/engine.html#engine-properties

[2]Mysql Connector配置: https://debezium.io/documentation/reference/1.5/connectors/mysql.html#mysql-connector-properties

本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)小胖哥」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)小胖哥公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 碼農(nóng)小胖哥
相關(guān)推薦

2023-04-18 18:22:31

開(kāi)源工具數(shù)據(jù)庫(kù)

2020-09-21 11:30:28

CanalMySQL數(shù)據(jù)庫(kù)

2022-07-08 10:09:47

SPLSQL數(shù)據(jù)庫(kù)

2010-05-17 14:00:07

MySql數(shù)據(jù)庫(kù)

2020-08-13 07:42:15

數(shù)據(jù)庫(kù)Flyway代碼

2020-08-31 07:00:00

數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)同步

2017-05-25 08:52:08

SQL Server數(shù)據(jù)庫(kù)

2019-07-23 10:43:28

MariaDB數(shù)據(jù)庫(kù)MySQL

2019-10-08 15:54:42

SQL數(shù)據(jù)庫(kù)技術(shù)

2025-07-21 07:20:54

開(kāi)源數(shù)據(jù)同步數(shù)據(jù)庫(kù)

2024-05-22 12:07:12

向量數(shù)據(jù)庫(kù)AI

2009-04-22 09:42:07

SQL Server監(jiān)視鏡像

2009-03-25 18:11:57

監(jiān)視鏡像數(shù)據(jù)庫(kù)

2024-10-30 08:15:18

2024-12-06 08:29:29

2011-08-25 13:41:50

SQL Server 變更跟蹤

2010-07-01 15:44:22

SQL Server數(shù)

2025-04-01 08:38:41

2019-08-13 15:52:34

數(shù)據(jù)庫(kù)同步遷移

2010-06-02 16:57:50

MySQL數(shù)據(jù)庫(kù)同步
點(diǎn)贊
收藏

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

欧美精品久久99久久在免费线| av不卡在线观看| 中文字幕不卡在线视频极品| the porn av| 黄色网页在线观看| 懂色av噜噜一区二区三区av| 2019中文字幕免费视频| 欧美人与禽zoz0善交| 中文字幕成人| 午夜久久久久久久久| 日本在线观看一区二区三区| 国产一级片一区二区| 成人在线视频免费观看| 日韩欧美国产一区在线观看| 国产免费一区二区三区视频| 免费a在线看| 91香蕉国产在线观看软件| 成人激情视频免费在线| av中文在线播放| 日韩精品久久久久久久电影99爱| 精品久久久久久久久久久久久久久久久| 每日在线更新av| 欧美被日视频| 久久久久一区二区三区四区| 亚洲一区二区免费| 国产一区二区视频网站| 欧美日本三区| 国产亚洲综合久久| 精品国产人妻一区二区三区| 亚洲资源在线| 日本乱码高清不卡字幕| 阿v天堂2018| 超碰在线观看免费| 中文在线免费一区三区高中清不卡| 超碰97在线人人| 一级黄色片在线观看| 久久xxxx精品视频| 欧美激情啊啊啊| 小早川怜子一区二区的演员表| 亚洲理论电影片| 欧美va亚洲va| 污污视频在线免费| 日韩精品一级毛片在线播放| 在线亚洲一区二区| 四虎永久在线精品无码视频| 成人三级高清视频在线看| 亚洲欧美国产77777| 亚洲欧美电影在线观看| 久青草国产在线| 91免费版在线| 久久99精品国产一区二区三区| 亚洲精品国产精品乱码不卡| 久久成人18免费观看| 国产精品xxxxx| 精品视频一二三区| 日韩电影在线免费| 国产成人亚洲综合| 伊人久久久久久久久久久久| 麻豆亚洲精品| 日韩免费精品视频| 天天干天天操天天爱| 久久精品免费| 国产精品极品美女粉嫩高清在线| 无码人妻丰满熟妇精品区| 免费日韩视频| 国产精品美女久久久免费| 涩涩视频在线观看| 精品一区二区三区影院在线午夜| 成人av在线天堂| 国产伦理一区二区| 国产成人午夜高潮毛片| 国产精品一区二区欧美黑人喷潮水| www.五月激情| 不卡区在线中文字幕| 精品欧美国产一区二区三区不卡| 色天堂在线视频| 久久久久久久久久美女| 色999五月色| 日本中文字幕伦在线观看| 中文字幕中文乱码欧美一区二区| 欧美 日韩 国产 在线观看| av在线播放国产| 亚洲在线一区二区三区| 国产av天堂无码一区二区三区| 亚洲精品88| 欧美欧美午夜aⅴ在线观看| 91人人澡人人爽人人精品| 亚洲一区二区av| 亚洲а∨天堂久久精品9966| 精品无码人妻一区| 色婷婷热久久| 欧美多人乱p欧美4p久久| 在线观看免费国产视频| 美腿丝袜亚洲三区| 国产91视觉| 韩日在线视频| 一区二区成人在线| 国产1区2区在线| 国产精久久一区二区| 日韩av一卡二卡| 成人午夜免费影院| 影音先锋久久精品| 国产精品久久久久999| 精品人妻无码一区二区| 久久久久久久久一| 无码人妻精品一区二区蜜桃网站| 澳门成人av网| 欧美一区二区三区视频免费播放| 喷水视频在线观看| 国产精品久久久久久| 2023亚洲男人天堂| 国产美女裸体无遮挡免费视频| www.视频一区| 成人手机视频在线| 欧美成人a交片免费看| 日韩欧美中文一区二区| 性猛交娇小69hd| 亚洲私拍自拍| 成人天堂噜噜噜| 久蕉依人在线视频| 亚洲一区二区综合| 午夜久久福利视频| 亚洲人挤奶视频| 欧美激情视频网站| 国产精品久久久久久免费免熟| 91丨国产丨九色丨pron| 男人添女人下部视频免费| 97精品国产综合久久久动漫日韩| 亚洲国产福利在线| 强行糟蹋人妻hd中文| 美女视频黄频大全不卡视频在线播放| 久久国产精品-国产精品| 日韩三级免费| 欧美精品第一页| 日本欧美一区二区三区不卡视频| 国产精品久久久久9999高清| 99c视频在线| 久操视频在线| 欧美日韩mp4| 精品国产aaa| 美女久久网站| 国产在线视频欧美一区二区三区| 在线āv视频| 日韩一区二区三区视频| 欧美爱爱免费视频| 精品一区二区三区日韩| 亚洲免费久久| 久久久久久一区二区三区四区别墅| 亚洲一级片在线看| 日本黄色一级视频| 久久精品视频在线免费观看| 各处沟厕大尺度偷拍女厕嘘嘘| 国产伦精品一区二区三区免费优势| 久久成人18免费网站| 国产精品爽爽久久久久久| 亚洲国产精品国自产拍av| 亚洲黄色av网址| 成人精品视频| 国产日本欧美在线观看| 欧美黄色激情| 日韩一级完整毛片| 精品在线视频免费观看| 日韩精品一级| 久久香蕉国产线看观看av| 91资源在线视频| 中文字幕一区二区5566日韩| 欧美特黄aaa| 亚洲一区色图| 国产高清自拍一区| free性欧美| 国产丝袜一区视频在线观看| 日本高清不卡码| 日本一区二区三区高清不卡| 免费一区二区三区在线观看| 欧美一区二区三区另类| 国产伦精品一区二区三区高清版 | 日本一级黄色大片| 91原创在线视频| www.99在线| 亚洲最大黄网| 精品久久久三级| 国产综合色区在线观看| 色777狠狠综合秋免鲁丝| jizz中国少妇| 第一福利永久视频精品 | 国产夫妻自拍av| 亚洲第一在线综合网站| 国产美女免费无遮挡| 久久精品国产成人一区二区三区| 国内精品国产三级国产99| 欧美高清视频看片在线观看| 国产精品久久久久久影视| a视频在线播放| 日韩福利在线播放| 亚洲网站免费观看| 亚洲成人一区在线| 超薄肉色丝袜一二三| 国产成人在线视频播放| 成人羞羞国产免费网站| 中文字幕乱码亚洲无线精品一区| 精品乱码一区二区三区| 婷婷激情成人| 欧美在线不卡区| 成人免费高清| 亚洲男人天堂视频| 国产肥老妇视频| 91福利精品视频| 国产一级二级三级视频| 欧美激情综合五月色丁香小说| 久久久久亚洲av成人网人人软件| 日韩成人一级大片| 欧美不卡在线播放| 国产精品久久久久久久久久10秀| 国产一区二区视频在线免费观看| 亚洲男女网站| 日本91av在线播放| 黄色的视频在线观看| 最近2019好看的中文字幕免费| 污视频网站免费观看| 欧美日韩亚州综合| 亚洲伊人成人网| 亚洲国产视频a| 欧美一级片在线视频| 国产午夜精品福利| 中文在线永久免费观看| 懂色av一区二区在线播放| 999在线观看| 日本成人在线视频网站| 国产a级一级片| 狠狠综合久久| 亚洲自拍偷拍一区二区三区| 欧洲美女日日| 免费国产一区| 日本国产精品| 国产精品一区二区三区免费观看| 欧美a在线观看| 成人免费网站在线| 四虎国产精品永久在线国在线| 欧洲成人性视频| 两个人看的在线视频www| 欧美激情亚洲另类| 日本大胆在线观看| 九九精品在线播放| v片在线观看| 久久五月天色综合| 1024在线播放| 欧美成人在线网站| av大全在线| 久久最新资源网| 菠萝菠萝蜜在线视频免费观看| 日韩一级黄色av| 日本不卡三区| 精品国模在线视频| 高潮毛片在线观看| 美女av一区二区三区| 国产视频在线播放| 欧美精品生活片| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美大片欧美激情性色a∨久久| 手机av在线播放| 欧美激情欧美激情| 色是在线视频| 国产精品大陆在线观看| 国产精品诱惑| 91视频国产一区| theporn国产在线精品| 精品国产中文字幕| 免费一区二区三区视频导航| 色999五月色| 一区二区在线| 久久久久久久久久网| 欧美一区=区| 欧美女同在线观看| 国产成人一区在线| 中文字幕在线播放一区| 久久精品一区二区三区不卡| 刘亦菲国产毛片bd| 亚洲精品你懂的| 久久国产精品二区| 懂色av中文一区二区三区天美| 99久久久无码国产精品免费蜜柚| 欧美日韩精品综合在线| 国产福利第一视频| 精品夜色国产国偷在线| 日本三级视频在线播放| 久久久女女女女999久久| 极品美女一区| 91在线高清视频| 欧美韩一区二区| 一本一道久久久a久久久精品91 | 久久精品国产欧美激情| 先锋影音在线资源站91| 全球成人中文在线| 高清一区二区| 久久精品一二三区| 天天影视综合| 91视频最新入口| 精品一区二区三区免费观看| 亚洲香蕉中文网| 国产精品久久久久久久久图文区| 国产一级做a爰片在线看免费| 色婷婷久久久综合中文字幕| 99精品免费观看| 亚洲品质视频自拍网| 在线观看三级视频| 国产成人精品久久二区二区91| 日韩黄色av| 婷婷五月色综合| 亚洲精品影视| 涩多多在线观看| 国产亚洲欧洲997久久综合 | 色呦呦国产精品| 国产激情视频在线播放| 一区二区三区动漫| 91吃瓜在线观看| 亚洲伊人一本大道中文字幕| 欧洲杯什么时候开赛| 国产精品久久..4399| 国产美女视频91| 免费成人深夜天涯网站| 欧美日韩国产一区中文午夜| 精品毛片一区二区三区| 中文字幕久热精品视频在线| 日本黄色免费在线| 国产精品一区二区免费| 在线国产一区| 亚洲高清免费在线观看| 久久精子c满五个校花| yjizz国产| 亚洲第一精品自拍| 免费电影网站在线视频观看福利| 成人免费网站在线| 日韩中文欧美| www.精品在线| 欧美激情一区二区在线| 午夜精品一区二| 亚洲视频欧洲视频| 爱情电影社保片一区| 美媛馆国产精品一区二区| 99香蕉国产精品偷在线观看 | 无罩大乳的熟妇正在播放| 国产福利精品导航| 深夜福利影院在线观看| 51精品国自产在线| 久操视频在线观看| 91手机在线观看| 欧美日本三区| 亚洲少妇一区二区三区| 亚洲午夜久久久久久久久久久| www.综合色| 久久久久久久久综合| 粉嫩av一区二区| av免费观看大全| 91蝌蚪porny| 国产精品久久久久久久久夜色| 国产午夜精品免费一区二区三区| 日韩天堂在线| 亚洲欧美日韩国产yyy| 久久精品国产秦先生| 精品国产视频在线观看| 欧美电影免费提供在线观看| 黄页网站大全在线免费观看| 狠狠色噜噜狠狠狠狠色吗综合| 一本色道久久综合亚洲精品不| 先锋资源av在线| 欧洲精品中文字幕| 免费在线毛片网站| 高清国语自产拍免费一区二区三区| 国产精品99一区二区| 一本加勒比波多野结衣| 在线观看精品一区| 国产视频中文字幕在线观看| 高清国产在线一区| 久久一区二区三区四区五区| 老司机精品免费视频| 欧美一区二区私人影院日本| 里番在线播放| 欧美18视频| 精品一区二区三区影院在线午夜 | 色先锋资源久久综合| 91sp网站在线观看入口| 97超碰人人模人人爽人人看| 中文精品视频| 色狠狠桃花综合| 一本色道久久综合亚洲| 蜜臀久久99精品久久久久久宅男| 91夜夜蜜桃臀一区二区三区| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产无一区二区| av官网在线观看| 51色欧美片视频在线观看| 色喇叭免费久久综合| 呦呦视频在线观看| 精品婷婷伊人一区三区三| 欧洲性视频在线播放| 秋霞毛片久久久久久久久| 国产一区在线观看麻豆| caoporn国产| 久久99国产综合精品女同| 欧美**vk|