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

揭秘Kafka的高性能吞吐

開發 架構 Kafka
Kafka作為時下開源消息系統,被廣泛地應用在數據緩沖、異步通信、匯集日志、系統解耦等方面。相比較于RocketMQ等其他常見消息系統,Kafka在保障了大部分功能特性的同時,還提供了讀寫性能。

 Kafka作為時下開源消息系統,被廣泛地應用在數據緩沖、異步通信、匯集日志、系統解耦等方面。相比較于RocketMQ等其他常見消息系統,Kafka在保障了大部分功能特性的同時,還提供了讀寫性能。

[[279458]]

本文將針對Kafka性能方面進行簡單分析,首先簡單介紹一下Kafka的架構和涉及到的名詞:

  • Topic:用于劃分Message的邏輯概念,一個Topic可以分布在多個Broker上。
  • Partition:是Kafka中橫向擴展和一切并行化的基礎,每個Topic都至少被切分為1個Partition。
  • Offset:消息在Partition中的編號,編號順序不跨Partition。
  • Consumer:用于從Broker中取出/消費Message。
  • Producer:用于往Broker中發送/生產Message。
  • Replication:Kafka支持以Partition為單位對Message進行冗余備份,每個Partition都可以配置至少1個Replication(當僅1個Replication時即僅該Partition本身)。
  • Leader:每個Replication集合中的Partition都會選出一個唯一的Leader,所有的讀寫請求都由Leader處理。其他Replicas從Leader處把數據更新同步到本地,過程類似大家熟悉的MySQL中的Binlog同步。
  • Broker:Kafka中使用Broker來接受Producer和Consumer的請求,并把Message持久化到本地磁盤。每個Cluster當中會選舉出一個Broker來擔任Controller,負責處理Partition的Leader選舉,協調Partition遷移等工作。
  • ISR(In-Sync Replica):是Replicas的一個子集,表示目前Alive且與Leader能夠“Catch-up”的Replicas集合。由于讀寫都是首先落到Leader上,所以一般來說通過同步機制從Leader上拉取數據的Replica都會和Leader有一些延遲(包括了延遲時間和延遲條數兩個維度),任意一個超過閾值都會把該Replica踢出ISR。每個Partition都有它自己獨立的ISR。

以上幾乎是我們在使用Kafka的過程中可能遇到的所有名詞,同時也無一不是最核心的概念或組件,感覺到從設計本身來說,Kafka還是足夠簡潔的。這次本文圍繞Kafka優異的吞吐性能,逐個介紹一下其設計與實現當中所使用的各項“黑科技”。

Broker

不同于Redis和MemcacheQ等內存消息隊列,Kafka的設計是把所有的Message都要寫入速度低容量大的硬盤,以此來換取更強的存儲能力。實際上,Kafka使用硬盤并沒有帶來過多的性能損失,“規規矩矩”的抄了一條“近道”。

首先,說“規規矩矩”是因為Kafka在磁盤上只做Sequence I/O,由于消息系統讀寫的特殊性,這并不存在什么問題。關于磁盤I/O的性能,引用一組Kafka官方給出的測試數據(Raid-5,7200rpm):

Sequence I/O: 600MB/s

Random I/O: 100KB/s

所以通過只做Sequence I/O的限制,規避了磁盤訪問速度低下對性能可能造成的影響。

接下來我們再聊一聊Kafka是如何“抄近道的”。

首先,Kafka重度依賴底層操作系統提供的PageCache功能。當上層有寫操作時,操作系統只是將數據寫入PageCache,同時標記Page屬性為Dirty。當讀操作發生時,先從PageCache中查找,如果發生缺頁才進行磁盤調度,最終返回需要的數據。實際上PageCache是把盡可能多的空閑內存都當做了磁盤緩存來使用。同時如果有其他進程申請內存,回收PageCache的代價又很小,所以現代的OS都支持PageCache。

