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

生產者的實現邏輯-kafka知識體系(二)

開發 架構 Kafka
Kafka是最初由Linkedin公司開發,是一個分布式、支持分區的(partition)、多副本的(replica),基于zookeeper協調的分布式消息系統,它的最大的特性就是可以實時的處理大量數據以滿足各種需求場景。

[[409180]]

kafka 是單條發送還是批量發送消息?

kafka 怎么做到單條發送?

kafka 發送消息是順序的嗎?

生產者什么情況下可能會頻繁FullGC?

消息發送的邏輯

上帝視角來看消息發送的流程。

生產者的設計

消費發送機制:

1)序列化器:序列化消息對象轉成字節數組,然后通過網絡傳輸。

2)分區器:計算消息發往的具體分區;如果顯示指定了partition,便不會走分區器。

3)消息緩沖池:客戶端的消息緩沖池,默認大小32M,見參數buffer.memory。

4)批量發送:緩沖池中消息會按batch分批次發送,默認批次大小16KB,見參數batch.size。

負載均衡設計:

由于消息topic 由多個partition 組成,且partition 會均衡分布到不同broker 上。因此,為了有效利用broker 集群的性能,提高消息的吞吐量,producer 可以通過隨機或者hash 等方式,將消息平均發送到多個partition 上,以實現負載均衡。

分區策略:

  1. 輪詢策略,默認策略
  2. 隨機策略,實際表現來看,它要遜于輪詢策略
  3. 按消息鍵保序策略,一旦消息被定義了 Key,那么你就可以保證同一個 Key 的所有消息都進入到相同的分區里面,由于每個分區下的消息處理都是有順序的。

KafkaProducer

源碼

  1. //客戶端ID。在創建 KafkaProducer 時可通過 client.id 定義 clientId,如果未指定,則默認 producer- seq,seq 在進程內遞增,強烈建議客戶端顯示指定 clientId。 
  2.  private final String clientId; 
  3.    //度量的相關存儲容器,例如消息體大小、發送耗時等與監控相關的指標。 
  4.     final Metrics metrics; 
  5.     //分區負載均衡算法,通過參數 partitioner.class 指定。 
  6.     private final Partitioner partitioner; 
  7.     //調用 send 方法發送的最大請求大小,包括 key、消息體序列化后的消息總大小不能超過該值。通過參數 max.request.size 來設置。 
  8.     private final int maxRequestSize; 
  9.     //生產者緩存所占內存的總大小,通過參數 buffer.memory 設置。 
  10.     private final long totalMemorySize; 
  11.     //元數據信息,例如 topic 的路由信息,由 KafkaProducer 自動更新。 
  12.     private final Metadata metadata; 
  13.     //消息記錄累積器 
  14.     private final RecordAccumulator accumulator; 
  15.     //用于封裝消息發送的邏輯,即向 broker 發送消息的處理邏輯。 
  16.     private final Sender sender; 
  17.     //用于消息發送的后臺線程,一個獨立的線程,內部使用 Sender 來向 broker 發送消息。 
  18.     private final Thread ioThread; 
  19.     //壓縮類型,默認不啟用壓縮,可通過參數 compression.type 配置??蛇x值:none、gzip、snappy、lz4、zstd。 
  20.     private final CompressionType compressionType; 
  21.     //錯誤信息收集器,當成一個 metrics,用來做監控的。 
  22.     private final Sensor errors; 
  23.     //用于獲取系統時間或線程睡眠等。 
  24.     private final Time time
  25.     //用于對消息的 key 進行序列化。 
  26.     private final ExtendedSerializer<K> keySerializer; 
  27.     //Serializer< V> valueSerializer 
  28.     private final ExtendedSerializer<V> valueSerializer; 
  29.     //生產者的配置信息。 
  30.     private final ProducerConfig producerConfig; 
  31.     //最大阻塞時間,當生產者使用的緩存已經達到規定值后,此時消息發送會阻塞,通過參數 max.block.ms 來設置最多等待多久。 
  32.     private final long maxBlockTimeMs; 
  33.    //配置控制客戶機等待請求響應的最長時間。如果在超時超時之前沒有收到響應,客戶端將在需要時重新發送請求,或者在重試耗盡時失敗請求。 
  34.     private final int requestTimeoutMs; 
  35.     //生產者端的攔截器,在消息發送之前進行一些定制化處理。 
  36.     private final ProducerInterceptors<K, V> interceptors; 
  37.     //維護 api 版本的相關元信息,該類只能在 kafka 內部使用。 
  38.     private final ApiVersions apiVersions; 
  39.     //kafka 消息事務管理器。 
  40.     private final TransactionManager transactionManager; 
  41.     //kafka 生產者事務上下文環境初始結果。 
  42.     private TransactionalRequestResult initTransactionsResult; 

