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

Storm入門教程:消息的可靠處理

運維 系統(tǒng)運維
storm可以確保spout發(fā)送出來的每個消息都會被完整的處理。本章將會描述storm體系是如何達到這個目標(biāo)的,并將會詳述開發(fā)者應(yīng)該如何使用storm的這些機制來實現(xiàn)數(shù)據(jù)的可靠處理。

一、簡介

storm可以確保spout發(fā)送出來的每個消息都會被完整的處理。本章將會描述storm體系是如何達到這個目標(biāo)的,并將會詳述開發(fā)者應(yīng)該如何使用storm的這些機制來實現(xiàn)數(shù)據(jù)的可靠處理。

二、理解消息被完整處理

一個消息(tuple)從spout發(fā)送出來,可能會導(dǎo)致成百上千的消息基于此消息被創(chuàng)建。

我們來思考一下流式的“單詞統(tǒng)計”的例子:

storm任務(wù)從數(shù)據(jù)源(Kestrel queue)每次讀取一個完整的英文句子;將這個句子分解為獨立的單詞,***,實時的輸出每個單詞以及它出現(xiàn)過的次數(shù)。

本例中,每個從spout發(fā)送出來的消息(每個英文句子)都會觸發(fā)很多的消息被創(chuàng)建,那些從句子中分隔出來的單詞就是被創(chuàng)建出來的新消息。

這些消息構(gòu)成一個樹狀結(jié)構(gòu),我們稱之為“tuple tree”,看起來如圖1所示:

圖1 示例tuple tree

在什么條件下,Storm才會認(rèn)為一個從spout發(fā)送出來的消息被完整處理呢?答案就是下面的條件同時被滿足:

  • tuple tree不再生長
  • 樹中的任何消息被標(biāo)識為“已處理”

如果在指定的時間內(nèi),一個消息衍生出來的tuple tree未被完全處理成功,則認(rèn)為此消息未被完整處理。這個超時值可以通過任務(wù)級參數(shù)Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS 進行配置,默認(rèn)超時值為30秒。

三、消息的生命周期

如果消息被完整處理或者未被完整處理,Storm會如何進行接下來的操作呢?為了弄清這個問題,我們來研究一下從spout發(fā)出來的消息的生命周期。這里列出了spout應(yīng)該實現(xiàn)的接口:

首先, Storm使用spout實例的nextTuple()方法從spout請求一個消息(tuple)。 收到請求以后,spout使用open方法中提供的SpoutOutputCollector向它的輸出流發(fā)送一個或多個消息。每發(fā)送一個消息,Spout會給這個消息提供一個message ID,它將會被用來標(biāo)識這個消息。

假設(shè)我們從kestrel隊列中讀取消息,Spout會將kestrel 隊列為這個消息設(shè)置的ID作為此消息的message ID。 向SpoutOutputCollector中發(fā)送消息格式如下:

接來下,這些消息會被發(fā)送到后續(xù)業(yè)務(wù)處理的bolts, 并且Storm會跟蹤由此消息產(chǎn)生出來的新消息。當(dāng)檢測到一個消息衍生出來的tuple tree被完整處理后,Storm會調(diào)用Spout中的ack方法,并將此消息的messageID作為參數(shù)傳入。同理,如果某消息處理超時,則此消息對應(yīng)的Spout的fail方法會被調(diào)用,調(diào)用時此消息的messageID會被作為參數(shù)傳入。

注意:一個消息只會由發(fā)送它的那個spout任務(wù)來調(diào)用ack或fail。如果系統(tǒng)中某個spout由多個任務(wù)運行,消息也只會由創(chuàng)建它的spout任務(wù)來應(yīng)答(ack或fail),決不會由其他的spout任務(wù)來應(yīng)答。

我們繼續(xù)使用從kestrel隊列中讀取消息的例子來闡述高可靠性下spout需要做些什么(假設(shè)這個spout的名字是KestrelSpout)。

我們先簡述一下kestrel消息隊列:

當(dāng)KestrelSpout從kestrel隊列中讀取一個消息,表示它“打開”了隊列中某個消息。這意味著,此消息并未從隊列中真正的刪除,而是將此消息設(shè)置為“pending”狀態(tài),它等待來自客戶端的應(yīng)答,被應(yīng)答以后,此消息才會被真正的從隊列中刪除。處于“pending”狀態(tài)的消息不會被其他的客戶端看到。另外,如果一個客戶端意外的斷開連接,則由此客戶端“打開”的所有消息都會被重新加入到隊列中。當(dāng)消息被“打開”的時候,kestrel隊列同時會為這個消息提供一個唯一的標(biāo)識。

KestrelSpout就是使用這個唯一的標(biāo)識作為這個tuple的messageID的。稍后當(dāng)ack或fail被調(diào)用的時候,KestrelSpout會把ack或者fail連同messageID一起發(fā)送給kestrel隊列,kestrel會將消息從隊列中真正刪除或者將它重新放回隊列中。

四、可靠相關(guān)的API

為了使用Storm提供的可靠處理特性,我們需要做兩件事情:

  • 無論何時在tuple tree中創(chuàng)建了一個新的節(jié)點,我們需要明確的通知Storm;
  • 當(dāng)處理完一個單獨的消息時,我們需要告訴Storm 這棵tuple tree的變化狀態(tài)。

通過上面的兩步,storm就可以檢測到一個tuple tree何時被完全處理了,并且會調(diào)用相關(guān)的ack或fail方法。Storm提供了簡單明了的方法來完成上述兩步。

為tuple tree中指定的節(jié)點增加一個新的節(jié)點,我們稱之為錨定(anchoring)。錨定是在我們發(fā)送消息的同時進行的。為了更容易說明問題,我們使用下面代碼作為例子。本示例的bolt將包含整句話的消息分解為一系列的子消息,每個子消息包含一個單詞。

每個消息都通過這種方式被錨定:把輸入消息作為emit方法的***個參數(shù)。因為word消息被錨定在了輸入消息上,這個輸入消息是spout發(fā)送過來的tuple tree的根節(jié)點,如果任意一個word消息處理失敗,派生這個tuple tree那個spout 消息將會被重新發(fā)送。

與此相反,我們來看看使用下面的方式emit消息時,Storm會如何處理:

如果以這種方式發(fā)送消息,將會導(dǎo)致這個消息不會被錨定。如果此tuple tree中的消息處理失敗,派生此tuple tree的根消息不會被重新發(fā)送。根據(jù)任務(wù)的容錯級別,有時候很適合發(fā)送一個非錨定的消息。

一個輸出消息可以被錨定在一個或者多個輸入消息上,這在做join或聚合的時候是很有用的。一個被多重錨定的消息處理失敗,會導(dǎo)致與之關(guān)聯(lián)的多個spout消息被重新發(fā)送。多重錨定通過在emit方法中指定多個輸入消息來實現(xiàn):

多重錨定會將被錨定的消息加到多棵tuple tree上。

注意:多重綁定可能會破壞傳統(tǒng)的樹形結(jié)構(gòu),從而構(gòu)成一個DAGs(有向無環(huán)圖),如圖2所示:

圖2 多重錨定構(gòu)成的鉆石型結(jié)構(gòu)

Storm的實現(xiàn)可以像處理樹那樣來處理DAGs。

錨定表明了如何將一個消息加入到指定的tuple tree中,高可靠處理API的接下來部分將向您描述當(dāng)處理完tuple tree中一個單獨的消息時我們該做些什么。這些是通過OutputCollector 的ack和fail方法來實現(xiàn)的。回頭看一下例子SplitSentence,可以發(fā)現(xiàn)當(dāng)所有的word消息被發(fā)送完成后,輸入的表示句子的消息會被應(yīng)答(acked)。