使用PageCache功能同時可以避免在JVM內部緩存數據,JVM為我們提供了強大的GC能力,同時也引入了一些問題不適用與Kafka的設計。

  • 如果在Heap內管理緩存,JVM的GC線程會頻繁掃描Heap空間,帶來不必要的開銷。如果Heap過大,執行一次Full GC對系統的可用性來說將是極大的挑戰。
  • 所有在在JVM內的對象都不免帶有一個Object Overhead(千萬不可小視),內存的有效空間利用率會因此降低。
  • 所有的In-Process Cache在OS中都有一份同樣的PageCache。所以通過將緩存只放在PageCache,可以至少讓可用緩存空間翻倍。
  • 如果Kafka重啟,所有的In-Process Cache都會失效,而OS管理的PageCache依然可以繼續使用。

PageCache還只是第一步,Kafka為了進一步的優化性能還采用了Sendfile技術。在解釋Sendfile之前,首先介紹一下傳統的網絡I/O操作流程,大體上分為以下4步。

OS 從硬盤把數據讀到內核區的PageCache。

用戶進程把數據從內核區Copy到用戶區。

然后用戶進程再把數據寫入到Socket,數據流入內核區的Socket Buffer上。

OS 再把數據從Buffer中Copy到網卡的Buffer上,這樣完成一次發送。 

深度好文——揭秘 Kafka 高性能吞吐

整個過程共經歷兩次Context Switch,四次System Call。同一份數據在內核Buffer與用戶Buffer之間重復拷貝,效率低下。其中2、3兩步沒有必要,完全可以直接在內核區完成數據拷貝。這也正是Sendfile所解決的問題,經過Sendfile優化后,整個I/O過程就變成了下面這個樣子。 

深度好文——揭秘 Kafka 高性能吞吐

通過以上的介紹不難看出,Kafka的設計初衷是盡一切努力在內存中完成數據交換,無論是對外作為一整個消息系統,或是內部同底層操作系統的交互。如果Producer和Consumer之間生產和消費進度上配合得當,完全可以實現數據交換零I/O。這也就是我為什么說Kafka使用“硬盤”并沒有帶來過多性能損失的原因。下面是我在生產環境中采到的一些指標。

(20 Brokers, 75 Partitions per Broker, 110k msg/s) 

深度好文——揭秘 Kafka 高性能吞吐

此時的集群只有寫,沒有讀操作。10M/s左右的Send的流量是Partition之間進行Replicate而產生的。從recv和writ的速率比較可以看出,寫盤是使用Asynchronous+Batch的方式,底層OS可能還會進行磁盤寫順序優化。而在有Read Request進來的時候分為兩種情況,第一種是內存中完成數據交換。 

深度好文——揭秘 Kafka 高性能吞吐

Send流量從平均10M/s增加到了到平均60M/s,而磁盤Read只有不超過50KB/s。PageCache降低磁盤I/O效果非常明顯。

接下來是讀一些收到了一段時間,已經從內存中被換出刷寫到磁盤上的老數據。 

深度好文——揭秘 Kafka 高性能吞吐

其他指標還是老樣子,而磁盤Read已經飚高到40+MB/s。此時全部的數據都已經是走硬盤了(對硬盤的順序讀取OS層會進行Prefill PageCache的優化)。依然沒有任何性能問題。

Tips

Kafka官方并不建議通過Broker端的log.flush.interval.messages和log.flush.interval.ms來強制寫盤,認為數據的可靠性應該通過Replica來保證,而強制Flush數據到磁盤會對整體性能產生影響。

可以通過調整/proc/sys/vm/dirty_background_ratio和/proc/sys/vm/dirty_ratio來調優性能。

臟頁率超過第一個指標會啟動pdflush開始Flush Dirty PageCache。

臟頁率超過第二個指標會阻塞所有的寫操作來進行Flush。

根據不同的業務需求可以適當的降低dirty_background_ratio和提高dirty_ratio。

Partition

Partition是Kafka可以很好的橫向擴展和提供高并發處理以及實現Replication的基礎。

