3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kafka详解 转载

發布時間:2025/3/14 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kafka详解 转载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自https://blog.csdn.net/lingbo229/article/details/80761778

?

Kafka Kafka是最初由Linkedin公司開發,是一個分布式、支持分區的(partition)、多副本的(replica),基于zookeeper協調的分布式消息系統,它的最大的特性就是可以實時的處理大量數據以滿足各種需求場景:比如基于hadoop的批處理系統、低延遲的實時系統、storm/Spark流式處理引擎,web/nginx日志、訪問日志,消息服務等等,用scala語言編寫,Linkedin于2010年貢獻給了Apache基金會并成為頂級開源 項目。 1.前言 消息隊列的性能好壞,其文件存儲機制設計是衡量一個消息隊列服務技術水平和最關鍵指標之一。下面將從Kafka文件存儲機制和物理結構角度,分析Kafka是如何實現高效文件存儲,及實際應用效果。 1.1 ?Kafka的特性: - 高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個topic可以分多個partition, consumer group 對partition進行consume操作。 - 可擴展性:kafka集群支持熱擴展 - 持久性、可靠性:消息被持久化到本地磁盤,并且支持數據備份防止數據丟失 - 容錯性:允許集群中節點失敗(若副本數量為n,則允許n-1個節點失敗) - 高并發:支持數千個客戶端同時讀寫 1.2 ? Kafka的使用場景: - 日志收集:一個公司可以用Kafka可以收集各種服務的log,通過kafka以統一接口服務的方式開放給各種consumer,例如hadoop、Hbase、Solr等。 - 消息系統:解耦和生產者和消費者、緩存消息等。 - 用戶活動跟蹤:Kafka經常被用來記錄web用戶或者app用戶的各種活動,如瀏覽網頁、搜索、點擊等活動,這些活動信息被各個服務器發布到kafka的topic中,然后訂閱者通過訂閱這些topic來做實時的監控分析,或者裝載到hadoop、數據倉庫中做離線分析和挖掘。 - 運營指標:Kafka也經常用來記錄運營監控數據。包括收集各種分布式應用的數據,生產各種操作的集中反饋,比如報警和報告。 - 流式處理:比如spark streaming和storm - 事件源 1.3 ?Kakfa的設計思想 -?Kakfa Broker Leader的選舉:Kakfa Broker集群受Zookeeper管理。所有的Kafka Broker節點一起去Zookeeper上注冊一個臨時節點,因為只有一個Kafka Broker會注冊成功,其他的都會失敗,所以這個成功在Zookeeper上注冊臨時節點的這個Kafka Broker會成為Kafka Broker Controller,其他的Kafka broker叫Kafka Broker follower。(這個過程叫Controller在ZooKeeper注冊Watch)。這個Controller會監聽其他的Kafka Broker的所有信息,如果這個kafka broker controller宕機了,在zookeeper上面的那個臨時節點就會消失,此時所有的kafka broker又會一起去Zookeeper上注冊一個臨時節點,因為只有一個Kafka Broker會注冊成功,其他的都會失敗,所以這個成功在Zookeeper上注冊臨時節點的這個Kafka Broker會成為Kafka Broker Controller,其他的Kafka broker叫Kafka Broker follower。例如:一旦有一個broker宕機了,這個kafka broker controller會讀取該宕機broker上所有的partition在zookeeper上的狀態,并選取ISR列表中的一個replica作為partition leader(如果ISR列表中的replica全掛,選一個幸存的replica作為leader; 如果該partition的所有的replica都宕機了,則將新的leader設置為-1,等待恢復,等待ISR中的任一個Replica“活”過來,并且選它作為Leader;或選擇第一個“活”過來的Replica(不一定是ISR中的)作為Leader),這個broker宕機的事情,kafka controller也會通知zookeeper,zookeeper就會通知其他的kafka broker。 這里曾經發生過一個bug,TalkingData使用Kafka0.8.1的時候,kafka controller在Zookeeper上注冊成功后,它和Zookeeper通信的timeout時間是6s,也就是如果kafka controller如果有6s中沒有和Zookeeper做心跳,那么Zookeeper就認為這個kafka controller已經死了,就會在Zookeeper上把這個臨時節點刪掉,那么其他Kafka就會認為controller已經沒了,就會再次搶著注冊臨時節點,注冊成功的那個kafka broker成為controller,然后,之前的那個kafka controller就需要各種shut down去關閉各種節點和事件的監聽。但是當kafka的讀寫流量都非常巨大的時候,TalkingData的一個bug是,由于網絡等原因,kafka controller和Zookeeper有6s中沒有通信,于是重新選舉出了一個新的kafka controller,但是原來的controller在shut down的時候總是不成功,這個時候producer進來的message由于Kafka集群中存在兩個kafka controller而無法落地。導致數據淤積。 這里曾經還有一個bug,TalkingData使用Kafka0.8.1的時候,當ack=0的時候,表示producer發送出去message,只要對應的kafka broker topic partition leader接收到的這條message,producer就返回成功,不管partition leader 是否真的成功把message真正存到kafka。當ack=1的時候,表示producer發送出去message,同步的把message存到對應topic的partition的leader上,然后producer就返回成功,partition leader異步的把message同步到其他partition replica上。當ack=all或-1,表示producer發送出去message,同步的把message存到對應topic的partition的leader和對應的replica上之后,才返回成功。但是如果某個kafka controller?切換的時候,會導致partition leader的切換(老的?kafka controller上面的partition leader會選舉到其他的kafka broker上),但是這樣就會導致丟數據。 -??Consumergroup:各個consumer(consumer 線程)可以組成一個組(Consumer group?),partition中的每個message只能被組(Consumer group?)中的一個consumer(consumer 線程)消費,如果一個message可以被多個consumer(consumer 線程)消費的話,那么這些consumer必須在不同的組。Kafka不支持一個partition中的message由兩個或兩個以上的同一個consumer group下的consumer thread來處理,除非再啟動一個新的consumer group。所以如果想同時對一個topic做消費的話,啟動多個consumer group就可以了,但是要注意的是,這里的多個consumer的消費都必須是順序讀取partition里面的message,新啟動的consumer默認從partition隊列最頭端最新的地方開始阻塞的讀message。它不能像AMQ那樣可以多個BET作為consumer去互斥的(for update悲觀鎖)并發處理message,這是因為多個BET去消費一個Queue中的數據的時候,由于要保證不能多個線程拿同一條message,所以就需要行級別悲觀所(for update),這就導致了consume的性能下降,吞吐量不夠。而kafka為了保證吞吐量,只允許同一個consumer group下的一個consumer線程去訪問一個partition。如果覺得效率不高的時候,可以加partition的數量來橫向擴展,那么再加新的consumer thread去消費。如果想多個不同的業務都需要這個topic的數據,起多個consumer group就好了,大家都是順序的讀取message,offsite的值互不影響。這樣沒有鎖競爭,充分發揮了橫向的擴展性,吞吐量極高。這也就形成了分布式消費的概念。 當啟動一個consumer group去消費一個topic的時候,無論topic里面有多個少個partition,無論我們consumer group里面配置了多少個consumer thread,這個consumer group下面的所有consumer thread一定會消費全部的partition;即便這個consumer group下只有一個consumer thread,那么這個consumer thread也會去消費所有的partition。因此,最優的設計就是,consumer group下的consumer thread的數量等于partition數量,這樣效率是最高的。 同一partition的一條message只能被同一個Consumer Group內的一個Consumer消費。不能夠一個consumer group的多個consumer同時消費一個partition。 一個consumer group下,無論有多少個consumer,這個consumer group一定回去把這個topic下所有的partition都消費了。當consumer group里面的consumer數量小于這個topic下的partition數量的時候,如下圖groupA,groupB,就會出現一個conusmer thread消費多個partition的情況,總之是這個topic下的partition都會被消費。如果consumer group里面的consumer數量等于這個topic下的partition數量的時候,如下圖groupC,此時效率是最高的,每個partition都有一個consumer thread去消費。當consumer group里面的consumer數量大于這個topic下的partition數量的時候,如下圖GroupD,就會有一個consumer thread空閑。因此,我們在設定consumer group的時候,只需要指明里面有幾個consumer數量即可,無需指定對應的消費partition序號,consumer會自動進行rebalance。 多個Consumer Group下的consumer可以消費同一條message,但是這種消費也是以o(1)的方式順序的讀取message去消費,,所以一定會重復消費這批message的,不能向AMQ那樣多個BET作為consumer消費(對message加鎖,消費的時候不能重復消費message) -?Consumer Rebalance的觸發條件:(1)Consumer增加或刪除會觸發 Consumer Group的Rebalance(2)Broker的增加或者減少都會觸發 Consumer Rebalance -?Consumer:?Consumer處理partition里面的message的時候是o(1)順序讀取的。所以必須維護著上一次讀到哪里的offsite信息。high level API,offset存于Zookeeper中,low level API的offset由自己維護。一般來說都是使用high level api的。Consumer的delivery gurarantee,默認是讀完message先commmit再處理message,autocommit默認是true,這時候先commit就會更新offsite+1,一旦處理失敗,offsite已經+1,這個時候就會丟message;也可以配置成讀完消息處理再commit,這種情況下consumer端的響應就會比較慢的,需要等處理完才行。 一般情況下,一定是一個consumer group處理一個topic的message。Best Practice是這個consumer group里面consumer的數量等于topic里面partition的數量,這樣效率是最高的,一個consumer thread處理一個partition。如果這個consumer group里面consumer的數量小于topic里面partition的數量,就會有consumer thread同時處理多個partition(這個是kafka自動的機制,我們不用指定),但是總之這個topic里面的所有partition都會被處理到的。。如果這個consumer group里面consumer的數量大于topic里面partition的數量,多出的consumer thread就會閑著啥也不干,剩下的是一個consumer thread處理一個partition,這就造成了資源的浪費,因為一個partition不可能被兩個consumer thread去處理。所以我們線上的分布式多個service服務,每個service里面的kafka consumer數量都小于對應的topic的partition數量,但是所有服務的consumer數量只和等于partition的數量,這是因為分布式service服務的所有consumer都來自一個consumer group,如果來自不同的consumer group就會處理重復的message了(同一個consumer group下的consumer不能處理同一個partition,不同的consumer group可以處理同一個topic,那么都是順序處理message,一定會處理重復的。一般這種情況都是兩個不同的業務邏輯,才會啟動兩個consumer group來處理一個topic)。 如果producer的流量增大,當前的topic的parition數量=consumer數量,這時候的應對方式就是很想擴展:增加topic下的partition,同時增加這個consumer group下的consumer。 ? ? ? ? ? ? ?? -?Delivery Mode :?Kafka producer 發送message不用維護message的offsite信息,因為這個時候,offsite就相當于一個自增id,producer就盡管發送message就好了。而且Kafka與AMQ不同,AMQ大都用在處理業務邏輯上,而Kafka大都是日志,所以Kafka的producer一般都是大批量的batch發送message,向這個topic一次性發送一大批message,load balance到一個partition上,一起插進去,offsite作為自增id自己增加就好。但是Consumer端是需要維護這個partition當前消費到哪個message的offsite信息的,這個offsite信息,high level api是維護在Zookeeper上,low level api是自己的程序維護。(Kafka管理界面上只能顯示high level api的consumer部分,因為low level api的partition offsite信息是程序自己維護,kafka是不知道的,無法在管理界面上展示 )當使用high level api的時候,先拿message處理,再定時自動commit offsite+1(也可以改成手動), 并且kakfa處理message是沒有鎖操作的。因此如果處理message失敗,此時還沒有commit offsite+1,當consumer thread重啟后會重復消費這個message。但是作為高吞吐量高并發的實時處理系統,at least once的情況下,至少一次會被處理到,是可以容忍的。如果無法容忍,就得使用low level api來自己程序維護這個offsite信息,那么想什么時候commit offsite+1就自己搞定了。 -?Topic & Partition:Topic相當于傳統消息系統MQ中的一個隊列queue,producer端發送的message必須指定是發送到哪個topic,但是不需要指定topic下的哪個partition,因為kafka會把收到的message進行load balance,均勻的分布在這個topic下的不同的partition上( hash(message) % [broker數量] ?)。物理上存儲上,這個topic會分成一個或多個partition,每個partiton相當于是一個子queue。在物理結構上,每個partition對應一個物理的目錄(文件夾),文件夾命名是[topicname]_[partition]_[序號],一個topic可以有無數多的partition,根據業務需求和數據量來設置。在kafka配置文件中可隨時更高num.partitions參數來配置更改topic的partition數量,在創建Topic時通過參數指定parittion數量。Topic創建之后通過Kafka提供的工具也可以修改partiton數量。 一般來說,(1)一個Topic的Partition數量大于等于Broker的數量,可以提高吞吐率。(2)同一個Partition的Replica盡量分散到不同的機器,高可用。 當add a new partition的時候,partition里面的message不會重新進行分配,原來的partition里面的message數據不會變,新加的這個partition剛開始是空的,隨后進入這個topic的message就會重新參與所有partition的load balance -?Partition Replica:每個partition可以在其他的kafka broker節點上存副本,以便某個kafka broker節點宕機不會影響這個kafka集群。存replica副本的方式是按照kafka broker的順序存。例如有5個kafka broker節點,某個topic有3個partition,每個partition存2個副本,那么partition1存broker1,broker2,partition2存broker2,broker3。。。以此類推(replica副本數目不能大于kafka broker節點的數目,否則報錯。這里的replica數其實就是partition的副本總數,其中包括一個leader,其他的就是copy副本)。這樣如果某個broker宕機,其實整個kafka內數據依然是完整的。但是,replica副本數越高,系統雖然越穩定,但是回來帶資源和性能上的下降;replica副本少的話,也會造成系統丟數據的風險。 (1)怎樣傳送消息:producer先把message發送到partition leader,再由leader發送給其他partition follower。(如果讓producer發送給每個replica那就太慢了) (2)在向Producer發送ACK前需要保證有多少個Replica已經收到該消息:根據ack配的個數而定 (3)怎樣處理某個Replica不工作的情況:如果這個部工作的partition replica不在ack列表中,就是producer在發送消息到partition leader上,partition leader向partition follower發送message沒有響應而已,這個不會影響整個系統,也不會有什么問題。如果這個不工作的partition replica在ack列表中的話,producer發送的message的時候會等待這個不工作的partition replca寫message成功,但是會等到time out,然后返回失敗因為某個ack列表中的partition replica沒有響應,此時kafka會自動的把這個部工作的partition replica從ack列表中移除,以后的producer發送message的時候就不會有這個ack列表下的這個部工作的partition replica了。? (4)怎樣處理Failed Replica恢復回來的情況:如果這個partition replica之前不在ack列表中,那么啟動后重新受Zookeeper管理即可,之后producer發送message的時候,partition leader會繼續發送message到這個partition follower上。如果這個partition replica之前在ack列表中,此時重啟后,需要把這個partition replica再手動加到ack列表中。(ack列表是手動添加的,出現某個部工作的partition replica的時候自動從ack列表中移除的) -?Partition leader與follower:partition也有leader和follower之分。leader是主partition,producer寫kafka的時候先寫partition leader,再由partition leader push給其他的partition follower。partition leader與follower的信息受Zookeeper控制,一旦partition leader所在的broker節點宕機,zookeeper會沖其他的broker的partition follower上選擇follower變為parition leader。 -?Topic分配partition和partition replica的算法:(1)將Broker(size=n)和待分配的Partition排序。(2)將第i個Partition分配到第(i%n)個Broker上。(3)將第i個Partition的第j個Replica分配到第((i + j) % n)個Broker上 -?消息投遞可靠性 一個消息如何算投遞成功,Kafka提供了三種模式: - 第一種是啥都不管,發送出去就當作成功,這種情況當然不能保證消息成功投遞到broker; - 第二種是Master-Slave模型,只有當Master和所有Slave都接收到消息時,才算投遞成功,這種模型提供了最高的投遞可靠性,但是損傷了性能; - 第三種模型,即只要Master確認收到消息就算投遞成功;實際使用時,根據應用特性選擇,絕大多數情況下都會中和可靠性和性能選擇第三種模型 消息在broker上的可靠性,因為消息會持久化到磁盤上,所以如果正常stop一個broker,其上的數據不會丟失;但是如果不正常stop,可能會使存在頁面緩存來不及寫入磁盤的消息丟失,這可以通過配置flush頁面緩存的周期、閾值緩解,但是同樣會頻繁的寫磁盤會影響性能,又是一個選擇題,根據實際情況配置。 消息消費的可靠性,Kafka提供的是“At least once”模型,因為消息的讀取進度由offset提供,offset可以由消費者自己維護也可以維護在zookeeper里,但是當消息消費后consumer掛掉,offset沒有即時寫回,就有可能發生重復讀的情況,這種情況同樣可以通過調整commit offset周期、閾值緩解,甚至消費者自己把消費和commit offset做成一個事務解決,但是如果你的應用不在乎重復消費,那就干脆不要解決,以換取最大的性能。 -?Partition ack:當ack=1,表示producer寫partition leader成功后,broker就返回成功,無論其他的partition follower是否寫成功。當ack=2,表示producer寫partition leader和其他一個follower成功的時候,broker就返回成功,無論其他的partition follower是否寫成功。當ack=-1[parition的數量]的時候,表示只有producer全部寫成功的時候,才算成功,kafka broker才返回成功信息。這里需要注意的是,如果ack=1的時候,一旦有個broker宕機導致partition的follower和leader切換,會導致丟數據。 -?message狀態:在Kafka中,消息的狀態被保存在consumer中,broker不會關心哪個消息被消費了被誰消費了,只記錄一個offset值(指向partition中下一個要被消費的消息位置),這就意味著如果consumer處理不好的話,broker上的一個消息可能會被消費多次。 -?message持久化:Kafka中會把消息持久化到本地文件系統中,并且保持o(1)極高的效率。我們眾所周知IO讀取是非常耗資源的性能也是最慢的,這就是為了數據庫的瓶頸經常在IO上,需要換SSD硬盤的原因。但是Kafka作為吞吐量極高的MQ,卻可以非常高效的message持久化到文件。這是因為Kafka是順序寫入o(1)的時間復雜度,速度非常快。也是高吞吐量的原因。由于message的寫入持久化是順序寫入的,因此message在被消費的時候也是按順序被消費的,保證partition的message是順序消費的。一般的機器,單機每秒100k條數據。 -?message有效期:Kafka會長久保留其中的消息,以便consumer可以多次消費,當然其中很多細節是可配置的。 -?Produer :?Producer向Topic發送message,不需要指定partition,直接發送就好了。kafka通過partition ack來控制是否發送成功并把信息返回給producer,producer可以有任意多的thread,這些kafka服務器端是不care的。Producer端的delivery guarantee默認是At least once的。也可以設置Producer異步發送實現At most once。Producer可以用主鍵冪等性實現Exactly once -?Kafka高吞吐量: Kafka的高吞吐量體現在讀寫上,分布式并發的讀和寫都非常快,寫的性能體現在以o(1)的時間復雜度進行順序寫入。讀的性能體現在以o(1)的時間復雜度進行順序讀取,?對topic進行partition分區,consume group中的consume線程可以以很高能性能進行順序讀。 - Kafka delivery guarantee(message傳送保證):(1)At most once消息可能會丟,絕對不會重復傳輸;(2)At least once 消息絕對不會丟,但是可能會重復傳輸;(3)Exactly once每條信息肯定會被傳輸一次且僅傳輸一次,這是用戶想要的。 -?批量發送:Kafka支持以消息集合為單位進行批量發送,以提高push效率。 -?push-and-pull?: Kafka中的Producer和consumer采用的是push-and-pull模式,即Producer只管向broker push消息,consumer只管從broker pull消息,兩者對消息的生產和消費是異步的。 -?Kafka集群中broker之間的關系:不是主從關系,各個broker在集群中地位一樣,我們可以隨意的增加或刪除任何一個broker節點。 -?負載均衡方面: Kafka提供了一個 metadata API來管理broker之間的負載(對Kafka0.8.x而言,對于0.7.x主要靠zookeeper來實現負載均衡)。 -?同步異步:Producer采用異步push方式,極大提高Kafka系統的吞吐率(可以通過參數控制是采用同步還是異步方式)。 -?分區機制partition:Kafka的broker端支持消息分區partition,Producer可以決定把消息發到哪個partition,在一個partition?中message的順序就是Producer發送消息的順序,一個topic中可以有多個partition,具體partition的數量是可配置的。partition的概念使得kafka作為MQ可以橫向擴展,吞吐量巨大。partition可以設置replica副本,replica副本存在不同的kafka broker節點上,第一個partition是leader,其他的是follower,message先寫到partition leader上,再由partition leader push到parition follower上。所以說kafka可以水平擴展,也就是擴展partition。 -?離線數據裝載:Kafka由于對可拓展的數據持久化的支持,它也非常適合向Hadoop或者數據倉庫中進行數據裝載。 -?實時數據與離線數據:kafka既支持離線數據也支持實時數據,因為kafka的message持久化到文件,并可以設置有效期,因此可以把kafka作為一個高效的存儲來使用,可以作為離線數據供后面的分析。當然作為分布式實時消息系統,大多數情況下還是用于實時的數據處理的,但是當cosumer消費能力下降的時候可以通過message的持久化在淤積數據在kafka。 -?插件支持:現在不少活躍的社區已經開發出不少插件來拓展Kafka的功能,如用來配合Storm、Hadoop、flume相關的插件。 -?解耦: ?相當于一個MQ,使得Producer和Consumer之間異步的操作,系統之間解耦 -?冗余: ?replica有多個副本,保證一個broker node宕機后不會影響整個服務 -?擴展性: ?broker節點可以水平擴展,partition也可以水平增加,partition replica也可以水平增加 -?峰值: ?在訪問量劇增的情況下,kafka水平擴展, 應用仍然需要繼續發揮作用 -?可恢復性: ?系統的一部分組件失效時,由于有partition的replica副本,不會影響到整個系統。 -?順序保證性:由于kafka的producer的寫message與consumer去讀message都是順序的讀寫,保證了高效的性能。 -?緩沖:由于producer那面可能業務很簡單,而后端consumer業務會很復雜并有數據庫的操作,因此肯定是producer會比consumer處理速度快,如果沒有kafka,producer直接調用consumer,那么就會造成整個系統的處理速度慢,加一層kafka作為MQ,可以起到緩沖的作用。 -?異步通信:作為MQ,Producer與Consumer異步通信

