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

聊聊 Kafka 那點(diǎn)破事!

開(kāi)發(fā) 架構(gòu) Kafka
Kafka作為一款開(kāi)源的消息引擎,很多人并不陌生,但深入其源碼的同學(xué)估計(jì)不多,除非你是中間件團(tuán)隊(duì)消息系統(tǒng)維護(hù)者。

[[414283]]

本文轉(zhuǎn)載自微信公眾號(hào)「微觀技術(shù)」,作者微觀技術(shù)。轉(zhuǎn)載本文請(qǐng)聯(lián)系微觀技術(shù)公眾號(hào)。

大家好,我是Tom哥~

Kafka作為一款開(kāi)源的消息引擎,很多人并不陌生,但深入其源碼的同學(xué)估計(jì)不多,除非你是中間件團(tuán)隊(duì)消息系統(tǒng)維護(hù)者。但術(shù)業(yè)有專攻,市面上那么多開(kāi)源框架且每個(gè)框架又經(jīng)常迭代升級(jí),花精力深入了解每一個(gè)框架源碼不太現(xiàn)實(shí),本文會(huì)以業(yè)務(wù)視角羅列工作中大家需要熟知的一些知識(shí)

本篇文章的目錄:

首先,為什么使用kafka?

  • 削峰填谷。緩沖上下游瞬時(shí)突發(fā)流量,保護(hù)“脆弱”的下游系統(tǒng)不被壓垮,避免引發(fā)全鏈路服務(wù)“雪崩”。
  • 系統(tǒng)解耦。發(fā)送方和接收方的松耦合,一定程度簡(jiǎn)化了開(kāi)發(fā)成本,減少了系統(tǒng)間不必要的直接依賴。

Kafka 名詞術(shù)語(yǔ),一網(wǎng)打盡

  • Broker:接收客戶端發(fā)送過(guò)來(lái)的消息,對(duì)消息進(jìn)行持久化
  • 主題:Topic。主題是承載消息的邏輯容器,在實(shí)際使用中多用來(lái)區(qū)分具體的業(yè)務(wù)。
  • 分區(qū):Partition。一個(gè)有序不變的消息序列。每個(gè)主題下可以有多個(gè)分區(qū)。
  • 消息:這里的消息就是指 Kafka 處理的主要對(duì)象。
  • 消息位移:Offset。表示分區(qū)中每條消息的位置信息,是一個(gè)單調(diào)遞增且不變的值。
  • 副本:Replica。Kafka 中同一條消息能夠被拷貝到多個(gè)地方以提供數(shù)據(jù)冗余,這些地方就是所謂的副本。副本還分為領(lǐng)導(dǎo)者副本和追隨者副本,各自有不同的角色劃分。每個(gè)分區(qū)可配置多個(gè)副本實(shí)現(xiàn)高可用。一個(gè)分區(qū)的N個(gè)副本一定在N個(gè)不同的Broker上。
  • 生產(chǎn)者:Producer。向主題發(fā)布新消息的應(yīng)用程序。
  • 消費(fèi)者:Consumer。從主題訂閱新消息的應(yīng)用程序。
  • 消費(fèi)者位移:Consumer Offset。表示消費(fèi)者消費(fèi)進(jìn)度,每個(gè)消費(fèi)者都有自己的消費(fèi)者位移。offset保存在broker端的內(nèi)部topic中,不是在clients中保存
  • 消費(fèi)者組:Consumer Group。多個(gè)消費(fèi)者實(shí)例共同組成的一個(gè)組,同時(shí)消費(fèi)多個(gè)分區(qū)以實(shí)現(xiàn)高吞吐。
  • 重平衡:Rebalance。消費(fèi)者組內(nèi)某個(gè)消費(fèi)者實(shí)例掛掉后,其他消費(fèi)者實(shí)例自動(dòng)重新分配訂閱主題分區(qū)

ZooKeeper 在里面的職責(zé)是什么?