每個被處理的消息必須表明成功或失敗(acked 或者failed)。Storm是使用內(nèi)存來跟蹤每個消息的處理情況的,如果被處理的消息沒有應(yīng)答的話,遲早內(nèi)存會被耗盡!

很多bolt遵循特定的處理流程: 讀取一個消息、發(fā)送它派生出來的子消息、在execute結(jié)尾處應(yīng)答此消息。一般的過濾器(filter)或者是簡單的處理功能都是這類的應(yīng)用。Storm有一個BasicBolt接口封裝了上述的流程。示例SplitSentence可以使用BasicBolt來重寫:

使用這種方式,代碼比之前稍微簡單了一些,但是實現(xiàn)的功能是一樣的。發(fā)送到BasicOutputCollector的消息會被自動的錨定到輸入消息,并且,當(dāng)execute執(zhí)行完畢的時候,會自動的應(yīng)答輸入消息。

很多情況下,一個消息需要延遲應(yīng)答,例如聚合或者是join。只有根據(jù)一組輸入消息得到一個結(jié)果之后,才會應(yīng)答之前所有的輸入消息。并且聚合和join大部分時候?qū)敵鱿⒍际嵌嘀劐^定。然而,這些特性不是IBasicBolt所能處理的。

#p#

五、高效的實現(xiàn)tuple tree

Storm 系統(tǒng)中有一組叫做“acker”的特殊的任務(wù),它們負(fù)責(zé)跟蹤DAG(有向無環(huán)圖)中的每個消息。每當(dāng)發(fā)現(xiàn)一個DAG被完全處理,它就向創(chuàng)建這個根消息的spout任務(wù)發(fā)送一個信號。拓?fù)渲衋cker任務(wù)的并行度可以通過配置參數(shù)Config.TOPOLOGY_ACKERS來設(shè)置。默認(rèn)的acker任務(wù)并行度為1,當(dāng)系統(tǒng)中有大量的消息時,應(yīng)該適當(dāng)提高acker任務(wù)的并發(fā)度。

為了理解Storm可靠性處理機制,我們從研究一個消息的生命周期和tuple tree的管理入手。當(dāng)一個消息被創(chuàng)建的時候(無論是在spout還是bolt中),系統(tǒng)都為該消息分配一個64bit的隨機值作為id。這些隨機的id是acker用來跟蹤由spout消息派生出來的tuple tree的。

每個消息都知道它所在的tuple tree對應(yīng)的根消息的id。每當(dāng)bolt新生成一個消息,對應(yīng)tuple tree中的根消息的messageId就拷貝到這個消息中。當(dāng)這個消息被應(yīng)答的時候,它就把關(guān)于tuple tree變化的信息發(fā)送給跟蹤這棵樹的acker。例如,他會告訴acker:本消息已經(jīng)處理完畢,但是我派生出了一些新的消息,幫忙跟蹤一下吧。

舉個例子,假設(shè)消息D和E是由消息C派生出來的,這里演示了消息C被應(yīng)答時,tuple tree是如何變化的。

因為在C被從樹中移除的同時D和E會被加入到tuple tree中,因此tuple tree不會被過早的認(rèn)為已完全處理。

關(guān)于Storm如何跟蹤tuple tree,我們再深入的探討一下。前面說過系統(tǒng)中可以有任意個數(shù)的acker,那么,每當(dāng)一個消息被創(chuàng)建或應(yīng)答的時候,它怎么知道應(yīng)該通知哪個acker呢?

系統(tǒng)使用一種哈希算法來根據(jù)spout消息的messageId確定由哪個acker跟蹤此消息派生出來的tuple tree。因為每個消息都知道與之對應(yīng)的根消息的messageId,因此它知道應(yīng)該與哪個acker通信。

當(dāng)spout發(fā)送一個消息的時候,它就通知對應(yīng)的acker一個新的根消息產(chǎn)生了,這時acker就會創(chuàng)建一個新的tuple tree。當(dāng)acker發(fā)現(xiàn)這棵樹被完全處理之后,他就會通知對應(yīng)的spout任務(wù)。