KafkaProducer 具有如下特征:

  1. KafkaProducer 是線程安全的,可以被多個線程交叉使用。
  2. KafkaProducer 內部包含一個緩存池,存放待發送消息,即 ProducerRecord 隊列,與此同時會開啟一個IO線程將 ProducerRecord 對象發送到 Kafka 集群。
  3. KafkaProducer 的消息發送 API send 方法是異步,只負責將待發送消息 ProducerRecord 發送到緩存區中,立即返回,并返回一個結果憑證 Future。

acks 參數的作用

KafkaProducer 提供了一個核心參數 acks 用來定義消息“已提交”的條件(標準),就是 Broker 端向客戶端承偌已提交的條件,可選值如下:

  1. 0:只要調用 KafkaProducer 的 send 方法返回后即認為成功
  2. all 或 -1:表示消息不僅需要 Leader 節點已存儲該消息,并且要求其副本(準確的來說是 ISR 中的節點)全部存儲才認為已提交,才向客戶端返回提交成功。這是最嚴格的持久化保障,當然性能也最低。
  3. 1:表示消息只需要寫入 Leader 節點后就可以向客戶端返回提交成功。

retries 參數的作用

kafka 在生產端提供的另外一個核心屬性,用來控制消息在發送失敗后的重試次數,設置為 0 表示不重試,重試就有可能造成消息在發送端的重復。從消息發送接口來看:

  1. Future<RecordMetadata> send(ProducerRecord<K, V> record);Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback); 

從上面的 API 可以得知,用戶在使用 KafkaProducer 發送消息時,首先需要將待發送的消息封裝成 ProducerRecord,返回的是一個 Future 對象,典型的 Future 設計模式。

Kafka 消息追加流程

KafkaProducer 的 send 方法,并不會直接向 broker 發送消息,kafka 將消息發送異步化,即分解成兩個步驟,send 方法的職責是將消息追加到內存中(分區的緩存隊列中),然后會由專門的 Send 線程異步將緩存中的消息批量發送到 Kafka Broker 中。

主要的方法在KafkaProducer#doSend

將消息追加到生產者的發送緩存區,其實現類為:RecordAccumulator。我們先來看一下 Kafka 一條消息寫到內存的流程圖:

Sender線程

到此為止,我們看到,當我們調用send 方法的時候,其實只是發送到了 生產者客戶端的服務內存中。還沒有到Broker。Kafka producer 客戶端后臺會啟動一個線程不停的輪詢消息批次存放的區域,把消息發送給Broker。

消息批次的內存結構和分配

根據上面的源碼我們可以了解到,每一個ProducerBatch 是一塊 大小為batch.size 字節大小的內存。而且用到了池化技術。

