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

Yelp的實時流技術之三:不止是模式存儲服務的Schematizer

大數據
當你的系統每天要實時從MySQL到Kafka發布幾十億條消息時,你會怎么管理這些數據的模式信息呢?
這是關于Yelp的實時流數據基礎設施系列文章的第三篇。這個系列會深度講解我們如何用“確保只有一次”的方式把MySQL數據庫中的改動實時地以流的方式傳輸出去,我們如何自動跟蹤表模式變化,如何處理和轉換流,以及最終如何把這些數據存儲到Redshift或Salesforce之類的數據倉庫中去。
 
當你的系統每天要實時從MySQL到Kafka發布幾十億條消息時,你會怎么管理這些數據的模式信息呢?當你的系統要接入幾百個服務時,你就要處理幾千種不同的模式,手工管理是不可行的。必須有自動化的方案來處理從上游數據源到所有下游消費者的模式改變問題。Confluent公司的Schema Registry和Kafka Connect都是不錯的選擇,可惜當我們開始構建Yelp數據管道時它們還沒發布。因此就有了我們的Schematizer。
 
Schematizer是什么?
 
Yelp數據管道的一個重要設計就是將所有數據都模式化,也就是說,所有流經數據管道的數據都必須遵守某種預先定義好的模式,而不是格式隨意的。為什么非要強調這一點呢?因為我們想讓所有的數據消費者都可以對他們要獲取的數據格式有預期,因此可以在上游數據生產者決定改變他們發布的數據模式時,不會對下游造成非常大的影響。統一的模式表現也讓Yelp數據管道可以輕松地整合各種使用不同數據格式的系統。
 
Schematizer是用于跟蹤和管理所有數據管道中用到的模式,并且提供自動化文檔支持等功能的模式存儲服務。我們使用Apache Avro來表達模式。Avro有許多我們在數據管道中需要的功能,尤其是模式演進,它是解耦數據生產者和消費者的關鍵因素之一。每一條流經數據管道的消息都用Avro模式序列化過。為了減小消息體積,我們沒有把全部模式信息都放在消息里,而只是帶上了模式的ID。數據消費者可以用ID來在運行時從Schematizer中獲取模式信息并將消息反序列化。Schematizer是所有預定義的模式信息的唯一可靠來源。
 
我們用不同方法管理模式。
 
Schematizer用兩種方法組織和管理模式:從數據生產者的角度和數據消費者的角度。
 
第一種方法根據數據的產生信息來將模式分組,每個組由名字空間和數據源來定義。生產者在向Schematizer注冊模式時必須提供名字空間和數據源信息。比如一個準備向數據管道發布數據庫數據的服務,它就可以把服務名作為名字空間,把表名作為數據源。

根據名字空間和數據源來將模式分組
 
第二種方法按數據的目的方信息來分組。比如Redshift集群或者MySQL數據庫都是數據目的方,它們會對應一個或多個數據生產者,每個數據生產者又會關聯一個或多個模式,這就對應著第一種方法中定義的名字空間和數據源。

根據單個數據目的方來將模式分組
 
這兩種方法讓我們可以按不同的需要來檢索和相關的模式。比如,一個程序可能想知道它會向哪些Topic發布數據,另一個服務又想知道它的Redshift集群中的數據都來自哪里。

我們這樣注冊模式。
 
數據管道要求所有發布到其中的數據都必須用預定義的Avro模式進行模式化和序列化。因此,當一個數據生產者準備向數據管道發布數據時,它要做的第一件事就是向Schematizer注冊模式,最通用的辦法就是直接注冊一個Avro模式。
 
對于沒有或者無法創建Avro模式的數據生產者,也可以向Schematizer中加入模式轉換器來把非Avro模式轉換成Avro模式。MySQLStreamer就是一個代表,它是一個把MySQL數據庫中的數據發布到數據管道的服務,它只知道MySQL表模式。Schematizer可以把MySQL表模式定義轉換成相應的Avro模式。但如果數據生產者改變了模式定義的話,它必須重新注冊。
 
上游模式改變會不會影響下游服務?
 
所有數據管道服務都不能回避的共同痛點就是該如何應對上游模式改變。通常這都需要許多在上游生產者和下游消費者之間的溝通和協調工作。Yelp也不能免俗。我們也有批量任務和系統,它們要處理別的批量任務和系統產生的數據。每一次上游的模式改變都是非常痛苦的,它可能導致下游服務崩潰,整個處理過程都是非常耗費人力的。
 