tuple是如何被跟蹤的呢?系統(tǒng)中有成千上萬的消息,如果為每個spout發(fā)送的消息都構(gòu)建一棵樹的話,很快內(nèi)存就會耗盡。所以,必須采用不同的策略來跟蹤每個消息。由于使用了新的跟蹤算法,Storm只需要固定的內(nèi)存(大約20字節(jié))就可以跟蹤一棵樹。這個算法是storm正確運行的核心,也是storm***的突破。

acker任務(wù)保存了spout消息id到一對值的映射。***個值就是spout的任務(wù)id,通過這個id,acker就知道消息處理完成時該通知哪個spout任務(wù)。第二個值是一個64bit的數(shù)字,我們稱之為“ack val”, 它是樹中所有消息的隨機id的異或結(jié)果。ack val表示了整棵樹的的狀態(tài),無論這棵樹多大,只需要這個固定大小的數(shù)字就可以跟蹤整棵樹。當(dāng)消息被創(chuàng)建和被應(yīng)答的時候都會有相同的消息id發(fā)送過來做異或。

每當(dāng)acker發(fā)現(xiàn)一棵樹的ack val值為0的時候,它就知道這棵樹已經(jīng)被完全處理了。因為消息的隨機ID是一個64bit的值,因此ack val在樹處理完之前被置為0的概率非常小。假設(shè)你每秒鐘發(fā)送一萬個消息,從概率上說,至少需要50,000,000年才會有機會發(fā)生一次錯誤。即使如此,也只有在這個消息確實處理失敗的情況下才會有數(shù)據(jù)的丟失!

六、選擇合適的可靠性級別

Acker任務(wù)是輕量級的,所以在拓?fù)渲胁⒉恍枰嗟腶cker存在。可以通過Storm UI來觀察acker任務(wù)的吞吐量,如果看上去吞吐量不夠的話,說明需要添加額外的acker。

如果你并不要求每個消息必須被處理(你允許在處理過程中丟失一些信息),那么可以關(guān)閉消息的可靠處理機制,從而可以獲取較好的性能。關(guān)閉消息的可靠處理機制意味著系統(tǒng)中的消息數(shù)會減半(每個消息不需要應(yīng)答了)。另外,關(guān)閉消息的可靠處理可以減少消息的大小(不需要每個tuple記錄它的根id了),從而節(jié)省帶寬。

有三種方法可以關(guān)系消息的可靠處理機制:

  • 將參數(shù)Config.TOPOLOGY_ACKERS設(shè)置為0,通過此方法,當(dāng)Spout發(fā)送一個消息的時候,它的ack方法將立刻被調(diào)用;
  • 第二個方法是Spout發(fā)送一個消息時,不指定此消息的messageID。當(dāng)需要關(guān)閉特定消息可靠性的時候,可以使用此方法;
  • ***,如果你不在意某個消息派生出來的子孫消息的可靠性,則此消息派生出來的子消息在發(fā)送時不要做錨定,即在emit方法中不指定輸入消息。因為這些子孫消息沒有被錨定在任何tuple tree中,因此他們的失敗不會引起任何spout重新發(fā)送消息。

七、集群的各級容錯

到現(xiàn)在為止,大家已經(jīng)理解了Storm的可靠性機制,并且知道了如何選擇不同的可靠性級別來滿足需求。接下來我們研究一下Storm如何保證在各種情況下確保數(shù)據(jù)不丟失。

1、任務(wù)級失敗

因為bolt任務(wù)crash引起的消息未被應(yīng)答。此時,acker中所有與此bolt任務(wù)關(guān)聯(lián)的消息都會因為超時而失敗,對應(yīng)spout的fail方法將被調(diào)用。

  • acker任務(wù)失敗。如果acker任務(wù)本身失敗了,它在失敗之前持有的所有消息都將會因為超時而失敗。Spout的fail方法將被調(diào)用。
  • Spout任務(wù)失敗。這種情況下,Spout任務(wù)對接的外部設(shè)備(如MQ)負(fù)責(zé)消息的完整性。例如當(dāng)客戶端異常的情況下,kestrel隊列會將處于pending狀態(tài)的所有的消息重新放回到隊列中。

