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

淺談分布式消息技術(shù)Kafka

大數(shù)據(jù) 分布式 Kafka
Kafka是最初由Linkedin公司開發(fā),是一個(gè)分布式、分區(qū)的、多副本的、多訂閱者,基于zookeeper協(xié)調(diào)的分布式日志系統(tǒng)(也可以當(dāng)做MQ系統(tǒng)),常見可以用于web/nginx日志、訪問(wèn)日志,消息服務(wù)等等,Linkedin于2010年貢獻(xiàn)給了Apache基金會(huì)并成為頂級(jí)開源項(xiàng)目。

淺談分布式消息技術(shù)Kafka

Kafka的基本介紹

Kafka是最初由Linkedin公司開發(fā),是一個(gè)分布式、分區(qū)的、多副本的、多訂閱者,基于zookeeper協(xié)調(diào)的分布式日志系統(tǒng)(也可以當(dāng)做MQ系統(tǒng)),常見可以用于web/nginx日志、訪問(wèn)日志,消息服務(wù)等等,Linkedin于2010年貢獻(xiàn)給了Apache基金會(huì)并成為***開源項(xiàng)目。

主要應(yīng)用場(chǎng)景是:日志收集系統(tǒng)和消息系統(tǒng)。

Kafka主要設(shè)計(jì)目標(biāo)如下:

  • 以時(shí)間復(fù)雜度為O(1)的方式提供消息持久化能力,即使對(duì)TB級(jí)以上數(shù)據(jù)也能保證常數(shù)時(shí)間的訪問(wèn)性能。
  • 高吞吐率。即使在非常廉價(jià)的商用機(jī)器上也能做到單機(jī)支持每秒100K條消息的傳輸。
  • 支持Kafka Server間的消息分區(qū),及分布式消費(fèi),同時(shí)保證每個(gè)partition內(nèi)的消息順序傳輸。
  • 同時(shí)支持離線數(shù)據(jù)處理和實(shí)時(shí)數(shù)據(jù)處理。

Kafka的設(shè)計(jì)原理分析

 

一個(gè)典型的kafka集群中包含若干producer,若干broker,若干consumer,以及一個(gè)Zookeeper集群。Kafka通過(guò)Zookeeper管理集群配置,選舉leader,以及在consumer group發(fā)生變化時(shí)進(jìn)行rebalance。producer使用push模式將消息發(fā)布到broker,consumer使用pull模式從broker訂閱并消費(fèi)消息。

Kafka專用術(shù)語(yǔ):

  • Broker:消息中間件處理結(jié)點(diǎn),一個(gè)Kafka節(jié)點(diǎn)就是一個(gè)broker,多個(gè)broker可以組成一個(gè)Kafka集群。
  • Topic:一類消息,Kafka集群能夠同時(shí)負(fù)責(zé)多個(gè)topic的分發(fā)。
  • Partition:topic物理上的分組,一個(gè)topic可以分為多個(gè)partition,每個(gè)partition是一個(gè)有序的隊(duì)列。
  • Segment:partition物理上由多個(gè)segment組成。
  • offset:每個(gè)partition都由一系列有序的、不可變的消息組成,這些消息被連續(xù)的追加到partition中。partition中的每個(gè)消息都有一個(gè)連續(xù)的序列號(hào)叫做offset,用于partition唯一標(biāo)識(shí)一條消息。
  • Producer:負(fù)責(zé)發(fā)布消息到Kafka broker。
  • Consumer:消息消費(fèi)者,向Kafka broker讀取消息的客戶端。
  • Consumer Group:每個(gè)Consumer屬于一個(gè)特定的Consumer Group。

Kafka數(shù)據(jù)傳輸?shù)氖聞?wù)特點(diǎn)

  • at most once:最多一次,這個(gè)和JMS中”非持久化”消息類似,發(fā)送一次,無(wú)論成敗,將不會(huì)重發(fā)。消費(fèi)者fetch消息,然后保存offset,然后處理消息;當(dāng)client保存offset之后,但是在消息處理過(guò)程中出現(xiàn)了異常,導(dǎo)致部分消息未能繼續(xù)處理。那么此后”未處理”的消息將不能被fetch到,這就是”at most once”。
  • at least once:消息至少發(fā)送一次,如果消息未能接受成功,可能會(huì)重發(fā),直到接收成功。消費(fèi)者fetch消息,然后處理消息,然后保存offset。如果消息處理成功之后,但是在保存offset階段zookeeper異常導(dǎo)致保存操作未能執(zhí)行成功,這就導(dǎo)致接下來(lái)再次fetch時(shí)可能獲得上次已經(jīng)處理過(guò)的消息,這就是”at least once”,原因offset沒有及時(shí)的提交給zookeeper,zookeeper恢復(fù)正常還是之前offset狀態(tài)。
  • exactly once:消息只會(huì)發(fā)送一次。kafka中并沒有嚴(yán)格的去實(shí)現(xiàn)(基于2階段提交),我們認(rèn)為這種策略在kafka中是沒有必要的。