緩沖池的內存持有類是 BufferPool,我們先來看下 BufferPool 都有哪些成員:

  1. public class BufferPool { 
  2.   // 總的內存大小 
  3.   private final long totalMemory; 
  4.   // 每個內存塊大小,即 batch.size 
  5.   private final int poolableSize; 
  6.   // 申請、歸還內存的方法的同步鎖 
  7.   private final ReentrantLock lock; 
  8.   // 空閑的內存塊 
  9.   private final Deque<ByteBuffer> free
  10.   // 需要等待空閑內存塊的事件 
  11.   private final Deque<Condition> waiters; 
  12.   /** Total available memory is the sum of nonPooledAvailableMemory and the number of byte buffers in free * poolableSize.  */ 
  13.   // 緩沖池還未分配的空閑內存,新申請的內存塊就是從這里獲取內存值 
  14.   private long nonPooledAvailableMemory; 
  15.   // ... 

從 BufferPool 的成員可看出,緩沖池實際上由一個個 ByteBuffer 組成的,BufferPool 持有這些內存塊,并保存在成員 free 中,free 的總大小由 totalMemory 作限制,而 nonPooledAvailableMemory 則表示還剩下緩沖池還剩下多少內存還未被分配。

當 Batch 的消息發送完畢后,就會將它持有的內存塊歸還到 free 中,以便后面的 Batch 申請內存塊時不再創建新的 ByteBuffer,從 free 中取就可以了,從而避免了內存塊被 JVM 回收的問題。

創建內存塊的流程如下:

歸還內存塊的邏輯流程

如果歸還的內存塊大小等于 batchSize,則將其清空后添加到緩沖池的 free 中,即將其歸還給緩沖池,避免了 JVM GC 回收該內存塊。如果不等于就直接將內存大小累加到未分配并且空閑的內存大小值中即可,內存就無需歸還了,等待 JVM GC 回收掉,最后喚醒正在等待空閑內存的線程。

Java生產者是如何管理TCP連接的

為何采用 TCP?

Apache Kafka 的所有通信都是基于 TCP 的,而不是基于 HTTP 或其他協議。無論是生產者、消費者,還是 Broker 之間的通信都是如此。

從社區的角度來看,在開發客戶端時,人們能夠利用 TCP 本身提供的一些高級功能,比如多路復用請求以及同時輪詢多個連接的能力。

TCP 的多路復用請求會在一條物理連接上創建若干個虛擬連接,每個虛擬連接負責流轉各自對應的數據流。其實嚴格來說,TCP 并不能多路復用,它只是提供可靠的消息交付語義保證,比如自動重傳丟失的報文。

而且目前已知的 HTTP 庫在很多編程語言中都略顯簡陋。

何時創建 TCP 連接?

TCP 連接是在創建 KafkaProducer 實例時建立的 ,在創建 KafkaProducer 實例時,生產者應用會在后臺創建并啟動一個名為 Sender 的線程,該 Sender 線程開始運行時首先會創建與 Broker 的連接。

  1. Properties properties = new Properties(); 
  2. properties.put("bootstrap.servers""localhost:9092"); 
  3. properties.put("key.serializer", StringSerializer.class.getName()); 
  4. properties.put("value.serializer", StringSerializer.class.getName()); 
  5. // try-with-resources 
  6. // 創建KafkaProducer實例時,會在后臺創建并啟動Sender線程,Sender線程開始運行時首先會創建與Broker的TCP連接 
  7. try (Producer<String, String> producer = new KafkaProducer<>(properties)) { 
  8.     ProducerRecord<String, String> record = new ProducerRecord<>(TOPIC, KEY, VALUE); 
  9.     Callback callback = (metadata, exception) -> { 
  10.     }; 
  11.     producer.send(record, callback); 
  1. bootstrap.servers是Producer的核心參數之一,指定了Producer啟動時要連接的Broker地址
  2. 如果bootstrap.servers指定了1000個Broker,那么Producer啟動時會首先創建與這1000個Broker的TCP連接
  3. 因此不建議把集群中所有的Broker信息都配置到bootstrap.servers中,通常配置3~4臺足夠
  4. Producer一旦連接到集群中的任意一臺Broker,就能拿到整個集群的Broker信息(metadata request)

TCP 連接還可能在兩個地方被創建:一個是在更新元數據后,另一個是在消息發送時。

  • 當Producer更新了集群的元數據后,如果發現與某些Broker當前沒有連接,那么Producer會創建一個TCP連接

【場景1】

當Producer嘗試向不存在的主題發送消息時,Broker會告訴Producer這個主題不存在,此時Producer會發送metadata request到Kafka集群,去嘗試獲取最新的元數據信息,與集群中所有的Broker建立TCP連接。

【場景2】

Producer通過metadata.max.age.ms參數定期地去更新元數據信息,默認值300000,即5分鐘。

  • 當Producer要發送消息時,Producer發現與目標Broker(依賴負載均衡算法)還沒有連接,也會創建一個TCP連接。

何時關閉 TCP 連接?

Producer端關閉TCP連接有兩種方式:用戶主動關閉、Kafka自動關閉。

【用戶主動關閉】

廣義的主動關閉,包括用戶調用kill -9來殺掉Producer,最推薦的方式:producer.close()

【Kafka自動關閉】

Producer端參數connections.max.idle.ms,默認值540000,即9分鐘

如果9分鐘內沒有任何請求經過某個TCP連接,Kafka會主動把TCP連接關閉

connections.max.idle.ms=-1會禁用這種機制,TCP連接將成為永久長連接

Kafka創建的Socket連接都開啟了keepalive。

【注意】

關閉TCP連接的發起方是Kafka客戶端,屬于被動關閉的場景

被動關閉的后果就是會產生大量的CLOSE_WAIT連接

Producer端或Client端沒有機會顯式地觀測到此TCP連接已被中斷

總結

現在我們可以回答開頭的3個問題了。

1、kafka 是單條發送還是批量發送消息?

正常情況下都是批量發送的。封裝成一個ProducerBatch 發送。

2.kafka 怎么做到單條發送?

只能設置單生產者單線程同步調用send 方法。

3.kafka 發送消息是順序的嗎?

不是的,如果需求順序必須設置key,并且是生產者是單線程的。

4.生產者什么情況下可能會頻繁FullGC?

如果你的消息大小比 batchSize 還要大,則不會從 free 中循環獲取已分配好的內存塊,而是重新創建一個新的 ByteBuffer,并且該 ByteBuffer 不會被歸還到緩沖池中(JVM GC 回收),如果此時 nonPooledAvailableMemory 比消息體還要小,還會將 free 中空閑的內存塊銷毀(JVM GC 回收),以便緩沖池中有足夠的內存空間提供給用戶申請,這些動作都會導致頻繁 GC 的問題出現。

因此,需要根據業務消息的大小,適當調整 batch.size 的大小,避免頻繁 GC。

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-07-08 05:52:34

Kafka架構主從架構

2021-07-07 07:06:31

Brokerkafka架構

2021-07-08 07:16:24

RocketMQ數據結構Message

2021-07-14 17:18:14

RocketMQ消息分布式

2021-07-13 11:52:47

順序消息RocketMQkafka

2015-07-28 17:52:36

IOS知識體系

2021-09-09 06:55:43

kafka冪等生產者

2020-08-04 10:45:05

運維架構技術

2021-07-12 10:25:03

RocketMQ數據結構kafka

2021-07-02 06:27:00

Kafka架構主從架構

2022-05-10 10:06:03

Kafka

2021-12-22 11:00:05

模型Golang語言

2017-06-22 13:07:21

2012-03-08 11:13:23

企業架構

2017-02-27 16:42:23

Spark識體系

2017-04-03 15:35:13

知識體系架構

2015-08-26 09:39:30

java消費者

2020-04-17 14:49:34

Kafka分區數據

2021-12-28 12:01:59

Kafka 消費者機制

2022-05-23 08:20:29

Kafka生產者元數據管理
點贊
收藏

51CTO技術棧公眾號

肉体视频在线| 亚洲熟女乱色一区二区三区久久久| 日韩精品视频一区二区三区| 亚洲综合色丁香婷婷六月图片| 蜜臂av日日欢夜夜爽一区| 日本精品免费观看高清观看| 亚洲不卡1区| 一级黄色免费片| 极品少妇一区二区三区| 亚洲深夜福利在线| 黄色片子免费看| 中国色在线日|韩| 亚洲色图都市小说| 久久精品ww人人做人人爽| 中文字幕欧美在线观看| 国产一区美女| 国产一区二区三区在线| 日本wwwwwww| 日本久久免费| 亚洲一区二区三区小说| 亚洲丰满在线| 午夜一区在线观看| 国产精品自拍网站| 国产成人精品在线观看| 国产一级免费观看| 国产韩日影视精品| 亚洲图片欧洲图片av| 亚洲熟女一区二区三区| 日本午夜免费一区二区| 色综合久久天天综合网| 国产精品久久国产| 久操视频在线免费播放| 久久一区二区三区四区| 国产区二精品视| 99久久精品国产一区二区成人| 久久精品五月| 69av成年福利视频| 精品一区二区三区人妻| 无需播放器亚洲| 尤物精品国产第一福利三区 | 性色av蜜臀av色欲av| 日韩三区四区| 欧美视频一区二区三区| 欧美a在线视频| 第一福利在线视频| 亚洲一区二区精品视频| 男女啪啪免费观看| 动漫一区在线| 亚洲美女免费视频| 青春草在线视频免费观看| 成人性爱视频在线观看| 91在线精品一区二区三区| 国产日韩欧美精品| 免费观看黄色av| 高潮精品一区videoshd| 亚洲一区二区三区sesese| 一级黄色片在线播放| 老司机免费视频一区二区 | 青青青国产在线 | 91免费视频网站在线观看| 牛牛精品在线| 亚洲超碰精品一区二区| 妺妺窝人体色777777| 俺来也官网欧美久久精品| 亚洲一区二区精品视频| 国产一区二区视频播放| 美女视频在线免费| 欧美日韩在线视频首页| 免费黄色福利视频| 亚洲成a人片| 91成人免费网站| 国产免费又粗又猛又爽| www.久久草.com| 日韩午夜激情av| 中国黄色片视频| 午夜欧洲一区| 中文字幕在线成人| 亚洲精品一卡二卡三卡四卡| 国产精品影院在线| 一区二区中文视频| 免费观看亚洲视频| 女人天堂av在线播放| 精品久久久久久亚洲精品| 欧美韩国日本在线| 欧美性www| 欧美mv日韩mv国产网站app| 亚洲av熟女高潮一区二区| 啄木系列成人av电影| 在线成人中文字幕| 免费人成在线观看| 久久国产成人| 国产色综合天天综合网| 亚洲网站在线观看| 亚洲观看黄色网| 国产乱码精品一区二区亚洲 | 国产精品视频久久久| 国产精品久久久久久久免费看| 国产精品1024| 日本不卡在线观看| 成人短视频在线观看| 天天综合日日夜夜精品| 奇米影视四色在线| 精品国产影院| 精品国偷自产在线视频| 全部毛片永久免费看| 久久国产生活片100| 国产精品区一区| 1769视频在线播放免费观看| 亚洲成人免费在线| 中文字幕在线综合| 婷婷成人在线| 欧美国产第二页| 精品国产无码在线观看| 成人在线亚洲| 81精品国产乱码久久久久久| 91精品国产乱码久久久| 99re6这里只有精品视频在线观看| 亚洲国产日韩欧美| 涩涩av在线| 日韩欧美你懂的| 男女男精品视频网站| 国产精品尤物| 国产高清精品一区二区| 麻豆网站在线免费观看| 色94色欧美sute亚洲13| 久久精品国产电影| 久久久噜噜噜www成人网| 成人在线分类| 国产一区二区三区高清在线观看| 豆国产97在线 | 亚洲| 久久精品国产999大香线蕉| 免费日韩av电影| aa国产成人| 日韩欧美一区在线| 老司机成人免费视频| 日韩高清欧美激情| 欧美一区1区三区3区公司 | 国产精品美女一区二区在线观看| 国产极品在线视频| 大型av综合网站| 欧美国产激情18| www.五月天激情| 亚洲欧美乱综合| 看看黄色一级片| 成人在线亚洲| 国产美女久久精品香蕉69| 国产爆初菊在线观看免费视频网站| 欧美日韩激情视频| 特级西西人体wwwww| 一区在线视频观看| 国产伦精品一区二区三区照片| 中文字幕伦理免费在线视频| 555夜色666亚洲国产免| 91插插插插插插| 国产一区二区三区四| 日韩video| 伊人久久大香线蕉av超碰| 久久97精品久久久久久久不卡| 97人妻一区二区精品免费视频| 国产精品水嫩水嫩| 天天干天天操天天做| 久久人体视频| 92国产精品视频| 羞羞网站在线看| 精品国产sm最大网站| 日本少妇全体裸体洗澡| av在线不卡网| 妞干网在线免费视频| 欧美色就是色| 91免费版网站入口| 欧美人与动牲性行为| 亚洲成人久久久久| 高清乱码免费看污| 国产精品沙发午睡系列990531| 最新国产黄色网址| 欧美精品自拍| 久久国产精品99久久久久久丝袜| 亚洲校园激情春色| 色悠悠久久久久| 国产特黄一级片| 午夜精品成人在线视频| 亚洲性猛交xxxx乱大交| 另类调教123区| 全黄性性激高免费视频| 亚洲丝袜啪啪| 91精品在线一区| yellow在线观看网址| 国产一区二区三区视频| 国产情侣av在线| 岛国av在线不卡| 黑人狂躁日本娇小| av一二三不卡影片| 91高清国产视频| 国产情侣一区| 伊人婷婷久久| 色综合久久中文| 91免费国产视频| 欧美日韩国产观看视频| 在线电影欧美日韩一区二区私密| 99国产揄拍国产精品| 精品久久久久久久久久ntr影视| 亚洲一级黄色录像| 成人爽a毛片一区二区免费| 成人免费在线观看视频网站| 国产综合网站| 亚洲一区综合| 一道本一区二区三区| 亚洲自拍偷拍视频| 欧美日韩不卡| 韩国福利视频一区| 毛片在线播放a| 国产一区av在线| 丰满人妻一区二区三区免费| 欧美三级韩国三级日本一级| 激情综合网五月婷婷| 国产精品伦一区二区三级视频| 波多野结衣办公室双飞| 蜜臂av日日欢夜夜爽一区| 欧美视频在线播放一区| 午夜久久美女| 在线丝袜欧美日韩制服| 自拍视频一区| 国产欧美一区二区精品忘忧草| 久久av喷吹av高潮av| 日韩免费电影在线观看| 国产98在线|日韩| 老司机精品视频网| 国产精品福利在线观看| 美女高潮在线观看| 国内自拍欧美激情| 色yeye免费人成网站在线观看| 日韩在线视频观看| 大地资源中文在线观看免费版| 亚洲国产毛片完整版| www.av网站| 欧美一区二区三区人| 国产又粗又大又黄| 欧美性感一类影片在线播放| 国产免费观看av| 五月激情丁香一区二区三区| 久久久精品人妻一区二区三区四| 日韩码欧中文字| 69xxx免费| 中文字幕va一区二区三区| 人人妻人人藻人人爽欧美一区| 99国产精品久久久| 亚洲一区二区在线免费| 丁香激情综合国产| 精品人妻二区中文字幕| 国产精品996| 久久综合桃花网| 国产一区999| 久久aaaa片一区二区| 国产综合久久久久久鬼色| 亚洲视频第二页| 极品尤物av久久免费看| 日本精品一区在线| 国产一区二区在线视频| 免费人成视频在线播放| 国产精品夜夜嗨| 最好看的中文字幕| 成人免费福利片| 艳妇乳肉亭妇荡乳av| 91香蕉视频mp4| 好吊视频在线观看| 欧美激情一区三区| 黄色录像一级片| 亚洲黄色在线视频| 国产一国产二国产三| 欧美日韩精品二区| 蜜臀精品一区二区三区| 欧美三区在线观看| a级片免费视频| 精品久久久久久亚洲综合网| 欧美一级在线免费观看| 亚洲精品自拍第一页| 国产一区二区影视| 精品国产一区久久久| 在线看女人毛片| 97精品一区二区视频在线观看| 亚洲伊人av| 91九色视频导航| 豆花视频一区二区| 日本欧洲国产一区二区| 婷婷色综合网| 欧美视频免费看欧美视频| 男女精品网站| 欧美精品 - 色网| 99这里只有精品| 日本一卡二卡在线播放| 亚洲欧美另类在线| 天天干天天干天天操| 欧美男女性生活在线直播观看| 成人av一区二区三区在线观看| 日韩av在线天堂网| 日本网站在线免费观看视频| 欧美精品成人91久久久久久久| 中文字幕一区久| 亚洲最大成人在线| 欧美男gay| 男人c女人视频| 秋霞影院一区二区| 污污免费在线观看| 中文字幕日韩欧美一区二区三区| xxxxxx国产| 欧美另类变人与禽xxxxx| 日本高清视频免费看| 丝袜亚洲另类欧美重口| 国产在线精彩视频| 亚洲xxxx3d| 国内精品久久久久久99蜜桃| 真人做人试看60分钟免费| 久久综合狠狠| 97人妻精品一区二区三区免费| 国产拍揄自揄精品视频麻豆| 国产午夜精品无码| 欧美嫩在线观看| 国产美女性感在线观看懂色av| 久久久久久中文| 91精品国产色综合久久不卡粉嫩| 久久日韩精品| 国产精品激情| 激情图片中文字幕| 国产精品国产a级| 天天爽夜夜爽人人爽| 精品国产三级电影在线观看| 在线视频91p| 国产97色在线|日韩| 成人爽a毛片| 韩国无码av片在线观看网站| 麻豆91在线看| avhd101老司机| 色噜噜狠狠色综合中国| 婷婷在线免费观看| 久久久久久综合网天天| 亚洲精品aⅴ| 水蜜桃在线免费观看| 蜜桃在线一区二区三区| 鲁丝一区二区三区| 欧美性xxxxxxx| 天天在线女人的天堂视频| 欧美一区二区三区视频免费播放| 国产系列电影在线播放网址| 欧美壮男野外gaytube| 秋霞综合在线视频| 少妇高潮毛片色欲ava片| 成人少妇影院yyyy| av资源吧首页| 日韩av有码在线| 在线人成日本视频| 蜜桃视频在线观看91| 男女精品网站| 国产伦精品一区二区三区视频女| 91国在线观看| 草碰在线视频| 国产日本欧美一区| 2023国产精品久久久精品双| 波多野结衣免费观看| 亚洲视频一区二区在线观看| 99热精品在线播放| 欧美高清不卡在线| 国产美女撒尿一区二区| 黄色国产一级视频| 久久久亚洲精品一区二区三区| 精品人妻一区二区三区潮喷在线| 亚洲日韩欧美视频一区| 九七电影院97理论片久久tvb| 亚洲精品一区二区三区av| 久久99在线观看| 欧美国产日韩在线观看成人| 日韩久久精品一区| 久久久男人天堂| 日韩尤物视频| 激情久久久久久久久久久久久久久久| 欧美日韩色视频| 亚洲精品456在线播放狼人| 中文字幕一区久| 国产对白在线播放| 成人精品一区二区三区四区| 成人精品在线看| 中文字幕日韩欧美| 国色天香久久精品国产一区| www.欧美黄色| 久久久五月婷婷| 91片黄在线观看喷潮| 久久久久久国产精品三级玉女聊斋 | 大奶在线精品| 91视频免费版污| 国产成人福利片| 国产三级av片| 在线观看中文字幕亚洲| 国产精区一区二区| 国产免费黄色小视频| 国产欧美精品一区二区三区四区| 91丨九色丨蝌蚪丨对白| 97国产在线视频| 99久久综合| 制服丝袜第二页| 在线播放91灌醉迷j高跟美女| free性m.freesex欧美|