我們通過模式兼容性來解決這個問題。在模式注冊過程中,Schematizer會根據模式兼容性來決定Topic和新模式之間的對應關系。只有兼容的模式才能延用舊的Topic。如果有不兼容模式注冊上來,Schematizer會用相同的名字空間和數據源來為新模式注冊一個新的Topic。那Schematizer又怎么確定兼容性呢?答案就是Avro解釋規則(Avro resolution rules)。Avro解釋規則保證在相同的Topic中,用新版模式打包的消息可以按舊版模式解包,反之亦然。

不兼容的模式會分配不同的Topic
 
目前Yelp數據管道中大部分數據都產生自MySQLStreamer。比如我們想為某業務表增加一個字段,MySQLStreamer就會向Schematizer注冊新模式。因為按照Avro解釋規則這樣的改動是兼容的,所以Schematizer會創建新Avro模式,并把這個名字空間和數據源對應的舊的Topic分配給它。可如果是想把某字段從int改成varchar,那這就是一個不兼容的改動了,Schematizer會為新模式創建一個新Topic。
 
保證了在Topic內部的模式兼容性,下游數據消費者就可以放心的用舊模式去處理這個Topic中的任何數據,不必擔心數據模式變化會引起自身的崩潰等任何問題。他們也可以根據自己的需要在合適的時候連上新Topic。這就讓整個系統自動化程度更高,在模式改變時減少人工介入。
 
除了Avro解釋規則,我們也在Schematizer中定義了一些自己的規則來支持一些數據管道功能。模式的主鍵字段被用于在數據管道中做日志壓縮。因為對同一個Topic來說做日志壓縮的主鍵必須保持一致,所以任何對主鍵的改動都被認為是不兼容的,會導致Schematizer為新模式創建一個新Topic。而且,當人工不可讀(non-PII,Personally Identifiable Information)的模式開始包含人工可讀字段時,這樣的改動也被認為是不兼容的。人工不可讀的數據和人工可讀的數據必然分開存儲,這樣就簡化了人工可讀數據的安全實現,避免了下游消費者不小心讀到一些他們本來沒有權限讀的數據。

決定是否需要新Topic的邏輯流程
 
值得一提的是模式注冊過程是冪等的。如果把相同的模式注冊多次,那只有第一次會產生一個新模式,后面的都直接返回已注冊的模式。這就讓應用程序和服務可以非常容易地初始化它們的Avro模式。許多應用程序和服務都是把Avro模式定義在文件中或代碼中的,但它們沒辦法寫死模式ID,因為模式ID是由Schematizer管控的。所以應用程序可以調用模式注冊接口來直接注冊模式,如果已經存在就把模式信息取回來了,如果不存在就直接注冊,一舉兩得。
 
將模式改變事件處理全部流水線化。
 
為了讓數據管道可以完全以流水線的方式處理模式改變事件,Schematizer會根據當前模式和新模式的信息來為下游系統生成模式遷移計劃。目前Schematizer只能為Redshift表生成模式遷移計劃。對于把數據從數據管道中應用到Redshift集群的下游系統來說,在模式發生改變時它可以直接獲取模式遷移計劃并且執行,而且自動獲取新的模式信息,不需要任何人工介入。這個功能是很容易擴展的,而且模式遷移計劃生成器也是很容易替換的,所以將來我們會增加更多的模式遷移計劃生成器來支持更多的模式類型,或者改用更好的算法來生成遷移計劃。
 
Schematizer知道所有數據生產者和消費者的信息。
 
除了管理注冊的模式,Schematizer還會跟進所有數據生產者和消費者的信息,包括哪個團隊哪個服務負責生產或消費什么數據,發布數據的頻率如何,等等。在需要人工介入時我們就可以用這些信息來有效地找到相應團隊并與他們溝通協商。而且這些信息也可以幫助我們監控和找出那些過期了的模式和Topic,從而可以將它們做廢或刪除。這樣,就可以在新模式注冊上來時簡化兼容性驗證工作。Schematizer可以跳過那些廢棄的模式,只檢查新模式與Topic內剩下的有效的模式的兼容性就可以了。
 