通常情況下”at-least-once”是我們***。

Kafka消息存儲(chǔ)格式

Topic & Partition

一個(gè)topic可以認(rèn)為一個(gè)一類消息,每個(gè)topic將被分成多個(gè)partition,每個(gè)partition在存儲(chǔ)層面是append log文件。

 

在Kafka文件存儲(chǔ)中,同一個(gè)topic下有多個(gè)不同partition,每個(gè)partition為一個(gè)目錄,partiton命名規(guī)則為topic名稱+有序序號(hào),***個(gè)partiton序號(hào)從0開始,序號(hào)***值為partitions數(shù)量減1。

 

  • 每個(gè)partion(目錄)相當(dāng)于一個(gè)巨型文件被平均分配到多個(gè)大小相等segment(段)數(shù)據(jù)文件中。但每個(gè)段segment file消息數(shù)量不一定相等,這種特性方便old segment file快速被刪除。
  • 每個(gè)partiton只需要支持順序讀寫就行了,segment文件生命周期由服務(wù)端配置參數(shù)決定。

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

 

  • segment file組成:由2大部分組成,分別為index file和data file,此2個(gè)文件一一對(duì)應(yīng),成對(duì)出現(xiàn),后綴”.index”和“.log”分別表示為segment索引文件、數(shù)據(jù)文件.
  • segment文件命名規(guī)則:partion全局的***個(gè)segment從0開始,后續(xù)每個(gè)segment文件名為上一個(gè)segment文件***一條消息的offset值。數(shù)值***為64位long大小,19位數(shù)字字符長(zhǎng)度,沒有數(shù)字用0填充。
  •  

segment中index與data file對(duì)應(yīng)關(guān)系物理結(jié)構(gòu)如下:

 

上圖中索引文件存儲(chǔ)大量元數(shù)據(jù),數(shù)據(jù)文件存儲(chǔ)大量消息,索引文件中元數(shù)據(jù)指向?qū)?yīng)數(shù)據(jù)文件中message的物理偏移地址。

其中以索引文件中元數(shù)據(jù)3,497為例,依次在數(shù)據(jù)文件中表示第3個(gè)message(在全局partiton表示第368772個(gè)message),以及該消息的物理偏移地址為497。

了解到segment data file由許多message組成,下面詳細(xì)說(shuō)明message物理結(jié)構(gòu)如下:

 

參數(shù)說(shuō)明:

關(guān)鍵字 解釋說(shuō)明
8 byte offset 在parition(分區(qū))內(nèi)的每條消息都有一個(gè)有序的id號(hào),這個(gè)id號(hào)被稱為偏移(offset),它可以唯一確定每條消息在parition(分區(qū))內(nèi)的位置。即offset表示partiion的第多少message
4 byte message size message大小
4 byte CRC32 用crc32校驗(yàn)message
1 byte “magic” 表示本次發(fā)布Kafka服務(wù)程序協(xié)議版本號(hào)
1 byte “attributes” 表示為獨(dú)立版本、或標(biāo)識(shí)壓縮類型、或編碼類型。
4 byte key length 表示key的長(zhǎng)度,當(dāng)key為-1時(shí),K byte key字段不填
K byte key 可選
value bytes payload 表示實(shí)際消息數(shù)據(jù)。

副本(replication)策略

Kafka的高可靠性的保障來(lái)源于其健壯的副本(replication)策略。

1) 數(shù)據(jù)同步

kafka在0.8版本前沒有提供Partition的Replication機(jī)制,一旦Broker宕機(jī),其上的所有Partition就都無(wú)法提供服務(wù),而Partition又沒有備份數(shù)據(jù),數(shù)據(jù)的可用性就大大降低了。所以0.8后提供了Replication機(jī)制來(lái)保證Broker的failover。

