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

storm入門教程 第四章 消息的可靠處理

開發 前端
storm可以確保spout發送出來的每個消息都會被完整的處理。本章將會描述storm體系是如何達到這個目標的,并將會詳述開發者應該如何使用storm的這些機制來實現數據的可靠處理。

4.1 簡介

storm可以確保spout發送出來的每個消息都會被完整的處理。本章將會描述storm體系是如何達到這個目標的,并將會詳述開發者應該如何使用storm的這些機制來實現數據的可靠處理。

 

4.2 理解消息被完整處理

一個消息(tuple)從spout發送出來,可能會導致成百上千的消息基于此消息被創建。

我們來思考一下流式的“單詞統計”的例子:

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

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

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

圖1 示例tuple tree

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

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

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

4.3 消息的生命周期

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

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

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

接來下,這些消息會被發送到后續業務處理的bolts, 并且Storm會跟蹤由此消息產生出來的新消息。當檢測到一個消息衍生出來的tuple tree被完整處理后,Storm會調用Spout中的ack方法,并將此消息的messageID作為參數傳入。同理,如果某消息處理超時,則此消息對 應的Spout的fail方法會被調用,調用時此消息的messageID會被作為參數傳入。

注意:一個消息只會由發送它的那個spout任務來調用ack或fail。如果系統中某個spout由多個任務運行,消息也只會由創建它的spout任務來應答(ack或fail),決不會由其他的spout任務來應答。

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

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

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

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

#p#

4.4 可靠相關的API

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

  1. 無論何時在tuple tree中創建了一個新的節點,我們需要明確的通知Storm;
  2. 當處理完一個單獨的消息時,我們需要告訴Storm 這棵tuple tree的變化狀態。

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

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

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

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

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

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

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

注意:多重綁定可能會破壞傳統的樹形結構,從而構成一個DAGs(有向無環圖),如圖2所示:

圖2 多重錨定構成的鉆石型結構

Storm的實現可以像處理樹那樣來處理DAGs。

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

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

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

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

很多情況下,一個消息需要延遲應答,例如聚合或者是join。只有根據一組輸入消息得到一個結果之后,才會應答之前所有的輸入消息。并且聚合和join大部分時候對輸出消息都是多重錨定。然而,這些特性不是IBasicBolt所能處理的。

#p#

4.5 高效的實現tuple tree

Storm 系統中有一組叫做“acker”的特殊的任務,它們負責跟蹤DAG(有向無環圖)中的每個消息。每當發現一個DAG被完全處理,它就向創建這個根消息的spout任務發送一個信號。拓撲中acker任務的并行度可以通過配置參數Config.TOPOLOGY_ACKERS來設置。默認的acker任務并行度為1,當系統中有大量的消息時,應該適當提高acker任務的并發度。

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

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

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

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

關于Storm如何跟蹤tuple tree,我們再深入的探討一下。前面說過系統中可以有任意個數的acker,那么,每當一個消息被創建或應答的時候,它怎么知道應該通知哪個acker呢?

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

當spout發送一個消息的時候,它就通知對應的acker一個新的根消息產生了,這時acker就會創建一個新的tuple tree。當acker發現這棵樹被完全處理之后,他就會通知對應的spout任務。

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

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

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

4.6 選擇合適的可靠性級別

Acker任務是輕量級的,所以在拓撲中并不需要太多的acker存在。可以通過Storm UI來觀察acker任務的吞吐量,如果看上去吞吐量不夠的話,說明需要添加額外的acker。

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

有三種方法可以關系消息的可靠處理機制:

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

4.7 集群的各級容錯

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

3.7.1 任務級失敗

  • 因為bolt任務crash引起的消息未被應答。此時,acker中所有與此bolt任務關聯的消息都會因為超時而失敗,對應spout的fail方法將被調用。
  • acker任務失敗。如果acker任務本身失敗了,它在失敗之前持有的所有消息都將會因為超時而失敗。Spout的fail方法將被調用。
  • Spout任務失敗。這種情況下,Spout任務對接的外部設備(如MQ)負責消息的完整性。例如當客戶端異常的情況下,kestrel隊列會將處于pending狀態的所有的消息重新放回到隊列中。

4.7.2  任務槽(slot) 故障

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

4.7.3.  集群節點(機器)故障

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

4.8 小結

本章介紹了storm集群如何實現數據的可靠處理。借助于創新性的tuple tree跟蹤技術,storm高效的通過數據的應答機制來保證數據不丟失。

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

 原文鏈接:http://blog.linezing.com/2013/01/storm%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B-%E7%AC%AC%E5%9B%9B%E7