擴展性方面。首先,Kafka允許Partition在集群內的Broker之間任意移動,以此來均衡可能存在的數據傾斜問題。其次,Partition支持自定義的分區算法,例如可以將同一個Key的所有消息都路由到同一個Partition上去。 同時Leader也可以在In-Sync的Replica中遷移。由于針對某一個Partition的所有讀寫請求都是只由Leader來處理,所以Kafka會盡量把Leader均勻的分散到集群的各個節點上,以免造成網絡流量過于集中。

并發方面。任意Partition在某一個時刻只能被一個Consumer Group內的一個Consumer消費(反過來一個Consumer則可以同時消費多個Partition),Kafka非常簡潔的Offset機制最小化了Broker和Consumer之間的交互,這使Kafka并不會像同類其他消息隊列一樣,隨著下游Consumer數目的增加而成比例的降低性能。此外,如果多個Consumer恰巧都是消費時間序上很相近的數據,可以達到很高的PageCache命中率,因而Kafka可以非常高效的支持高并發讀操作,實踐中基本可以達到單機網卡上限。

不過,Partition的數量并不是越多越好,Partition的數量越多,平均到每一個Broker上的數量也就越多??紤]到Broker宕機(Network Failure, Full GC)的情況下,需要由Controller來為所有宕機的Broker上的所有Partition重新選舉Leader,假設每個Partition的選舉消耗10ms,如果Broker上有500個Partition,那么在進行選舉的5s的時間里,對上述Partition的讀寫操作都會觸發LeaderNotAvailableException。

再進一步,如果掛掉的Broker是整個集群的Controller,那么首先要進行的是重新任命一個Broker作為Controller。新任命的Controller要從Zookeeper上獲取所有Partition的Meta信息,獲取每個信息大概3-5ms,那么如果有10000個Partition這個時間就會達到30s-50s。而且不要忘記這只是重新啟動一個Controller花費的時間,在這基礎上還要再加上前面說的選舉Leader的時間 -_-!!!!!!

此外,在Broker端,對Producer和Consumer都使用了Buffer機制。其中Buffer的大小是統一配置的,數量則與Partition個數相同。如果Partition個數過多,會導致Producer和Consumer的Buffer內存占用過大。

Tips

Partition的數量盡量提前預分配,雖然可以在后期動態增加Partition,但是會冒著可能破壞Message Key和Partition之間對應關系的風險。

Replica的數量不要過多,如果條件允許盡量把Replica集合內的Partition分別調整到不同的Rack。

盡一切努力保證每次停Broker時都可以Clean Shutdown,否則問題就不僅僅是恢復服務所需時間長,還可能出現數據損壞或其他很詭異的問題。

Producer

Kafka的研發團隊表示在0.8版本里用Java重寫了整個Producer,據說性能有了很大提升。我還沒有親自對比試用過,這里就不做數據對比了。本文結尾的擴展閱讀里提到了一套我認為比較好的對照組,有興趣的同學可以嘗試一下。

其實在Producer端的優化大部分消息系統采取的方式都比較單一,無非也就化零為整、同步變異步這么幾種。

Kafka系統默認支持MessageSet,把多條Message自動地打成一個Group后發送出去,均攤后拉低了每次通信的RTT。而且在組織MessageSet的同時,還可以把數據重新排序,從爆發流式的隨機寫入優化成較為平穩的線性寫入。

此外,還要著重介紹的一點是,Producer支持End-to-End的壓縮。數據在本地壓縮后放到網絡上傳輸,在Broker一般不解壓(除非指定要Deep-Iteration),直至消息被Consume之后在客戶端解壓。

當然用戶也可以選擇自己在應用層上做壓縮和解壓的工作(畢竟Kafka目前支持的壓縮算法有限,只有GZIP和Snappy),不過這樣做反而會意外的降低效率!!!! Kafka的End-to-End壓縮與MessageSet配合在一起工作效果最佳,上面的做法直接割裂了兩者間聯系。至于道理其實很簡單,壓縮算法中一條基本的原理“重復的數據量越多,壓縮比越高”。無關于消息體的內容,無關于消息體的數量,大多數情況下輸入數據量大一些會取得更好的壓縮比。