引入Replication之后,同一個(gè)Partition可能會(huì)有多個(gè)Replica,而這時(shí)需要在這些Replication之間選出一個(gè)Leader,Producer和Consumer只與這個(gè)Leader交互,其它Replica作為Follower從Leader中復(fù)制數(shù)據(jù)。 

 

2) 副本放置策略

為了更好的做負(fù)載均衡,Kafka盡量將所有的Partition均勻分配到整個(gè)集群上。

Kafka分配Replica的算法如下:

  • 將所有存活的N個(gè)Brokers和待分配的Partition排序
  • 將第i個(gè)Partition分配到第(i mod n)個(gè)Broker上,這個(gè)Partition的***個(gè)Replica存在于這個(gè)分配的Broker上,并且會(huì)作為partition的優(yōu)先副本
  • 將第i個(gè)Partition的第j個(gè)Replica分配到第((i + j) mod n)個(gè)Broker上
  • 假設(shè)集群一共有4個(gè)brokers,一個(gè)topic有4個(gè)partition,每個(gè)Partition有3個(gè)副本。下圖是每個(gè)Broker上的副本分配情況。  

 3) 同步策略

Producer在發(fā)布消息到某個(gè)Partition時(shí),先通過(guò)ZooKeeper找到該P(yáng)artition的Leader,然后無(wú)論該Topic的Replication Factor為多少,Producer只將該消息發(fā)送到該P(yáng)artition的Leader。Leader會(huì)將該消息寫入其本地Log。每個(gè)Follower都從Leader pull數(shù)據(jù)。這種方式上,F(xiàn)ollower存儲(chǔ)的數(shù)據(jù)順序與Leader保持一致。Follower在收到該消息并寫入其Log后,向Leader發(fā)送ACK。一旦Leader收到了ISR中的所有Replica的ACK,該消息就被認(rèn)為已經(jīng)commit了,Leader將增加HW并且向Producer發(fā)送ACK。

為了提高性能,每個(gè)Follower在接收到數(shù)據(jù)后就立馬向Leader發(fā)送ACK,而非等到數(shù)據(jù)寫入Log中。因此,對(duì)于已經(jīng)commit的消息,Kafka只能保證它被存于多個(gè)Replica的內(nèi)存中,而不能保證它們被持久化到磁盤中,也就不能完全保證異常發(fā)生后該條消息一定能被Consumer消費(fèi)。

Consumer讀消息也是從Leader讀取,只有被commit過(guò)的消息才會(huì)暴露給Consumer。

Kafka Replication的數(shù)據(jù)流如下圖所示:

 

對(duì)于Kafka而言,定義一個(gè)Broker是否“活著”包含兩個(gè)條件:

  • 一是它必須維護(hù)與ZooKeeper的session(這個(gè)通過(guò)ZooKeeper的Heartbeat機(jī)制來(lái)實(shí)現(xiàn))。
  • 二是Follower必須能夠及時(shí)將Leader的消息復(fù)制過(guò)來(lái),不能“落后太多”。

Leader會(huì)跟蹤與其保持同步的Replica列表,該列表稱為ISR(即in-sync Replica)。如果一個(gè)Follower宕機(jī),或者落后太多,Leader將把它從ISR中移除。這里所描述的“落后太多”指Follower復(fù)制的消息落后于Leader后的條數(shù)超過(guò)預(yù)定值或者Follower超過(guò)一定時(shí)間未向Leader發(fā)送fetch請(qǐng)求。

Kafka只解決fail/recover,一條消息只有被ISR里的所有Follower都從Leader復(fù)制過(guò)去才會(huì)被認(rèn)為已提交。這樣就避免了部分?jǐn)?shù)據(jù)被寫進(jìn)了Leader,還沒來(lái)得及被任何Follower復(fù)制就宕機(jī)了,而造成數(shù)據(jù)丟失(Consumer無(wú)法消費(fèi)這些數(shù)據(jù))。而對(duì)于Producer而言,它可以選擇是否等待消息commit。這種機(jī)制確保了只要ISR有一個(gè)或以上的Follower,一條被commit的消息就不會(huì)丟失。

4) leader選舉

Leader選舉本質(zhì)上是一個(gè)分布式鎖,有兩種方式實(shí)現(xiàn)基于ZooKeeper的分布式鎖:

  • 節(jié)點(diǎn)名稱唯一性:多個(gè)客戶端創(chuàng)建一個(gè)節(jié)點(diǎn),只有成功創(chuàng)建節(jié)點(diǎn)的客戶端才能獲得鎖
  • 臨時(shí)順序節(jié)點(diǎn):所有客戶端在某個(gè)目錄下創(chuàng)建自己的臨時(shí)順序節(jié)點(diǎn),只有序號(hào)最小的才獲得鎖