責任編輯:陳四芳 來源: blog.linezing.com
相關推薦

2013-12-12 16:14:21

storm入門教程storm消息處理

2012-02-16 10:18:48

AndroidWeb App官方文檔

2014-01-13 11:22:28

storm

2013-08-29 14:12:52

Storm分布式實時計算

2014-01-16 11:14:37

StormTopology

2014-01-16 14:30:43

storm安裝部署

2013-08-29 14:28:09

StormHadoop

2013-09-18 14:46:32

StormStorm集群

2021-09-03 15:08:06

鴻蒙HarmonyOS應用

2014-01-16 16:53:53

storm事務一致性

2022-09-21 21:50:18

Dapr消息隊列

2013-12-12 16:37:45

Storm入門教程一致性事務

2023-07-17 14:29:01

Bash算術運算

2011-01-06 11:11:36

PC技術

2024-11-12 15:46:37

2015-04-09 10:40:29

HTTP協議TCPHTTP事務延遲

2017-12-06 14:46:41

計算機技術等級考試

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
點贊
收藏

51CTO技術棧公眾號

国产精品嫩草影视| 日本a级片久久久| 天天看片中文字幕| 成人影院入口| 国产欧美日韩另类视频免费观看| 欧美最猛性xxxxx免费| 国产美女免费无遮挡| 欧美xnxx| ㊣最新国产の精品bt伙计久久| 国产精品亚洲综合天堂夜夜| 国产午夜手机精彩视频| 福利在线一区| 日韩欧美亚洲综合| 亚洲精品永久www嫩草| 国产乱码久久久| 99精品免费| 亚洲国产成人精品女人久久久 | 国产精品久久久久久久免费软件| 亚洲区一区二区| 中文字幕 欧美日韩| 黑人精品视频| 国产欧美精品一区| 91亚洲精品久久久久久久久久久久| 中文字幕求饶的少妇| 日韩欧美中文在线观看| 黑人巨大精品欧美一区免费视频 | 欧美性猛交久久久乱大交小说| 色欧美激情视频在线| 大陆成人av片| 国产精品久久久久av免费| 手机版av在线| 黄色软件在线| 国产精品一区二区果冻传媒| 91国产在线精品| 欧美偷拍一区二区三区| 精品视频国内| 色域天天综合网| 亚洲一卡二卡| 日本一卡二卡四卡精品| 国产做a爰片久久毛片| 26uuu亚洲国产精品| 在线观看免费黄色网址| 鲁大师精品99久久久| 91精品国产综合久久精品图片 | 亚洲欧美日韩国产一区二区三区 | 精品精品精品| 欧美日本一道本| 男人添女人下面高潮视频| 免费在线毛片网站| 男人日女人下面视频| 香蕉av一区二区三区| 国产精品一区二区久激情瑜伽| 国产精品久久久久久搜索| 日韩欧美一级视频| 亚洲精选久久| 欧美精品福利视频| 日本一级二级视频| 999视频精品| 中文字幕av一区| 国精产品一区二区三区| 午夜先锋成人动漫在线| 日韩精品中文字| 中文字幕av网址| 亚洲色图丝袜| 亚洲一品av免费观看| v8888av| 午夜精品福利影院| 亚洲片在线观看| 欧洲美熟女乱又伦| 成人a'v在线播放| 这里只有精品在线观看| 国产一级淫片久久久片a级| 人人狠狠综合久久亚洲婷婷| 中文字幕9999| www.av成人| 午夜欧美视频| 久久久久久网址| 波多野结衣视频网站| 久久精品一区二区国产| 国产精品高潮粉嫩av| 夜夜爽8888| 国产剧情一区二区| 国产a一区二区| 色视频在线观看| 欧美国产激情一区二区三区蜜月| 亚洲免费精品视频| 成人免费视屏| 亚洲第一搞黄网站| 激情综合网俺也去| 国产精品视频一区二区三区综合 | www.超碰com| 精品久久在线| 精品少妇一区二区三区日产乱码| 国产又粗又猛又色| 成人一区二区| 欧美多人乱p欧美4p久久| 美日韩一二三区| 精品一区二区三区免费毛片爱| 成人在线观看网址| 国产特黄在线| 亚洲综合一二区| 免费观看成人网| 日韩精品一区二区三区中文 | 在线看片一区| 国产精品久久久久久久久久久久| 国产人妖在线播放| 99re亚洲国产精品| 亚洲精品日韩精品| www.综合| 制服丝袜在线91| 极品人妻一区二区三区| 欧美成人自拍| 欧美一级电影免费在线观看| 一炮成瘾1v1高h| 久久亚洲免费视频| 99久久99久久精品| 九七电影院97理论片久久tvb| 亚洲成人久久网| 糖心vlog免费在线观看| 免费在线观看成人av| 99理论电影网| 麻豆网站在线观看| 亚洲国产日产av| 成人免费xxxxx在线视频| eeuss鲁片一区二区三区 | aaa大片在线观看| 日韩欧美亚洲一二三区| 下面一进一出好爽视频| 日本久久综合| 日本免费久久高清视频| 好吊色在线观看| 亚洲精品久久嫩草网站秘色| 一道本在线免费视频| 欧美美女在线| 欧美在线视频a| 亚洲精品视频专区| 亚洲视频狠狠干| 亚洲精品性视频| 不卡在线一区二区| 国产精品久久久久秋霞鲁丝| 精品无人乱码| 精品欧美一区二区三区| 在线观看日本一区二区| 欧美交a欧美精品喷水| 色综合导航网站| 国产又大又粗又长| 国产午夜亚洲精品羞羞网站| 国产日韩av网站| 激情五月综合婷婷| 最近日韩中文字幕中文| 日韩欧美一区二区一幕| 国产伦精品一区二区三区免费 | 欧美性猛交xx| 成人区精品一区二区婷婷| 91av视频在线| 天天干视频在线| 亚欧色一区w666天堂| 免费观看黄网站| 国产精品传媒精东影业在线| 国产精品久久77777| 三级在线视频| 色婷婷亚洲一区二区三区| 中国特级黄色大片| 欧美日韩国内| 99在线视频首页| 在线播放毛片| 色哟哟一区二区| 色撸撸在线视频| 美女免费视频一区| 日韩欧美一区二区三区四区五区| 亚洲一区资源| 亚洲美女性视频| 五月婷婷亚洲综合| 久久嫩草精品久久久久| 精品少妇一区二区三区在线| 丝袜美腿一区二区三区动态图 | 国产一级生活片| 国产成人h网站| 亚洲色成人www永久在线观看| 婷婷综合国产| 午夜剧场成人观在线视频免费观看| 黄色aaa毛片| 一区二区三区四区激情| 亚洲制服丝袜在线播放| 午夜亚洲激情| 日韩国产精品一区二区| a屁视频一区二区三区四区| 久久亚洲欧美日韩精品专区| 国产乱码精品一区二区三区精东| 亚洲免费av观看| 乱码一区二区三区| 天堂久久久久va久久久久| 日韩视频精品| 不卡精品视频| 国内精品小视频| 久青草国产在线| 欧美一级在线免费| 91蜜桃视频在线观看| 91蝌蚪porny| 色综合色综合色综合色综合| 911久久香蕉国产线看观看| 91视频99| 亚洲人体视频| 日韩中文字幕在线播放| 精品人妻少妇AV无码专区 | 成人a v视频| 亚洲嫩草精品久久| 中文字幕 日本| 日本不卡一二三区黄网| 特大黑人娇小亚洲女mp4| 九一成人免费视频| 91福利视频导航| 自拍在线观看| 欧美理论电影在线播放| 视频一区二区三区在线看免费看| 日韩亚洲欧美成人一区| 欧产日产国产69| 亚洲精品国产无天堂网2021 | 成人爽a毛片免费啪啪红桃视频| 97久久久久久| 中文字幕在线观看网站| 国产一区二区三区在线免费观看| 国产色在线视频| 欧美性xxxxx| 欧美日韩人妻精品一区二区三区| 欧美激情一区二区三区| 中文字幕人妻一区| 捆绑紧缚一区二区三区视频| 国产视频一视频二| 无码一区二区三区视频| 亚洲一区三区| 久久综合欧美| 国产欧美日本在线| 国内不卡的一区二区三区中文字幕 | 高清毛片aaaaaaaaa片| 欧美午夜一区二区三区免费大片| 久久精品亚洲无码| 一区二区三区不卡视频在线观看 | 国产欧美日韩精品在线| 不许穿内裤随时挨c调教h苏绵| 亚洲精选在线| 九一国产精品视频| 欧美日一区二区在线观看| 亚洲国产精品日韩| 国产成人精品免费视| 96成人在线视频| 欧美久久一区二区三区| 国产精品视频一区二区高潮| 成人欧美大片| 性色av一区二区三区| 1stkiss在线漫画| 最近2019年日本中文免费字幕| 男人天堂网在线观看| 日韩成人av在线| 高h调教冰块play男男双性文| 精品国产欧美一区二区| 成人免费公开视频| 日韩欧美区一区二| 国产女人高潮毛片| 欧美图片一区二区三区| 97在线视频人妻无码| 欧美夫妻性生活| 91久久精品国产91性色69| 欧美日韩一区二区电影| 国产又大又黄又爽| 91精品国产高清一区二区三区| 国产伦一区二区| 欧美一区二区福利视频| 欧美一区二区三区激情| 亚洲国产精彩中文乱码av在线播放 | 欧美精品免费视频| 国产剧情精品在线| 91精品国产综合久久婷婷香蕉| 一级黄色a视频| 制服丝袜国产精品| 黄色av一区二区三区| 亚洲精品999| 日本成人一区| 亚洲丝袜av一区| 国产私人尤物无码不卡| 一区国产精品视频| 日本高清在线观看wwwww色| 精品国偷自产在线视频99| www.欧美日本韩国| 7m第一福利500精品视频| 奇米777日韩| 成人a在线视频| 日韩三级不卡| 麻豆成人av| 日韩理论片av| 男人草女人视频| 亚洲影音先锋| 亚洲欧美手机在线| 成人中文字幕在线| 亚洲狠狠婷婷综合久久久久图片| 久久久久久久精| 午夜理伦三级做爰电影| 亚洲啪啪综合av一区二区三区| 国产亚洲精久久久久久无码77777| 黑人巨大精品欧美一区免费视频| 成年人视频免费| 亚洲精品一区二区三区影院| 黄视频在线播放| 欧美成人性色生活仑片| 国产在线天堂www网在线观看| 国产视频999| 高清精品视频| 亚洲图片都市激情| 激情婷婷久久| 久久出品必属精品| 久久综合狠狠综合久久综合88| 最新黄色av网址| 精品人伦一区二区三区蜜桃免费 | 精品福利一区二区三区| 欧美色18zzzzxxxxx| 久久资源免费视频| 国产色播av在线| 国产精品日韩一区| 免费看日产一区二区三区| 欧洲国产精品| 欧美日韩一区二区三区四区在线观看| 久久精品影视大全| 成人爱爱电影网址| 日韩三级久久久| 一本到高清视频免费精品| 日本美女一级片| 久久成人精品视频| 91精品国产66| 国产精品一区二区三区四区五区| 久久久久久久久久久久久久| 中国丰满人妻videoshd| 国产精品一区二区三区99 | 亚洲美女一区二区三区| 久久久精品福利| 精品捆绑美女sm三区| 在线看黄色av| 国产在线视频欧美| 国产精品探花在线观看| 男人的天堂狠狠干| 麻豆中文一区二区| 亚洲欧美va天堂人熟伦| 一本一道久久a久久精品| 亚洲精品国产精品国| xxx欧美精品| 成人在线黄色| 欧美精品一区二区三区在线看午夜| 国产一区观看| 丰满少妇xbxb毛片日本| 最新不卡av在线| 中文字幕在线播放日韩| 亚洲欧美第一页| 亚洲承认视频| 欧美一区国产一区| 亚洲专区欧美专区| 免费黄频在线观看| 亚洲精品乱码久久久久久黑人| 6—12呦国产精品| 丝袜美腿精品国产二区| 开心久久婷婷综合中文字幕| 图片区小说区区亚洲五月| 久久久精品网| 黄色aaa视频| 香蕉加勒比综合久久| 免费成人在线看| 久久久久久亚洲| 国产毛片精品| 国产精品-区区久久久狼 | 久久人人妻人人人人妻性色av| 艳妇臀荡乳欲伦亚洲一区| 国产免费久久久| 久久91亚洲人成电影网站| 成人在线tv视频| 日日摸日日碰夜夜爽无码| 国产日韩欧美制服另类| 香蕉污视频在线观看| 综合欧美国产视频二区| 日韩精品一区二区三区中文| 黄色激情在线视频| 99久久国产免费看| 区一区二在线观看| www.欧美精品| 久久9999免费视频| 无码熟妇人妻av在线电影| 99精品热视频| 黄色网址中文字幕| 日韩网站在线观看| 成人国产一区二区三区精品麻豆| 日本女人高潮视频| 成人爱爱电影网址| 潘金莲一级淫片aaaaaa播放| 久久天天躁狠狠躁夜夜躁| 一区二区三区在线免费看 | 欧美91福利在线观看| 四虎影成人精品a片| 欧美日韩国产美女| 手机在线免费av| 午夜精品短视频| 国产高清不卡一区二区| 天天操天天摸天天干| 久久成人av网站|