2.Kafka文件存儲機制

2.1 Kafka部分名詞解釋如下: Kafka中發布訂閱的對象是topic。我們可以為每類數據創建一個topic,把向topic發布消息的客戶端稱作producer,從topic訂閱消息的客戶端稱作consumer。Producers和consumers可以同時從多個topic讀寫數據。一個kafka集群由一個或多個broker服務器組成,它負責持久化和備份具體的kafka消息。
  • Broker:Kafka節點,一個Kafka節點就是一個broker,多個broker可以組成一個Kafka集群。
  • Topic:一類消息,消息存放的目錄即主題,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能夠同時負責多個topic的分發。
  • Partition:topic物理上的分組,一個topic可以分為多個partition,每個partition是一個有序的隊列
  • Segment:partition物理上由多個segment組成,每個Segment存著message信息
  • Producer?: 生產message發送到topic
  • Consumer?: 訂閱topic消費message, consumer作為一個線程來消費
  • Consumer Group:一個Consumer Group包含多個consumer, 這個是預先在配置文件中配置好的。各個consumer(consumer 線程)可以組成一個組(Consumer group ),partition中的每個message只能被組(Consumer group ) 中的一個consumer(consumer 線程 )消費,如果一個message可以被多個consumer(consumer 線程 ) 消費的話,那么這些consumer必須在不同的組。Kafka不支持一個partition中的message由兩個或兩個以上的consumer thread來處理,即便是來自不同的consumer group的也不行。它不能像AMQ那樣可以多個BET作為consumer去處理message,這是因為多個BET去消費一個Queue中的數據的時候,由于要保證不能多個線程拿同一條message,所以就需要行級別悲觀所(for update),這就導致了consume的性能下降,吞吐量不夠。而kafka為了保證吞吐量,只允許一個consumer線程去訪問一個partition。如果覺得效率不高的時候,可以加partition的數量來橫向擴展,那么再加新的consumer thread去消費。這樣沒有鎖競爭,充分發揮了橫向的擴展性,吞吐量極高。這也就形成了分布式消費的概念。

  • 2.2 kafka一些原理概念
1.持久化 kafka使用文件存儲消息(append only log),這就直接決定kafka在性能上嚴重依賴文件系統的本身特性.且無論任何OS下,對文件系統本身的優化是非常艱難的.文件緩存/直接內存映射等是常用的手段.因為kafka是對日志文件進行append操作,因此磁盤檢索的開支是較小的;同時為了減少磁盤寫入的次數,broker會將消息暫時buffer起來,當消息的個數(或尺寸)達到一定閥值時,再flush到磁盤,這樣減少了磁盤IO調用的次數.對于kafka而言,較高性能的磁盤,將會帶來更加直接的性能提升. 2.性能 除磁盤IO之外,我們還需要考慮網絡IO,這直接關系到kafka的吞吐量問題.kafka并沒有提供太多高超的技巧;對于producer端,可以將消息buffer起來,當消息的條數達到一定閥值時,批量發送給broker;對于consumer端也是一樣,批量fetch多條消息.不過消息量的大小可以通過配置文件來指定.對于kafka broker端,似乎有個sendfile系統調用可以潛在的提升網絡IO的性能:將文件的數據映射到系統內存中,socket直接讀取相應的內存區域即可,而無需進程再次copy和交換(這里涉及到"磁盤IO數據"/"內核內存"/"進程內存"/"網絡緩沖區",多者之間的數據copy). 其實對于producer/consumer/broker三者而言,CPU的開支應該都不大,因此啟用消息壓縮機制是一個良好的策略;壓縮需要消耗少量的CPU資源,不過對于kafka而言,網絡IO更應該需要考慮.可以將任何在網絡上傳輸的消息都經過壓縮.kafka支持gzip/snappy等多種壓縮方式. 3.負載均衡 kafka集群中的任何一個broker,都可以向producer提供metadata信息,這些metadata中包含"集群中存活的servers列表"/"partitions leader列表"等信息(請參看zookeeper中的節點信息). 當producer獲取到metadata信息之后, producer將會和Topic下所有partition leader保持socket連接;消息由producer直接通過socket發送到broker,中間不會經過任何"路由層". 異步發送,將多條消息暫且在客戶端buffer起來,并將他們批量發送到broker;小數據IO太多,會拖慢整體的網絡延遲,批量延遲發送事實上提升了網絡效率;不過這也有一定的隱患,比如當producer失效時,那些尚未發送的消息將會丟失。 4.Topic模型 其他JMS實現,消息消費的位置是有prodiver保留,以便避免重復發送消息或者將沒有消費成功的消息重發等,同時還要控制消息的狀態.這就要求JMS broker需要太多額外的工作.在kafka中,partition中的消息只有一個consumer在消費,且不存在消息狀態的控制,也沒有復雜的消息確認機制,可見kafka broker端是相當輕量級的.當消息被consumer接收之后,consumer可以在本地保存最后消息的offset,并間歇性的向zookeeper注冊offset.由此可見,consumer客戶端也很輕量級。 kafka中consumer負責維護消息的消費記錄,而broker則不關心這些,這種設計不僅提高了consumer端的靈活性,也適度的減輕了broker端設計的復雜度;這是和眾多JMS prodiver的區別.此外,kafka中消息ACK的設計也和JMS有很大不同,kafka中的消息是批量(通常以消息的條數或者chunk的尺寸為單位)發送給consumer,當消息消費成功后,向zookeeper提交消息的offset,而不會向broker交付ACK.或許你已經意識到,這種"寬松"的設計,將會有"丟失"消息/"消息重發"的危險. 5.消息傳輸一致 Kafka提供3種消息傳輸一致性語義:最多1次,最少1次,恰好1次。 最少1次:可能會重傳數據,有可能出現數據被重復處理的情況; 最多1次:可能會出現數據丟失情況; 恰好1次:并不是指真正只傳輸1次,只不過有一個機制。確保不會出現“數據被重復處理”和“數據丟失”的情況。 at most once: 消費者fetch消息,然后保存offset,然后處理消息;當client保存offset之后,但是在消息處理過程中consumer進程失效(crash),導致部分消息未能繼續處理.那么此后可能其他consumer會接管,但是因為offset已經提前保存,那么新的consumer將不能fetch到offset之前的消息(盡管它們尚沒有被處理),這就是"at most once". at least once: 消費者fetch消息,然后處理消息,然后保存offset.如果消息處理成功之后,但是在保存offset階段zookeeper異常或者consumer失效,導致保存offset操作未能執行成功,這就導致接下來再次fetch時可能獲得上次已經處理過的消息,這就是"at least once". "Kafka Cluster"到消費者的場景中可以采取以下方案來得到“恰好1次”的一致性語義: 最少1次+消費者的輸出中額外增加已處理消息最大編號:由于已處理消息最大編號的存在,不會出現重復處理消息的情況。 6.副本 kafka中,replication策略是基于partition,而不是topic;kafka將每個partition數據復制到多個server上,任何一個partition有一個leader和多個follower(可以沒有);備份的個數可以通過broker配置文件來設定。leader處理所有的read-write請求,follower需要和leader保持同步.Follower就像一個"consumer",消費消息并保存在本地日志中;leader負責跟蹤所有的follower狀態,如果follower"落后"太多或者失效,leader將會把它從replicas同步列表中刪除.當所有的follower都將一條消息保存成功,此消息才被認為是"committed",那么此時consumer才能消費它,這種同步策略,就要求follower和leader之間必須具有良好的網絡環境.即使只有一個replicas實例存活,仍然可以保證消息的正常發送和接收,只要zookeeper集群存活即可. 選擇follower時需要兼顧一個問題,就是新leader server上所已經承載的partition leader的個數,如果一個server上有過多的partition leader,意味著此server將承受著更多的IO壓力.在選舉新leader,需要考慮到"負載均衡",partition leader較少的broker將會更有可能成為新的leader. 7.log 每個log entry格式為"4個字節的數字N表示消息的長度" + "N個字節的消息內容";每個日志都有一個offset來唯一的標記一條消息,offset的值為8個字節的數字,表示此消息在此partition中所處的起始位置..每個partition在物理存儲層面,有多個log file組成(稱為segment).segment file的命名為"最小offset".kafka.例如"00000000000.kafka";其中"最小offset"表示此segment中起始消息的offset. 獲取消息時,需要指定offset和最大chunk尺寸,offset用來表示消息的起始位置,chunk size用來表示最大獲取消息的總長度(間接的表示消息的條數).根據offset,可以找到此消息所在segment文件,然后根據segment的最小offset取差值,得到它在file中的相對位置,直接讀取輸出即可. 8.分布式 kafka使用zookeeper來存儲一些meta信息,并使用了zookeeper watch機制來發現meta信息的變更并作出相應的動作(比如consumer失效,觸發負載均衡等) Broker node registry: 當一個kafka broker啟動后,首先會向zookeeper注冊自己的節點信息(臨時znode),同時當broker和zookeeper斷開連接時,此znode也會被刪除. Broker Topic Registry: 當一個broker啟動時,會向zookeeper注冊自己持有的topic和partitions信息,仍然是一個臨時znode. Consumer and Consumer group: 每個consumer客戶端被創建時,會向zookeeper注冊自己的信息;此作用主要是為了"負載均衡".一個group中的多個consumer可以交錯的消費一個topic的所有partitions;簡而言之,保證此topic的所有partitions都能被此group所消費,且消費時為了性能考慮,讓partition相對均衡的分散到每個consumer上. Consumer id Registry: 每個consumer都有一個唯一的ID(host:uuid,可以通過配置文件指定,也可以由系統生成),此id用來標記消費者信息. Consumer offset Tracking: 用來跟蹤每個consumer目前所消費的partition中最大的offset.此znode為持久節點,可以看出offset跟group_id有關,以表明當group中一個消費者失效,其他consumer可以繼續消費. Partition Owner registry: 用來標記partition正在被哪個consumer消費.臨時znode。此節點表達了"一個partition"只能被group下一個consumer消費,同時當group下某個consumer失效,那么將會觸發負載均衡(即:讓partitions在多個consumer間均衡消費,接管那些"游離"的partitions) 當consumer啟動時,所觸發的操作: A) 首先進行"Consumer id Registry"; B) 然后在"Consumer id Registry"節點下注冊一個watch用來監聽當前group中其他consumer的"leave"和"join";只要此znode path下節點列表變更,都會觸發此group下consumer的負載均衡.(比如一個consumer失效,那么其他consumer接管partitions). C) 在"Broker id registry"節點下,注冊一個watch用來監聽broker的存活情況;如果broker列表變更,將會觸發所有的groups下的consumer重新balance. 總結: 1) Producer端使用zookeeper用來"發現"broker列表,以及和Topic下每個partition leader建立socket連接并發送消息. 2) Broker端使用zookeeper用來注冊broker信息,已經監測partition leader存活性. 3) Consumer端使用zookeeper用來注冊consumer信息,其中包括consumer消費的partition列表等,同時也用來發現broker列表,并和partition leader建立socket連接,并獲取消息。 9.Leader的選擇 Kafka的核心是日志文件,日志文件在集群中的同步是分布式數據系統最基礎的要素。 如果leaders永遠不會down的話我們就不需要followers了!一旦leader down掉了,需要在followers中選擇一個新的leader.但是followers本身有可能延時太久或者crash,所以必須選擇高質量的follower作為leader.必須保證,一旦一個消息被提交了,但是leader down掉了,新選出的leader必須可以提供這條消息。大部分的分布式系統采用了多數投票法則選擇新的leader,對于多數投票法則,就是根據所有副本節點的狀況動態的選擇最適合的作為leader.Kafka并不是使用這種方法。 Kafka動態維護了一個同步狀態的副本的集合(a set of in-sync replicas),簡稱ISR,在這個集合中的節點都是和leader保持高度一致的,任何一條消息必須被這個集合中的每個節點讀取并追加到日志中了,才回通知外部這個消息已經被提交了。因此這個集合中的任何一個節點隨時都可以被選為leader.ISR在ZooKeeper中維護。ISR中有f+1個節點,就可以允許在f個節點down掉的情況下不會丟失消息并正常提供服。ISR的成員是動態的,如果一個節點被淘汰了,當它重新達到“同步中”的狀態時,他可以重新加入ISR.這種leader的選擇方式是非常快速的,適合kafka的應用場景。 一個邪惡的想法:如果所有節點都down掉了怎么辦?Kafka對于數據不會丟失的保證,是基于至少一個節點是存活的,一旦所有節點都down了,這個就不能保證了。 實際應用中,當所有的副本都down掉時,必須及時作出反應。可以有以下兩種選擇: 1. 等待ISR中的任何一個節點恢復并擔任leader。 2. 選擇所有節點中(不只是ISR)第一個恢復的節點作為leader. 這是一個在可用性和連續性之間的權衡。如果等待ISR中的節點恢復,一旦ISR中的節點起不起來或者數據都是了,那集群就永遠恢復不了了。如果等待ISR意外的節點恢復,這個節點的數據就會被作為線上數據,有可能和真實的數據有所出入,因為有些數據它可能還沒同步到。Kafka目前選擇了第二種策略,在未來的版本中將使這個策略的選擇可配置,可以根據場景靈活的選擇。 這種窘境不只Kafka會遇到,幾乎所有的分布式數據系統都會遇到。 10.副本管理 以上僅僅以一個topic一個分區為例子進行了討論,但實際上一個Kafka將會管理成千上萬的topic分區.Kafka盡量的使所有分區均勻的分布到集群所有的節點上而不是集中在某些節點上,另外主從關系也盡量均衡這樣每個幾點都會擔任一定比例的分區的leader. 優化leader的選擇過程也是很重要的,它決定了系統發生故障時的空窗期有多久。Kafka選擇一個節點作為“controller”,當發現有節點down掉的時候它負責在游泳分區的所有節點中選擇新的leader,這使得Kafka可以批量的高效的管理所有分區節點的主從關系。如果controller down掉了,活著的節點中的一個會備切換為新的controller. 11.Leader與副本同步 對于某個分區來說,保存正分區的"broker"為該分區的"leader",保存備份分區的"broker"為該分區的"follower"。備份分區會完全復制正分區的消息,包括消息的編號等附加屬性值。為了保持正分區和備份分區的內容一致,Kafka采取的方案是在保存備份分區的"broker"上開啟一個消費者進程進行消費,從而使得正分區的內容與備份分區的內容保持一致。一般情況下,一個分區有一個“正分區”和零到多個“備份分區”。可以配置“正分區+備份分區”的總數量,關于這個配置,不同主題可以有不同的配置值。注意,生產者,消費者只與保存正分區的"leader"進行通信。 Kafka允許topic的分區擁有若干副本,這個數量是可以配置的,你可以為每個topic配置副本的數量。Kafka會自動在每個副本上備份數據,所以當一個節點down掉時數據依然是可用的。 Kafka的副本功能不是必須的,你可以配置只有一個副本,這樣其實就相當于只有一份數據。 創建副本的單位是topic的分區,每個分區都有一個leader和零或多個followers.所有的讀寫操作都由leader處理,一般分區的數量都比broker的數量多的多,各分區的leader均勻的分布在brokers中。所有的followers都復制leader的日志,日志中的消息和順序都和leader中的一致。followers向普通的consumer那樣從leader那里拉取消息并保存在自己的日志文件中。 許多分布式的消息系統自動的處理失敗的請求,它們對一個節點是否著(alive)”有著清晰的定義。Kafka判斷一個節點是否活著有兩個條件: 1. 節點必須可以維護和ZooKeeper的連接,Zookeeper通過心跳機制檢查每個節點的連接。 2. 如果節點是個follower,他必須能及時的同步leader的寫操作,延時不能太久。 符合以上條件的節點準確的說應該是“同步中的(in sync)”,而不是模糊的說是“活著的”或是“失敗的”。Leader會追蹤所有“同步中”的節點,一旦一個down掉了,或是卡住了,或是延時太久,leader就會把它移除。至于延時多久算是“太久”,是由參數replica.lag.max.messages決定的,怎樣算是卡住了,怎是由參數replica.lag.time.max.ms決定的。 只有當消息被所有的副本加入到日志中時,才算是“committed”,只有committed的消息才會發送給consumer,這樣就不用擔心一旦leader down掉了消息會丟失。Producer也可以選擇是否等待消息被提交的通知,這個是由參數acks決定的。 Kafka保證只要有一個“同步中”的節點,“committed”的消息就不會丟失。
  • 2.3 ?kafka拓撲結構