Majority Vote的選舉策略和ZooKeeper中的Zab選舉是類似的,實(shí)際上ZooKeeper內(nèi)部本身就實(shí)現(xiàn)了少數(shù)服從多數(shù)的選舉策略。kafka中對(duì)于Partition的leader副本的選舉采用了***種方法:為Partition分配副本,指定一個(gè)ZNode臨時(shí)節(jié)點(diǎn),***個(gè)成功創(chuàng)建節(jié)點(diǎn)的副本就是Leader節(jié)點(diǎn),其他副本會(huì)在這個(gè)ZNode節(jié)點(diǎn)上注冊(cè)Watcher監(jiān)聽器,一旦Leader宕機(jī),對(duì)應(yīng)的臨時(shí)節(jié)點(diǎn)就會(huì)被自動(dòng)刪除,這時(shí)注冊(cè)在該節(jié)點(diǎn)上的所有Follower都會(huì)收到監(jiān)聽器事件,它們都會(huì)嘗試創(chuàng)建該節(jié)點(diǎn),只有創(chuàng)建成功的那個(gè)follower才會(huì)成為L(zhǎng)eader(ZooKeeper保證對(duì)于一個(gè)節(jié)點(diǎn)只有一個(gè)客戶端能創(chuàng)建成功),其他follower繼續(xù)重新注冊(cè)監(jiān)聽事件。

Kafka消息分組,消息消費(fèi)原理

同一Topic的一條消息只能被同一個(gè)Consumer Group內(nèi)的一個(gè)Consumer消費(fèi),但多個(gè)Consumer Group可同時(shí)消費(fèi)這一消息。

 

這是Kafka用來(lái)實(shí)現(xiàn)一個(gè)Topic消息的廣播(發(fā)給所有的Consumer)和單播(發(fā)給某一個(gè)Consumer)的手段。一個(gè)Topic可以對(duì)應(yīng)多個(gè)Consumer Group。如果需要實(shí)現(xiàn)廣播,只要每個(gè)Consumer有一個(gè)獨(dú)立的Group就可以了。要實(shí)現(xiàn)單播只要所有的Consumer在同一個(gè)Group里。用Consumer Group還可以將Consumer進(jìn)行自由的分組而不需要多次發(fā)送消息到不同的Topic。

Push vs. Pull

作為一個(gè)消息系統(tǒng),Kafka遵循了傳統(tǒng)的方式,選擇由Producer向broker push消息并由Consumer從broker pull消息。

push模式很難適應(yīng)消費(fèi)速率不同的消費(fèi)者,因?yàn)橄l(fā)送速率是由broker決定的。push模式的目標(biāo)是盡可能以最快速度傳遞消息,但是這樣很容易造成Consumer來(lái)不及處理消息,典型的表現(xiàn)就是拒絕服務(wù)以及網(wǎng)絡(luò)擁塞。而pull模式則可以根據(jù)Consumer的消費(fèi)能力以適當(dāng)?shù)乃俾氏M(fèi)消息。

對(duì)于Kafka而言,pull模式更合適。pull模式可簡(jiǎn)化broker的設(shè)計(jì),Consumer可自主控制消費(fèi)消息的速率,同時(shí)Consumer可以自己控制消費(fèi)方式——即可批量消費(fèi)也可逐條消費(fèi),同時(shí)還能選擇不同的提交方式從而實(shí)現(xiàn)不同的傳輸語(yǔ)義。

Kafak順序?qū)懭肱c數(shù)據(jù)讀取

生產(chǎn)者(producer)是負(fù)責(zé)向Kafka提交數(shù)據(jù)的,Kafka會(huì)把收到的消息都寫入到硬盤中,它絕對(duì)不會(huì)丟失數(shù)據(jù)。為了優(yōu)化寫入速度Kafak采用了兩個(gè)技術(shù),順序?qū)懭牒蚆MFile。

順序?qū)懭?/strong>

因?yàn)橛脖P是機(jī)械結(jié)構(gòu),每次讀寫都會(huì)尋址,寫入,其中尋址是一個(gè)“機(jī)械動(dòng)作”,它是最耗時(shí)的。所以硬盤最“討厭”隨機(jī)I/O,最喜歡順序I/O。為了提高讀寫硬盤的速度,Kafka就是使用順序I/O。