2、任務(wù)槽(slot) 故障

  • worker失敗。每個worker中包含數(shù)個bolt(或spout)任務(wù)。supervisor負(fù)責(zé)監(jiān)控這些任務(wù),當(dāng)worker失敗后,supervisor會嘗試在本機重啟它。
  • supervisor失敗。supervisor是無狀態(tài)的,因此supervisor的失敗不會影響當(dāng)前正在運行的任務(wù),只要及時的將它重新啟動即可。supervisor不是自舉的,需要外部監(jiān)控來及時重啟。
  • nimbus失敗。nimbus是無狀態(tài)的,因此nimbus的失敗不會影響當(dāng)前正在運行的任務(wù)(nimbus失敗時,無法提交新的任務(wù)),只要及時的將它重新啟動即可。nimbus不是自舉的,需要外部監(jiān)控來及時重啟。

3.、集群節(jié)點(機器)故障

  • storm集群中的節(jié)點故障。此時nimbus會將此機器上所有正在運行的任務(wù)轉(zhuǎn)移到其他可用的機器上運行。
  • zookeeper集群中的節(jié)點故障。zookeeper保證少于半數(shù)的機器宕機仍可正常運行,及時修復(fù)故障機器即可。

八、小結(jié)

本章介紹了storm集群如何實現(xiàn)數(shù)據(jù)的可靠處理。借助于創(chuàng)新性的tuple tree跟蹤技術(shù),storm高效的通過數(shù)據(jù)的應(yīng)答機制來保證數(shù)據(jù)不丟失。

storm集群中除nimbus外,沒有單點存在,任何節(jié)點都可以出故障而保證數(shù)據(jù)不會丟失。nimbus被設(shè)計為無狀態(tài)的,只要可以及時重啟,就不會影響正在運行的任務(wù)。

責(zé)任編輯:黃丹 來源: 量子恒道官方博客
相關(guān)推薦

2014-01-16 15:48:49

storm

2013-08-29 14:12:52

Storm分布式實時計算

2013-08-29 14:28:09

StormHadoop

2013-09-18 14:46:32

StormStorm集群

2014-01-13 11:22:28

storm

2022-09-21 21:50:18

Dapr消息隊列

2014-01-16 14:30:43

storm安裝部署

2013-12-12 16:37:45

Storm入門教程一致性事務(wù)

2014-01-16 11:14:37

StormTopology

2024-11-12 15:46:37

2010-08-03 13:06:15

Flex Builde

2009-07-08 15:12:48

Java Servle

2014-05-26 15:35:55

Web組件Web Compone

2014-01-16 16:53:53

storm事務(wù)一致性

2022-07-21 11:58:12

Docker

2010-03-12 14:04:32

Python入門教程

2022-07-12 08:27:18

Zadig開源

2010-06-13 09:45:35

Widget開發(fā)

2010-08-03 14:37:30

Flex入門教程

2010-05-21 12:50:45

Subversion快
點贊
收藏

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