一個典型的Kafka集群中包含若干Producer(可以是web前端FET,或者是服務器日志等),若干broker(Kafka支持水平擴展,一般broker數量越多,集群吞吐率越高),若干ConsumerGroup,以及一個Zookeeper集群。Kafka通過Zookeeper管理Kafka集群配置:選舉Kafka broker的leader,以及在Consumer Group發生變化時進行rebalance,因為consumer消費kafka topic的partition的offsite信息是存在Zookeeper的。Producer使用push模式將消息發布到broker,Consumer使用pull模式從broker訂閱并消費消息。

分析過程分為以下4個步驟:

  • topic中partition存儲分布
  • partiton中文件存儲方式 (partition在linux服務器上就是一個目錄(文件夾))
  • partiton中segment文件存儲結構
  • 在partition中如何通過offset查找message

通過上述4過程詳細分析,我們就可以清楚認識到kafka文件存儲機制的奧秘。

2.3 topic中partition存儲分布

假設實驗環境中Kafka集群只有一個broker,xxx/message-folder為數據文件存儲根目錄,在Kafka broker中server.properties文件配置(參數log.dirs=xxx/message-folder),例如創建2個topic名 稱分別為report_push、launch_info, partitions數量都為partitions=4

存儲路徑和目錄規則為:

xxx/message-folder

|--report_push-0
? |--report_push-1
? |--report_push-2
? |--report_push-3
? |--launch_info-0
? |--launch_info-1
? |--launch_info-2
? |--launch_info-3 在Kafka文件存儲中,同一個topic下有多個不同partition,每個partition為一個目錄,partiton命名規則為topic名稱+有序序號,第一個partiton序號從0開始,序號最大值為partitions數量減1。 消息發送時都被發送到一個topic,其本質就是一個目錄,而topic由是由一些Partition組成,其組織結構如下圖所示: 我們可以看到,Partition是一個Queue的結構,每個Partition中的消息都是有序的,生產的消息被不斷追加到Partition上,其中的每一個消息都被賦予了一個唯一的offset值。 Kafka集群會保存所有的消息,不管消息有沒有被消費;我們可以設定消息的過期時間,只有過期的數據才會被自動清除以釋放磁盤空間。比如我們設置消息過期時間為2天,那么這2天內的所有消息都會被保存到集群中,數據只有超過了兩天才會被清除。 Kafka只維護在Partition中的offset值,因為這個offsite標識著這個partition的message消費到哪條了。Consumer每消費一個消息,offset就會加1。其實消息的狀態完全是由Consumer控制的,Consumer可以跟蹤和重設這個offset值,這樣的話Consumer就可以讀取任意位置的消息。 把消息日志以Partition的形式存放有多重考慮,第一,方便在集群中擴展,每個Partition可以通過調整以適應它所在的機器,而一個topic又可以有多個Partition組成,因此整個集群就可以適應任意大小的數據了;第二就是可以提高并發,因為可以以Partition為單位讀寫了。 通過上面介紹的我們可以知道,kafka中的數據是持久化的并且能夠容錯的。Kafka允許用戶為每個topic設置副本數量,副本數量決定了有幾個broker來存放寫入的數據。如果你的副本數量設置為3,那么一份數據就會被存放在3臺不同的機器上,那么就允許有2個機器失敗。一般推薦副本數量至少為2,這樣就可以保證增減、重啟機器時不會影響到數據消費。如果對數據持久化有更高的要求,可以把副本數量設置為3或者更多。 Kafka中的topic是以partition的形式存放的,每一個topic都可以設置它的partition數量,Partition的數量決定了組成topic的message的數量。Producer在生產數據時,會按照一定規則(這個規則是可以自定義的)把消息發布到topic的各個partition中。上面將的副本都是以partition為單位的,不過只有一個partition的副本會被選舉成leader作為讀寫用。 關于如何設置partition值需要考慮的因素。一個partition只能被一個消費者消費(一個消費者可以同時消費多個partition),因此,如果設置的partition的數量小于consumer的數量,就會有消費者消費不到數據。所以,推薦partition的數量一定要大于同時運行的consumer的數量。另外一方面,建議partition的數量大于集群broker的數量,這樣leader partition就可以均勻的分布在各個broker中,最終使得集群負載均衡。在Cloudera,每個topic都有上百個partition。需要注意的是,kafka需要為每個partition分配一些內存來緩存消息數據,如果partition數量越大,就要為kafka分配更大的heap space。 2.4 partiton中文件存儲方式
  • 每個partion(目錄)相當于一個巨型文件被平均分配到多個大小相等segment(段)數據文件中。但每個段segment file消息數量不一定相等,這種特性方便old segment file快速被刪除。
  • 每個partiton只需要支持順序讀寫就行了,segment文件生命周期由服務端配置參數決定。

這樣做的好處就是能快速刪除無用文件,有效提高磁盤利用率。

2.5 partiton中segment文件存儲結構 producer發message到某個topic,message會被均勻的分布到多個partition上(隨機或根據用戶指定的回調函數進行分布),kafka broker收到message往對應partition的最后一個segment上添加該消息,當某個segment上的消息條數達到配置值或消息發布時間超過閾值時,segment上的消息會被flush到磁盤,只有flush到磁盤上的消息consumer才能消費,segment達到一定的大小后將不會再往該segment寫數據,broker會創建新的segment。 每個part在內存中對應一個index,記錄每個segment中的第一條消息偏移。
  • segment file組成:由2大部分組成,分別為index file和data file,此2個文件一一對應,成對出現,后綴".index"和“.log”分別表示為segment索引文件、數據文件.
  • segment文件命名規則:partion全局的第一個segment從0開始,后續每個segment文件名為上一個全局partion的最大offset(偏移message數)。數值最大為64位long大小,19位數字字符長度,沒有數字用0填充。
每個segment中存儲很多條消息,消息id由其邏輯位置決定,即從消息id可直接定位到消息的存儲位置,避免id到位置的額外映射。

下面文件列表是筆者在Kafka broker上做的一個實驗,創建一個topicXXX包含1 partition,設置每個segment大小為500MB,并啟動producer向Kafka broker寫入大量數據,如下圖2所示segment文件列表形象說明了上述2個規則:

以上述圖2中一對segment file文件為例,說明segment中index<—->data file對應關系物理結構如下:

上述圖3中索引文件存儲大量元數據,數據文件存儲大量消息,索引文件中元數據指向對應數據文件中message的物理偏移地址。其中以索引文件中 元數據3,497為例,依次在數據文件中表示第3個message(在全局partiton表示第368772個message)、以及該消息的物理偏移 地址為497。

從上述圖3了解到segment data file由許多message組成,下面詳細說明message物理結構如下:

參數說明:

關鍵字解釋說明
8 byte offset在parition(分區)內的每條消息都有一個有序的id號,這個id號被稱為偏移(offset),它可以唯一確定每條消息在parition(分區)內的位置。即offset表示partiion的第多少message
4 byte message sizemessage大小
4 byte CRC32用crc32校驗message
1 byte “magic"表示本次發布Kafka服務程序協議版本號
1 byte “attributes"表示為獨立版本、或標識壓縮類型、或編碼類型。
4 byte key length表示key的長度,當key為-1時,K byte key字段不填
K byte key可選
value bytes payload表示實際消息數據。
2.6 在partition中如何通過offset查找message

例如讀取offset=368776的message,需要通過下面2個步驟查找。

  • 第一步查找segment file

    上述圖2為例,其中00000000000000000000.index表示最開始的文件,起始偏移量(offset)為0.第二個文件 00000000000000368769.index的消息量起始偏移量為368770 = 368769 + 1.同樣,第三個文件00000000000000737337.index的起始偏移量為737338=737337 + 1,其他后續文件依次類推,以起始偏移量命名并排序這些文件,只要根據offset **二分查找**文件列表,就可以快速定位到具體文件。

    當offset=368776時定位到00000000000000368769.index|log

  • 第二步通過segment file查找message通過第一步定位到segment file,當offset=368776時,依次定位到00000000000000368769.index的元數據物理位置和 00000000000000368769.log的物理偏移地址,然后再通過00000000000000368769.log順序查找直到 offset=368776為止。

segment index file采取稀疏索引存儲方式,它減少索引文件大小,通過mmap可以直接內存操作,稀疏索引為數據文件的每個對應message設置一個元數據指針,它 比稠密索引節省了更多的存儲空間,但查找起來需要消耗更多的時間。 kafka會記錄offset到zk中。但是,zk client api對zk的頻繁寫入是一個低效的操作。0.8.2 kafka引入了native offset storage,將offset管理從zk移出,并且可以做到水平擴展。其原理就是利用了kafka的compacted topic,offset以consumer group,topic與partion的組合作為key直接提交到compacted topic中。同時Kafka又在內存中維護了的三元組來維護最新的offset信息,consumer來取最新offset信息的時候直接內存里拿即可。當然,kafka允許你快速的checkpoint最新的offset信息到磁盤上。 3.Partition Replication原則

Kafka高效文件存儲設計特點

  • Kafka把topic中一個parition大文件分成多個小文件段,通過多個小文件段,就容易定期清除或刪除已經消費完文件,減少磁盤占用。
  • 通過索引信息可以快速定位message和確定response的最大大小。
  • 通過index元數據全部映射到memory,可以避免segment file的IO磁盤操作。
  • 通過索引文件稀疏存儲,可以大幅降低index文件元數據占用空間大小。

1. Kafka集群partition?replication默認自動分配分析

下面以一個Kafka集群中4個Broker舉例,創建1個topic包含4個Partition,2 Replication;數據Producer流動如圖所示:

(1)

?

?

(2)當集群中新增2節點,Partition增加到6個時分布情況如下:

?

副本分配邏輯規則如下:

  • 在Kafka集群中,每個Broker都有均等分配Partition的Leader機會。
  • 上述圖Broker Partition中,箭頭指向為副本,以Partition-0為例:broker1中parition-0為Leader,Broker2中Partition-0為副本。
  • 上述圖種每個Broker(按照BrokerId有序)依次分配主Partition,下一個Broker為副本,如此循環迭代分配,多副本都遵循此規則。