它是一個(gè)分布式協(xié)調(diào)框架,負(fù)責(zé)協(xié)調(diào)管理并保存 Kafka 集群的所有元數(shù)據(jù)信息,比如集群都有哪些 Broker 在運(yùn)行、創(chuàng)建了哪些 Topic,每個(gè) Topic 都有多少分區(qū)以及這些分區(qū)的 Leader 副本都在哪些機(jī)器上等信息。

消息傳輸?shù)母袷?/h3>

純二進(jìn)制的字節(jié)序列。當(dāng)然消息還是結(jié)構(gòu)化的,只是在使用之前都要將其轉(zhuǎn)換成二進(jìn)制的字節(jié)序列。

消息傳輸協(xié)議

  • 點(diǎn)對(duì)點(diǎn)模型。系統(tǒng) A 發(fā)送的消息只能被系統(tǒng) B 接收,其他任何系統(tǒng)都不能讀取 A 發(fā)送的消息
  • 發(fā)布/訂閱模型。該模型也有發(fā)送方和接收方,只不過(guò)提法不同。發(fā)送方也稱為發(fā)布者(Publisher),接收方稱為訂閱者(Subscriber)。和點(diǎn)對(duì)點(diǎn)模型不同的是,這個(gè)模型可能存在多個(gè)發(fā)布者向相同的主題發(fā)送消息,而訂閱者也可能存在多個(gè),它們都能接收到相同主題的消息。

消息壓縮

生產(chǎn)者程序中配置compression.type 參數(shù)即表示啟用指定類型的壓縮算法。

props.put(“compression.type”, “gzip”),它表明該 Producer 的壓縮算法使用的是GZIP。這樣 Producer 啟動(dòng)后生產(chǎn)的每個(gè)消息集合都是經(jīng) GZIP 壓縮過(guò)的,故而能很好地節(jié)省網(wǎng)絡(luò)傳輸帶寬以及 Kafka Broker 端的磁盤占用。

但如果Broker又指定了不同的壓縮算法,如:Snappy,會(huì)將生產(chǎn)端的消息解壓然后按自己的算法重新壓縮。

各壓縮算法比較:吞吐量方面:LZ4 > Snappy > zstd 和 GZIP;而在壓縮比方面,zstd > LZ4 > GZIP > Snappy。

kafka默認(rèn)不指定壓縮算法。

消息解壓縮

當(dāng) Consumer pull消息時(shí),Broker 會(huì)原樣發(fā)送出去,當(dāng)消息到達(dá) Consumer 端后,由 Consumer 自行解壓縮還原成之前的消息。

分區(qū)策略

編寫(xiě)一個(gè)類實(shí)現(xiàn)org.apache.kafka.clients.Partitioner接口。實(shí)現(xiàn)內(nèi)部?jī)蓚€(gè)方法:partition()和close()。然后顯式地配置生產(chǎn)者端的參數(shù)partitioner.class

常見(jiàn)的策略:

  • 輪詢策略(默認(rèn))。保證消息最大限度地被平均分配到所有分區(qū)上。
  • 隨機(jī)策略。隨機(jī)策略是老版本生產(chǎn)者使用的分區(qū)策略,在新版本中已經(jīng)改為輪詢了。
  • 按key分區(qū)策略。key可能是uid或者訂單id,將同一標(biāo)志位的所有消息都發(fā)送到同一分區(qū),這樣可以保證一個(gè)分區(qū)內(nèi)的消息有序
  • 其他分區(qū)策略。如:基于地理位置的分區(qū)策略

生產(chǎn)者管理TCP連接

在new KafkaProducer 實(shí)例時(shí),生產(chǎn)者應(yīng)用會(huì)在后臺(tái)創(chuàng)建并啟動(dòng)一個(gè)名為 Sender 的線程,該 Sender 線程開(kāi)始運(yùn)行時(shí)首先會(huì)創(chuàng)建與 Broker 的連接。此時(shí)還不知道給哪個(gè)topic發(fā)消息,所以Producer 啟動(dòng)時(shí)會(huì)發(fā)起與所有的 Broker 的連接。

Producer 通過(guò)metadata.max.age.ms 參數(shù)定期地去更新元數(shù)據(jù)信息,默認(rèn)值是 300000,即 5 分鐘,不管集群那邊是否有變化,Producer 每 5 分鐘都會(huì)強(qiáng)制刷新一次元數(shù)據(jù)以保證它是最新的數(shù)據(jù)。

