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

使用Flume 部署和管理可擴展的Web 服務

云計算
機器生成的日志數據對于查找各種硬件和軟件故障的根源至關重要。來自該日志數據的信息可提供改進系統架構、減緩系統退化和改善正常運行時間方面的反饋。最近,一些企業開始使用這些日志數據獲取業務洞察。在使用一個容錯的架構時,Flume 是一個擁有高效收集、聚合和轉移大量日志數據的分布式服務。本文將介紹如何部署 Flume,以及如何將它與 Hadoop 集群和簡單的分布式 Web 服務結合使用。

機器生成的日志數據對于查找各種硬件和軟件故障的根源至關重要。來自該日志數據的信息可提供改進系統架構、減緩系統退化和改善正常運行時間方面的反饋。最近,一些企業開始使用這些日志數據獲取業務洞察。在使用一個容錯的架構時,Flume 是一個擁有高效收集、聚合和轉移大量日志數據的分布式服務。本文將介紹如何部署 Flume,以及如何將它與 Hadoop 集群和簡單的分布式 Web 服務結合使用。

Flume 架構

Flume 是一項分布式、可靠的、容易使用的服務,用于收集、聚合從許多來源傳來的大量流事件數據并將它們轉移到一個中央數據存儲中。

使用 Flume 部署和管理可擴展的 Web 服務

圖 1. Flume 架構

 

Flume 事件可定義為一個擁有工作負載(字節)和一個可選的字符串屬性集的數據流單元。Flume 代理是一個托管組件的 JVM 進程,事件通過該進程從外部來源流到下一個目標(躍點)。

InfoSphere® BigInsights™ 支持以較低的延遲持續分析和存儲流數據。InfoSphere Streams 可用于配置上述代理和收集器進程(參見 參考資料)。Flume 也可用于在一個遠程位置收集數據,而且可在 InfoSphere BigInsights 服務器上配置一個收集器,將數據存儲在分布式文件系統 (DFS) 上。但是,在本文中,我們會同時將 Flume 用作代理和收集器進程,并使用一個 Hadoop 分布式文件系統 (HDFS) 集群作為存儲。

數據流模型

一個 Flume 代理有三個主要組成部分:來源、通道和接收器 (sink)。來源 使用了外部來源(比如 Web 服務)傳送給它的事件。外部來源以一種可識別的格式將事件發送給 Flume。當 Flume 來源收到事件后,它會將這些事件存儲在一個或多個通道 中。通道是一種被動存儲,它將事件保留到被 Flume 接收器 使用為止。例如,一個文件通道使用了本地文件系統;接收器從通道提取事件,并將它放在一個外部存儲庫(比如 HDFS)中,或者將它轉發到流中下一個 Flume 代理(下一個躍點)的 Flume 來源;給定代理中的來源和接收器與暫存在通道中的事件同步運行。

來源可針對不同的用途而使用不同的格式。例如,Avro Flume 來源可用于從 Avro 客戶端接收 Avro 事件。Avro 來源形成了一半的 Flume 的分層集合支持。在內部,這個來源使用了 Avro 的 NettyTransceiver 監聽和處理事件。它可與內置 AvroSink 配套使用,共同創建分層集合拓撲結構。Flume 使用的其他流行的網絡流包括 Thrift、Syslog 和 Netcat。

Avro

Apache 的 Avro 是一種數字序列化格式。它是一個基于 RPC 的框架,被 Apache 項目(比如 Flume 和 Hadoop)廣泛用于數據存儲和通信。Avro 框架的用途是提供豐富的數據結構、一種緊湊而又快速的二進制數據格式,以及與動態語言(比如 C++、Java™、Perl 和 Python)的簡單集成。Avro 使用 JSON 作為其接口描述語言 (Interface Description Language, IDL),以指定數據類型和協議。

Avro 依賴于一種與數據存儲在一起的模式。因為沒有每個值的開銷,這實現了輕松而又快速的序列化。在遠程過程調用 (RPC) 期間,該模式會在客戶端-服務器握手期間交換。使用 Avro,字段之間的通信很容易得到解決,因為它使用了 JSON。

可靠性、可恢復性和多躍點流