五月天福利视频| 美女毛片在线观看| 久久久久伊人| 一区二区高清在线| 鲁丝片一区二区三区| 中文字字幕在线中文乱码| 中文字幕人成人乱码| 亚洲精品久久在线| 波多野结衣国产精品| av中文字幕在线看| 国产精品视频观看| 精品久久蜜桃| 国产丰满美女做爰| 日韩和欧美一区二区三区| 欧美福利在线观看| 一二三四在线观看视频| 蜜桃久久久久| 7777精品伊人久久久大香线蕉超级流畅| 无码粉嫩虎白一线天在线观看| 黄色毛片在线看| 成人性生交大片免费看中文 | 日本免费高清一区二区| 国产按摩一区二区三区| 日韩高清一区在线| 91国语精品自产拍在线观看性色| 色哟哟一一国产精品| 亚洲素人在线| 亚洲大胆人体在线| 亚洲av无一区二区三区久久| 国产精品蜜月aⅴ在线| 欧美性生交xxxxx久久久| 中文字幕色一区二区| 欧美成人综合在线| 成人黄色网址在线观看| 日韩亚洲欧美中文在线| 国产精品无码一区二区三区免费 | 91日本视频在线| 亚洲欧美一区二区三区在线观看 | av无码精品一区二区三区| 欧美亚洲系列| 亚洲精品亚洲人成人网| 在线成人av电影| jizz在线免费观看| 久久久亚洲精品石原莉奈| 国产精品我不卡| 黄色一级大片在线免费看国产一| 激情久久五月天| 成人激情视频小说免费下载| 中文字幕 欧美激情| 日韩高清欧美激情| 国产精品激情av在线播放| 老熟妇仑乱一区二区av| 性一交一乱一区二区洋洋av| 欧洲亚洲在线视频| 中文字字幕在线中文| 9色精品在线| 高清欧美性猛交| 香蕉免费毛片视频| 日韩午夜av在线| 97超级碰碰碰久久久| 91香蕉在线视频| 亚洲深夜福利| 国产精品6699| 在线观看亚洲一区二区| 精品一区二区三区免费视频| 国产精品一区二区三| 亚洲熟妇无码久久精品| 激情都市一区二区| 成人自拍网站| 日本福利在线观看| 国产人成一区二区三区影院| 亚洲国产欧美日韩| 大地资源网3页在线观看| 亚洲欧美日韩综合aⅴ视频| 久久久久久久久久久久久国产| 91一区二区三区在线| 亚洲va韩国va欧美va| 日韩精品xxxx| 成人午夜精品| 在线播放/欧美激情| 男人添女人荫蒂国产| 久久97久久97精品免视看秋霞| 日韩精品中文字幕在线| 久久国产柳州莫菁门| 羞羞色午夜精品一区二区三区| 欧美精品在线观看91| 日本熟妇毛耸耸xxxxxx| 日日夜夜精品视频天天综合网| 国产一区二区在线免费| 午夜精品久久久久久久91蜜桃| 99riav一区二区三区| 色就是色欧美| 欧美黑人猛交| 在线观看日韩国产| 51自拍视频在线观看| 日韩欧美美女在线观看| 日韩中文在线中文网在线观看| 18岁成人毛片| 天堂va蜜桃一区二区三区| 91亚洲精品一区| 无码h黄肉3d动漫在线观看| 国产精品国产三级国产普通话蜜臀| 99久热在线精品视频| 成人亚洲欧美| 精品噜噜噜噜久久久久久久久试看| 欧美熟妇一区二区| 欧美在线亚洲综合一区| 日韩免费在线看| 精品二区在线观看| 国产精品无圣光一区二区| 亚洲精品蜜桃久久久久久| 国产精品伦一区二区| 亚洲黄色成人网| 日韩va亚洲va欧美va清高| 日日骚欧美日韩| 国产乱码精品一区二区三区中文 | 免费看av成人| 性欧美视频videos6一9| 92久久精品一区二区| 久久免费视频一区| www.好吊操| 久久久久九九精品影院| 最近中文字幕2019免费| 天堂在线免费观看视频| 不卡的av在线播放| 日本黄色a视频| www.26天天久久天堂| 精品一区二区三区四区在线| 久久精品久久精品久久| 国产真实乱子伦精品视频| 日本一区视频在线播放| 亚洲人体视频| 亚洲激情在线视频| 精品少妇theporn| 久久99日本精品| 婷婷五月色综合| 欧洲av一区二区| 亚洲免费av电影| √资源天堂中文在线| www.日韩在线| 国产妇女馒头高清泬20p多| 亚洲1区在线| 久久av在线看| 精品国产av 无码一区二区三区| 国产精品视频看| 欧美美女性视频| 99国产精品免费视频观看| 国产精品偷伦视频免费观看国产| 国产精品一区二区婷婷| 色88888久久久久久影院按摩| 91精品国产自产| 国产精品久久久久9999高清| 国产在线一区二区三区欧美| 69av成人| 日韩精品极品视频| 9i精品福利一区二区三区| 久久久久久久综合狠狠综合| 成人免费观看毛片| 国产中文精品久高清在线不| 国产精品99久久久久久久久| 777电影在线观看| 欧美日韩国产天堂| 黄色片在线观看网站| 成人激情免费电影网址| 色欲av无码一区二区人妻| 亚洲瘦老头同性70tv| 国产精品久久久久av免费| 日本中文在线| 精品国产乱码久久久久久久| 日本一级淫片免费放| 久久久久久久久99精品| 性刺激的欧美三级视频| 亚洲成人日韩| 国产精品久久7| 天堂电影一区| 尤物yw午夜国产精品视频明星| 91tv国产成人福利| 一区二区三区欧美在线观看| 国产极品一区二区| 天堂一区二区在线| 成人在线观看毛片| 老司机精品视频在线播放| 日本欧美爱爱爱| 毛片免费不卡| 亚洲高清久久网| 亚洲毛片一区二区三区| 亚洲精品亚洲人成人网| 国产吞精囗交久久久| 青青国产91久久久久久| a级片一区二区| 亚洲动漫在线观看| 3d动漫啪啪精品一区二区免费 | 91精品啪在线观看国产18| 岛国一区二区三区高清视频| 日日av拍夜夜添久久免费| 久久成人免费视频| 日本私人网站在线观看| 欧美丰满嫩嫩电影| 国产日产精品一区二区三区| 中文字幕在线免费不卡| 国产白袜脚足j棉袜在线观看| 久久精品日产第一区二区| 天堂av免费看| 蜜乳av综合| 成人av免费电影| 99久久综合国产精品二区| 欧美—级高清免费播放| av片在线免费观看| 亚洲精品国产精品国自产观看浪潮| 亚洲手机在线观看| 日韩欧美在线字幕| 青娱乐免费在线视频| 中日韩av电影| 中文人妻一区二区三区| 国产91精品一区二区麻豆亚洲| wwwwww.色| 激情偷拍久久| 影音先锋亚洲视频| 欧美亚洲高清| 蜜桃麻豆www久久国产精品| 国产精品中文| 国产精品一区二区三| xxxxx性欧美特大| 国内揄拍国内精品少妇国语| 最新国产露脸在线观看| 在线播放日韩欧美| 精品资源在线看| 精品一区二区三区四区| 日本精品久久久久| 日韩欧美亚洲一区二区| 国产精品伦理一区| 欧美日韩一区二区三区四区| 亚洲天堂一区在线观看| 午夜精品一区在线观看| 国产亚洲成人精品| 亚洲欧美区自拍先锋| 亚洲少妇xxx| 欧美韩日一区二区三区四区| 偷拍夫妻性生活| 91视频一区二区三区| 超碰男人的天堂| 成人毛片老司机大片| 在线播放第一页| 国产成人午夜精品5599| 国产国语老龄妇女a片| 国产一区激情在线| 在线播放免费视频| 国产在线视频一区二区三区| www,av在线| 国产精品一卡二| 国产又粗又猛大又黄又爽| 久久国产剧场电影| 日本黄大片一区二区三区| 久久精品国产在热久久| 色噜噜狠狠一区二区| 看国产成人h片视频| 九九热免费在线观看| 国产揄拍国内精品对白| 在线观看网站黄| proumb性欧美在线观看| aa一级黄色片| 久久久综合精品| 国产毛片欧美毛片久久久| 中国色在线观看另类| 亚洲精品久久久久久国| 自拍偷拍亚洲欧美日韩| 欧美精品成人久久| 激情久久av一区av二区av三区| 国产午夜免费福利| 在线精品亚洲一区二区不卡| 中文字幕永久在线视频| 91精品国产综合久久精品图片| 成人午夜福利视频| 日韩精品中文字幕在线播放| 91社区在线| 精品中文字幕在线| 亚洲国产福利| 成人网在线视频| 国产精品超碰| 相泽南亚洲一区二区在线播放| 中文字幕亚洲精品乱码| koreanbj精品视频一区| 男人的j进女人的j一区| japan高清日本乱xxxxx| 91麻豆123| 蜜臀av午夜精品久久| 性欧美大战久久久久久久久| 青娱乐在线免费视频| 欧美一区二区网站| 嫩草在线播放| 欧美国产第二页| 色婷婷综合久久久中字幕精品久久| 91精品久久久久| 亚洲福利网站| 波多野结衣 作品| 日韩精品电影在线观看| 韩国一区二区三区四区| 国产视频在线观看一区二区三区| 加勒比婷婷色综合久久| 狠狠操狠狠色综合网| 国产伦精品一区二区三区四区| 亚洲精品成人久久| 精品国产99久久久久久| 欧美在线免费看| 亚洲三区欧美一区国产二区| 婷婷亚洲婷婷综合色香五月| 在线成人黄色| 网站在线你懂的| 久久久久久久久久看片| 国产精品a成v人在线播放| 欧美三区在线视频| 午夜视频免费看| 欧美高清视频在线| 四虎精品一区二区免费| 欧美中日韩免费视频| 亚洲第一精品影视| 永久av免费在线观看| 欧美国产一区视频在线观看| 日日夜夜综合网| 精品美女一区二区三区| 国产精品一区二区三区视频网站| 国产福利精品视频| 久久久久97| 国产小视频免费| 国产一本一道久久香蕉| 潘金莲一级黄色片| 欧美亚洲一区三区| 麻豆影视在线| 97成人在线视频| 免费看成人人体视频| 青青青在线观看视频| 久久99在线观看| 亚洲 欧美 变态 另类 综合| 欧美专区亚洲专区| 久久久久久女乱国产| 97成人在线视频| 亚洲瘦老头同性70tv| 日韩欧美一区二| 99久久精品免费看| 国产精选第一页| 亚洲国产精品资源| heyzo中文字幕在线| 国产精品日韩二区| 亚洲高清av| 精品视频站长推荐| 亚洲电影一区二区| 黄片毛片在线看| 81精品国产乱码久久久久久| 精品深夜福利视频| 国产日韩欧美精品在线观看| 丁香啪啪综合成人亚洲小说| 久久久久人妻一区精品色欧美| 欧美一区二区三区免费视频| а√中文在线8| 成人av电影免费| 亚洲人人精品| 熟女俱乐部一区二区| 日本韩国欧美三级| 黄色网址在线免费| 亚洲最大的免费| 国产精品激情电影| 国产精品三级在线观看无码| 色呦呦日韩精品| aaa在线观看| 91青草视频久久| 激情欧美一区二区三区| 欧美bbbbb性bbbbb视频| 欧美日韩在线影院| av小片在线| 92国产精品久久久久首页 | 国产乱码精品一区二区| 美女福利视频一区| 欧美a一欧美| 冲田杏梨av在线| 亚洲男人的天堂一区二区| 高清乱码毛片入口| 国产91精品网站| 97精品一区二区| 亚洲婷婷在线观看| 色视频成人在线观看免| mm1313亚洲国产精品美女| 国产成人免费观看| 天堂成人国产精品一区| 成人免费精品动漫网站| 欧美精品一区二区三区高清aⅴ| 成人片免费看| 日本一级黄视频| 久久亚洲精华国产精华液| 91无套直看片红桃| 992tv在线成人免费观看| 日韩理论电影| 久久久久亚洲av无码网站| 在线一区二区三区| 欧美卡一卡二| 亚洲 国产 欧美一区| 成人av在线一区二区| 国产女优在线播放| 国自在线精品视频| 日韩一区亚洲二区| 精品人妻互换一区二区三区|