所有數據生產者和消費者在啟動時都必須提供這些信息。最初我們只想著把它們保存在Schematizer里就好了,但事實上這些信息對探索性的分析和預警都是非常有用的,最終我們決定把它們寫到數據管道系統之外的單獨的Kafka Topic中。這樣數據就可以被Redshift和Splunk處理,也可以導入Schematizer和通過前端Web界面展示出來。我們用的是Yelp自行研發的通過Clog寫入數據的異步、非阻塞式Kafka生產者,這樣就不會影響生產者正常地發布數據。另外,這樣也可以避免環形依賴,有時候正常的生產者要用相同的信息去注冊多次。
 
該用哪個Kafka Topic呢?Schematizer會處理好這些細節。
 
與一般意義上的Kafka生產者不同,數據管道的數據生產者不需要事先知道它們應該把數據發送到哪個Kafka Topic中。因為Schematizer規定了注冊上來的模式和Topic之間的對應關系,所以數據生產者只要提供自己序列化數據所使用的模式信息,就可以從Schematizer那里得到正確的Topic信息并發布數據了。將Topic信息抽象出去可以讓接口更簡單易用。
 
對數據消費者也是類似的機制。盡管也可以給它們定下一些具體的Topic去消費,但更常見的用例是讓Schematizer根據數據消費者感興趣的組的信息來提供正確的Topic。在本文前面章節介紹了各種不同的分組機制。數據消費都可以或者指定名字空間和數據源,或者指定數據目的方,Schematizer就會找出那個組內的相應Topic。這種機制對于數據消費者感興趣的一組Topic可能由于模式的不兼容改變而變來變去的場景尤其有效。它讓數據消費者不必再跟蹤組內的每一個Topic。
 
模式很好,文檔更好!
 
模式把數據格式化了,但對于想了解數據確切意義的人來說提供的信息可能又不夠。我們注意到使用數據的人通常不是生產數據的人,因此他們不知道去哪里找到有用的信息來讓他們理解他們要用的數據。因為Schematizer負責管理數據管道中的所有模式,所以把數據的描述信息也保存在它這里就很合適。
 
知識挖掘器Watson隆重出場。
 
Schematizer要求模式的注冊方隨著模式一起提供文檔,然后Schematizer會提取文檔信息并保存起來。為了讓Yelp公司內的各個團隊可以獲得模式和數據文檔,我們開發了Watson,一個全公司員工都可以用來挖掘數據內容的Webapp。Watson實際上是Schematizer的一個可視化前端,它通過Schematizer的幾個RESTful API來獲取數據。
 
Watson提供了關于數據管道狀態的有價值信息:現有的名字空間、數據源及相關的Avro模式信息。最重要的是,Watson為查看Schematizer管理的所有數據源和模式信息提供了簡單的方法。
 
文檔并不是天上掉下來的。
 
目前流經我們數據管道的數據主要都來自于數據庫。我們用SQLAlchemy模型來為這些數據的數據源和模式整理文檔。在Yelp,SQLAlchemy用來描述我們數據庫中的所有模型。除了docstring之外,SQLAlchemy還允許用戶為模型的字段增加額外信息。因此,它自然成了我們保存文檔的首選之處,記錄各個數據模型和字段的目的和意義。
 