每條消息都被append到該P(yáng)artition中,屬于順序?qū)懘疟P,因此效率非常高。

 

對(duì)于傳統(tǒng)的message queue而言,一般會(huì)刪除已經(jīng)被消費(fèi)的消息,而Kafka是不會(huì)刪除數(shù)據(jù)的,它會(huì)把所有的數(shù)據(jù)都保留下來(lái),每個(gè)消費(fèi)者(Consumer)對(duì)每個(gè)Topic都有一個(gè)offset用來(lái)表示讀取到了第幾條數(shù)據(jù)。

 

即便是順序?qū)懭胗脖P,硬盤的訪問(wèn)速度還是不可能追上內(nèi)存。所以Kafka的數(shù)據(jù)并不是實(shí)時(shí)的寫入硬盤,它充分利用了現(xiàn)代操作系統(tǒng)分頁(yè)存儲(chǔ)來(lái)利用內(nèi)存提高I/O效率。

在Linux Kernal 2.2之后出現(xiàn)了一種叫做“零拷貝(zero-copy)”系統(tǒng)調(diào)用機(jī)制,就是跳過(guò)“用戶緩沖區(qū)”的拷貝,建立一個(gè)磁盤空間和內(nèi)存空間的直接映射,數(shù)據(jù)不再?gòu)?fù)制到“用戶態(tài)緩沖區(qū)”系統(tǒng)上下文切換減少2次,可以提升一倍性能。

 

通過(guò)mmap,進(jìn)程像讀寫硬盤一樣讀寫內(nèi)存(當(dāng)然是虛擬機(jī)內(nèi)存)。使用這種方式可以獲取很大的I/O提升,省去了用戶空間到內(nèi)核空間復(fù)制的開銷(調(diào)用文件的read會(huì)把數(shù)據(jù)先放到內(nèi)核空間的內(nèi)存中,然后再?gòu)?fù)制到用戶空間的內(nèi)存中。)

消費(fèi)者(讀取數(shù)據(jù))

試想一下,一個(gè)Web Server傳送一個(gè)靜態(tài)文件,如何優(yōu)化?答案是zero copy。傳統(tǒng)模式下我們從硬盤讀取一個(gè)文件是這樣的。

 

先復(fù)制到內(nèi)核空間(read是系統(tǒng)調(diào)用,放到了DMA,所以用內(nèi)核空間),然后復(fù)制到用戶空間(1、2);從用戶空間重新復(fù)制到內(nèi)核空間(你用的socket是系統(tǒng)調(diào)用,所以它也有自己的內(nèi)核空間),***發(fā)送給網(wǎng)卡(3、4)。

 

Zero Copy中直接從內(nèi)核空間(DMA的)到內(nèi)核空間(Socket的),然后發(fā)送網(wǎng)卡。這個(gè)技術(shù)非常普遍,Nginx也是用的這種技術(shù)。

實(shí)際上,Kafka把所有的消息都存放在一個(gè)一個(gè)的文件中,當(dāng)消費(fèi)者需要數(shù)據(jù)的時(shí)候Kafka直接把“文件”發(fā)送給消費(fèi)者。當(dāng)不需要把整個(gè)文件發(fā)出去的時(shí)候,Kafka通過(guò)調(diào)用Zero Copy的sendfile這個(gè)函數(shù),這個(gè)函數(shù)包括:

  • out_fd作為輸出(一般及時(shí)socket的句柄)
  • in_fd作為輸入文件句柄
  • off_t表示in_fd的偏移(從哪里開始讀取)
  • size_t表示讀取多少個(gè) 

 

責(zé)任編輯:龐桂玉 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2017-08-30 16:47:49

Kafka設(shè)計(jì)原理

2017-07-26 15:08:05

大數(shù)據(jù)分布式事務(wù)

2013-03-26 13:43:08

Java分布式計(jì)算

2019-10-10 09:16:34

Zookeeper架構(gòu)分布式

2021-07-06 10:35:46

分布式KafkaLinux

2013-06-13 11:29:14

分布式分布式緩存

2009-10-09 17:17:11

安裝VB dcom分布

2012-11-14 16:34:06

2023-10-26 18:10:43

分布式并行技術(shù)系統(tǒng)

2025-06-13 07:30:51

2022-06-16 07:31:15

MySQL服務(wù)器服務(wù)

2017-12-18 10:47:04

分布式存儲(chǔ)數(shù)據(jù)

2022-12-13 09:19:26