Flume 使用一種事務型設計來確保事件交付的可靠性。事務型設計相當于將每個事件當作一個事務來對待,事件暫存在每個代理上的一個通道中。每個事件傳送到流中的下一個代理(比如來源欄)或終端存儲庫(比如 HDFS)。事件被存儲在下一個代理的通道中或終端存儲庫中后,就會從上一個通道中刪除,以便在收到存儲確認之前維護一個最新事件隊列。這個過程通過來源和接收器完成,它們將存儲或檢索信息封裝在通道提供的一個事務中。這可以確保為 Flume 中的單躍點消息傳送語義提供了端到端的流可靠性。

可恢復性通過通道中的暫存事件來維護,用于管理故障恢復。 Flume 支持一種受本地文件系統支持的持久性的文件通道(基本上用于在永久存儲上維護狀態)。如果使用一個持久性的文件通道,任何丟失的事件(在發生崩潰或系統故障時)都可以恢復。還有一個內存通道將事件存儲在內存中的一個隊列中,這么做更快,但在事件進程結束時,仍留在內存通道內的所有事件都無法恢復。

Flume 還允許用戶構建多躍點流,事件會經歷多個代理,然后才會到達最終的目標。對于多躍點流,來自上一個躍點的接收器和來自下一個躍點的來源都會運行自己的事務進程,以確保數據安全地存儲在下一個躍點的通道中。

使用 Flume 部署和管理可擴展的 Web 服務

圖 2. 多躍點流

#p#

系統架構

本節將討論如何使用 Flume 設置一個可擴展的 Web 服務。出于此目的,我們需要使用代碼來讀取 RSS 提要。我們還需要配置 Flume 代理和收集器來接收 RSS 數據,并將它們存儲在 HDFS 中。

Flume 代理配置存儲在一個本地配置文件中。這類似于一個 Java 屬性文件,并且被存儲為一個文本文件。可在同一個配置文件中指定一個或多個代理的配置。配置文件包含一個代理中每個來源、接收器和通道的屬性,以及它們如何連接在一起來形成數據流。

Avro 來源需要一個主機名(IP 地址)和端口號來接收數據。內存通道可能擁有最大隊列大小(容量)限制,HDFS 接收器需要知道文件系統 URI 和路徑才能創建文件。Avro 接收器可以是一個轉發接收器 (avro-forward-sink),它可以轉發到下一個 Flume 代理。

我們的想法是創建一個微型的 Flume 分布式提要(日志事件)收集系統。我們將使用代理作為節點,它們從一個 RSS 提要閱讀器獲取數據(在本例中為 RSS 體驗)。這些代理將這些提要傳遞到一個收集器節點,后者負責將這些提要存儲到一個 HDFS 集群中。在本例中,我們將使用兩個 Flume 代理節點,一個 Flume 收集器節點和一個包含三個節點的 HDFS 集群。表 1 描述了代理和收集器節點的來源和接收器。

使用 Flume 部署和管理可擴展的 Web 服務

表 1. 代理和收集器節點的來源和接收器

圖 3 給出了我們的多躍點系統的架構概述,該系統包含兩個代理節點、一個收集器節點和一個 HDFS 集群。RSS Web 提要(參見下面的代碼)是兩個代理的 Avro 來源,它將提要存儲在一個內存通道中。當提要在兩個代理的內存通道中積累時,Avro 接收器開始將這些事件發送到收集器節點的 Avro 來源。收集器還使用一個內存通道和一個 HDFS 接收器將這些提要轉儲到 HDFS 集群中。參見下圖,了解代理和收集器配置。

使用 Flume 部署和管理可擴展的 Web 服務

圖 3. 多躍點系統的架構概述

 

讓我們來看一下如何使用 Flume 啟動一個簡單的新聞閱讀器服務。以下 Java 代碼描述了一個從 BBC 讀取 RSS Web 來源的 RSS 閱讀器。您可能已經知道,RSS 是一個 Web 提要格式系列,用于以一種標準化格式發布頻繁更新的網站,比如博客文章、新聞提要、音頻和視頻 。RSS 使用一種發布-訂閱模型來定期檢查訂閱的提要中的更新。

#p#

下面的 Java 代碼使用 Java 的 Net 和 Javax XML API 讀取 W3C 文檔中一個 URL 來源的內容,處理該信息,然后將該信息寫入到 Flume 通道中。