SQLAlchemy還引入了一個屬主字段來記錄每個模型的維護者和專家。我們認為生成數據的人是提供文檔的最佳人選。另外,這種方法也會鼓勵大家時刻保持真實數據模型與描述的同步。
 
  1. class BizModel(Base): 
  2. __yelp_owner__ = Ownership( 
  3. teams=[TEAM_OWNERS['biz_team'], 
  4. members=[], 
  5. contacts=[] 
  6. __table_name__ = 'my_biz_table' 
  7. __doc__ = 'Business information.' 
  8. id = Column(Integer, primary_key=True, doc=r"""ID of the business."""
  9. name = Column(String(64), doc=r"""Name of the business."""
一個簡單的包含文檔和屬主信息的SQLAlchemy模型
 
可是開發者在做SQLAlchemy模型的時候并不總是會記得提供文檔信息。為了防止這樣的事情發生,我們開發了自動校驗功能來強制要求所有模型都必須完整地提供了屬性描述和文檔,這是絕不會退讓的硬性標準。每當有新模型要加入時,如果要求的文檔信息不完備,或者沒有屬主信息,校驗就會失敗。這些自動校驗功能幫助我們朝著100%文檔覆蓋率的目標邁進了一大步。
 
為Watson提取高質量文檔。
 
當數據模型有了文檔之后,我們就可以把它導入Schematizer并最終通過Watson展現出去。在深入具體提取流程之前,我們先介紹一下這個過程中的另一個重要模塊:特定應用轉換器(Application Specific Transformer),簡寫為AST。與名字含義一樣,AST從一個或多個數據管道Topic中輸入消息流,用轉換邏輯處理消息模式和數據包,再把轉換后的消息輸出到另外的數據管道Topic中。提供具體轉換處理的轉換模塊是可以串連起來的,因此可以組合多個模塊來做非常細致的轉換工作。
 
我們用AST中的許多個轉換模塊來依據SQLAlchemy模型生成更易理解的數據。因為模塊是可以串連的,現在我們只是簡單的創建一個從SQLAlchemy模型中提取文檔和屬主信息的轉換模塊,并把它加入 到已有的轉換鏈中。這樣,所有模型的文檔和屬主信息就通過現有管道自動提取并導入Schematizer了。實現過程相當簡單,并無縫接入管道,所以可以非常有效地生成高質量文檔。

AST中的轉換模塊
 
如上所述,AST中現在已經有了一些為用戶生成更有意義的信息的轉換模塊。位標志轉換模塊會解釋一個整型字段的不同數據位的具體含義。相似地,Enum字段轉換模塊也會把Enum值轉換成可讀的文字表述。這些轉換模塊帶來的另一個好處是它們同時也產生了自解釋和自生成文檔的模式,因此也產生了更好的文檔。
 
合作、貢獻與檢索
 
開發者的文檔并不是我們要講述的最后一項內容。Watson也提供了功能讓終端用戶可以一起努力,為使Yelp的數據更具可讀性而貢獻自己的力量。
 
第一個功能就是打標簽。Watson允許用戶為任意數據源打標簽分類。一個數據源可能是個MySQL數據庫表,也可能是個數據模型。比如,一個業務數據源可以打上“Business Information”的標簽,而一個用戶信息數據源可以打上“User Information”標簽。終端用戶可以把相關的數據源都打上相同的標簽,這樣以對自己最有意義的方式把它們組織在一起。打標簽可以讓我們更深入的理解我們的各個數據源之間是如何彼此關聯的。

打上了“Business Info”標簽的業務數據源
 
Watson提供的另一個功能是添加注釋。終端用戶,尤其是非技術人員,可以通過這種方法來為一個數據源或字段提供他們自己的文檔。比如業務分析師常常就會對使用數據有非常寶貴的見解,他們可以通過注釋來分享各種疑難雜癥、邊界用例和時效性很強的信息。
 
終端用戶對于Watson的最大的需求就是檢索。我們在Watson中實現了簡單的檢索引擎,讓用戶可以檢索數據的模式、Topic、數據模型描述等各方面信息。在檢索后臺我們沒有用Elasticsearch,而是選擇了Whoosh Python包,因為它可以幫助我們快速完成開發。就我們目前的檢索量來說Whoosh的性能足以應付。隨著數據規模增大,我們將來會考慮換用其它更易擴展的引擎。
 
結論
 
Schematizer是Yelp數據管道的一個重要組成部分。它的模式注冊操作是數據管道的許多重要功能的基礎,包括在上游數據生產者更改模式時減輕對下游消費者程序和服務的影響等。Schematizer也管理了數據發布的Topic分配,讓用戶不必再關心具體使用哪個Topic等這樣的細節。最后,它要求所有寫入數據管道的數據都必須有文檔,這促進了全公司內的知識分享。Watson的加入更是使得Yelp公司內的所有員工都可以方便地得到最及時的信息。
責任編輯:武曉燕 來源: 網絡大數據
相關推薦

2016-12-08 14:41:59

流處理器PaaStormKafka

2016-03-11 11:03:12

2023-11-08 14:45:14

AIGC生成式人工智能

2015-07-31 09:28:53

React場景探索

2020-12-09 09:26:08

數字貨幣央行人民幣

2013-01-05 11:15:15

雜志類AppApp設計

2010-06-28 09:14:38

Ubuntu 10.0特效

2016-06-13 13:27:58

華為eLTE政務專網無線寬帶

2018-02-25 08:51:13

OpenStack私有云混合云

2016-02-17 09:41:34

SteamOSLinux發行版

2012-11-07 13:53:04

路由器無線路由器上網行為管理

2010-02-22 09:28:06

802.11n

2018-03-20 13:00:28

AR可視化金融

2025-06-27 08:31:36

2015-08-20 10:04:52

2021-07-07 15:29:52

存儲RocketMQ體系

2023-03-20 06:24:36

AI 2.0ChatGPT

2021-12-01 09:23:13

C# 模式套路

2021-04-17 22:59:54

5G手機VR
點贊
收藏

51CTO技術棧公眾號

91久久线看在观草草青青| 国产高清精品网站| 亚洲欧美在线x视频| 久章草在线视频| 在线毛片网站| 国产福利91精品| 4388成人网| 九九热视频在线免费观看| 国产福利资源一区| 在线看不卡av| 2022中文字幕| 国产三级电影在线| 国产成人精品免费视频网站| 欧美在线一区二区三区四| 久久午夜精品视频| 999久久精品| 欧美怡红院视频| 日本一区午夜艳熟免费| 999在线视频| 高清av一区二区| 国产剧情日韩欧美| 香蕉免费毛片视频| 亚洲国产精品久久久久蝴蝶传媒| 亚洲二区中文字幕| 午夜免费看视频| 蜜桃视频在线观看免费视频| 成人免费视频在线观看| 清纯唯美一区二区三区| 欧美一级视频免费| 国产在线看一区| 国产精品大陆在线观看| 日本三级免费看| 91精品观看| 中文字幕精品久久| 尤物视频最新网址| 神马日本精品| 亚洲国产精品大全| 国产成人av片| 91成人app| 欧美亚男人的天堂| 免费黄色特级片| 欧美a级在线观看| 亚洲一区二区三区四区在线观看| 亚洲五月六月| 成人在线观看免费| 久久久精品天堂| 蜜桃导航-精品导航| 色呦呦视频在线| 成人性生交大合| 波多野结衣久草一区| 国产免费无遮挡| 极品尤物av久久免费看| 国产美女扒开尿口久久久| 国产熟妇一区二区三区四区| 国产精品久久国产愉拍| 性欧美视频videos6一9| 日产精品久久久久| 日韩视频二区| 91sao在线观看国产| 中文字幕一区二区三区精品| 一本色道久久精品| 欧美亚洲国产日本| 日日摸天天添天天添破| 免播放器亚洲| 国产精品成人一区二区| 在线免费一级片| 久久99国产精品免费网站| 成人免费福利在线| 99久久精品国产成人一区二区| 久久99深爱久久99精品| 91在线观看免费网站| 国产婷婷一区二区三区久久| 国产一区二区导航在线播放| 91一区二区三区| 深夜福利视频网站| 91免费版在线看| 亚洲国产成人不卡| 福利在线视频网站| 亚洲主播在线观看| 黄色免费福利视频| 精品肉辣文txt下载| 欧美日韩美少妇| 色悠悠在线视频| 美女一区二区在线观看| 亚洲视频日韩精品| 日韩视频中文字幕在线观看| 亚洲激情综合| 国产精品成av人在线视午夜片| 亚洲一区 中文字幕| 国产精品一区二区不卡| 久久精品成人一区二区三区蜜臀| 久热av在线| 亚洲视频资源在线| 国产av天堂无码一区二区三区| 欧美片第一页| 日韩欧美卡一卡二| 日韩av在线看免费观看| 性欧美欧美巨大69| 91精品国产99| 一二三四区在线| 成人黄页在线观看| 亚洲欧美精品在线观看| 91超碰免费在线| 欧美精品高清视频| 精品无码国产一区二区三区51安| 成人高清电影网站| 欧美黑人性猛交| 18国产免费视频| 丁香六月综合激情| 亚洲欧洲国产精品久久| 不卡视频观看| 欧美一区二区三区性视频| 亚洲午夜久久久久久久久红桃| 91精品综合久久久久久久久久久 | 88在线观看91蜜桃国自产| 午夜久久久久久久| 国产精品久久观看| 奇门遁甲1982国语版免费观看高清| 国产又粗又猛视频免费| 97se亚洲国产综合自在线 | 亚洲精品三级| 亚洲影院在线看| 国产主播福利在线| 午夜成人在线视频| 国产91在线免费观看| 国产一区二区在线| 2019中文字幕全在线观看| av免费观看网址| 国产精品久久午夜夜伦鲁鲁| 国产日产欧美视频| 成功精品影院| 欧美裸身视频免费观看| 中国一级片黄色一级片黄| 99精品在线免费| 日韩一级免费看| 亚洲色图综合| 日韩在线视频国产| 在线观看视频中文字幕| 欧美激情一区二区三区全黄| 欧洲熟妇精品视频| 国产一区二区观看| 国产91九色视频| 毛片免费在线观看| 日本久久电影网| 欧洲av一区二区三区| 日韩激情在线观看| 日韩三级在线播放| 日韩制服一区| 在线免费观看羞羞视频一区二区| 欧美一级黄视频| 国产日韩欧美精品综合| 国产精品久久久久9999小说| 免费看av成人| 国产精品成人播放| 91caoporn在线| 欧美日韩久久一区| www日韩在线| 国产原创一区二区三区| 欧美少妇一级片| 欧洲精品99毛片免费高清观看| 免费不卡在线观看av| 国产91绿帽单男绿奴| 亚洲成人7777| 亚洲天堂视频一区| 日本大胆欧美人术艺术动态| 日本不卡一区二区三区在线观看| 久久久久久久久久99| 日韩极品在线观看| 中文字幕日韩精品久久| 国产一区二区三区四区五区3d| 在线观看日韩视频| 97超碰中文字幕| 一区二区三区在线看| 国产精品熟女一区二区不卡| 欧美精品午夜| 国产亚洲精品久久飘花| 999福利在线视频| 亚洲欧美精品一区| 波多野结衣小视频| 欧美激情一区二区三区蜜桃视频| 亚洲另类第一页| 888久久久| 成人在线免费网站| 精精国产xxxx视频在线野外| 亚洲女人天堂av| 国产又大又黄又粗| 国产精品色婷婷久久58| 免费黄频在线观看| 国内激情久久| 欧美日韩一区二区三| 欧美aaaaaaaa| 精品中文字幕乱| 婷婷国产在线| 欧美三级电影精品| 激情视频在线播放| 久久久电影一区二区三区| 99热这里只有精品在线播放| 一区二区三区四区电影| 国产伦精品一区二区三区在线| 日韩不卡免费高清视频| 日韩视频精品在线| 欧美一级做性受免费大片免费| 91国产成人在线| 午夜成人亚洲理伦片在线观看| 99免费精品在线观看| www.超碰com| 欧美破处大片在线视频| 另类视频在线观看+1080p| 欧美动物xxx| 久久久久九九九九| 大胆av不用播放器在线播放| 日韩欧美在线1卡| 国产成人精品777777| 亚洲精品成人天堂一二三| 性欧美丰满熟妇xxxx性仙踪林| 激情五月激情综合网| www国产精品内射老熟女| 欧美日韩有码| 国内外成人免费视频| 精品美女一区| 日本精品久久中文字幕佐佐木| av免费在线免费| 国产一区二区三区在线播放免费观看 | 污视频网址在线观看| 亚洲国产激情| 国产又大又长又粗又黄| 国产精品密蕾丝视频下载| 亚洲综合中文字幕在线观看| 桃色一区二区| 久久久久国产视频| av网址在线看| 亚洲欧美在线磁力| 欧美婷婷久久五月精品三区| 欧美一卡二卡在线观看| 国产在线一级片| 欧美午夜激情在线| 精品国产免费观看| 一区二区三区日韩| av最新在线观看| 欧美国产日韩a欧美在线观看| 人人妻人人澡人人爽人人精品| 国产宾馆实践打屁股91| 亚洲精品在线视频播放| 免费人成网站在线观看欧美高清| 男女爽爽爽视频| 久久国产精品99国产| 人妻夜夜添夜夜无码av| 激情av一区| 国产 国语对白 露脸| 91精品国产调教在线观看| 亚洲毛片aa| 日韩精品久久| 亚洲人一区二区| 国产韩日影视精品| 在线视频福利一区| 日韩精品一卡| 亚洲一区二区精品在线观看| 亚洲综合激情在线| 只有这里有精品| 国产高清一区| 超碰在线免费观看97| 牛夜精品久久久久久久99黑人| 国产精品jizz在线观看老狼| 91亚洲国产| 99亚洲精品视频| 欧美在线播放| 日韩欧美不卡在线| 欧美亚洲一区二区三区| 凹凸日日摸日日碰夜夜爽1| 米奇777在线欧美播放| 99999精品视频| 久久精品免费观看| 亚洲黄色av片| 国产精品亚洲人在线观看| 台湾佬美性中文| 91小视频在线| 中文字幕在线观看免费高清| 欧美激情一区二区三区四区| 国产又黄又粗的视频| 亚洲欧美另类在线| 婷婷在线精品视频| 亚洲3atv精品一区二区三区| 亚洲欧美偷拍一区| 欧美色男人天堂| 99久久久久久久| 亚洲第一精品电影| 成年午夜在线| 精品中文字幕在线2019| 看黄在线观看| 国产伦精品一区二区三区精品视频| 亚洲日本va午夜在线电影| 九九九热999| 日韩免费av| 国产日产欧美一区二区| 亚洲欧美视频| 午夜免费看视频| 成人久久视频在线观看| www中文在线| 亚洲午夜电影在线| 男操女视频网站| 欧美日韩一区二区三区在线看 | 美女视频在线免费| 成人欧美一区二区三区在线| 黄色欧美在线| 一区二区冒白浆视频| 黄色日韩精品| 国产三级生活片| youjizz国产精品| 国产福利在线导航| 福利视频第一区| 国产三级第一页| 亚洲美女自拍视频| 毛片在线看片| 国产www精品| 91成人福利| 婷婷视频在线播放| 日韩精品成人一区二区在线| 挪威xxxx性hd极品| 国产精品二三区| 尤物视频在线观看国产| 日韩视频免费观看高清完整版在线观看 | sis001亚洲原创区| 91精品久久久久久久久久另类| 日韩大胆成人| 红桃一区二区三区| 蜜臀91精品一区二区三区| 喷水视频在线观看| 亚洲激情自拍偷拍| 99精品国产99久久久久久97| 中文字幕免费国产精品| 成年女人在线看片| 92看片淫黄大片看国产片| 精品国产精品久久一区免费式| 黄色一级片在线看| 日本视频一区二区三区| 好吊一区二区三区视频| 一区二区三区视频在线看| 看黄色一级大片| 亚洲一区二区福利| 欧美成人免费电影| 精品国产一区二区三| 99热免费精品在线观看| 97中文字幕在线观看| 亚洲欧洲日韩综合一区二区| 亚洲一级在线播放| 最近2019好看的中文字幕免费| 日韩国产激情| 日韩精品久久久毛片一区二区| 国产午夜精品一区二区三区欧美| 日本一区二区免费视频| 亚洲精品免费视频| www日本在线| 欧美国产视频日韩| 免费一区二区三区在线视频| 91精品国产吴梦梦| 国产精品自产自拍| 免费在线观看h片| 精品黑人一区二区三区久久| 在线视频国产区| 产国精品偷在线| 91久久久精品国产| 亚洲精品国产久| 亚洲欧美日本在线| 亚洲国产999| 国内精品400部情侣激情| www.亚洲一二| 9色porny| 久久综合色之久久综合| 精品人妻无码一区二区性色| 亚洲欧美日韩第一区| 国产网红女主播精品视频| 国产一区二区三区高清视频| 国产一区二区三区久久久久久久久 | 久久精品男女| 亚洲天堂一级片| 欧美mv日韩mv亚洲| 理论片午夜视频在线观看| 亚洲v国产v在线观看| 狠狠狠色丁香婷婷综合激情| 1024手机在线观看你懂的| 日韩午夜在线观看| 91九色国产在线播放| 欧美亚洲另类在线一区二区三区| 久久激情五月激情| 欧美xxxx黑人xyx性爽| 亚洲激情中文字幕| 欧美电影在线观看网站| 国产一二三四五| 99精品国产91久久久久久| 最新中文字幕免费| 欧美人与性动交| 懂色av一区二区| 538在线视频观看| 亚洲色图第一区| 免费资源在线观看| 91色精品视频在线| 妖精视频成人观看www| 色偷偷男人天堂| 日韩精品中文字幕一区二区三区| 韩日精品一区二区|