Producer 發(fā)送消息:

Producer 使用帶回調(diào)通知的發(fā)送 API, producer.send(msg, callback)。

設(shè)置 acks = all。Producer 的一個(gè)參數(shù),表示所有副本都成功接收到消息,該消息才算是“已提交”,最高等級(jí),acks的其它值說(shuō)明。min.insync.replicas > 1,表示消息至少要被寫(xiě)入到多少個(gè)副本才算是“已提交”

retries 是 Producer 的參數(shù)。當(dāng)出現(xiàn)網(wǎng)絡(luò)的瞬時(shí)抖動(dòng)時(shí),消息發(fā)送可能會(huì)失敗,此時(shí)配置了 retries > 0 的 Producer 能夠自動(dòng)重試消息發(fā)送,避免消息丟失。

冪等性 Producer

設(shè)置參數(shù)props.put(“enable.idempotence”, ture),Producer 自動(dòng)升級(jí)成冪等性 Producer,其他所有的代碼邏輯都不需要改變。Kafka 自動(dòng)幫你做消息的重復(fù)去重。

原理很簡(jiǎn)單,就是經(jīng)典的空間換時(shí)間,即在 Broker 端多保存一些字段。當(dāng) Producer 發(fā)送了具有相同字段值的消息后,Broker 能夠自動(dòng)知曉這些消息已經(jīng)重復(fù)了,可以在后臺(tái)默默地把它們“丟棄”掉。

只能保證單分區(qū)、單會(huì)話上的消息冪等性。一個(gè)冪等性 Producer 能夠保證某個(gè)topic的一個(gè)分區(qū)上不出現(xiàn)重復(fù)消息,但無(wú)法實(shí)現(xiàn)多個(gè)分區(qū)的冪等性。比如采用輪詢,下一次提交換了一個(gè)分區(qū)就無(wú)法解決

事務(wù)型 Producer

能夠保證將消息原子性地寫(xiě)入到多個(gè)分區(qū)中。這批消息要么全部寫(xiě)入成功,要么全部失敗。能夠保證跨分區(qū)、跨會(huì)話間的冪等性。

  1. producer.initTransactions(); 
  2. try { 
  3.             producer.beginTransaction(); 
  4.             producer.send(record1); 
  5.             producer.send(record2); 
  6.             //提交事務(wù) 
  7.             producer.commitTransaction(); 
  8. } catch (KafkaException e) { 
  9.             //事務(wù)終止 
  10.             producer.abortTransaction(); 

實(shí)際上即使寫(xiě)入失敗,Kafka 也會(huì)把它們寫(xiě)入到底層的日志中,也就是說(shuō) Consumer 還是會(huì)看到這些消息。要不要處理在 Consumer 端設(shè)置 isolation.level ,這個(gè)參數(shù)有兩個(gè)值:

  • read_uncommitted:這是默認(rèn)值,表明 Consumer 能夠讀取到 Kafka 寫(xiě)入的任何消息
  • read_committed:表明 Consumer 只會(huì)讀取事務(wù)型 Producer 成功提交事務(wù)寫(xiě)入的消息

Kafka Broker 是如何存儲(chǔ)數(shù)據(jù)?

Kafka 使用消息日志(Log)來(lái)保存數(shù)據(jù),一個(gè)日志就是磁盤上一個(gè)只能追加寫(xiě)(Append-only)消息的物理文件。因?yàn)橹荒茏芳訉?xiě)入,故避免了緩慢的隨機(jī) I/O 操作,改為性能較好的順序 I/O 寫(xiě)操作,這也是實(shí)現(xiàn) Kafka 高吞吐量特性的一個(gè)重要手段。

不過(guò)如果你不停地向一個(gè)日志寫(xiě)入消息,最終也會(huì)耗盡所有的磁盤空間,因此 Kafka 必然要定期地刪除消息以回收磁盤。怎么刪除呢?