副本分配算法如下:
  • 將所有N Broker和待分配的i個Partition排序.
  • 將第i個Partition分配到第(i mod n)個Broker上.
  • 將第i個Partition的第j個副本分配到第((i + j) mod n)個Broker上.
4.Kafka Broker一些特性 4.1 無狀態的Kafka Broker : 1. Broker沒有副本機制,一旦broker宕機,該broker的消息將都不可用。 2. Broker不保存訂閱者的狀態,由訂閱者自己保存。 3. 無狀態導致消息的刪除成為難題(可能刪除的消息正在被訂閱),kafka采用基于時間的SLA(服務水平保證),消息保存一定時間(通常為7天)后會被刪除。 4. 消息訂閱者可以rewind back到任意位置重新進行消費,當訂閱者故障時,可以選擇最小的offset進行重新讀取消費消息。 4.2 message的交付與生命周期 : 1. 不是嚴格的JMS, 因此kafka對消息的重復、丟失、錯誤以及順序型沒有嚴格的要求。(這是與AMQ最大的區別) 2. kafka提供at-least-once delivery,即當consumer宕機后,有些消息可能會被重復delivery。 3. 因每個partition只會被consumer group內的一個consumer消費,故kafka保證每個partition內的消息會被順序的訂閱。 4. Kafka為每條消息為每條消息計算CRC校驗,用于錯誤檢測,crc校驗不通過的消息會直接被丟棄掉。 4.3 壓縮 Kafka支持以集合(batch)為單位發送消息,在此基礎上,Kafka還支持對消息集合進行壓縮,Producer端可以通過GZIP或Snappy格式對消息集合進行壓縮。Producer端進行壓縮之后,在Consumer端需進行解壓。壓縮的好處就是減少傳輸的數據量,減輕對網絡傳輸的壓力,在對大數據處理上,瓶頸往往體現在網絡上而不是CPU。 那么如何區分消息是壓縮的還是未壓縮的呢,Kafka在消息頭部添加了一個描述壓縮屬性字節,這個字節的后兩位表示消息的壓縮采用的編碼,如果后兩位為0,則表示消息未被壓縮。 4.4 消息可靠性 在消息系統中,保證消息在生產和消費過程中的可靠性是十分重要的,在實際消息傳遞過程中,可能會出現如下三中情況: - 一個消息發送失敗 - 一個消息被發送多次 - 最理想的情況:exactly-once ,一個消息發送成功且僅發送了一次 有許多系統聲稱它們實現了exactly-once,但是它們其實忽略了生產者或消費者在生產和消費過程中有可能失敗的情況。比如雖然一個Producer成功發送一個消息,但是消息在發送途中丟失,或者成功發送到broker,也被consumer成功取走,但是這個consumer在處理取過來的消息時失敗了。 從Producer端看:Kafka是這么處理的,當一個消息被發送后,Producer會等待broker成功接收到消息的反饋(可通過參數控制等待時間),如果消息在途中丟失或是其中一個broker掛掉,Producer會重新發送(我們知道Kafka有備份機制,可以通過參數控制是否等待所有備份節點都收到消息)。 從Consumer端看:前面講到過partition,broker端記錄了partition中的一個offset值,這個值指向Consumer下一個即將消費message。當Consumer收到了消息,但卻在處理過程中掛掉,此時Consumer可以通過這個offset值重新找到上一個消息再進行處理。Consumer還有權限控制這個offset值,對持久化到broker端的消息做任意處理。 4.5 備份機制 備份機制是Kafka0.8版本的新特性,備份機制的出現大大提高了Kafka集群的可靠性、穩定性。有了備份機制后,Kafka允許集群中的節點掛掉后而不影響整個集群工作。一個備份數量為n的集群允許n-1個節點失敗。在所有備份節點中,有一個節點作為lead節點,這個節點保存了其它備份節點列表,并維持各個備份間的狀體同步。下面這幅圖解釋了Kafka的備份機制: 4.6 Kafka高效性相關設計 4.6.1 消息的持久化 Kafka高度依賴文件系統來存儲和緩存消息(AMQ的nessage是持久化到mysql數據庫中的),因為一般的人認為磁盤是緩慢的,這導致人們對持久化結構具有競爭性持懷疑態度。其實,磁盤的快或者慢,這決定于我們如何使用磁盤。因為磁盤線性寫的速度遠遠大于隨機寫。線性讀寫在大多數應用場景下是可以預測的。 4.6.2 常數時間性能保證 每個Topic的Partition的是一個大文件夾,里面有無數個小文件夾segment,但partition是一個隊列,隊列中的元素是segment,消費的時候先從第0個segment開始消費,新來message存在最后一個消息隊列中。對于segment也是對隊列,隊列元素是message,有對應的offsite標識是哪個message。消費的時候先從這個segment的第一個message開始消費,新來的message存在segment的最后。 消息系統的持久化隊列可以構建在對一個文件的讀和追加上,就像一般情況下的日志解決方案。它有一個優點,所有的操作都是常數時間,并且讀寫之間不會相互阻塞。這種設計具有極大的性能優勢:最終系統性能和數據大小完全無關,服務器可以充分利用廉價的硬盤來提供高效的消息服務。 事實上還有一點,磁盤空間的無限增大而不影響性能這點,意味著我們可以提供一般消息系統無法提供的特性。比如說,消息被消費后不是立馬被刪除,我們可以將這些消息保留一段相對比較長的時間(比如一個星期)。 5.Kafka 生產者-消費者 消息系統通常都會由生產者,消費者,Broker三大部分組成,生產者會將消息寫入到Broker,消費者會從Broker中讀取出消息,不同的MQ實現的Broker實現會有所不同,不過Broker的本質都是要負責將消息落地到服務端的存儲系統中。具體步驟如下:
  • 生產者客戶端應用程序產生消息:

  • 客戶端連接對象將消息包裝到請求中發送到服務端
  • 服務端的入口也有一個連接對象負責接收請求,并將消息以文件的形式存儲起來
  • 服務端返回響應結果給生產者客戶端
  • 消費者客戶端應用程序消費消息:

  • 客戶端連接對象將消費信息也包裝到請求中發送給服務端
  • 服務端從文件存儲系統中取出消息
  • 服務端返回響應結果給消費者客戶端
  • 客戶端將響應結果還原成消息并開始處理消息
  • 圖4-1?客戶端和服務端交互 5.1 ?Producers Producers直接發送消息到broker上的leader partition,不需要經過任何中介或其他路由轉發。為了實現這個特性,kafka集群中的每個broker都可以響應producer的請求,并返回topic的一些元信息,這些元信息包括哪些機器是存活的,topic的leader partition都在哪,現階段哪些leader partition是可以直接被訪問的。 Producer客戶端自己控制著消息被推送到哪些partition。實現的方式可以是隨機分配、實現一類隨機負載均衡算法,或者指定一些分區算法。Kafka提供了接口供用戶實現自定義的partition,用戶可以為每個消息指定一個partitionKey,通過這個key來實現一些hash分區算法。比如,把userid作為partitionkey的話,相同userid的消息將會被推送到同一個partition。 以Batch的方式推送數據可以極大的提高處理效率,kafka Producer 可以將消息在內存中累計到一定數量后作為一個batch發送請求。Batch的數量大小可以通過Producer的參數控制,參數值可以設置為累計的消息的數量(如500條)、累計的時間間隔(如100ms)或者累計的數據大小(64KB)。通過增加batch的大小,可以減少網絡請求和磁盤IO的次數,當然具體參數設置需要在效率和時效性方面做一個權衡。 Producers可以異步的并行的向kafka發送消息,但是通常producer在發送完消息之后會得到一個future響應,返回的是offset值或者發送過程中遇到的錯誤。這其中有個非常重要的參數“acks”,這個參數決定了producer要求leader partition 收到確認的副本個數,如果acks設置數量為0,表示producer不會等待broker的響應,所以,producer無法知道消息是否發送成功,這樣有可能會導致數據丟失,但同時,acks值為0會得到最大的系統吞吐量。 若acks設置為1,表示producer會在leader partition收到消息時得到broker的一個確認,這樣會有更好的可靠性,因為客戶端會等待直到broker確認收到消息。若設置為-1,producer會在所有備份的partition收到消息時得到broker的確認,這個設置可以得到最高的可靠性保證。 Kafka 消息有一個定長的header和變長的字節數組組成。因為kafka消息支持字節數組,也就使得kafka可以支持任何用戶自定義的序列號格式或者其它已有的格式如Apache Avro、protobuf等。Kafka沒有限定單個消息的大小,但我們推薦消息大小不要超過1MB,通常一般消息大小都在1~10kB之前。 發布消息時,kafka client先構造一條消息,將消息加入到消息集set中(kafka支持批量發布,可以往消息集合中添加多條消息,一次行發布),send消息時,producer client需指定消息所屬的topic。 5.2 ?Consumers Kafka提供了兩套consumer api,分為high-level api和sample-api。Sample-api 是一個底層的API,它維持了一個和單一broker的連接,并且這個API是完全無狀態的,每次請求都需要指定offset值,因此,這套API也是最靈活的。 在kafka中,當前讀到哪條消息的offset值是由consumer來維護的,因此,consumer可以自己決定如何讀取kafka中的數據。比如,consumer可以通過重設offset值來重新消費已消費過的數據。不管有沒有被消費,kafka會保存數據一段時間,這個時間周期是可配置的,只有到了過期時間,kafka才會刪除這些數據。(這一點與AMQ不一樣,AMQ的message一般來說都是持久化到mysql中的,消費完的message會被delete掉) High-level API封裝了對集群中一系列broker的訪問,可以透明的消費一個topic。它自己維持了已消費消息的狀態,即每次消費的都是下一個消息。 High-level API還支持以組的形式消費topic,如果consumers有同一個組名,那么kafka就相當于一個隊列消息服務,而各個consumer均衡的消費相應partition中的數據。若consumers有不同的組名,那么此時kafka就相當與一個廣播服務,會把topic中的所有消息廣播到每個consumer。 High level api和Low level api是針對consumer而言的,和producer無關。 High level api是consumer讀的partition的offsite是存在zookeeper上。High level api?會啟動另外一個線程去每隔一段時間,offsite自動同步到zookeeper上。換句話說,如果使用了High level api, 每個message只能被讀一次,一旦讀了這條message之后,無論我consumer的處理是否ok。High level api的另外一個線程會自動的把offiste+1同步到zookeeper上。如果consumer讀取數據出了問題,offsite也會在zookeeper上同步。因此,如果consumer處理失敗了,會繼續執行下一條。這往往是不對的行為。因此,Best Practice是一旦consumer處理失敗,直接讓整個conusmer group拋Exception終止,但是最后讀的這一條數據是丟失了,因為在zookeeper里面的offsite已經+1了。等再次啟動conusmer group的時候,已經從下一條開始讀取處理了。 Low level api是consumer讀的partition的offsite在consumer自己的程序中維護。不會同步到zookeeper上。但是為了kafka manager能夠方便的監控,一般也會手動的同步到zookeeper上。這樣的好處是一旦讀取某個message的consumer失敗了,這條message的offsite我們自己維護,我們不會+1。下次再啟動的時候,還會從這個offsite開始讀。這樣可以做到exactly once對于數據的準確性有保證。 對于Consumer group: 1. 允許consumer group(包含多個consumer,如一個集群同時消費)對一個topic進行消費,不同的consumer group之間獨立消費。 2. 為了對減小一個consumer group中不同consumer之間的分布式協調開銷,指定partition為最小的并行消費單位,即一個group內的consumer只能消費不同的partition。 Consumer與Partition的關系: - 如果consumer比partition多,是浪費,因為kafka的設計是在一個partition上是不允許并發的,所以consumer數不要大于partition數 - 如果consumer比partition少,一個consumer會對應于多個partitions,這里主要合理分配consumer數和partition數,否則會導致partition里面的數據被取的不均勻 - 如果consumer從多個partition讀到數據,不保證數據間的順序性,kafka只保證在一個partition上數據是有序的,但多個partition,根據你讀的順序會有不同 - 增減consumer,broker,partition會導致rebalance,所以rebalance后consumer對應的partition會發生變化 - High-level接口中獲取不到數據的時候是會block的 負載低的情況下可以每個線程消費多個partition。但負載高的情況下,Consumer 線程數最好和Partition數量保持一致。如果還是消費不過來,應該再開 Consumer 進程,進程內線程數同樣和分區數一致。 消費消息時,kafka client需指定topic以及partition number(每個partition對應一個邏輯日志流,如topic代表某個產品線,partition代表產品線的日志按天切分的結果),consumer client訂閱后,就可迭代讀取消息,如果沒有消息,consumer client會阻塞直到有新的消息發布。consumer可以累積確認接收到的消息,當其確認了某個offset的消息,意味著之前的消息也都已成功接收到,此時broker會更新zookeeper上地offset registry。 5.3??高效的數據傳輸 1.??發布者每次可發布多條消息(將消息加到一個消息集合中發布),?consumer每次迭代消費一條消息。

    2.??不創建單獨的cache,使用系統的page cache。發布者順序發布,訂閱者通常比發布者滯后一點點,直接使用Linux的page cache效果也比較后,同時減少了cache管理及垃圾收集的開銷。

    3.??使用sendfile優化網絡傳輸,減少一次內存拷貝。 6.Kafka 與 Zookeeper 6.1 Zookeeper?協調控制 1.?管理broker與consumer的動態加入與離開。(Producer不需要管理,隨便一臺計算機都可以作為Producer向Kakfa Broker發消息) 2.?觸發負載均衡,當broker或consumer加入或離開時會觸發負載均衡算法,使得一consumer group內的多個consumer的消費負載平衡。(因為一個comsumer消費一個或多個partition,一個partition只能被一個consumer消費)

    3.??維護消費關系及每個partition的消費信息。

    ?

    6.2 Zookeeper上的細節:

    1.?每個broker啟動后會在zookeeper上注冊一個臨時的broker registry,包含broker的ip地址和端口號,所存儲的topics和partitions信息。

    2.?每個consumer啟動后會在zookeeper上注冊一個臨時的consumer registry:包含consumer所屬的consumer group以及訂閱的topics。

    3.?每個consumer group關聯一個臨時的owner registry和一個持久的offset registry。對于被訂閱的每個partition包含一個owner registry,內容為訂閱這個partition的consumer id;同時包含一個offset registry,內容為上一次訂閱的offset。

    ?

    轉載于:https://www.cnblogs.com/Rubick7/p/10916791.html

    總結

    以上是生活随笔為你收集整理的kafka详解 转载的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    丝袜足控一区二区三区 | 国产区女主播在线观看 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲欧美综合区丁香五月小说 | 国产精品国产自线拍免费软件 | 精品欧洲av无码一区二区三区 | 日本精品久久久久中文字幕 | 一本色道久久综合狠狠躁 | 日韩人妻系列无码专区 | 精品午夜福利在线观看 | 亚洲色偷偷男人的天堂 | 老子影院午夜伦不卡 | 精品午夜福利在线观看 | 人妻体内射精一区二区三四 | 国产精品美女久久久久av爽李琼 | 18无码粉嫩小泬无套在线观看 | 精品亚洲成av人在线观看 | 亚洲国产精华液网站w | 日产精品高潮呻吟av久久 | 人人妻人人澡人人爽欧美精品 | 亚洲成av人片在线观看无码不卡 | 亚洲熟女一区二区三区 | 日本精品高清一区二区 | 精品亚洲成av人在线观看 | 国产香蕉尹人综合在线观看 | 青草青草久热国产精品 | 在线a亚洲视频播放在线观看 | 老熟女重囗味hdxx69 | 亚洲欧美精品aaaaaa片 | 中文字幕av伊人av无码av | 丰满少妇熟乱xxxxx视频 | 亚洲gv猛男gv无码男同 | 精品偷自拍另类在线观看 | 久久99精品国产麻豆蜜芽 | 亚洲综合伊人久久大杳蕉 | 国产午夜无码精品免费看 | 撕开奶罩揉吮奶头视频 | 国内精品久久毛片一区二区 | 国产av一区二区三区最新精品 | 国产精品无码久久av | 欧美喷潮久久久xxxxx | 中文字幕日产无线码一区 | 亚洲成av人片在线观看无码不卡 | 精品久久久无码中文字幕 | 熟妇人妻无乱码中文字幕 | 18禁止看的免费污网站 | 色欲久久久天天天综合网精品 | 国产九九九九九九九a片 | 亚洲欧美精品伊人久久 | 精品国产aⅴ无码一区二区 | 人妻少妇精品无码专区动漫 | 成人综合网亚洲伊人 | 亚洲热妇无码av在线播放 | 中文字幕日韩精品一区二区三区 | 精品无人国产偷自产在线 | 99riav国产精品视频 | 亚洲一区二区三区播放 | 国产福利视频一区二区 | 精品久久久中文字幕人妻 | 国内综合精品午夜久久资源 | 99国产精品白浆在线观看免费 | 国产无遮挡又黄又爽免费视频 | av香港经典三级级 在线 | 午夜精品久久久内射近拍高清 | 性色欲网站人妻丰满中文久久不卡 | 亚洲午夜久久久影院 | 午夜无码人妻av大片色欲 | 亚洲欧美日韩成人高清在线一区 | 国产绳艺sm调教室论坛 | 国产 精品 自在自线 | 亚洲aⅴ无码成人网站国产app | 欧美乱妇无乱码大黄a片 | 无码精品人妻一区二区三区av | 老司机亚洲精品影院无码 | 欧美野外疯狂做受xxxx高潮 | 国产精品久久久久久久9999 | 国产又粗又硬又大爽黄老大爷视 | 久久久久久亚洲精品a片成人 | 无码毛片视频一区二区本码 | 爽爽影院免费观看 | 国产无av码在线观看 | 日本一区二区三区免费播放 | 欧洲熟妇色 欧美 | 亚洲色成人中文字幕网站 | 日本va欧美va欧美va精品 | 天天av天天av天天透 | 免费中文字幕日韩欧美 | 丰满岳乱妇在线观看中字无码 | 少妇高潮一区二区三区99 | 婷婷色婷婷开心五月四房播播 | 夜夜躁日日躁狠狠久久av | 国产精品美女久久久久av爽李琼 | 一本久道久久综合婷婷五月 | 久久久久久国产精品无码下载 | 无码吃奶揉捏奶头高潮视频 | 亚洲男人av香蕉爽爽爽爽 | 国产真实乱对白精彩久久 | 极品嫩模高潮叫床 | 麻豆精品国产精华精华液好用吗 | 久久99精品国产麻豆 | 一本久道久久综合婷婷五月 | 伊人久久大香线蕉午夜 | 色婷婷久久一区二区三区麻豆 | 搡女人真爽免费视频大全 | 中文字幕无码免费久久9一区9 | 欧美三级a做爰在线观看 | 人人妻人人澡人人爽欧美一区九九 | 一本久久a久久精品vr综合 | 妺妺窝人体色www在线小说 | 欧美日韩亚洲国产精品 | 欧美日本精品一区二区三区 | 色婷婷综合中文久久一本 | 狂野欧美激情性xxxx | 少妇被粗大的猛进出69影院 | 2019nv天堂香蕉在线观看 | 俺去俺来也www色官网 | 老熟妇乱子伦牲交视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲熟女一区二区三区 | 午夜成人1000部免费视频 | 超碰97人人射妻 | 成人无码视频在线观看网站 | 国产人妖乱国产精品人妖 | 久激情内射婷内射蜜桃人妖 | 久久久久99精品国产片 | 精品偷自拍另类在线观看 | 98国产精品综合一区二区三区 | 性色av无码免费一区二区三区 | 国产亚洲人成在线播放 | 亚洲色偷偷男人的天堂 | 亲嘴扒胸摸屁股激烈网站 | 对白脏话肉麻粗话av | 色婷婷欧美在线播放内射 | 内射欧美老妇wbb | 亚洲精品一区二区三区四区五区 | 国产激情综合五月久久 | 欧美阿v高清资源不卡在线播放 | 在线播放无码字幕亚洲 | 亚洲a无码综合a国产av中文 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久综合久久自在自线精品自 | 日韩欧美中文字幕在线三区 | 国产精品亚洲а∨无码播放麻豆 | 成在人线av无码免观看麻豆 | 精品无人区无码乱码毛片国产 | 日本爽爽爽爽爽爽在线观看免 | 中文无码精品a∨在线观看不卡 | 无码人妻黑人中文字幕 | 亚洲人成人无码网www国产 | 人人妻人人澡人人爽欧美精品 | 18禁止看的免费污网站 | 国产福利视频一区二区 | 精品无码一区二区三区的天堂 | 性开放的女人aaa片 | 麻豆蜜桃av蜜臀av色欲av | 成人免费视频一区二区 | 麻豆蜜桃av蜜臀av色欲av | 成人试看120秒体验区 | 少女韩国电视剧在线观看完整 | 久久综合香蕉国产蜜臀av | 成人精品视频一区二区 | 国产亲子乱弄免费视频 | 国产莉萝无码av在线播放 | 亚洲人成网站在线播放942 | 国产精品成人av在线观看 | 性做久久久久久久久 | 国产成人无码一二三区视频 | 77777熟女视频在线观看 а天堂中文在线官网 | 精品国精品国产自在久国产87 | 国产精品无码成人午夜电影 | 精品国产一区av天美传媒 | 日韩精品无码一区二区中文字幕 | 乱人伦中文视频在线观看 | 欧美激情综合亚洲一二区 | 99麻豆久久久国产精品免费 | 欧美黑人巨大xxxxx | 国产成人人人97超碰超爽8 | 曰本女人与公拘交酡免费视频 | 性生交片免费无码看人 | 久久伊人色av天堂九九小黄鸭 | 久久综合给久久狠狠97色 | 亚洲精品鲁一鲁一区二区三区 | 狂野欧美性猛交免费视频 | 欧美成人高清在线播放 | 99久久精品国产一区二区蜜芽 | 性生交大片免费看l | 欧美精品无码一区二区三区 | 久久久久99精品国产片 | 欧美野外疯狂做受xxxx高潮 | 婷婷五月综合激情中文字幕 | 好男人www社区 | 国产成人av免费观看 | 最近免费中文字幕中文高清百度 | 粗大的内捧猛烈进出视频 | √天堂中文官网8在线 | 亚洲精品久久久久久一区二区 | 性欧美牲交在线视频 | 国产激情一区二区三区 | 亚洲gv猛男gv无码男同 | 一本久道高清无码视频 | 18黄暴禁片在线观看 | 欧美一区二区三区 | 亚洲日韩一区二区三区 | 欧美成人家庭影院 | 中文字幕乱码亚洲无线三区 | 日日天日日夜日日摸 | 国产成人无码av片在线观看不卡 | 日韩人妻无码一区二区三区久久99 | 久久无码专区国产精品s | 日日摸天天摸爽爽狠狠97 | 免费乱码人妻系列无码专区 | 国产亚洲精品久久久久久国模美 | 国产亚洲精品久久久久久 | √天堂中文官网8在线 | 国产精品丝袜黑色高跟鞋 | 四虎影视成人永久免费观看视频 | 人妻少妇被猛烈进入中文字幕 | 狠狠色欧美亚洲狠狠色www | 俺去俺来也在线www色官网 | 国产97色在线 | 免 | 国产精品内射视频免费 | 久久久久久国产精品无码下载 | 亚洲男人av香蕉爽爽爽爽 | 国产农村乱对白刺激视频 | 国产真实乱对白精彩久久 | 国产后入清纯学生妹 | 日本乱人伦片中文三区 | 欧美日韩一区二区综合 | 国产成人亚洲综合无码 | 99久久精品午夜一区二区 | 伊人久久婷婷五月综合97色 | 97精品人妻一区二区三区香蕉 | 国产成人久久精品流白浆 | 国产电影无码午夜在线播放 | 久久综合九色综合欧美狠狠 | www国产精品内射老师 | 欧美真人作爱免费视频 | 四虎国产精品一区二区 | 国产成人久久精品流白浆 | 欧美精品免费观看二区 | 久久精品人妻少妇一区二区三区 | 亚洲国产av精品一区二区蜜芽 | 亲嘴扒胸摸屁股激烈网站 | 国产人妻人伦精品1国产丝袜 | 国产香蕉尹人综合在线观看 | 国产精品资源一区二区 | 少妇性荡欲午夜性开放视频剧场 | а天堂中文在线官网 | 亚洲乱码中文字幕在线 | 最新国产乱人伦偷精品免费网站 | 曰韩少妇内射免费播放 | 亚洲毛片av日韩av无码 | 久久久www成人免费毛片 | 久久精品人妻少妇一区二区三区 | 鲁大师影院在线观看 | www国产精品内射老师 | 日本xxxx色视频在线观看免费 | 97久久超碰中文字幕 | 国产成人精品三级麻豆 | 日本爽爽爽爽爽爽在线观看免 | av香港经典三级级 在线 | 国产精品久久久久久亚洲影视内衣 | 天天摸天天透天天添 | 国内揄拍国内精品人妻 | 免费中文字幕日韩欧美 | 99riav国产精品视频 | 国产97人人超碰caoprom | 国产精品二区一区二区aⅴ污介绍 | 久久久久久av无码免费看大片 | 国产精品无套呻吟在线 | 欧美肥老太牲交大战 | 2019nv天堂香蕉在线观看 | 国产农村乱对白刺激视频 | 2020久久超碰国产精品最新 | 少妇性俱乐部纵欲狂欢电影 | 人人妻人人澡人人爽欧美精品 | 精品无码国产一区二区三区av | 清纯唯美经典一区二区 | 久久久久99精品国产片 | 2019nv天堂香蕉在线观看 | 亚洲日本va中文字幕 | 国产亚洲精品精品国产亚洲综合 | 亚洲欧美综合区丁香五月小说 | 欧美35页视频在线观看 | 麻豆国产丝袜白领秘书在线观看 | 欧美大屁股xxxxhd黑色 | 国内精品人妻无码久久久影院蜜桃 | 久久人人爽人人爽人人片ⅴ | 中文字幕av伊人av无码av | 中文精品无码中文字幕无码专区 | 欧美熟妇另类久久久久久不卡 | 中文字幕av日韩精品一区二区 | 中文字幕无码免费久久9一区9 | 亚洲国产精品无码一区二区三区 | 婷婷五月综合缴情在线视频 | 色综合久久中文娱乐网 | 一个人看的视频www在线 | 精品欧洲av无码一区二区三区 | 老熟女重囗味hdxx69 | 嫩b人妻精品一区二区三区 | 久久五月精品中文字幕 | 一二三四在线观看免费视频 | 偷窥日本少妇撒尿chinese | 久久成人a毛片免费观看网站 | 国产偷国产偷精品高清尤物 | 亚洲人成网站免费播放 | 激情内射日本一区二区三区 | 国产精品对白交换视频 | 88国产精品欧美一区二区三区 | 曰韩无码二三区中文字幕 | 少妇人妻av毛片在线看 | 成熟妇人a片免费看网站 | 精品无码一区二区三区的天堂 | 国产偷抇久久精品a片69 | 亚洲综合另类小说色区 | 久久精品人人做人人综合 | 少妇被黑人到高潮喷出白浆 | 精品无码av一区二区三区 | 亚洲色无码一区二区三区 | 永久免费精品精品永久-夜色 | 亚洲国产精品久久久久久 | 女人被男人躁得好爽免费视频 | 4hu四虎永久在线观看 | 亚洲人成人无码网www国产 | 波多野结衣av一区二区全免费观看 | 精品久久久久久人妻无码中文字幕 | √天堂中文官网8在线 | 国产超级va在线观看视频 | 亚洲国产精品无码一区二区三区 | 日韩av无码中文无码电影 | 自拍偷自拍亚洲精品被多人伦好爽 | 国内精品人妻无码久久久影院 | 日日天干夜夜狠狠爱 | 西西人体www44rt大胆高清 | 亚洲欧美综合区丁香五月小说 | 亚洲国产综合无码一区 | 国产av无码专区亚洲awww | 国产真实伦对白全集 | 精品久久久中文字幕人妻 | 夜精品a片一区二区三区无码白浆 | √8天堂资源地址中文在线 | 亚洲综合精品香蕉久久网 | 久久精品丝袜高跟鞋 | 在线播放无码字幕亚洲 | aⅴ在线视频男人的天堂 | 欧美人妻一区二区三区 | 欧美自拍另类欧美综合图片区 | 波多野结衣乳巨码无在线观看 | 国产午夜无码视频在线观看 | 亚洲乱码中文字幕在线 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲色欲久久久综合网东京热 | 亚洲国产精华液网站w | 欧美真人作爱免费视频 | 色五月丁香五月综合五月 | 国产精品国产三级国产专播 | 欧美丰满熟妇xxxx | 男女猛烈xx00免费视频试看 | 亚洲成a人片在线观看无码3d | 国内揄拍国内精品人妻 | 精品国产精品久久一区免费式 | 欧美日本精品一区二区三区 | 亚洲国产高清在线观看视频 | 国产精品igao视频网 | 精品一区二区三区波多野结衣 | 18无码粉嫩小泬无套在线观看 | 99久久久无码国产精品免费 | 国产成人精品一区二区在线小狼 | 午夜精品一区二区三区在线观看 | 伊在人天堂亚洲香蕉精品区 | 国产69精品久久久久app下载 | 5858s亚洲色大成网站www | 国产亚洲精品久久久久久 | 人人澡人人透人人爽 | 动漫av一区二区在线观看 | 亚洲国产精品久久人人爱 | 欧美人与牲动交xxxx | 99riav国产精品视频 | 欧美 日韩 人妻 高清 中文 | 亚洲精品一区二区三区婷婷月 | 思思久久99热只有频精品66 | 成人性做爰aaa片免费看不忠 | 国内精品久久久久久中文字幕 | 亚洲精品中文字幕乱码 | www国产亚洲精品久久网站 | 色婷婷av一区二区三区之红樱桃 | 九一九色国产 | 131美女爱做视频 | 大地资源网第二页免费观看 | 国产亚洲精品久久久久久大师 | 欧美亚洲日韩国产人成在线播放 | 无遮挡国产高潮视频免费观看 | 欧美人与牲动交xxxx | 大肉大捧一进一出视频出来呀 | 欧美人与禽zoz0性伦交 | 久久综合九色综合97网 | 中文无码成人免费视频在线观看 | 黄网在线观看免费网站 | 国产精品美女久久久久av爽李琼 | 色婷婷综合激情综在线播放 | 国产97在线 | 亚洲 | 久久精品国产精品国产精品污 | 亚洲区欧美区综合区自拍区 | 欧美性黑人极品hd | 精品国产麻豆免费人成网站 | 两性色午夜免费视频 | 欧美 亚洲 国产 另类 | 粗大的内捧猛烈进出视频 | 精品一区二区三区波多野结衣 | 亚洲 a v无 码免 费 成 人 a v | 国产精品久久久久久亚洲毛片 | 日本大香伊一区二区三区 | 国产高清av在线播放 | 亚洲国产精品无码久久久久高潮 | 十八禁真人啪啪免费网站 | 青春草在线视频免费观看 | 亚洲va中文字幕无码久久不卡 | 国产97色在线 | 免 | а√天堂www在线天堂小说 | 人人爽人人澡人人人妻 | 国产色视频一区二区三区 | 欧美三级不卡在线观看 | 欧美丰满少妇xxxx性 | 亚洲国产av美女网站 | 麻豆精产国品 | 久久亚洲中文字幕无码 | 国产av人人夜夜澡人人爽麻豆 | 国产精品嫩草久久久久 | 亚洲精品午夜国产va久久成人 | 激情人妻另类人妻伦 | 久久国产精品二国产精品 | 日韩欧美群交p片內射中文 | 久久久无码中文字幕久... | 丰满人妻一区二区三区免费视频 | 国产一区二区三区四区五区加勒比 | 国产片av国语在线观看 | 欧美老熟妇乱xxxxx | 亚洲性无码av中文字幕 | 色狠狠av一区二区三区 | 精品人妻人人做人人爽夜夜爽 | 久久久久成人片免费观看蜜芽 | 亚洲熟熟妇xxxx | 精品人妻人人做人人爽 | 在线精品亚洲一区二区 | 亚洲狠狠色丁香婷婷综合 | 免费观看黄网站 | 国产亚洲精品久久久久久久久动漫 | 中文字幕+乱码+中文字幕一区 | 国产av剧情md精品麻豆 | 日韩av无码一区二区三区不卡 | 亚洲日韩精品欧美一区二区 | 性欧美牲交在线视频 | 亚洲综合在线一区二区三区 | 国产精品人人妻人人爽 | 亚洲一区二区三区国产精华液 | 3d动漫精品啪啪一区二区中 | 蜜桃无码一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 熟女俱乐部五十路六十路av | 亚拍精品一区二区三区探花 | 中文字幕无码视频专区 | 日本丰满护士爆乳xxxx | 久久人人97超碰a片精品 | 久久久久99精品成人片 | 国产精品香蕉在线观看 | 夜先锋av资源网站 | 欧美精品国产综合久久 | 1000部夫妻午夜免费 | 日韩无套无码精品 | 成人av无码一区二区三区 | 中国女人内谢69xxxx | 色婷婷香蕉在线一区二区 | 嫩b人妻精品一区二区三区 | 久久久亚洲欧洲日产国码αv | 曰本女人与公拘交酡免费视频 | 国产精品内射视频免费 | 人妻aⅴ无码一区二区三区 | 亲嘴扒胸摸屁股激烈网站 | 日日干夜夜干 | 久久99精品国产麻豆蜜芽 | 无码帝国www无码专区色综合 | 性色av无码免费一区二区三区 | 中文字幕色婷婷在线视频 | 亚洲欧洲日本综合aⅴ在线 | 亚洲自偷精品视频自拍 | 99精品国产综合久久久久五月天 | 精品国产精品久久一区免费式 | 无码av免费一区二区三区试看 | 久久久久久久久888 | 日韩av无码一区二区三区 | 兔费看少妇性l交大片免费 | 1000部夫妻午夜免费 | 丝袜美腿亚洲一区二区 | 国产激情无码一区二区app | 国产精品亚洲专区无码不卡 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲va中文字幕无码久久不卡 | 麻豆人妻少妇精品无码专区 | 精品成在人线av无码免费看 | 成熟人妻av无码专区 | 国产在线精品一区二区三区直播 | 女高中生第一次破苞av | 大色综合色综合网站 | 蜜桃av抽搐高潮一区二区 | 老头边吃奶边弄进去呻吟 | 未满成年国产在线观看 | 少女韩国电视剧在线观看完整 | 久久精品人人做人人综合试看 | 亚洲国产精华液网站w | 中文字幕无码av激情不卡 | 亚洲精品中文字幕乱码 | 亚洲熟妇色xxxxx亚洲 | 久久97精品久久久久久久不卡 | 日本高清一区免费中文视频 | 四虎4hu永久免费 | 美女极度色诱视频国产 | 欧美激情综合亚洲一二区 | 最新国产乱人伦偷精品免费网站 | 在线а√天堂中文官网 | 99久久99久久免费精品蜜桃 | 中文字幕av日韩精品一区二区 | 亚洲成av人片天堂网无码】 | 亚洲中文字幕无码中文字在线 | 狠狠色丁香久久婷婷综合五月 | 国产色精品久久人妻 | 人妻少妇被猛烈进入中文字幕 | 国产成人一区二区三区在线观看 | 欧洲精品码一区二区三区免费看 | 亚洲熟熟妇xxxx | 精品欧美一区二区三区久久久 | 国产精品亚洲专区无码不卡 | 国产精品va在线播放 | 黑人大群体交免费视频 | 欧美35页视频在线观看 | 国产热a欧美热a在线视频 | 人人妻人人澡人人爽精品欧美 | 国产香蕉97碰碰久久人人 | 成人精品视频一区二区三区尤物 | 内射爽无广熟女亚洲 | 日本精品高清一区二区 | 蜜桃视频韩日免费播放 | 黑人玩弄人妻中文在线 | 奇米影视7777久久精品人人爽 | 日韩精品一区二区av在线 | 国产办公室秘书无码精品99 | 亚洲gv猛男gv无码男同 | 中文字幕人妻无码一区二区三区 | 一本久久a久久精品vr综合 | 日韩精品一区二区av在线 | √天堂资源地址中文在线 | 亚洲成a人片在线观看无码3d | 十八禁视频网站在线观看 | 风流少妇按摩来高潮 | 日韩精品一区二区av在线 | 精品无人区无码乱码毛片国产 | 性开放的女人aaa片 | 中文字幕无码免费久久99 | 色偷偷人人澡人人爽人人模 | 久久天天躁夜夜躁狠狠 | 精品熟女少妇av免费观看 | 国内精品人妻无码久久久影院蜜桃 | 欧洲vodafone精品性 | 麻豆国产丝袜白领秘书在线观看 | 精品水蜜桃久久久久久久 | 亚洲va欧美va天堂v国产综合 | 欧美精品国产综合久久 | 无码午夜成人1000部免费视频 | 成人影院yy111111在线观看 | 成人亚洲精品久久久久 | 中文字幕人成乱码熟女app | 久久精品女人天堂av免费观看 | 精品偷拍一区二区三区在线看 | 欧美变态另类xxxx | 荡女精品导航 | 成人无码视频在线观看网站 | 狠狠色丁香久久婷婷综合五月 | 好男人社区资源 | 国产精品人妻一区二区三区四 | 无码中文字幕色专区 | 麻豆成人精品国产免费 | 人妻少妇精品无码专区动漫 | 无码播放一区二区三区 | 中文亚洲成a人片在线观看 | 亚洲欧洲中文日韩av乱码 | 欧美成人高清在线播放 | 无套内谢老熟女 | 领导边摸边吃奶边做爽在线观看 | 2020久久超碰国产精品最新 | 国产另类ts人妖一区二区 | 久久国语露脸国产精品电影 | 亚洲va欧美va天堂v国产综合 | 日本护士xxxxhd少妇 | 国产精品igao视频网 | 免费国产成人高清在线观看网站 | 麻豆人妻少妇精品无码专区 | 中文字幕乱码中文乱码51精品 | 在线欧美精品一区二区三区 | 99久久人妻精品免费一区 | 亚洲人成网站色7799 | 成人欧美一区二区三区 | 熟妇人妻无乱码中文字幕 | 人人妻人人藻人人爽欧美一区 | 午夜福利电影 | 日日橹狠狠爱欧美视频 | 亚洲日韩av一区二区三区中文 | 啦啦啦www在线观看免费视频 | 麻豆国产人妻欲求不满谁演的 | 波多野结衣乳巨码无在线观看 | 综合激情五月综合激情五月激情1 | 人妻aⅴ无码一区二区三区 | 久久亚洲中文字幕无码 | 鲁鲁鲁爽爽爽在线视频观看 | 最近免费中文字幕中文高清百度 | 无码av免费一区二区三区试看 | 午夜熟女插插xx免费视频 | 日韩少妇白浆无码系列 | 在线视频网站www色 | 国内少妇偷人精品视频免费 | 亚洲国产精品久久久久久 | 天堂久久天堂av色综合 | 四十如虎的丰满熟妇啪啪 | 性做久久久久久久免费看 | 老子影院午夜精品无码 | 又紧又大又爽精品一区二区 | 欧美黑人乱大交 | 欧美精品无码一区二区三区 | 亚洲一区二区三区偷拍女厕 | 玩弄中年熟妇正在播放 | 欧美日本精品一区二区三区 | 国内精品久久毛片一区二区 | 国产午夜亚洲精品不卡下载 | 无码免费一区二区三区 | 55夜色66夜色国产精品视频 | 人妻与老人中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 99国产欧美久久久精品 | 无码人妻出轨黑人中文字幕 | 国精产品一品二品国精品69xx | 日日鲁鲁鲁夜夜爽爽狠狠 | 中文字幕无码人妻少妇免费 | 国产精品免费大片 | 欧美老妇交乱视频在线观看 | 亚洲乱码中文字幕在线 | 久久久精品成人免费观看 | 日韩无套无码精品 | 欧美黑人巨大xxxxx | 97久久精品无码一区二区 | 成人亚洲精品久久久久软件 | 亚洲成色www久久网站 | 久久久久se色偷偷亚洲精品av | 131美女爱做视频 | 影音先锋中文字幕无码 | 亚洲精品一区二区三区在线观看 | 久久久久久久人妻无码中文字幕爆 | 免费看少妇作爱视频 | 亚洲国产成人av在线观看 | 欧美 日韩 亚洲 在线 | 成人三级无码视频在线观看 | 国内精品人妻无码久久久影院 | 欧美性生交活xxxxxdddd | 熟妇人妻无乱码中文字幕 | 一本大道久久东京热无码av | 久久精品国产日本波多野结衣 | а√资源新版在线天堂 | 亚洲七七久久桃花影院 | 欧美人妻一区二区三区 | 欧美日韩久久久精品a片 | 国内精品人妻无码久久久影院 | 中文无码成人免费视频在线观看 | 性生交大片免费看女人按摩摩 | 午夜男女很黄的视频 | 国产舌乚八伦偷品w中 | 性欧美牲交在线视频 | 99久久久无码国产精品免费 | 天堂在线观看www | 一本久道久久综合狠狠爱 | 久久久国产精品无码免费专区 | 波多野结衣高清一区二区三区 | 麻豆精产国品 | 久久综合狠狠综合久久综合88 | 妺妺窝人体色www婷婷 | 亚欧洲精品在线视频免费观看 | 久久久久久a亚洲欧洲av冫 | 在线亚洲高清揄拍自拍一品区 | 亚洲精品成人福利网站 | 在线а√天堂中文官网 | 国产av无码专区亚洲a∨毛片 | 欧美一区二区三区视频在线观看 | 欧美日韩一区二区三区自拍 | 国产一区二区三区影院 | 1000部夫妻午夜免费 | 国产成人精品优优av | 男女下面进入的视频免费午夜 | 99久久亚洲精品无码毛片 | 日本精品久久久久中文字幕 | 人妻无码αv中文字幕久久琪琪布 | 波多野结衣乳巨码无在线观看 | 久久精品国产日本波多野结衣 | 久久精品一区二区三区四区 | 国产手机在线αⅴ片无码观看 | www成人国产高清内射 | 丝袜足控一区二区三区 | 国产精品亚洲а∨无码播放麻豆 | 国产69精品久久久久app下载 | 国产精品永久免费视频 | 欧美人与物videos另类 | 欧美丰满老熟妇xxxxx性 | 熟女俱乐部五十路六十路av | 麻豆md0077饥渴少妇 | 久久久久久久女国产乱让韩 | 亚洲综合在线一区二区三区 | 亚洲人成影院在线无码按摩店 | 久久99国产综合精品 | 国产在线无码精品电影网 | 中文字幕 亚洲精品 第1页 | 亚洲国产欧美日韩精品一区二区三区 | 精品国产一区二区三区四区在线看 | 男人和女人高潮免费网站 | 人人澡人摸人人添 | 国产午夜无码精品免费看 | 亚洲成av人片在线观看无码不卡 | 无码一区二区三区在线 | 久久亚洲日韩精品一区二区三区 | 精品久久久久久人妻无码中文字幕 | 性色欲情网站iwww九文堂 | 成人无码精品1区2区3区免费看 | 亚洲欧美综合区丁香五月小说 | 国产亚洲美女精品久久久2020 | 四虎国产精品免费久久 | 特黄特色大片免费播放器图片 | av香港经典三级级 在线 | 精品人人妻人人澡人人爽人人 | 一本久道久久综合狠狠爱 | 丰满妇女强制高潮18xxxx | 3d动漫精品啪啪一区二区中 | 亚洲精品午夜国产va久久成人 | 美女黄网站人色视频免费国产 | 国产精品a成v人在线播放 | 无码国产乱人伦偷精品视频 | 久久久久久久人妻无码中文字幕爆 | 国产av久久久久精东av | 性生交大片免费看女人按摩摩 | 曰韩无码二三区中文字幕 | 国产精品久久久久久久9999 | 国产精品久久久一区二区三区 | 双乳奶水饱满少妇呻吟 | 亚洲日韩av片在线观看 | 网友自拍区视频精品 | 老司机亚洲精品影院无码 | 欧美日本免费一区二区三区 | 亚洲国产欧美在线成人 | 亚洲日韩精品欧美一区二区 | 久久亚洲日韩精品一区二区三区 | 日本大香伊一区二区三区 | 一本色道久久综合亚洲精品不卡 | 日本在线高清不卡免费播放 | 极品嫩模高潮叫床 | 中文字幕日韩精品一区二区三区 | 中文字幕无码av波多野吉衣 | 久久国语露脸国产精品电影 | 麻豆蜜桃av蜜臀av色欲av | 成人精品一区二区三区中文字幕 | 国内精品人妻无码久久久影院 | 人人妻人人澡人人爽人人精品浪潮 | 撕开奶罩揉吮奶头视频 | 四虎国产精品一区二区 | 精品国产av色一区二区深夜久久 | 日本一区二区更新不卡 | 亚洲精品国产品国语在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 蜜臀av无码人妻精品 | 亚洲综合无码久久精品综合 | 国产精品手机免费 | 欧美性黑人极品hd | 国产精品永久免费视频 | 国产区女主播在线观看 | 成人av无码一区二区三区 | 久久精品99久久香蕉国产色戒 | 免费看男女做好爽好硬视频 | 99久久久国产精品无码免费 | 国产乱人无码伦av在线a | 亚洲呦女专区 | 国产成人精品视频ⅴa片软件竹菊 | 女人色极品影院 | 久久精品人人做人人综合试看 | 亚洲爆乳大丰满无码专区 | 荫蒂被男人添的好舒服爽免费视频 | 国产精华av午夜在线观看 | 国产精品久久久久7777 | 国产熟女一区二区三区四区五区 | 日本在线高清不卡免费播放 | 久久久久久久久蜜桃 | 男人和女人高潮免费网站 | 国产三级久久久精品麻豆三级 | 亚洲 另类 在线 欧美 制服 | 无码人妻少妇伦在线电影 | 欧洲vodafone精品性 | 欧美性猛交xxxx富婆 | 300部国产真实乱 | 精品 日韩 国产 欧美 视频 | 老熟女乱子伦 | 人妻有码中文字幕在线 | 蜜桃视频插满18在线观看 | 亚洲欧美精品伊人久久 | 亚洲自偷精品视频自拍 | 人人妻人人澡人人爽欧美精品 | 国产成人午夜福利在线播放 | 无码人妻少妇伦在线电影 | 四十如虎的丰满熟妇啪啪 | 精品无码国产自产拍在线观看蜜 | 亚洲人成网站免费播放 | 狠狠色噜噜狠狠狠狠7777米奇 | 狠狠噜狠狠狠狠丁香五月 | 亚洲乱码中文字幕在线 | 久久亚洲国产成人精品性色 | 久久99精品久久久久久 | 国产精品久久久久久无码 | 丝袜足控一区二区三区 | 三级4级全黄60分钟 | 国产av一区二区精品久久凹凸 | 久久久久久国产精品无码下载 | 色婷婷综合激情综在线播放 | 亚洲精品成a人在线观看 | 国産精品久久久久久久 | 精品国产一区二区三区四区在线看 | 日韩精品a片一区二区三区妖精 | 熟女体下毛毛黑森林 | 亚洲欧洲中文日韩av乱码 | 欧美性生交活xxxxxdddd | 欧美激情综合亚洲一二区 | 美女张开腿让人桶 | 精品国产一区二区三区av 性色 | 国产色视频一区二区三区 | 好男人www社区 | 欧美一区二区三区 | 精品国产福利一区二区 | 色婷婷欧美在线播放内射 | 巨爆乳无码视频在线观看 | 欧美性猛交xxxx富婆 | 女人和拘做爰正片视频 | 国产精品国产自线拍免费软件 | 乱人伦人妻中文字幕无码久久网 | 欧美35页视频在线观看 | 2020久久超碰国产精品最新 | 国产精品久久国产精品99 | 任你躁国产自任一区二区三区 | 人妻夜夜爽天天爽三区 | 最近免费中文字幕中文高清百度 | 狂野欧美性猛xxxx乱大交 | 国产精品久久久久久亚洲影视内衣 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲爆乳大丰满无码专区 | 日韩欧美中文字幕公布 | 欧美阿v高清资源不卡在线播放 | 野狼第一精品社区 | 日本精品高清一区二区 | 国产极品美女高潮无套在线观看 | 丰满少妇熟乱xxxxx视频 | 成人无码精品1区2区3区免费看 | 无码吃奶揉捏奶头高潮视频 | 人人妻人人澡人人爽欧美一区 | 午夜男女很黄的视频 | 国产特级毛片aaaaaaa高清 | 粉嫩少妇内射浓精videos | 曰本女人与公拘交酡免费视频 | 日韩av激情在线观看 | 青青草原综合久久大伊人精品 | 国产欧美精品一区二区三区 | 无遮挡啪啪摇乳动态图 | 精品偷拍一区二区三区在线看 | 久久综合网欧美色妞网 | 无码国模国产在线观看 | 欧美成人免费全部网站 | 国产深夜福利视频在线 | av无码不卡在线观看免费 | 中文字幕乱妇无码av在线 | 色情久久久av熟女人妻网站 | 国产黑色丝袜在线播放 | 一本久道久久综合婷婷五月 | 国产精品香蕉在线观看 | 无码av岛国片在线播放 | 大屁股大乳丰满人妻 | 乱人伦人妻中文字幕无码久久网 | 久久精品视频在线看15 | 免费国产成人高清在线观看网站 | 一本久道久久综合婷婷五月 | 未满小14洗澡无码视频网站 | 色婷婷综合中文久久一本 | 亚洲欧美综合区丁香五月小说 | 强开小婷嫩苞又嫩又紧视频 | 精品日本一区二区三区在线观看 | 丰满护士巨好爽好大乳 | 人妻少妇精品无码专区动漫 | 日本www一道久久久免费榴莲 | 国产精品沙发午睡系列 | 亚洲午夜无码久久 | 精品无码国产一区二区三区av | 欧美成人高清在线播放 | 黑人巨大精品欧美一区二区 | 麻豆国产人妻欲求不满谁演的 | 一本久久a久久精品vr综合 | 亚洲 激情 小说 另类 欧美 | 免费观看激色视频网站 | 99er热精品视频 | 久久国内精品自在自线 | 97资源共享在线视频 | 亚洲一区二区三区四区 | 无码人妻少妇伦在线电影 | 久久久久久久人妻无码中文字幕爆 | 国产97色在线 | 免 | 曰韩少妇内射免费播放 | 国内综合精品午夜久久资源 | 国产成人亚洲综合无码 | 国产精品va在线播放 | 黑人巨大精品欧美一区二区 | aⅴ在线视频男人的天堂 | 中文字幕无码日韩专区 | 疯狂三人交性欧美 | 无码成人精品区在线观看 | 国产情侣作爱视频免费观看 | 国产精品亚洲专区无码不卡 | 中文字幕乱妇无码av在线 | 国产精品国产三级国产专播 | 67194成是人免费无码 | 精品一区二区三区波多野结衣 | 国产亚洲精品久久久久久大师 | 亚洲日本一区二区三区在线 | 99久久无码一区人妻 | 给我免费的视频在线观看 | 亚洲一区二区三区偷拍女厕 | 麻豆果冻传媒2021精品传媒一区下载 | 蜜桃无码一区二区三区 | 亚洲欧美国产精品久久 | 国产精品手机免费 | 成人精品一区二区三区中文字幕 | 一区二区三区高清视频一 | 无码乱肉视频免费大全合集 | 国产精品视频免费播放 | 熟女少妇在线视频播放 | 国产艳妇av在线观看果冻传媒 | 亚洲色大成网站www | 九月婷婷人人澡人人添人人爽 | 波多野结衣av在线观看 | 中文亚洲成a人片在线观看 | 美女黄网站人色视频免费国产 | аⅴ资源天堂资源库在线 | 亚洲精品中文字幕乱码 | 国产乡下妇女做爰 | 99视频精品全部免费免费观看 | 无码人中文字幕 | 女人被男人躁得好爽免费视频 | 成人免费视频一区二区 | 亚洲一区二区三区含羞草 | 久久国产精品二国产精品 | 牲交欧美兽交欧美 | 2020久久香蕉国产线看观看 | 2020最新国产自产精品 | 在线播放免费人成毛片乱码 | 97久久国产亚洲精品超碰热 | 国产精品a成v人在线播放 | 日韩在线不卡免费视频一区 | 天堂一区人妻无码 | 无码毛片视频一区二区本码 | 人妻插b视频一区二区三区 | 四虎影视成人永久免费观看视频 | 性欧美熟妇videofreesex | 任你躁国产自任一区二区三区 | 国产成人午夜福利在线播放 | 色一情一乱一伦一视频免费看 | 亚洲va中文字幕无码久久不卡 | 男人的天堂av网站 | 一区二区三区乱码在线 | 欧洲 | 久久精品人人做人人综合 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产精品成人av在线观看 | av小次郎收藏 | www国产精品内射老师 | 欧美精品国产综合久久 | 少女韩国电视剧在线观看完整 | 99久久婷婷国产综合精品青草免费 | 欧美人与禽zoz0性伦交 | 国产激情无码一区二区 | 88国产精品欧美一区二区三区 | 国产在线一区二区三区四区五区 | 日韩精品成人一区二区三区 | 亚洲va中文字幕无码久久不卡 | 中文字幕+乱码+中文字幕一区 | 国产精品va在线观看无码 | 中文字幕 亚洲精品 第1页 | 欧美精品在线观看 | 丰满肥臀大屁股熟妇激情视频 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲毛片av日韩av无码 | 午夜男女很黄的视频 | 色诱久久久久综合网ywww | 欧美国产日韩亚洲中文 | 亚洲成av人片天堂网无码】 | 精品久久久久久亚洲精品 | 国产色视频一区二区三区 | 一本久久a久久精品vr综合 | 亚洲成色www久久网站 | 国产精品怡红院永久免费 | 夜精品a片一区二区三区无码白浆 | 九九久久精品国产免费看小说 | 亚洲精品成人福利网站 | 老子影院午夜伦不卡 | 午夜精品一区二区三区在线观看 | 国产又爽又黄又刺激的视频 | 黑人巨大精品欧美一区二区 | 一个人看的www免费视频在线观看 | 国产一区二区三区精品视频 | 国产精品18久久久久久麻辣 | 99riav国产精品视频 | 国产肉丝袜在线观看 | 婷婷五月综合缴情在线视频 | 亚洲第一网站男人都懂 | 日韩av无码中文无码电影 | 国产精品自产拍在线观看 | 麻豆国产人妻欲求不满谁演的 | 精品国产一区二区三区四区 | 成人性做爰aaa片免费看不忠 | 亚洲精品一区二区三区婷婷月 | 亚洲成a人片在线观看无码3d | 亚洲第一无码av无码专区 | 久久久中文字幕日本无吗 | 国产69精品久久久久app下载 | 亚洲の无码国产の无码步美 | 国产一区二区三区日韩精品 | 天天摸天天碰天天添 | 国产熟妇高潮叫床视频播放 | 嫩b人妻精品一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 性做久久久久久久久 | 成人免费视频视频在线观看 免费 | 久久国产精品精品国产色婷婷 | 99麻豆久久久国产精品免费 | 免费网站看v片在线18禁无码 | 国产综合久久久久鬼色 | 国产人妻精品一区二区三区不卡 | 亚洲а∨天堂久久精品2021 | 波多野结衣aⅴ在线 | 无码乱肉视频免费大全合集 | 丰满人妻一区二区三区免费视频 | 国产亚洲欧美在线专区 | 日本欧美一区二区三区乱码 | 亚洲乱码中文字幕在线 | 亚洲精品美女久久久久久久 | 欧美阿v高清资源不卡在线播放 | 国产乱人偷精品人妻a片 | yw尤物av无码国产在线观看 | 亚洲va中文字幕无码久久不卡 | 成人免费视频视频在线观看 免费 | 学生妹亚洲一区二区 | 无码午夜成人1000部免费视频 | 国产超级va在线观看视频 | 国产色视频一区二区三区 | 久久婷婷五月综合色国产香蕉 | 国产在线一区二区三区四区五区 | 亚无码乱人伦一区二区 | 激情亚洲一区国产精品 | 欧美 日韩 人妻 高清 中文 | 国产人妻久久精品二区三区老狼 | 亚洲人亚洲人成电影网站色 | 日韩视频 中文字幕 视频一区 | 国产精品.xx视频.xxtv | 国产亚洲精品久久久久久 | 色综合久久中文娱乐网 | 亚洲精品国产a久久久久久 | 精品国产一区二区三区四区在线看 | 少妇被黑人到高潮喷出白浆 | 午夜丰满少妇性开放视频 | 精品国产成人一区二区三区 | 2020久久超碰国产精品最新 | 高中生自慰www网站 | 一本大道伊人av久久综合 | 国产热a欧美热a在线视频 | 亚无码乱人伦一区二区 | 全球成人中文在线 | 国产精品毛片一区二区 | 亚洲熟妇自偷自拍另类 | 中文字幕乱妇无码av在线 | 亚洲欧洲日本无在线码 | 影音先锋中文字幕无码 | 水蜜桃av无码 | 精品国产av色一区二区深夜久久 | 成人欧美一区二区三区黑人 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲精品鲁一鲁一区二区三区 | 中文久久乱码一区二区 | 西西人体www44rt大胆高清 | 久久久中文字幕日本无吗 | 东京无码熟妇人妻av在线网址 | 成人毛片一区二区 | 欧美日本免费一区二区三区 | 久久人人爽人人人人片 | 中国女人内谢69xxxx | 欧美真人作爱免费视频 | 亚洲成a人片在线观看无码3d | 国产精品第一国产精品 | 无码av中文字幕免费放 | av无码电影一区二区三区 | 又紧又大又爽精品一区二区 | 亚洲色在线无码国产精品不卡 | 99久久人妻精品免费一区 | 性史性农村dvd毛片 | 欧美日韩亚洲国产精品 | 欧美色就是色 | 99在线 | 亚洲 | 亚洲娇小与黑人巨大交 | 永久黄网站色视频免费直播 | 一本久道久久综合婷婷五月 | 帮老师解开蕾丝奶罩吸乳网站 | 一本色道久久综合亚洲精品不卡 | 荡女精品导航 | 曰本女人与公拘交酡免费视频 | 国产成人综合美国十次 | 亚洲の无码国产の无码影院 | 亚洲性无码av中文字幕 | 国内精品久久久久久中文字幕 | 国産精品久久久久久久 | 超碰97人人做人人爱少妇 | av在线亚洲欧洲日产一区二区 | 2020久久香蕉国产线看观看 | 内射白嫩少妇超碰 | 小鲜肉自慰网站xnxx | 永久免费精品精品永久-夜色 | 桃花色综合影院 | 精品厕所偷拍各类美女tp嘘嘘 | 丰满少妇弄高潮了www | 国产成人无码av在线影院 | 国产无套内射久久久国产 | 扒开双腿疯狂进出爽爽爽视频 | 嫩b人妻精品一区二区三区 | 无人区乱码一区二区三区 | 乱人伦中文视频在线观看 | 蜜桃视频韩日免费播放 | 99久久精品无码一区二区毛片 | 亚洲爆乳无码专区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久久av男人的天堂 | 男人的天堂2018无码 | 中文字幕av日韩精品一区二区 | www国产亚洲精品久久久日本 | 人人妻人人澡人人爽人人精品浪潮 | 中文字幕日产无线码一区 | 国内精品九九久久久精品 | 久久午夜夜伦鲁鲁片无码免费 | 97资源共享在线视频 | 国内精品人妻无码久久久影院 | 俄罗斯老熟妇色xxxx | 一本色道婷婷久久欧美 | 99久久精品无码一区二区毛片 | 国产乱人无码伦av在线a | 麻豆国产人妻欲求不满 | 少妇厨房愉情理9仑片视频 | 老子影院午夜伦不卡 | 国产精品亚洲а∨无码播放麻豆 | 免费男性肉肉影院 | 国产精品久久久av久久久 | 国产亚av手机在线观看 | 国内少妇偷人精品视频 | 日韩av无码一区二区三区 | 久久综合香蕉国产蜜臀av | 啦啦啦www在线观看免费视频 | 国产一区二区三区四区五区加勒比 | 最近的中文字幕在线看视频 | 国产精品无码久久av | 欧美国产亚洲日韩在线二区 | 国产亚洲精品精品国产亚洲综合 | 国产精品怡红院永久免费 | 天天做天天爱天天爽综合网 | 国产一精品一av一免费 | 最近中文2019字幕第二页 | 亚洲 a v无 码免 费 成 人 a v | 永久免费观看美女裸体的网站 | 天堂亚洲2017在线观看 | 亚洲天堂2017无码中文 | 亚洲欧洲无卡二区视頻 | 伊人色综合久久天天小片 | 一本色道久久综合亚洲精品不卡 | 一本久道高清无码视频 | 精品无人区无码乱码毛片国产 | 亚洲日本一区二区三区在线 | 97人妻精品一区二区三区 | 高清国产亚洲精品自在久久 | 亚洲色偷偷男人的天堂 | 欧美亚洲日韩国产人成在线播放 | 人妻少妇精品无码专区二区 | 玩弄少妇高潮ⅹxxxyw | 正在播放东北夫妻内射 | 亚洲a无码综合a国产av中文 | 亚洲国产精品久久久久久 | 国产一区二区不卡老阿姨 | 国产精品igao视频网 | 国产精品对白交换视频 | 精品日本一区二区三区在线观看 | 久久午夜无码鲁丝片 | 曰韩少妇内射免费播放 | 国产免费无码一区二区视频 | 国产人妻精品一区二区三区不卡 | 野外少妇愉情中文字幕 | 999久久久国产精品消防器材 | 国产成人无码一二三区视频 | 九九综合va免费看 | 无码人妻丰满熟妇区五十路百度 | 日日碰狠狠丁香久燥 | 无码毛片视频一区二区本码 | 精品国产国产综合精品 | 日日碰狠狠丁香久燥 | 人人妻人人澡人人爽欧美精品 | 男女超爽视频免费播放 | 三级4级全黄60分钟 | 少妇性荡欲午夜性开放视频剧场 | 天天摸天天透天天添 | 少妇久久久久久人妻无码 | 99国产精品白浆在线观看免费 | 人妻少妇精品无码专区动漫 | 久久国产精品精品国产色婷婷 | 亚洲成av人片天堂网无码】 | 国产三级久久久精品麻豆三级 | 成年美女黄网站色大免费全看 | 日日碰狠狠躁久久躁蜜桃 | 日韩亚洲欧美中文高清在线 | 日韩无套无码精品 | 免费无码肉片在线观看 | 99久久久无码国产精品免费 | 动漫av一区二区在线观看 | 色欲人妻aaaaaaa无码 | 亚洲国产精品久久人人爱 | 国产精品久久久久久久9999 | 欧美精品免费观看二区 | 啦啦啦www在线观看免费视频 | 国产精品二区一区二区aⅴ污介绍 | 国产肉丝袜在线观看 | 亚洲综合久久一区二区 | 特黄特色大片免费播放器图片 | 无码av免费一区二区三区试看 | 噜噜噜亚洲色成人网站 | 国产激情综合五月久久 | 国产精品美女久久久网av | 天堂а√在线地址中文在线 | 亚洲无人区一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 麻豆国产人妻欲求不满谁演的 | 国产精品久久久久无码av色戒 | 亚洲国产精品久久人人爱 | 国产色在线 | 国产 | 亚洲成a人片在线观看无码 | 乱码av麻豆丝袜熟女系列 | 成年美女黄网站色大免费视频 | 99国产精品白浆在线观看免费 | 亚洲gv猛男gv无码男同 | 东京无码熟妇人妻av在线网址 | 久久久久久久人妻无码中文字幕爆 | 日本熟妇乱子伦xxxx | 国产女主播喷水视频在线观看 | 成人欧美一区二区三区 | 久久久久成人片免费观看蜜芽 | 日韩少妇白浆无码系列 | 精品少妇爆乳无码av无码专区 | 国产特级毛片aaaaaaa高清 | 免费人成在线视频无码 | 国产午夜亚洲精品不卡下载 | 精品国产福利一区二区 | 久久精品丝袜高跟鞋 | 一本色道婷婷久久欧美 | 成熟女人特级毛片www免费 | 欧洲vodafone精品性 | 在线成人www免费观看视频 | 亚洲精品中文字幕乱码 | 少妇性l交大片欧洲热妇乱xxx | 免费中文字幕日韩欧美 | 成人免费视频在线观看 | 亚洲热妇无码av在线播放 | 人妻夜夜爽天天爽三区 | 在线 国产 欧美 亚洲 天堂 | 成人aaa片一区国产精品 | 999久久久国产精品消防器材 | 性欧美videos高清精品 | 无码吃奶揉捏奶头高潮视频 | 色综合视频一区二区三区 | 国产va免费精品观看 | 成人性做爰aaa片免费看不忠 | 亚洲成av人综合在线观看 | 一本色道婷婷久久欧美 | 成人免费视频在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲精品午夜国产va久久成人 | 日本大香伊一区二区三区 | 亚洲热妇无码av在线播放 | 中文字幕av伊人av无码av | 久久精品国产一区二区三区肥胖 | 暴力强奷在线播放无码 | 国产精品无码一区二区三区不卡 | 99久久人妻精品免费一区 | 亚洲国产精品毛片av不卡在线 | 亚洲一区二区三区在线观看网站 | 亚洲中文字幕无码中文字在线 | 亚洲国产高清在线观看视频 | 国产成人一区二区三区在线观看 | 国产亚洲日韩欧美另类第八页 | 亚洲色欲久久久综合网东京热 | 99久久无码一区人妻 | 国产人妻大战黑人第1集 | 精品少妇爆乳无码av无码专区 | 日韩 欧美 动漫 国产 制服 | 亚洲色欲色欲天天天www | 丰满肥臀大屁股熟妇激情视频 | 在线欧美精品一区二区三区 | 国产成人精品久久亚洲高清不卡 | 国产肉丝袜在线观看 | www国产亚洲精品久久久日本 | 久久久久成人片免费观看蜜芽 | 国产精品理论片在线观看 | 丰满少妇人妻久久久久久 | 熟妇人妻无码xxx视频 | 亚洲欧美国产精品专区久久 | 久久亚洲精品中文字幕无男同 | 午夜福利一区二区三区在线观看 | 国内精品人妻无码久久久影院 | 日韩少妇白浆无码系列 | 天天摸天天透天天添 | 亚洲成av人综合在线观看 | 三级4级全黄60分钟 | 国产高潮视频在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 东京热无码av男人的天堂 | 亚洲精品国偷拍自产在线麻豆 | 亚洲综合另类小说色区 | 亚洲精品午夜无码电影网 | 日韩av无码一区二区三区 | 在线成人www免费观看视频 | 欧美日韩亚洲国产精品 | 久久久精品人妻久久影视 | 精品国产乱码久久久久乱码 | 中文字幕中文有码在线 | 国产精品国产自线拍免费软件 | 久久久久人妻一区精品色欧美 | 欧美丰满少妇xxxx性 | 人人妻人人澡人人爽欧美精品 | 欧美人妻一区二区三区 | 日日摸天天摸爽爽狠狠97 | 久久综合久久自在自线精品自 | 国产绳艺sm调教室论坛 | 四虎国产精品免费久久 | 久久精品丝袜高跟鞋 | 麻花豆传媒剧国产免费mv在线 | 午夜时刻免费入口 | 131美女爱做视频 | 欧美黑人巨大xxxxx | 激情内射日本一区二区三区 | 桃花色综合影院 | 国产精品va在线观看无码 | 国产特级毛片aaaaaaa高清 | 少妇邻居内射在线 | 国产精品资源一区二区 | 奇米影视7777久久精品 | 欧美 丝袜 自拍 制服 另类 | 人人妻人人藻人人爽欧美一区 | 久久久成人毛片无码 | 国产亲子乱弄免费视频 | 精品一区二区不卡无码av | 亚洲成av人片天堂网无码】 | 精品亚洲成av人在线观看 | 久久亚洲日韩精品一区二区三区 | 欧洲美熟女乱又伦 | 九月婷婷人人澡人人添人人爽 | 国产成人无码午夜视频在线观看 | 无码国内精品人妻少妇 | 日产精品高潮呻吟av久久 | 亚洲成在人网站无码天堂 | 色欲久久久天天天综合网精品 | 午夜精品一区二区三区的区别 | 国产精品久久久av久久久 | 天堂久久天堂av色综合 | 久久精品女人的天堂av | 成人aaa片一区国产精品 | 99精品视频在线观看免费 | 夫妻免费无码v看片 | 欧美激情一区二区三区成人 | 久激情内射婷内射蜜桃人妖 | 色综合久久久无码中文字幕 | 久久 国产 尿 小便 嘘嘘 | 日韩欧美成人免费观看 | 国产综合久久久久鬼色 | 97夜夜澡人人爽人人喊中国片 | 亚洲熟熟妇xxxx | 一本久久a久久精品vr综合 | 国产婷婷色一区二区三区在线 | av在线亚洲欧洲日产一区二区 | 99在线 | 亚洲 | 在线播放无码字幕亚洲 | 精品一二三区久久aaa片 | 久久99精品久久久久婷婷 | 国产区女主播在线观看 | 日韩欧美中文字幕公布 | 强开小婷嫩苞又嫩又紧视频 | 亚洲第一无码av无码专区 | 亚洲精品国产精品乱码不卡 | 极品尤物被啪到呻吟喷水 | 日韩精品无码一区二区中文字幕 | 亚洲中文无码av永久不收费 | 中文无码精品a∨在线观看不卡 | 亚洲成av人综合在线观看 | 波多野结衣 黑人 | 国产在线一区二区三区四区五区 | 免费无码午夜福利片69 | 亚洲综合无码久久精品综合 | 图片小说视频一区二区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲精品国产品国语在线观看 | аⅴ资源天堂资源库在线 | 国产在热线精品视频 | 人妻天天爽夜夜爽一区二区 | 国产精品第一国产精品 | 97夜夜澡人人双人人人喊 | 天天做天天爱天天爽综合网 | 无码av免费一区二区三区试看 | 动漫av一区二区在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 六月丁香婷婷色狠狠久久 | 亚洲精品www久久久 | 少妇的肉体aa片免费 | 亚洲热妇无码av在线播放 | 亚洲色在线无码国产精品不卡 | 亚洲熟妇色xxxxx欧美老妇y | 久热国产vs视频在线观看 | 久久精品人人做人人综合 | 亚洲高清偷拍一区二区三区 | 亚洲综合无码一区二区三区 | 2019午夜福利不卡片在线 | 国产sm调教视频在线观看 | 中文字幕中文有码在线 | 国产一区二区不卡老阿姨 | 蜜臀aⅴ国产精品久久久国产老师 | 秋霞特色aa大片 | 国产亲子乱弄免费视频 | 中文字幕无码av激情不卡 | 国内揄拍国内精品人妻 | 老子影院午夜精品无码 | 老熟女重囗味hdxx69 | 性色av无码免费一区二区三区 | 少妇无码av无码专区在线观看 | 熟妇人妻激情偷爽文 | √8天堂资源地址中文在线 | 免费国产成人高清在线观看网站 | 性色欲网站人妻丰满中文久久不卡 | 日本肉体xxxx裸交 | 国产精品欧美成人 | 无遮挡啪啪摇乳动态图 | 男女下面进入的视频免费午夜 | 日产国产精品亚洲系列 | 午夜熟女插插xx免费视频 | 国产精品人妻一区二区三区四 | 精品欧洲av无码一区二区三区 | 无码帝国www无码专区色综合 | 中文字幕日产无线码一区 | 亚洲成色www久久网站 | 国产特级毛片aaaaaa高潮流水 | 日日摸天天摸爽爽狠狠97 | 人人妻人人澡人人爽人人精品 | 久久aⅴ免费观看 | 无码成人精品区在线观看 | 老熟妇乱子伦牲交视频 | 国产精品久久久久久无码 | 亚洲综合在线一区二区三区 | 青青草原综合久久大伊人精品 | 国产无遮挡又黄又爽又色 | 久久99精品国产.久久久久 | 久久久久久av无码免费看大片 | 国产人妻大战黑人第1集 | 美女张开腿让人桶 | 亚洲中文字幕在线观看 | 亚洲国产午夜精品理论片 | 亚洲精品无码国产 | 国产精品永久免费视频 | 亚洲日韩av片在线观看 | 老太婆性杂交欧美肥老太 | 精品久久综合1区2区3区激情 | 一个人免费观看的www视频 | 国产精品办公室沙发 | 捆绑白丝粉色jk震动捧喷白浆 | 久久国产36精品色熟妇 | aⅴ亚洲 日韩 色 图网站 播放 | 99久久99久久免费精品蜜桃 | 99国产精品白浆在线观看免费 | 国产亚洲精品久久久ai换 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品久久国产三级国 | 激情亚洲一区国产精品 | 动漫av一区二区在线观看 | 粗大的内捧猛烈进出视频 | 国产精品久久精品三级 | 丝袜 中出 制服 人妻 美腿 | 九月婷婷人人澡人人添人人爽 | 狠狠色噜噜狠狠狠7777奇米 | 精品久久久久久亚洲精品 | 岛国片人妻三上悠亚 | 色婷婷久久一区二区三区麻豆 | 熟女少妇人妻中文字幕 | 无码任你躁久久久久久久 | 日欧一片内射va在线影院 | 人人超人人超碰超国产 | 亚洲色欲色欲天天天www | 国产xxx69麻豆国语对白 | 狠狠亚洲超碰狼人久久 | 中文字幕无线码免费人妻 | 伊人久久婷婷五月综合97色 | 欧美老熟妇乱xxxxx | 亚洲小说图区综合在线 | 国产精品亚洲五月天高清 | 欧美三级不卡在线观看 | 亚洲 高清 成人 动漫 | 人人妻人人藻人人爽欧美一区 | 国产偷自视频区视频 | 国产亚洲欧美日韩亚洲中文色 | 天天综合网天天综合色 | 正在播放老肥熟妇露脸 | 色狠狠av一区二区三区 | 一本大道伊人av久久综合 | 成人无码精品一区二区三区 | 风流少妇按摩来高潮 | 亚洲精品国偷拍自产在线麻豆 | 国产成人精品久久亚洲高清不卡 | 在线观看免费人成视频 | 日本丰满护士爆乳xxxx | 狠狠cao日日穞夜夜穞av | 国产三级久久久精品麻豆三级 | 在线观看免费人成视频 | 色一情一乱一伦 | 麻豆成人精品国产免费 | 亚洲精品一区二区三区大桥未久 | 无套内谢的新婚少妇国语播放 | 乱人伦中文视频在线观看 | 无码毛片视频一区二区本码 | 女人被男人躁得好爽免费视频 | 漂亮人妻洗澡被公强 日日躁 | 中文字幕精品av一区二区五区 | 又粗又大又硬毛片免费看 | 欧美性生交xxxxx久久久 | 天堂亚洲免费视频 | 亚洲欧洲无卡二区视頻 | 青春草在线视频免费观看 | 免费无码午夜福利片69 | 国产精品嫩草久久久久 | 国产女主播喷水视频在线观看 | www国产亚洲精品久久久日本 | 精品国产青草久久久久福利 | 麻豆人妻少妇精品无码专区 | 亚洲精品欧美二区三区中文字幕 | 亚洲男人av香蕉爽爽爽爽 | 少女韩国电视剧在线观看完整 | 麻豆精品国产精华精华液好用吗 | 欧美 丝袜 自拍 制服 另类 | 色综合久久88色综合天天 | 丰满人妻翻云覆雨呻吟视频 | 欧美zoozzooz性欧美 | 最近的中文字幕在线看视频 | 精品久久8x国产免费观看 | 中文字幕乱码亚洲无线三区 | 乱码午夜-极国产极内射 | 国产在线aaa片一区二区99 | 久久久久久久久蜜桃 | 国产高清av在线播放 | 一本久久a久久精品亚洲 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲精品无码人妻无码 | 少妇人妻偷人精品无码视频 | 久久亚洲日韩精品一区二区三区 | 亚洲精品综合一区二区三区在线 | 精品久久久无码中文字幕 | 夜夜躁日日躁狠狠久久av | 亚洲精品久久久久avwww潮水 | 国产精品对白交换视频 | 欧美亚洲日韩国产人成在线播放 | 青青久在线视频免费观看 | 樱花草在线播放免费中文 | 人妻少妇精品视频专区 | 欧美性黑人极品hd | 亚洲国产成人a精品不卡在线 | 免费国产成人高清在线观看网站 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久99精品久久久久久动态图 | 国产成人久久精品流白浆 | 久久天天躁狠狠躁夜夜免费观看 | a片免费视频在线观看 | 亚洲精品一区二区三区婷婷月 | 日本一区二区三区免费高清 | 99久久人妻精品免费二区 | 狠狠色欧美亚洲狠狠色www | 日本大香伊一区二区三区 | 日韩av无码一区二区三区 | 四十如虎的丰满熟妇啪啪 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产av无码专区亚洲awww | 欧美成人午夜精品久久久 | 亚洲 a v无 码免 费 成 人 a v | 狂野欧美性猛交免费视频 | 亚洲欧美日韩国产精品一区二区 | 无码精品国产va在线观看dvd | 青青草原综合久久大伊人精品 | 99久久无码一区人妻 | 亚洲精品一区二区三区四区五区 | 亚洲成a人片在线观看无码 | 亚洲一区av无码专区在线观看 | 国语精品一区二区三区 | 久久综合激激的五月天 | 中文字幕av无码一区二区三区电影 | 人妻体内射精一区二区三四 | 奇米影视7777久久精品人人爽 | 我要看www免费看插插视频 | 午夜福利一区二区三区在线观看 | 日韩精品一区二区av在线 | 亚洲午夜久久久影院 | 永久免费精品精品永久-夜色 | 久久国产精品偷任你爽任你 | 国产成人一区二区三区别 | 大胆欧美熟妇xx | 国产成人精品三级麻豆 | 亚洲国产日韩a在线播放 | 国产精品高潮呻吟av久久4虎 | 秋霞成人午夜鲁丝一区二区三区 | 十八禁视频网站在线观看 | 亚洲呦女专区 | 日韩人妻无码一区二区三区久久99 | 啦啦啦www在线观看免费视频 | 麻豆国产97在线 | 欧洲 | 日本欧美一区二区三区乱码 | 成 人 免费观看网站 | 在线亚洲高清揄拍自拍一品区 | 丰满少妇高潮惨叫视频 | 一本久久a久久精品vr综合 | 婷婷色婷婷开心五月四房播播 | 欧美一区二区三区 | 人人妻人人澡人人爽欧美一区 | 国内少妇偷人精品视频免费 | 日本爽爽爽爽爽爽在线观看免 | 日韩在线不卡免费视频一区 | 牲欲强的熟妇农村老妇女 | 久久精品国产亚洲精品 | 成人影院yy111111在线观看 | 国产人妻精品午夜福利免费 | 天堂亚洲免费视频 | 成人影院yy111111在线观看 | 狠狠色欧美亚洲狠狠色www | 日本丰满护士爆乳xxxx | 日韩av无码一区二区三区不卡 | 国产网红无码精品视频 | 国产精品国产三级国产专播 | 色综合久久网 | 99久久精品日本一区二区免费 | 亚洲国产精品无码久久久久高潮 | 日韩av无码一区二区三区不卡 | 玩弄中年熟妇正在播放 | 欧美 日韩 亚洲 在线 | 久久国产精品_国产精品 | 国产精品无码一区二区桃花视频 | 在线观看欧美一区二区三区 | 国产黄在线观看免费观看不卡 | 国产高清不卡无码视频 | 欧美大屁股xxxxhd黑色 | 97se亚洲精品一区 | 一本一道久久综合久久 | 18精品久久久无码午夜福利 | 欧美第一黄网免费网站 | 国产偷抇久久精品a片69 | 亚洲精品一区二区三区四区五区 | 日本一本二本三区免费 | 人人爽人人澡人人高潮 | 亚洲精品www久久久 | 漂亮人妻洗澡被公强 日日躁 | 国产乱码精品一品二品 | 中文字幕久久久久人妻 | 国产农村妇女高潮大叫 | 六月丁香婷婷色狠狠久久 | 女高中生第一次破苞av |