不過Kafka采用MessageSet也導致在可用性上一定程度的妥協。每次發送數據時,Producer都是send()之后就認為已經發送出去了,但其實大多數情況下消息還在內存的MessageSet當中,尚未發送到網絡,這時候如果Producer掛掉,那就會出現丟數據的情況。

為了解決這個問題,Kafka在0.8版本的設計借鑒了網絡當中的ack機制。如果對性能要求較高,又能在一定程度上允許Message的丟失,那就可以設置request.required.acks=0 來關閉ack,以全速發送。如果需要對發送的消息進行確認,就需要設置request.required.acks為1或-1,那么1和-1又有什么區別呢?這里又要提到前面聊的有關Replica數量問題。如果配置為1,表示消息只需要被Leader接收并確認即可,其他的Replica可以進行異步拉取無需立即進行確認,在保證可靠性的同時又不會把效率拉得很低。如果設置為-1,表示消息要Commit到該Partition的ISR集合中的所有Replica后,才可以返回ack,消息的發送會更安全,而整個過程的延遲會隨著Replica的數量正比增長,這里就需要根據不同的需求做相應的優化。

Tips

Producer的線程不要配置過多,尤其是在Mirror或者Migration中使用的時候,會加劇目標集群Partition消息亂序的情況(如果你的應用場景對消息順序很敏感的話)。

0.8版本的request.required.acks默認是0(同0.7)。

Consumer

Consumer端的設計大體上還算是比較常規的。

  • 通過Consumer Group,可以支持生產者消費者和隊列訪問兩種模式。
  • Consumer API分為High level和Low level兩種。前一種重度依賴Zookeeper,所以性能差一些且不自由,但是超省心。第二種不依賴Zookeeper服務,無論從自由度和性能上都有更好的表現,但是所有的異常(Leader遷移、Offset越界、Broker宕機等)和Offset的維護都需要自行處理。
  • 大家可以關注下不日發布的0.9 Release。開發人員又用Java重寫了一套Consumer。把兩套API合并在一起,同時去掉了對Zookeeper的依賴。據說性能有大幅度提升哦~~

Tips

強烈推薦使用Low level API,雖然繁瑣一些,但是目前只有這個API可以對Error數據進行自定義處理,尤其是處理Broker異常或由于Unclean Shutdown導致的Corrupted Data時,否則無法Skip只能等著“壞消息”在Broker上被Rotate掉,在此期間該Replica將會一直處于不可用狀態。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-01-07 16:16:57

Kafka開源消息系統

2021-08-30 09:30:29

Kafka高性能設計

2021-10-18 08:28:03

Kafka架構主從架構

2009-08-04 11:16:30

高性能計算HPC植物

2021-09-09 08:20:14

Kafka網絡故障集群

2021-06-21 17:00:05

云計算Hologres云原生

2024-04-02 11:43:08

向量化編程NEON

2024-11-26 00:38:26

2024-12-31 16:11:41

邊緣計算火山引擎虛擬機

2022-06-28 08:42:03

磁盤kafka高性能

2019-08-27 15:00:09

MySQL數據庫存儲

2010-10-13 14:49:14

高性能計算南京大學

2016-04-29 18:07:29

移動端高性能Weex

2024-02-19 08:17:10

Kafka消息隊列收發消息

2023-09-22 11:48:37

2021-07-06 10:35:46

分布式KafkaLinux

2023-05-08 14:56:00

Kafka高可靠高性能

2022-04-28 07:31:41

Springkafka數據量

2023-11-07 15:11:46

Kafka技巧

2023-10-18 07:52:48

Nginx靜態資源服務器
點贊
收藏

51CTO技術棧公眾號