簡(jiǎn)單來(lái)說(shuō)就是通過(guò)日志段(Log Segment)機(jī)制。在 Kafka 底層,一個(gè)日志又近一步細(xì)分成多個(gè)日志段,消息被追加寫(xiě)到當(dāng)前最新的日志段中,當(dāng)寫(xiě)滿了一個(gè)日志段后,Kafka 會(huì)自動(dòng)切分出一個(gè)新的日志段,并將老的日志段封存起來(lái)。Kafka 在后臺(tái)還有定時(shí)任務(wù)會(huì)定期地檢查老的日志段是否能夠被刪除,從而實(shí)現(xiàn)回收磁盤空間的目的。

Kafka 的備份機(jī)制

相同的數(shù)據(jù)拷貝到多臺(tái)機(jī)器上。副本的數(shù)量是可以配置的。Kafka 中follow副本不會(huì)對(duì)外提供服務(wù)。

副本的工作機(jī)制也很簡(jiǎn)單:生產(chǎn)者總是向leader副本寫(xiě)消息;而消費(fèi)者總是從leader副本讀消息。至于follow副本,它只做一件事:向leader副本以異步方式發(fā)送pull請(qǐng)求,請(qǐng)求leader把最新的消息同步給它,必然有一個(gè)時(shí)間窗口導(dǎo)致它和leader中的數(shù)據(jù)是不一致的,或者說(shuō)它是落后于leader。

為什么要引入消費(fèi)者組?

主要是為了提升消費(fèi)者端的吞吐量。多個(gè)消費(fèi)者實(shí)例同時(shí)消費(fèi),加速整個(gè)消費(fèi)端的吞吐量(TPS)。

在一個(gè)消費(fèi)者組下,一個(gè)分區(qū)只能被一個(gè)消費(fèi)者消費(fèi),但一個(gè)消費(fèi)者可能被分配多個(gè)分區(qū),因而在提交位移時(shí)也就能提交多個(gè)分區(qū)的位移。如果1個(gè)topic有2個(gè)分區(qū),消費(fèi)者組有3個(gè)消費(fèi)者,有一個(gè)消費(fèi)者將無(wú)法分配到任何分區(qū),處于idle狀態(tài)。

理想情況下,Consumer 實(shí)例的數(shù)量應(yīng)該等于該 Group 訂閱topic(可能多個(gè))的分區(qū)總數(shù)。

消費(fèi)端拉取(批量)、ACK

消費(fèi)端先拉取并消費(fèi)消息,然后再ack更新offset。

1)消費(fèi)者程序啟動(dòng)多個(gè)線程,每個(gè)線程維護(hù)專屬的 KafkaConsumer 實(shí)例,負(fù)責(zé)完整的消息拉取、消息處理流程。一個(gè)KafkaConsumer負(fù)責(zé)一個(gè)分區(qū),能保證分區(qū)內(nèi)的消息消費(fèi)順序。

缺點(diǎn):線程數(shù)受限于 Consumer 訂閱topic的總分區(qū)數(shù)。

2)任務(wù)切分成了消息獲取和消息處理兩個(gè)部分。消費(fèi)者程序使用單或多線程拉取消息,同時(shí)創(chuàng)建專門線程池執(zhí)行業(yè)務(wù)邏輯。優(yōu)點(diǎn):可以靈活調(diào)節(jié)消息獲取的線程數(shù),以及消息處理的線程數(shù)。

缺點(diǎn):無(wú)法保證分區(qū)內(nèi)的消息消費(fèi)順序。另外引入了多組線程,使得整個(gè)消息消費(fèi)鏈路被拉長(zhǎng),最終導(dǎo)致正確位移提交會(huì)變得異常困難,可能會(huì)出現(xiàn)消息的重復(fù)消費(fèi)或丟失。

消費(fèi)端offset管理

1)老版本的 Consumer組把位移保存在 ZooKeeper 中,但很快發(fā)現(xiàn)zk并不適合頻繁的寫(xiě)更新。