清單 1. Java 代碼 (RSSReader.java)

  1. import java.net.URL; 
  2.  
  3. import javax.xml.parsers.DocumentBuilder; 
  4.  
  5. import javax.xml.parsers.DocumentBuilderFactory; 
  6.  
  7. import org.w3c.dom.CharacterData; 
  8.  
  9. import org.w3c.dom.Document; 
  10.  
  11. import org.w3c.dom.Element; 
  12.  
  13. import org.w3c.dom.Node; 
  14.  
  15. import org.w3c.dom.NodeList; 
  16.  
  17. public class RSSReader { 
  18.  
  19. private static RSSReader instance = null
  20.  
  21. private RSSReader() { 
  22.  
  23.  
  24. public static RSSReader getInstance() { 
  25.  
  26. if(instance == null) { 
  27.  
  28. instance = new RSSReader(); 
  29.  
  30.  
  31. return instance; 
  32.  
  33.  
  34. public void writeNews() { 
  35.  
  36. try { 
  37.  
  38. DocumentBuilder builder = DocumentBuilderFactory.newInstance(). 
  39.  
  40. newDocumentBuilder(); 
  41.  
  42. URL u = new URL("http://feeds.bbci.co.uk/news/world/rss.xml 
  43.  
  44. ?edition=uk#"); 
  45.  
  46. Document doc = builder.parse(u.openStream()); 
  47.  
  48. NodeList nodes = doc.getElementsByTagName("item"); 
  49.  
  50. for(int i=0;i 
  51.  
  52. Element element = (Element)nodes.item(i); 
  53.  
  54. System.out.println("Title: " + getElementValue(element,"title")); 
  55.  
  56. System.out.println("Link: " + getElementValue(element,"link")); 
  57.  
  58. System.out.println("Publish Date: " + getElementValue(element,"pubDate")); 
  59.  
  60. System.out.println("author: " + getElementValue(element,"dc:creator")); 
  61.  
  62. System.out.println("comments: " + getElementValue(element,"wfw:comment")); 
  63.  
  64. System.out.println("description: " + getElementValue(element,"description")); 
  65.  
  66. System.out.println(); 
  67.  
  68.  
  69. catch(Exception ex) { 
  70.  
  71. ex.printStackTrace(); 
  72.  
  73.  
  74.  
  75. private String getCharacterDataFromElement(Element e) { 
  76.  
  77. try { 
  78.  
  79. Node child = e.getFirstChild(); 
  80.  
  81. if(child instanceof CharacterData) { 
  82.  
  83. CharacterData cd = (CharacterData) child; 
  84.  
  85. return cd.getData(); 
  86.  
  87.  
  88. catch(Exception ex) { 
  89.  
  90.  
  91. return ""
  92.  
  93.  
  94. protected float getFloat(String value) { 
  95.  
  96. if(value != null && !value.equals("")) { 
  97.  
  98. return Float.parseFloat(value); 
  99.  
  100.  
  101. return 0
  102.  
  103.  
  104. protected String getElementValue(Element parent,String label) { 
  105.  
  106. return getCharacterDataFromElement((Element)parent.getElements 
  107.  
  108. ByTagName(label).item(0)); 
  109.  
  110.  
  111. public static void main(String[] args) { 
  112.  
  113. RSSReader reader = RSSReader.getInstance(); 
  114.  
  115. reader.writeNews(); 
  116.  
  117.  

下面的代碼清單給出了兩個代理(10.0.0.1 和 10.0.0.2)和一個收集器 (10.0.0.3) 的樣例配置文件。這些配置文件定義了來源、通道和接收器的語義。對于每種來源類型,我們還需要定義類型、命令、標準錯誤行為和故障選項。對于每個通道,我們需要定義通道類型。還必須定義容量(通道中存儲的最大事件數)和事務容量(對于每個事務,通道將從一個來源獲取或提供給一個接收器的最大事件數)。類似地,對于每種接收器類型,我們需要定義類型、主機名(事件接收者的 IP 地址)和端口。對于 HDFS 接收器,我們提供了到達 HDFS 標頭名稱節點的目錄路徑。

清單 2 顯示了示例配置文件 10.0.0.1.

清單 2. 代理 1 配置(10.0.0.1 上的 flume-conf.properties)

 

  1. # The configuration file needs to define the sources, 
  2.  
  3. # the channels and the sinks. 
  4.  
  5. # Sources, channels and sinks are defined per agent, 
  6.  
  7. # in this case called 'agent' 
  8.  
  9. agent.sources = reader 
  10.  
  11. agent.channels = memoryChannel 
  12.  
  13. agent.sinks = avro-forward-sink 
  14.  
  15. # For each one of the sources, the type is defined 
  16.  
  17. agent.sources.reader.type = exec 
  18.  
  19. agent.sources.reader.command = tail -f /var/log/flume-ng/source.txt 
  20.  
  21. # stderr is simply discarded, unless logStdErr=true 
  22.  
  23. # If the process exits for any reason, the source also exits and will produce no 
  24.  
  25. # further data. 
  26.  
  27. agent.sources.reader.logStdErr = true 
  28.  
  29. agent.sources.reader.restart = true 
  30.  
  31. # The channel can be defined as follows. 
  32.  
  33. agent.sources.reader.channels = memoryChannel 
  34.  
  35. # Each sink's type must be defined 
  36.  
  37. agent.sinks.avro-forward-sink.type = avro 
  38.  
  39. agent.sinks.avro-forward-sink.hostname = 10.0.0.3 
  40.  
  41. agent.sinks.avro-forward-sink.port = 60000 
  42.  
  43. #Specify the channel the sink should use 
  44.  
  45. agent.sinks.avro-forward-sink.channel = memoryChannel 
  46.  
  47. # Each channel's type is defined. 
  48.  
  49. agent.channels.memoryChannel.type = memory 
  50.  
  51. # Other config values specific to each type of channel(sink or source) 
  52.  
  53. # can be defined as well 
  54.  
  55. # In this case, it specifies the capacity of the memory channel 
  56.  
  57. agent.channels.memoryChannel.capacity = 10000 
  58.  
  59. agent.channels.memoryChannel.transactionCapacity = 100 

清單 3 顯示了示例配置文件 10.0.0.2。

清單 3. 代理 2 配置(10.0.0.2 上的 flume-conf.properties)

 

  1. agent.sources = reader 
  2.  
  3. agent.channels = memoryChannel 
  4.  
  5. agent.sinks = avro-forward-sink 
  6.  
  7. # For each one of the sources, the type is defined 
  8.  
  9. agent.sources.reader.type = exec 
  10.  
  11. agent.sources.reader.command = tail -f /var/log/flume-ng/source.txt 
  12.  
  13. # stderr is simply discarded, unless logStdErr=true 
  14.  
  15. # If the process exits for any reason, the source also exits and will produce 
  16.  
  17. # no further data. 
  18.  
  19. agent.sources.reader.logStdErr = true 
  20.  
  21. agent.sources.reader.restart = true 
  22.  
  23. # The channel can be defined as follows. 
  24.  
  25. agent.sources.reader.channels = memoryChannel 
  26.  
  27. # Each sink's type must be defined 
  28.  
  29. agent.sinks.avro-forward-sink.type = avro 
  30.  
  31. agent.sinks.avro-forward-sink.hostname = 10.0.0.3 
  32.  
  33. agent.sinks.avro-forward-sink.port = 60000 
  34.  
  35. #Specify the channel the sink should use 
  36.  
  37. agent.sinks.avro-forward-sink.channel = memoryChannel 
  38.  
  39. # Each channel's type is defined. 
  40.  
  41. agent.channels.memoryChannel.type = memory 
  42.  
  43. # Other config values specific to each type of channel(sink or source) 
  44.  
  45. # can be defined as well 
  46.  
  47. # In this case, it specifies the capacity of the memory channel 
  48.  
  49. agent.channels.memoryChannel.capacity = 10000 
  50.  
  51. agent.channels.memoryChannel.transactionCapacity = 100 

清單 4 顯示了收集器配置文件 10.0.0.3。

清單 4. 收集器配置(10.0.0.3 上的 flume-conf.properties)

  1. Collector configuration (flume-conf.properties on 10.0.0.3): 
  2.  
  3. # The configuration file needs to define the sources, 
  4.  
  5. # the channels and the sinks. 
  6.  
  7. # Sources, channels and sinks are defined per agent, 
  8.  
  9. # in this case called 'agent' 
  10.  
  11. agent.sources = avro-collection-source 
  12.  
  13. agent.channels = memoryChannel 
  14.  
  15. agent.sinks = hdfs-sink 
  16.  
  17. # For each one of the sources, the type is defined 
  18.  
  19. agent.sources.avro-collection-source.type = avro 
  20.  
  21. agent.sources.avro-collection-source.bind = 10.0.0.3 
  22.  
  23. agent.sources.avro-collection-source.port = 60000 
  24.  
  25. # The channel can be defined as follows. 
  26.  
  27. agent.sources.avro-collection-source.channels = memoryChannel 
  28.  
  29. # Each sink's type must be defined 
  30.  
  31. agent.sinks.hdfs-sink.type = hdfs 
  32.  
  33. agent.sinks.hdfs-sink.hdfs.path = hdfs://10.0.10.1:8020/flume 
  34.  
  35. #Specify the channel the sink should use 
  36.  
  37. agent.sinks.hdfs-sink.channel = memoryChannel 
  38.  
  39. # Each channel's type is defined. 
  40.  
  41. agent.channels.memoryChannel.type = memory 
  42.  
  43. # Other config values specific to each type of channel(sink or source) 
  44.  
  45. # can be defined as well 
  46.  
  47. # In this case, it specifies the capacity of the memory channel 
  48.  
  49. agent.channels.memoryChannel.capacity = 10000 
  50.  

#p#

后續步驟

現在我們已擁有讀取 RSS 提要的代碼,并知道如何配置 Flume 代理和收集器,我們可通過三個步驟設置整個系統。

步驟 1

編譯的 Java 代碼應作為一個后臺進程執行,以保持運行。

清單 5. 編譯的 Java 代碼

  1. $ javac RSSReader.java 
  2.  
  3. $ java -cp /root/RSSReader RSSReader > /var/log/flume-ng/source.txt & 

步驟 2

想啟動代理之前,您需要使用 $FLUME_HOME/conf/ 目錄下提供的模板來修改配置文件。在修改配置文件后,可使用以下命令啟動代理。

清單 6 顯示了啟動節點 1 上的代理的命令。

清單 6. 啟動節點 1 上的代理

  1. Agent node 1 (on 10.0.0.1): 
  2.  
  3. $ $FLUME_HOME/bin/flume-ng agent -n agent1 -c conf -f 
  4.  
  5. $FLUME_HOME/conf/flume-conf.properties 

清單 7 顯示了啟動節點 2 上的代理的命令。

清單 7. 啟動節點 2 上的代理

  1. Agent node 2 (on 10.0.0.2): 
  2.  
  3. $ $FLUME_HOME/bin/flume-ng agent -n agent2 -c conf -f 
  4.  
  5. $FLUME_HOME/conf/flume-conf.properties 

在這里,$FLUME_HOME 被定義為一個環境變量(bash 或 .bashrc),它指向 Flume 的主目錄(例如 /home/user/flume-1.4/)。

步驟 3

清單 8 啟動收集器。值得注意的是,配置文件負責節點的行為方式,比如它是代理還是收集器。

清單 8. 收集器節點(10.0.0.3 上)

  1. $ $FLUME_HOME/bin/flume-ng agent -n collector -c conf -f 
  2.  
  3. $FLUME_HOME/conf/flume-conf.properties

結束語

在本文中,我們介紹了 Flume,一個用于高效收集大量日志數據的、分布式的、可靠的服務。我們介紹了如何根據需要使用 Flume 來部署單躍點和多躍點流。我們還介紹了一個部署多躍點新聞聚合器 Web 服務的詳細示例。在該示例中,我們使用了 Avro 代理讀取 RSS 提要,并使用一個 HDFS 收集器存儲新聞提要。Flume 可用于構建可擴展的分布式系統來收集大量數據流。
 

責任編輯:Ophira 來源: developerWorks 中國
相關推薦

2016-08-24 19:22:10

Docker SwarPython應用

2010-01-12 09:10:31

Java EE 6Servlet 3.0Web分片

2019-05-20 13:20:36

Python編程語言情感分析

2017-01-05 19:29:10

公共云云存儲微軟

2024-09-23 00:00:10

2012-06-14 10:14:46

ibmdw

2023-11-09 08:31:56

Spring微服務網關

2013-03-22 15:55:22

Web架構架構

2022-06-16 08:00:00

元數據數據中心數據架構

2009-09-16 10:00:14

可伸縮性Web服務

2011-08-08 14:31:49

服務器

2022-08-30 08:00:00

架構數據庫Postgres

2021-12-09 05:36:16

云存儲可擴展性數據存儲云存儲

2009-03-16 09:16:13

行為擴展WCF.NET

2011-03-22 13:00:50

Nagios

2012-05-17 09:58:40

PHP

2012-06-11 08:58:45

Win 8微軟

2024-02-26 00:01:01

RedisGolang應用程序

2023-11-14 10:43:42

微軟Kubernetes

2023-10-11 13:46:26

緩存Web應用程序
點贊
收藏

51CTO技術棧公眾號

久久精品一级片| 久久午夜夜伦鲁鲁一区二区| 日本精品999| 久久精品主播| 久久九九免费视频| 国产污在线观看| 日本一道高清亚洲日美韩| 中文字幕在线不卡一区| 国产一区二区高清不卡| 久久久999久久久| 韩国亚洲精品| 这里精品视频免费| av在线播放网址| 国产精品第一国产精品| 香蕉av福利精品导航| 午夜欧美一区二区三区免费观看| 亚洲奶汁xxxx哺乳期| 老司机精品视频网站| 久久久久久久久91| 国产精品酒店视频| 日韩美女毛片| 精品处破学生在线二十三| 亚洲成人天堂网| 亚洲电影观看| 亚洲亚洲精品在线观看| 综合国产精品久久久| 久久精品国产亚洲a∨麻豆| 国产一区二区久久| 国产精品一区二区久久国产| 成人毛片在线播放| 伊人精品在线| 欧美日韩国产成人| 午夜国产小视频| 欧美日韩国产在线观看网站 | 亚洲黄页在线观看| 欧美xxxxxxxx| 北条麻妃亚洲一区| 亚洲欧美专区| 欧美日韩色一区| 欧美 日韩 国产 激情| 蜜桃视频在线观看播放| 亚洲一区视频在线| 一二三四中文字幕| 老司机午夜在线| 亚洲人成在线播放网站岛国| 亚洲资源在线网| 色开心亚洲综合| 国产精品全国免费观看高清 | 欧美色窝79yyyycom| 精品一卡二卡三卡| 涩涩网在线视频| 色综合色综合色综合色综合色综合| 六月婷婷在线视频| 538在线精品| 亚洲国产精品人人做人人爽| 欧美一级视频在线播放| 国产盗摄在线视频网站| 亚洲午夜激情网站| 黄网站欧美内射| 亚洲国产福利| 欧美性生交片4| 天堂av2020| 电影一区二区三区久久免费观看| 欧美一区二区在线不卡| 中文字幕一区二区三区人妻在线视频 | 亚洲国产另类av| 人妻久久久一区二区三区| 国产理论在线| 欧美在线看片a免费观看| www.亚洲高清| 欧美影院精品| 亚洲精品97久久| 欧美大波大乳巨大乳| 日本高清免费电影一区| 久久综合久久八八| 国产午夜福利片| 乱码第一页成人| 国产狼人综合免费视频| 99在线观看免费| 99久久精品99国产精品| 日本在线视频不卡| 黄色网页在线观看| 亚洲成人精品一区二区| 亚洲人成无码www久久久| 亚洲高清国产拍精品26u| 日韩精品一区在线观看| 亚洲黄色在线网站| 日韩欧美一区二区三区免费看| 久久国产精品99国产精| aaa人片在线| 久久精品国产精品亚洲精品| 国产精品视频免费一区| 国产98在线| 亚洲一区二区三区四区在线| 国产免费视频传媒| 欧美高清hd| 亚洲欧洲日本专区| 翔田千里88av中文字幕| 乱码第一页成人| 99精品国产一区二区| 国产黄色在线播放| 亚洲综合在线第一页| 欧美丰满熟妇xxxxx| 日日夜夜精品视频| 国产一区二区三区精品久久久| 黄色一级视频免费| 免费高清视频精品| 激情伦成人综合小说| 国产精品实拍| 色悠久久久久综合欧美99| www.欧美com| 日韩成人精品一区| 91福利视频在线观看| www.日韩高清| 中文字幕一区日韩精品欧美| 国产亚洲欧美在线视频| 99久久婷婷国产综合精品青牛牛 | 91激情视频在线观看| 黑丝一区二区| 亚洲一区亚洲二区| av在线第一页| 日韩欧中文字幕| 中文视频在线观看| 欧美精品99| 成人在线小视频| 波多野结衣在线影院| 欧美性感美女h网站在线观看免费| 国产人妻精品午夜福利免费| 中文在线播放一区二区| 国产欧美精品一区二区三区-老狼| 亚洲av毛片成人精品| 偷拍一区二区三区四区| 日本久久久久久久久久| 欧美激情综合色综合啪啪| 91精品免费看| 亚洲成人三级| 在线播放日韩导航| 日韩av片在线免费观看| 日本欧洲一区二区| 日韩电影免费观看在| 丝袜美腿一区| 亚洲午夜av久久乱码| 99精品在线播放| 久久综合av免费| 欧美成人一区二区在线观看| 亚洲人成网77777色在线播放| 日本道色综合久久影院| 你懂的视频在线| 91福利在线免费观看| 亚洲AV无码成人精品区明星换面 | 国产福利视频一区| 免费黄色在线视频网站| 色婷婷精品久久二区二区蜜臂av | 18成人在线视频| 手机精品视频在线| 国产精品magnet| 国产在线观看一区| 在线免费看h| 国产亚洲a∨片在线观看| 精品乱码一区内射人妻无码| 欧美国产日韩a欧美在线观看 | 日韩免费在线观看av| 澳门精品久久国产| 55夜色66夜色国产精品视频| 久久久久久青草| 欧美日韩亚洲不卡| 黄色a级片在线观看| 成人动漫av在线| 1024精品视频| 日韩精品水蜜桃| www日韩av| 欧美黑人粗大| 久久精品国产亚洲精品| 黄色av一区二区三区| 一本一道波多野结衣一区二区| 欧美巨胸大乳hitomi| 国产伦精品一区二区三区视频青涩| 成年人看的毛片| 国产亚洲精品美女久久久久久久久久| 国产欧美一区二区三区在线看| 91小视频xxxx网站在线| 日韩精品视频在线观看网址| 一级黄色录像大片| 香蕉久久一区二区不卡无毒影院| 黄色av免费播放| 成人国产精品免费观看视频| 天美星空大象mv在线观看视频| 欧美日韩 国产精品| 日韩欧美手机在线| 人人爱人人干婷婷丁香亚洲| 国产成人精品在线观看| 色爱综合区网| 中文字幕视频一区二区在线有码| 亚洲精品成人区在线观看| 色先锋aa成人| 久久久久无码国产精品| 国产三级久久久| 少妇激情一区二区三区视频| 日本不卡视频一二三区| 国产精品999视频| 久久久9色精品国产一区二区三区| 精品视频一区二区三区四区| 国产精品久久久久久久久久久久久久久| 亚洲91精品在线观看| 麻豆传媒在线免费看| 日韩高清a**址| 99久久免费国产精精品| 在线亚洲精品福利网址导航| 国产精品第一页在线观看| 国产精品福利一区| 欧美特黄一区二区三区| 成人国产精品免费观看视频| www.久久久久久久久久久| 欧美资源在线| 精品无码国模私拍视频| 欧美三级网页| 在线观看日韩羞羞视频| 久久综合影院| 久久精品综合一区| 高潮久久久久久久久久久久久久| 91色在线视频| 国产精品亚洲成在人线| 国产aaa精品| 亚洲天堂手机| 午夜精品福利电影| 黄污视频在线观看| 美女黄色丝袜一区| 精精国产xxxx视频在线| 色偷偷综合社区| 999国产在线视频| 一区二区三区国产视频| 日本天堂在线| 精品中文字幕久久久久久| 日韩一区二区三区在线观看视频 | 三级视频网站在线| 亚洲国产精品大全| 欧美在线 | 亚洲| 亚洲福利在线观看| 老牛影视av牛牛影视av| 日韩免费电影网站| 成人精品在线播放| 欧美成人乱码一区二区三区| 亚洲国产剧情在线观看| 日韩精品一区二区三区三区免费| 北条麻妃一二三区| 欧美tk丨vk视频| 内射无码专区久久亚洲| 亚洲国产日韩精品在线| 午夜影院免费视频| 亚洲欧美国内爽妇网| 五月激情六月婷婷| 亚洲精品丝袜日韩| 高清日韩av电影| 色噜噜国产精品视频一区二区| 麻豆免费在线视频| 欧美激情精品久久久| 麻豆视频在线看| 日本一区二区三区在线播放| 福利一区二区免费视频| 成人黄色中文字幕| 最新国产精品精品视频| 精品一卡二卡三卡四卡日本乱码| 午夜先锋成人动漫在线| 日韩av图片| 午夜影院欧美| 韩日视频在线观看| 久久精品国语| 在线免费看v片| 波多野洁衣一区| 中文字幕在线1| 中文字幕一区三区| 日韩三级一区二区三区| 色婷婷综合久久久久中文 | 国产成人福利片| 国产精品无码永久免费不卡| 欧美国产视频在线| 黄色一级片中国| 精品二区三区线观看| 日批视频免费观看| 日韩一区二区免费视频| 肉丝一区二区| 日韩视频欧美视频| 僵尸再翻生在线观看免费国语| 国产高清视频一区三区| 一区二区亚洲视频| 青青草成人网| 欧美+日本+国产+在线a∨观看| 久久免费视频3| 国产综合色在线视频区| 岛国精品资源网站| 国产精品福利一区二区三区| 圆产精品久久久久久久久久久| 欧美日本国产视频| 天天操天天射天天舔| 久久精品电影网站| 亚洲一区站长工具| 亚洲japanese制服美女| 国产一区二区三区日韩精品| 日韩精品免费一区| 蜜桃视频免费观看一区| 男男做爰猛烈叫床爽爽小说| 亚洲手机成人高清视频| 日韩中文字幕在线观看视频| 日韩免费成人网| 免费在线午夜视频| 国产成人精品av在线| 亚洲av无码一区二区二三区| 一区二区三区亚洲变态调教大结局| 国产在线精品一区二区三区》| 国产精品不卡| 九一精品在线观看| 99v久久综合狠狠综合久久| 午夜激情福利网| 欧美性受xxxx黑人xyx| 天堂中文资源在线观看| 九九久久精品一区| 青青久久精品| 日产中文字幕在线精品一区| 亚洲区一区二| 免费看的av网站| 亚洲欧洲日产国产综合网| 亚洲男人天堂网址| 日韩经典第一页| a级片在线免费| 亚洲一区二区免费| 日韩毛片视频| www.xxx亚洲| 国产午夜久久久久| 九九九在线观看| 日韩成人av在线| 丁香花高清在线观看完整版| 5566中文字幕一区二区| 国产国产精品| 亚洲人视频在线| 国产精品久线在线观看| 在线观看国产黄| 深夜精品寂寞黄网站在线观看| 亚洲精品国产嫩草在线观看| 欧洲一区二区日韩在线视频观看免费 | 国产偷国产偷亚洲清高网站| 美女av在线免费看| 极品校花啪啪激情久久| 亚洲精品美女91| 欧美日韩一区二区三区四区五区六区| 亚洲综合久久久久| 亚洲精品国产精品乱码不卡| 欧美成人免费在线观看| 人妻丰满熟妇av无码久久洗澡 | 国产一区玩具在线观看| 久久综合影院| 亚洲一区二区三区四区五区xx| 国产欧美日韩在线观看| 日韩不卡高清视频| 视频直播国产精品| 亚洲午夜剧场| 国产又粗又长又爽视频| 成人av综合一区| 成人午夜淫片100集| 亚洲香蕉伊综合在人在线视看 | 久久精品91| 四虎成人免费影院| 欧美精品自拍偷拍| 五月婷婷视频在线观看| 国产精品国产精品国产专区不卡| 狠狠干综合网| 青青草视频成人| 欧美色综合影院| 女同一区二区免费aⅴ| 黄色91av| 麻豆精品蜜桃视频网站| 欧美色图亚洲视频| 亚洲第一免费播放区| 亚洲欧美一区二区三区| 一区二区三区四区欧美| 国产黑丝在线一区二区三区| 中文字幕一区二区三区手机版| 亚洲欧美变态国产另类| 成人啊v在线| 日本大胆人体视频| 91蝌蚪国产九色| 亚洲天堂久久久久| 欧美激情精品久久久久久蜜臀 | 欧美成人精品在线| 红杏aⅴ成人免费视频| 性欧美videossex精品| 亚洲精品国产第一综合99久久| 亚洲av无码一区二区乱子伦| 日本亚洲精品在线观看| 亚洲欧美日韩高清在线| 一区二区视频观看| 欧美久久婷婷综合色| 欧美办公室脚交xxxx| 亚洲一区二区精品在线| 成人激情小说网站| 中文文字幕一区二区三三| 欧美黑人视频一区| 欧美综合另类| 蜜桃视频无码区在线观看| 欧美探花视频资源| free性m.freesex欧美|