分布式消息隊(duì)列

2019-05-24 14:45:17

分布式微服務(wù)運(yùn)維

2022-01-10 11:58:51

SpringBootPulsar分布式

2024-09-12 14:50:08

2024-11-14 11:56:45

2019-09-05 09:02:45

消息系統(tǒng)緩存高可用

2022-06-28 08:37:07

分布式服務(wù)器WebSocket

2024-01-10 08:02:03

分布式技術(shù)令牌,
點(diǎn)贊
收藏

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

国产精品中文字幕制服诱惑| 久久国产精品精品国产色婷婷| av2014天堂网| 最新欧美色图| 综合久久国产九一剧情麻豆| 99中文视频在线| 久久艹免费视频| 欧美成人激情| 亚洲国产成人精品久久久国产成人一区| 日韩精品 欧美| 免费av在线网站| 99久久久免费精品国产一区二区 | 涩涩涩视频在线观看| 亚洲国产精品成人综合| 国产美女精品久久久| 免费在线不卡av| 99精品视频免费观看| 日韩在线观看网站| 国产传媒第一页| 香蕉成人app| 在线观看一区二区精品视频| 欧美视频在线观看视频| 色大18成网站www在线观看| 国产白丝精品91爽爽久久| 国产精品黄色影片导航在线观看| 国产一国产二国产三| 清纯唯美综合亚洲| 国产丝袜一区二区三区免费视频| 色婷婷综合在线观看| 三上悠亚国产精品一区二区三区| 一区二区三区成人| 亚洲精品在线免费看| 深夜福利免费在线观看| 国产精品中文字幕一区二区三区| 国产精品久久久久久久久粉嫩av| 亚洲一区 视频| 欧美一区综合| 久久久av亚洲男天堂| 一道本在线观看| 欧美有码在线| 欧美va日韩va| 亚洲最大视频网| 91成人小视频| 欧美日韩另类国产亚洲欧美一级| 久久国产乱子伦免费精品| 成人女同在线观看| 亚洲精品免费在线| 日本三级福利片| 99免在线观看免费视频高清| 久久久综合视频| 精品999在线观看| 国产 日韩 欧美 综合| 国产传媒欧美日韩成人| 国产自产女人91一区在线观看| 日本成人一级片| 日韩精品国产欧美| 国产精品爽爽ⅴa在线观看| 樱花视频在线免费观看| 久久经典综合| 国产精品天天狠天天看| 自拍偷拍第八页| 麻豆精品新av中文字幕| 国产主播喷水一区二区| 欧美高清你懂得| 成人福利视频在线看| 成人写真视频福利网| 91高潮大合集爽到抽搐| 久久精品国产色蜜蜜麻豆| 国产精品一香蕉国产线看观看| 久久精品国产亚洲av麻豆蜜芽| 日韩av在线发布| 国产精品自拍网| 国产免费一区二区三区免费视频| 国产精品一区二区免费不卡| 岛国一区二区三区高清视频| 香蕉久久一区二区三区| 国产亚洲欧美日韩在线一区| 神马影院我不卡| 欧美尤物美女在线| 一区二区三区久久久| 亚洲 自拍 另类小说综合图区| 韩国精品一区| 欧洲国内综合视频| www.久久久久久久久久久| 欧美一级大片在线视频| 精品久久久久久综合日本欧美 | 国产成人高清视频| 国产精品一区二区三区四区五区| 日韩电影网址| 国产精品久久免费看| 无颜之月在线看| 乡村艳史在线观看| 欧美人与z0zoxxxx视频| 久久久久亚洲av无码网站| 日韩中文av| 亚洲一级黄色片| 国产三级国产精品国产国在线观看| 亚洲高清毛片| 国产精品视频午夜| 亚洲欧美另类日韩| 国产欧美日韩综合精品一区二区| 99久re热视频精品98| 天堂在线中文网官网| 欧美日韩免费一区二区三区视频| 午夜不卡久久精品无码免费| 日本不卡二三区| 久久久久久亚洲精品| 波多野结衣电影在线播放| 国产成人在线影院| 日韩妆和欧美的一区二区| 亚洲丝袜一区| 欧美日免费三级在线| 东京热av一区| 99久久www免费| 97免费在线视频| 99国产精品99| 国产精品免费观看视频| 欧美老熟妇喷水| 亚洲精品观看| 色多多国产成人永久免费网站| 自拍偷拍欧美亚洲| 国内精品久久久久影院薰衣草 | 久草在线网址| 亚洲五月六月丁香激情| 一级黄色特级片| 免费成人网www| 高清在线视频日韩欧美| 91亚洲国产成人精品一区| 久久看人人爽人人| 91视频最新入口| 日韩不卡在线视频| 日韩一区二区在线视频| 97人妻一区二区精品视频| gogo大胆日本视频一区| 久久久无码中文字幕久...| 高清欧美日韩| 在线观看国产成人av片| 成人免费毛片视频| av不卡在线播放| 青青青国产在线观看| 一区二区在线免费播放| 超在线视频97| 国产女人18毛片水真多| 国产精品久久久久久久久久久免费看| 成人免费无码av| 亚洲日本三级| 欧洲亚洲女同hd| 头脑特工队2在线播放| 亚洲成av人综合在线观看| 无码av免费精品一区二区三区| 欧美三区不卡| 国产精品久久国产精品| 视频在线这里都是精品| 精品乱码亚洲一区二区不卡| 欧美久久久久久久久久久久| 国产成人午夜精品5599| 成人毛片100部免费看| 亚洲综合网站| 欧美激情按摩在线| 可以免费观看的毛片| 亚洲大片精品永久免费| 大尺度做爰床戏呻吟舒畅| 日韩视频中文| 农村寡妇一区二区三区| 唐人社导航福利精品| 一本色道久久综合亚洲精品小说| 国产成人av免费| 国产精品久久午夜| 亚洲欧美激情一区二区三区| 欧美三级在线| 久久精品日产第一区二区三区| 亚洲欧美se| 一本色道久久88亚洲综合88| 国产精品一级视频| 亚洲午夜精品网| 少妇光屁股影院| 蜜桃久久精品一区二区| 潘金莲一级淫片aaaaaa播放1| 欧美午夜网站| 亚洲人123区| 欧洲中文字幕国产精品| 韩国福利在线| 欧美日韩国产首页在线观看| 日韩欧美综合视频| 成人激情午夜影院| 成年人视频观看| 欧美日韩一二三四| 国产有码在线一区二区视频| 色呦呦呦在线观看| 亚洲精品综合精品自拍| 97人妻精品一区二区三区动漫| 亚洲综合色丁香婷婷六月图片| 亚洲精品女人久久久| 日本成人中文字幕在线视频 | 97人妻精品一区二区三区免费| 免费日韩av片| 一区二区国产日产| 久久精品凹凸全集| 国产欧美精品va在线观看| 国产乱妇乱子在线播视频播放网站| 亚洲色无码播放| 亚洲成a人片在线| 欧美在线观看一二区| 青娱乐国产在线| 99ri日韩精品视频| 在线视频综合导航| 久久久久久久久久久网| 国产亚洲婷婷免费| 久久久久久久人妻无码中文字幕爆| 日韩高清在线观看| 欧美又粗又长又爽做受| 超碰成人久久| 久久av一区二区三区亚洲| 少妇高潮一区二区三区99| 欧美一级片一区| 牛牛精品视频在线| 日韩在线视频网| 美女毛片在线看| 欧美精品一区二区高清在线观看 | 色哟哟一一国产精品| 久久精品日产第一区二区三区高清版 | 久久成人在线观看| 国产精品视频一二三| 亚洲第一黄色网址| 国产mv日韩mv欧美| 红桃视频 国产| 秋霞影院一区二区| 久色视频在线播放| 欧美先锋影音| 午夜啪啪福利视频| 欧美大黑bbbbbbbbb在线| 欧美亚洲另类在线一区二区三区| 久久久免费毛片| 国产精品久久久久av福利动漫| 成人av在线播放| 国产欧美日韩91| 欧美狂猛xxxxx乱大交3| 欧美日韩国产亚洲一区| 樱花www成人免费视频| 国内精品伊人久久久| 免费久久久一本精品久久区| 精品国产午夜肉伦伦影院| 草莓视频一区| 草草视频在线一区二区| 成人激情直播| 99亚洲乱人伦aⅴ精品| 91九色视频在线观看| 粉嫩av国产一区二区三区| 国产精品久久婷婷六月丁香| 岛国一区二区| 国产精自产拍久久久久久| 国产69精品久久久久按摩| 国产精品观看在线亚洲人成网| 亚洲成人不卡| 国产精品吹潮在线观看| 成人激情综合| 国产精品视频久久久久| 亚洲tv在线| 91精品久久久久久久久久入口| av日韩一区| 成人欧美视频在线| 99久久人爽人人添人人澡| www 成人av com| 女一区二区三区| 欧美日韩视频在线一区二区观看视频| 免费精品国产| 亚洲国产精品一区在线观看不卡| 日本激情一区| 国产又粗又大又爽的视频| 伊人精品视频| 日本三级免费观看| 免播放器亚洲一区| 最好看的中文字幕| 成人av免费在线| 91网站免费视频| 国产精品福利一区二区| 免费视频网站www| 狠狠久久亚洲欧美专区| 最近中文字幕在线观看| 这里只有精品99re| 色综合久久久久久| 亚洲夜晚福利在线观看| 怡红院av在线| 4444欧美成人kkkk| 日韩免费大片| 国内精品久久国产| 欧美激情成人| 欧美黑人经典片免费观看| 日本vs亚洲vs韩国一区三区 | 人妻 日韩精品 中文字幕| 精品污污网站免费看| 国精产品一品二品国精品69xx| 国产婷婷97碰碰久久人人蜜臀| 日本美女在线中文版| 国内久久久精品| 涩涩涩久久久成人精品| 国产尤物91| 久久久久久久久久久妇女| 欧美系列亚洲系列| www香蕉视频| 一本色道久久综合狠狠躁篇怎么玩 | 国产精品-色哟哟| 亚洲精品国精品久久99热 | 热99精品只有里视频精品| 3d动漫一区二区三区在线观看| 久久精品二区| 欧美福利电影在线观看| 久久午夜夜伦鲁鲁一区二区| 成人免费高清视频在线观看| 99久久久无码国产精品不卡| 午夜av一区二区| 国产ts变态重口人妖hd| 这里只有精品在线观看| www.综合| 99久久99| 999久久久精品国产| 凹凸日日摸日日碰夜夜爽1| 豆国产96在线|亚洲| 一本一本久久a久久| 欧美午夜精品在线| 亚洲乱码国产乱码精品精软件| 最近的2019中文字幕免费一页| 樱桃视频成人在线观看| 产国精品偷在线| 先锋资源久久| 狠狠躁狠狠躁视频专区| 91麻豆视频网站| 欧美精品一区二区成人| 这里只有精品电影| 在线观看免费黄色| 国产成人aa精品一区在线播放| 国产一区二区三区亚洲| 亚洲国产一二三精品无码| 久久电影网电视剧免费观看| 五月天综合视频| 色综合网站在线| 日本午夜在线视频| 97免费视频在线播放| 国内自拍欧美| 无码中文字幕色专区| 成人综合婷婷国产精品久久蜜臀| 青青草原免费观看| 日韩欧美视频在线| 亚洲卡一卡二| 99视频免费观看| 激情综合视频| 日韩精品视频一区二区| 五月婷婷综合激情| 图片区 小说区 区 亚洲五月| 欧美黄色成人网| 成人免费在线电影网| 青青草精品视频在线| 不卡的av在线| 中文字幕亚洲高清| 亚洲欧美国产制服动漫| 欧美成人黑人| 亚洲v国产v在线观看| 久久99深爱久久99精品| www.av免费| 欧美xxxxxxxx| 98色花堂精品视频在线观看| 麻豆传媒一区二区| 日韩黄色片在线观看| 亚洲aaa视频| 欧美一区二区在线视频| 欧美videos另类精品| 韩国成人av| 丝袜亚洲另类欧美综合| 国产又粗又猛又爽又黄的视频四季 | 久久综合色之久久综合| 亚洲欧美偷拍一区| 中文字幕在线观看日韩| 日本免费一区二区三区视频| 韩日视频在线观看| 91麻豆精品在线观看| 最新国产中文字幕| 欧美成人高清视频| 欧美91在线| 天堂中文视频在线| 亚洲视频在线观看一区| 人妻无码一区二区三区久久99 | 69亚洲精品久久久蜜桃小说| 永久免费精品影视网站| 亚洲视频资源| 亚洲熟妇国产熟妇肥婆| 国产精品色婷婷| 亚洲AV无码一区二区三区少妇| 欧美亚洲另类在线| 97精品国产福利一区二区三区| ass极品水嫩小美女ass| 欧美色另类天堂2015| 日本最新在线视频| 国产日韩亚洲精品| 热久久免费视频| 国产无码精品一区二区| 在线丨暗呦小u女国产精品| 亚洲五码在线| 爱情岛论坛亚洲首页入口章节| 一区二区理论电影在线观看| 国产小视频在线|