2)在新版本的 Consumer Group 中,Kafka 社區(qū)重新設(shè)計(jì)了 Consumer組的位移管理方式,采用了將位移保存在 Broker端的內(nèi)部topic中,也稱為“位移主題”,由kafka自己來(lái)管理。原理很簡(jiǎn)單, Consumer的位移數(shù)據(jù)作為一條條普通的 Kafka 消息,提交到__consumer_offsets 中。它的消息格式由 Kafka 自己定義,用戶不能修改。位移主題的 Key 主要包括 3 部分內(nèi)容:

Kafka Consumer 提交位移的方式有兩種:自動(dòng)提交位移和手動(dòng)提交位移。

Kafka 使用Compact策略來(lái)刪除位移主題中的過(guò)期消息,避免該topic無(wú)限期膨脹。提供了專門的后臺(tái)線程定期地巡檢待 Compact 的主題,看看是否存在滿足條件的可刪除數(shù)據(jù)。

Rebalance 觸發(fā)條件

1)組成員數(shù)發(fā)生變更。比如有新的 Consumer 實(shí)例加入組或者離開(kāi)組,又或是有 Consumer 實(shí)例崩潰被“踢出”組。(99%原因是由它導(dǎo)致)

2) 訂閱topic數(shù)發(fā)生變更。Consumer Group 可以使用正則表達(dá)式的方式訂閱topic,比如 consumer.subscribe(Pattern.compile(“t.*c”)) 就表明該 Group 訂閱所有以字母 t 開(kāi)頭、字母 c 結(jié)尾的topic。在 Consumer Group 的運(yùn)行過(guò)程中,你新創(chuàng)建了一個(gè)滿足這樣條件的topic,那么該 Group 就會(huì)發(fā)生 Rebalance。

3) 訂閱topic的分區(qū)數(shù)發(fā)生變化。Kafka 目前只允許增加topic的分區(qū)數(shù)。當(dāng)分區(qū)數(shù)增加時(shí),也會(huì)觸發(fā)訂閱該topic的所有 Group 開(kāi)啟 Rebalance。

消息的順序性

Kafka的設(shè)計(jì)中多個(gè)分區(qū)的話無(wú)法保證全局的消息順序。如果一定要實(shí)現(xiàn)全局的消息順序,只能單分區(qū)。

方法二:通過(guò)有key分組,同一個(gè)key的消息放入同一個(gè)分區(qū),保證局部有序

歷史數(shù)據(jù)清理策略

基于保存時(shí)間,log.retention.hours

基于日志大小的清理策略。通過(guò)log.retention.bytes控制

 

組合方式

 

責(zé)任編輯:武曉燕 來(lái)源: 微觀技術(shù)
相關(guān)推薦

2011-05-24 16:20:27

虛函數(shù)

2019-10-30 09:56:56

內(nèi)存屏障變量

2021-09-04 11:31:00

MYSQLSQL調(diào)優(yōu)

2021-09-30 07:26:15

MQ消息丟失

2025-10-31 10:18:55

零停機(jī)發(fā)布IT

2018-03-15 15:12:00

潤(rùn)乾報(bào)表集成

2011-04-14 14:23:06

軟件測(cè)試測(cè)試

2012-02-22 09:32:58

云計(jì)算微軟Azure

2020-01-09 09:50:32

C++JavaPython

2018-11-01 17:06:06

cell自適應(yīng)高主

2021-08-26 05:04:38

TCP網(wǎng)絡(luò)HTTP

2011-05-25 19:37:47

2022-05-26 09:03:39

AOP編程

2009-07-03 14:16:30

JSP Servlet

2013-10-12 13:26:08

設(shè)計(jì)加載

2010-08-10 15:08:17

UPS電源評(píng)測(cè)

2013-04-28 09:50:02

PHPMySQL

2012-06-11 15:02:53

ASP.NET

2018-04-02 15:10:17

ToastSnackbarAndroid

2023-12-21 20:53:15

點(diǎn)贊
收藏

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