亚洲精品999| 亚洲男同1069视频| 国产精品午夜视频| 美女福利视频在线观看| 精品福利在线| 一区二区三区成人在线视频| 精品无码久久久久久久动漫| 中文字幕天堂在线| 欧美成人国产| 亚洲午夜未满十八勿入免费观看全集| 自拍偷拍一区二区三区四区| 男男gaygays亚洲| 26uuu久久天堂性欧美| 国产精品爽黄69| 国产精品99精品| 日韩精品1区| 亚洲成人中文字幕| 国产亚洲视频一区| www.日韩| 亚洲在线成人精品| 一区二区三区av| 男操女在线观看| 国产v综合v亚洲欧| 国产精品自拍小视频| 国产成人无码精品亚洲| 亚洲有吗中文字幕| 在线观看国产成人av片| 欧美成人三级伦在线观看| 亚洲一区有码| 欧美吻胸吃奶大尺度电影| 欧美一区二区三区爽大粗免费 | 亚洲国产91色在线| 日韩在线一区视频| 成人在线观看免费视频| 色综合夜色一区| www.av片| 黄页网站在线| 亚洲欧美国产三级| 亚洲综合第一| 成年人在线视频| 久久久亚洲精品一区二区三区| 国产精品视频入口| 成人毛片在线精品国产| 国产老妇另类xxxxx| 成人精品视频99在线观看免费| 少妇久久久久久久| 亚洲女同同性videoxma| 91成人性视频| 亚洲精品www久久久久久| 在线欧美福利| 午夜精品一区二区三区视频免费看 | 黄色特一级视频| 毛片在线视频| 亚洲视频每日更新| 男女爱爱视频网站| 色呦呦在线播放| 亚洲永久免费av| 18禁裸男晨勃露j毛免费观看| 欧美人动性xxxxz0oz| 玉米视频成人免费看| 亚洲av综合色区| 欧美xxx黑人xxx水蜜桃| 一区二区三区成人| 成人毛片一区二区| 欧美黄色网页| 欧美在线观看一二区| 五月婷婷六月丁香激情| 宅男噜噜噜66国产精品免费| 欧美一区二区三区精品| 欧美日韩亚洲一| 中老年在线免费视频| 一本色道久久综合亚洲aⅴ蜜桃| 欧美成人精品欧美一级乱| 欧美电影免费观看高清完整| 在线观看视频一区| 成人免费在线观看视频网站| 久久精品嫩草影院| 日韩欧美国产综合在线一区二区三区 | 亚洲天堂av影院| 色视频欧美一区二区三区| 欧美国产日韩在线播放| 亚洲色图综合| 亚洲国产成人精品女人久久久| 国产艳俗歌舞表演hd| 欧美日韩123| www.日韩免费| 日本熟妇毛耸耸xxxxxx| 久久综合网络一区二区| 成人在线视频网| 亚洲欧洲国产综合| 国产精品国产三级国产普通话三级| 成人短视频在线看| segui88久久综合9999| 色婷婷av一区| 亚欧精品在线视频| 台湾亚洲精品一区二区tv| 中文字幕日韩精品有码视频| 欧美成人精品欧美一| 午夜在线a亚洲v天堂网2018| 国产在线视频一区| 五月婷婷激情在线| 亚洲欧美日韩国产另类专区| 每日在线更新av| 九九99久久精品在免费线bt| 精品视频—区二区三区免费| 免费成人美女女在线观看| 亚洲精选久久| 91网站在线看| 国产对白叫床清晰在线播放| 亚洲精品国产一区二区三区四区在线| 黄色片视频在线播放| 这里视频有精品| 精品一区二区三区四区在线| 卡通动漫亚洲综合| 老司机精品久久| 俄罗斯精品一区二区三区| 国产福利小视频在线观看| 香蕉影视欧美成人| 一级淫片在线观看| 欧美精品一区二区三区中文字幕| 欧美激情18p| 国产又粗又猛又黄又爽| 久久品道一品道久久精品| 国产一区二区三区在线免费| 国产欧美在线观看免费| 亚洲欧美日韩一区在线| 99视频在线看| 国产91精品精华液一区二区三区| 亚欧精品在线| 日韩国产网站| 亚洲精品资源美女情侣酒店| 日韩免费视频网站| 成人午夜短视频| 国产精品无码免费专区午夜| 高清一区二区三区av| 中文字幕久久亚洲| 亚洲av无码不卡| 2021久久国产精品不只是精品| 国产精品久久久久7777| 一区二区三区四区视频免费观看| 色狠狠av一区二区三区香蕉蜜桃| 中文字幕av无码一区二区三区| 2014亚洲片线观看视频免费| 免费在线观看亚洲视频| 欧美人与动xxxxz0oz| 欧美精品久久久久久久久久| a在线观看视频| 亚洲免费av观看| 97超碰人人看| 66视频精品| 亚洲va电影大全| 亚洲羞羞网站| 日韩美女一区二区三区四区| 2021亚洲天堂| 成人综合婷婷国产精品久久 | 青青草伊人久久| 日韩国产精品一区二区三区| h1515四虎成人| www.国产精品一二区| 国产精品久久久久久69| 亚洲狼人国产精品| 野战少妇38p| 欧美亚洲一区二区三区| 日本高清视频一区二区三区| 日本肉肉一区| 久久躁狠狠躁夜夜爽| 朝桐光av在线一区二区三区| 亚洲午夜电影在线观看| 久久国产精品无码一级毛片| 丝袜美腿一区二区三区| 亚洲高清视频一区| 精品久久亚洲| 久久久久日韩精品久久久男男| 人人妻人人玩人人澡人人爽| 动漫精品一区二区| 午夜影院黄色片| 国产一区91精品张津瑜| 日本一区午夜艳熟免费| 日韩精品a在线观看91| 国产成人精品免费久久久久| 永久免费av在线| 精品福利视频一区二区三区| 日韩视频在线观看一区| 国产精品久久久一本精品 | 国产精品秘入口18禁麻豆免会员| 国产在线日韩精品| 成人羞羞国产免费| 日韩精品极品| www.精品av.com| 色欲av伊人久久大香线蕉影院| 在线中文字幕一区| 国产这里有精品| 国产亚洲综合性久久久影院| 香蕉视频xxx| 久久亚洲二区| 日本美女爱爱视频| 国产一区二区欧美| 999国内精品视频在线| 黄色成人免费网| 欧美老女人在线视频| 国产在线播放av| 精品对白一区国产伦| jizz国产在线| 天天综合日日夜夜精品| 天天色影综合网| 久久一二三国产| 免费黄色在线播放| 蜜桃av一区二区| 久草资源站在线观看| 亚洲激情久久| 午夜精品福利一区二区| 久久91在线| 99视频在线| 91麻豆精品一二三区在线| 日本高清视频一区| av漫画网站在线观看| 久久久精品在线| 9191在线| 亚洲图片在线综合| 手机在线观看毛片| 日韩女优电影在线观看| 一级特黄aaa大片| 欧美亚洲愉拍一区二区| 六月丁香激情综合| 亚洲一区二区精品3399| 国产精品免费人成网站酒店| 国产喷白浆一区二区三区| 国产伦精品一区二区三区妓女| 国产99精品在线观看| 伊人免费视频二| 精品一区二区免费看| 亚洲综合在线网站| 久久在线精品| 国产一区二区视频免费在线观看| 亚洲国产精品第一区二区三区| 在线观看污视频| 91九色精品| 9999在线观看| 99久久99久久精品国产片桃花| 性欧美大战久久久久久久免费观看| 宅男在线一区| 欧洲亚洲一区| 视频一区在线观看| 水蜜桃一区二区| 成人在线免费观看91| 色噜噜狠狠色综合网| 日本久久一二三四| 亚洲欧美日产图| 国产韩日影视精品| 三年中国中文在线观看免费播放| 99精品电影| 伊人网在线免费| 韩国av一区| 国产在线播放观看| 性娇小13――14欧美| 国产淫片av片久久久久久| 日本在线不卡视频| 精品国产鲁一鲁一区二区三区| 精品一区二区三区香蕉蜜桃 | 99re国产在线| 欧美人xxxx| va视频在线观看| 亚洲国产成人久久综合| 日韩大胆视频| 一本色道久久综合亚洲精品小说 | 国产剧情久久久久久| www.久久久.com| 国产精品一区二区欧美黑人喷潮水| 国产精品国产| 欧美日韩亚洲一区二区三区在线观看| 国产毛片一区二区三区| 亚洲一区影院| 国产精品sm| av天堂永久资源网| 久久99精品一区二区三区三区| 国产黄色一区二区三区| av男人天堂一区| 潮喷失禁大喷水aⅴ无码| 一区二区三区中文字幕精品精品| 中文字幕亚洲高清| 欧美日韩卡一卡二| 少妇av一区二区| 中文字幕欧美日韩| 欧美另类tv| 国产精品久久电影观看| 亚洲91网站| 欧美一二三区| 欧美福利网址| www.xxx亚洲| 国产成人免费视频精品含羞草妖精| 少妇一级淫免费观看| 亚洲国产精品二十页| 久久精品www人人爽人人| 色偷偷久久一区二区三区| 国产成人av免费看| 亚洲人成77777在线观看网| 国产鲁鲁视频在线观看特色| 4438全国成人免费| 成人噜噜噜噜| 日韩三级电影| 亚洲午夜久久久久久尤物| 欧美三级理论片| caoporen国产精品视频| 正在播放国产对白害羞| 精品久久久一区二区| 99久久久国产精品无码免费| 亚洲视频视频在线| gogo久久| 91久久久久久国产精品| 国产一区二区三区四区| 91精品国产91久久久久麻豆 主演| 免费成人美女在线观看.| 欧美高清性xxxx| 亚洲综合自拍偷拍| 国产孕妇孕交大片孕| 亚洲天堂男人天堂| 涩涩涩在线视频| 99re6在线| 小小影院久久| 欧美大尺度做爰床戏| 久久中文娱乐网| 日本一区二区免费在线观看| 欧美一区二区三区视频在线 | 亚洲激情图片一区| 一区二区精品视频在线观看| 亚洲天堂av在线播放| 色戒汤唯在线观看| 国产日韩一区二区| 国内精品美女在线观看| 91丨porny丨九色| 亚洲欧洲日韩一区二区三区| 在线观看国产黄| 色七七影院综合| 免费一级欧美在线观看视频| 日韩欧美一区二区三区四区五区| 久久婷婷一区| 色欲狠狠躁天天躁无码中文字幕 | 精品福利一区| 激情五月宗合网| 92精品国产成人观看免费| 欧美日韩中文视频| 亚洲激情第一页| 欧美aa在线观看| 久久天堂国产精品| 欧美一区=区| 蜜桃av乱码一区二区三区| 91福利区一区二区三区| 国产视频福利在线| 国产精品网站视频| 一区二区三区国产精华| 亚洲av无一区二区三区久久| 亚洲永久精品大片| 黑人精品一区二区| 91精品国产一区| 免费欧美一区| 天美星空大象mv在线观看视频| 国产精品视频线看| 国产丝袜在线视频| 欧美国产第一页| 色综合www| 黄色免费网址大全| 亚洲欧洲精品天堂一级| www.热久久| 欧美最近摘花xxxx摘花| 精品久久久久久久久久久aⅴ| 一女二男3p波多野结衣| 一区二区三区四区激情| 日批免费在线观看| 国产成人啪精品视频免费网| 天天综合精品| 88av在线播放| 在线精品视频一区二区三四| 久cao在线| 国产亚洲自拍偷拍| 日韩精品一区第一页| 男人晚上看的视频| 亚洲国产精品99| av成人免费看| 999一区二区三区| 国产偷国产偷精品高清尤物 | 国产又大又黄视频| 中文字幕日本欧美| 91国内精品白嫩初高生| 日本爱爱免费视频| 亚洲精品乱码久久久久久久久| 亚洲av片一区二区三区| 成人福利网站在线观看11| 激情欧美日韩| 青青青视频在线播放| 精品国产免费人成电影在线观看四季| 欧美成人性网| 400部精品国偷自产在线观看| 91丨porny丨首页| 99在线观看精品视频| 国产不卡在线观看| 欧美精品日韩| 手机毛片在线观看| 亚洲国产精品成人一区二区| 日韩毛片网站| www一区二区www免费|