天天操夜夜操国产精品| 99re久久| 久久免费电影网| 国产激情久久久久| 亚洲 欧美 国产 另类| 欧美另类中文字幕| 婷婷开心久久网| 日韩免费一区二区三区| 99国产精品久久久久久久成人 | 国产天堂第一区| 伊人成综合网| 亚洲免费av网址| 天天看片天天操| hd国产人妖ts另类视频| 久久色成人在线| 亚洲已满18点击进入在线看片 | 欧美另类一区| av中文字幕免费在线观看| 999在线观看精品免费不卡网站| 国产午夜精品视频免费不卡69堂| 波多野结衣在线免费观看| 美女福利一区二区三区| 一区二区三区欧美视频| 亚洲精品一区二区三区av| 亚洲卡一卡二卡三| 精品综合免费视频观看| 欧美一区二区三区免费视| 中文字幕在线有码| 日韩精品永久网址| 日韩成人在线网站| 中国男女全黄大片| 欧美91在线|欧美| 色婷婷久久久亚洲一区二区三区 | 蜜桃久久久久久| 3344国产精品免费看| 澳门黄色一级片| 久久综合88| 亚洲一区二区久久| 免费在线观看成年人视频| 一区二区网站| 日韩一级黄色大片| 中文字幕第一页在线视频| 天然素人一区二区视频| 欧美日韩中文字幕综合视频| www精品久久| 日皮视频在线观看| 一区二区三区在线免费视频| 伊人久久大香线蕉精品| 91视频在线观看| 国产喂奶挤奶一区二区三区| 久久精品日产第一区二区三区精品版 | 亚洲av成人精品毛片| 国产精品一区一区三区| 91免费欧美精品| 一区二区美女视频| 精品亚洲成av人在线观看| 国产男女猛烈无遮挡91| 中文字幕一区二区人妻| 免费在线观看不卡| 国产欧美精品久久久| 一级特黄aaa| 狠狠色丁香九九婷婷综合五月| 国产精品永久免费| 国产精品久久久久久久一区二区| 精品一区二区三区不卡| 亚洲伊人成综合成人网| 丁香六月天婷婷| 99久久伊人久久99| 欧美黑人xxxxx| 成年人在线看| 国产精品青草综合久久久久99| 污视频在线免费观看一区二区三区 | 精品一区二区三区香蕉蜜桃| 91精品久久久久久久久久另类| 国产又粗又猛又爽| 粉嫩欧美一区二区三区高清影视| 国产精品久久久久免费| 三级视频在线| 国产精品视频在线看| 久久久久久久久久久久久国产| 欧美aaa免费| 精品欧美国产一区二区三区| 黄色高清无遮挡| 亚洲男男av| 精品国产乱码久久久久久久久 | 欧美伊久线香蕉线新在线| 亚洲色成人www永久网站| 免费一区二区视频| 国产伦精品一区二区三区视频黑人 | 在线观看免费91| 国产精品国精产品一二| 色综合久久中文字幕| 一本一道久久a久久综合蜜桃| 日韩视频一二区| 精品视频一区在线视频| 四虎地址8848| 亚洲一区亚洲| 成人性生交大片免费看视频直播| 丰满熟妇人妻中文字幕| 国产欧美日韩另类视频免费观看| 成人在线观看www| 在线播放高清视频www| 欧美日韩国产天堂| 在线免费观看a级片| 999精品一区| 91超碰中文字幕久久精品| 中文无码av一区二区三区| 国产精品一二三四| 日本午夜精品一区二区| 欧美v亚洲v| 欧美乱妇15p| 91精彩刺激对白露脸偷拍| 成人无号精品一区二区三区| 久久久久久久久久久久久久久久久久av| 久久国产精品影院| 亚洲电影在线一区二区三区| 91精品国产99| 国产wwwwwww| 国产无人区一区二区三区| 少妇人妻大乳在线视频| 日韩黄色在线| 在线亚洲男人天堂| 你懂的国产在线| 成人综合在线观看| 国产一区一区三区| 成人黄页网站视频| 亚洲男人天堂2023| 影音先锋亚洲天堂| 国产91精品精华液一区二区三区| 亚洲福利av在线| 吞精囗交69激情欧美| 亚洲国产成人在线播放| 久久久国产精品黄毛片| 国产一区日韩二区欧美三区| 亚洲欧洲日韩精品| 欧美日韩精品一区二区三区视频| 日韩高清免费在线| 日本亚洲欧美在线| 豆国产96在线|亚洲| 日韩欧美视频免费在线观看| 亚洲三级电影| 日韩专区在线播放| 亚洲视频中文字幕在线观看| 国产欧美日韩激情| 嫩草影院国产精品| 日产精品一区二区| 国产精品小说在线| 91短视频版在线观看www免费| 91黄色在线观看| 中文字幕成人动漫| 日韩专区一卡二卡| 香蕉久久夜色| 国产第一精品| 久久精品视频导航| 99热这里只有精品3| 日韩理论在线观看| 交换做爰国语对白| 精品成人一区| 激情欧美一区二区三区中文字幕| 国产福利电影在线播放| 日韩精品在线私人| 蜜臀99久久精品久久久久小说| 久久久精品国产99久久精品芒果| 超碰影院在线观看| 欧美丰满老妇| 成人片在线免费看| 性欧美18~19sex高清播放| 亚洲精品一区二区网址| 伊人久久久久久久久久久久| 国产精品人成在线观看免费| theporn国产精品| 国产精品a级| 久久国产精品 国产精品| 97成人资源| 色婷婷**av毛片一区| a毛片在线免费观看| 亚洲成人1区2区| 亚洲欧洲久久久| 韩国一区二区视频| 国产二区视频在线| 国产a久久精品一区二区三区 | 欧美日韩国产成人高清视频| 欧美视频在线观看一区二区三区| 欧美性猛交99久久久久99按摩| www.涩涩爱| 国产传媒久久文化传媒| 看av免费毛片手机播放| 欧美激情偷拍自拍| 国产精品日韩高清| 黑人巨大精品欧美一区二区桃花岛| 中文字幕免费精品一区| 亚洲a视频在线观看| 色一情一乱一乱一91av| 日本在线一级片| 91免费视频观看| 天天综合天天添夜夜添狠狠添| 黑丝一区二区三区| 午夜精品视频在线观看一区二区| 日韩中文一区二区| 国产精品av网站| 久久av色综合| 日韩中文字幕欧美| 青青青免费视频在线2| 日韩一区二区三区免费观看| 成人免费毛片视频| 亚洲最大成人网4388xx| 日韩不卡av在线| 99re视频这里只有精品| 一起草最新网址| 日本女优在线视频一区二区| 亚洲人成无码网站久久99热国产 | 大桥未久女教师av一区二区| 国产精品视频内| 国模精品视频| 九九热这里只有精品6| www视频在线观看免费| 亚洲经典中文字幕| www.av网站| 欧美精品丝袜中出| 亚洲精品国产精品国自产网站按摩 | 久久香蕉综合色| 午夜精品在线| 91在线网站视频| 99久久久国产精品免费调教网站| 性色av一区二区三区免费| caoporn97在线视频| 日韩在线免费视频| 成年人在线观看视频| 亚洲人在线观看| 日本国产在线| 日韩av在线直播| 国精产品一品二品国精品69xx| 91精品国产综合久久小美女| 一级片免费观看视频| 欧美日韩一区二区三区在线| 中文字幕在线日本| 色999日韩国产欧美一区二区| 国语对白一区二区| 一区二区三区中文在线| 劲爆欧美第一页| 亚洲精品精品亚洲| 精国产品一区二区三区a片| 亚洲激情图片小说视频| 久久国产精品国语对白| 综合网在线视频| 亚洲国产123| 中文字幕综合网| 福利所第一导航| 一区二区三区精品在线| 久草视频免费在线播放| 亚洲图片欧美一区| 久久高清免费视频| 天天色综合天天| 成人免费a视频| 色偷偷成人一区二区三区91 | 亚洲波多野结衣| 亚洲欧美日韩国产一区二区三区| 黑人狂躁日本娇小| 亚洲蜜桃精久久久久久久| 欧美日韩中文字幕在线观看| 亚洲激情中文1区| 国产在线观看你懂的| 午夜国产精品影院在线观看| 影音先锋亚洲天堂| 在线观看日韩一区| 国产精品一区二区av白丝下载 | 最新亚洲视频| 人妻无码视频一区二区三区| 男女性色大片免费观看一区二区| 日韩大片一区二区| 国产福利不卡视频| 噜噜噜在线视频| 中文字幕欧美激情| 青青操视频在线播放| 天天影视涩香欲综合网| 欧美成人一区二区视频| 日韩一区二区三区观看| 三级在线观看| 久久久精品亚洲| 岛国av免费在线观看| 国产精品av网站| 中文字幕一区日韩精品| 欧美男人的天堂| 久久久久久久久久久妇女 | 亚洲女同志freevdieo| 国产精品视频区1| 国产精品网在线观看| 欧美一级日本a级v片| 欧美 日韩 国产一区二区在线视频| 91专区在线观看| 久久国产精品99精品国产| 国产xxxx视频| 中文字幕亚洲电影| 成人免费区一区二区三区| 欧美疯狂性受xxxxx喷水图片| 视频污在线观看| 日韩中文字幕国产精品| 国产免费拔擦拔擦8x在线播放 | 精品成人影院| 精品人妻大屁股白浆无码| 日韩极品在线观看| 亚洲欧美日韩色| 中文字幕一区二区三区视频| 国内免费精品视频| 日韩一区和二区| seseavlu视频在线| 国内精品久久久久久中文字幕| 欧美视频在线视频精品| 久久精品人成| 亚洲天堂久久| 在线观看免费视频污| 国产日韩欧美综合一区| 日韩免费在线视频观看| 91精品国产福利| 在线免费看a| 国产成人精品一区二区在线| 国产一区在线电影| 日韩视频一二三| 久久爱www久久做| 欧美激情视频二区| 91久久一区二区| 天堂91在线| 欧美精品一区三区| 成人精品视频在线观看| 亚洲国产欧洲综合997久久| 午夜亚洲影视| 国产精品一区二区入口九绯色| 亚洲综合一区二区精品导航| 国产又黄又爽视频| 色偷偷偷亚洲综合网另类| 在线成人视屏| 欧美最大成人综合网| 亚洲欧美日韩一区在线观看| 亚洲最大免费视频| 午夜一区二区三区视频| 免费观看毛片网站| 久久久久久国产精品三级玉女聊斋 | 在线亚洲自拍| a天堂视频在线观看| 亚洲高清免费在线| 男人天堂手机在线观看| 韩国福利视频一区| 好吊妞视频这里有精品| 日本精品久久久久久久久久| 国产成人av一区二区三区在线观看| 国产精品精品软件男同| 8v天堂国产在线一区二区| 麻豆传媒在线完整视频| 91精品久久久久久久久久久久久 | 久久久亚洲欧洲日产| 国产毛片视频网站| 91网上在线视频| 无码人妻熟妇av又粗又大| 国产亚洲欧美aaaa| 国产成人精选| 国产女人18毛片| 成人午夜视频在线| 天天做天天爱夜夜爽| 在线看日韩av| 先锋影音网一区二区| 亚洲国产一二三精品无码| 成人性生交大片免费 | 欧美高清一级片在线| 在线中文免费视频| 国产伦精品一区二区三区四区免费| 亚洲另类黄色| 日本xxxxxxxxx18| 欧美精品777| 蜜桃传媒在线观看免费进入| 麻豆视频成人| 久久国产精品免费| 免费一级黄色大片| 国产视频久久久| 一区在线不卡| 少妇人妻无码专区视频| 国产亚洲精品久| 国产美女免费看| 亚洲 日韩 国产第一| 精品久久久久久久| 免费观看黄网站| 日韩欧美在线中文字幕| 日本在线免费播放| 国产欧美日本在线| 男女视频一区二区| 欧美成人aaaaⅴ片在线看| 亚洲桃色综合影院| 麻豆影视国产在线观看| 国产精品99久久久久久www| 99re久久最新地址获取| 性活交片大全免费看| 色成人在线视频| 欧美日韩色网| 亚洲高清资源综合久久精品| 国产白丝精品91爽爽久久| 黄色av网站免费| 欧美激情亚洲激情| 日韩av专区| 粉嫩av懂色av蜜臀av分享| 91麻豆精品国产91久久久资源速度 | 国产一区二区在线观|