精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

五月天激情婷婷| 精品国产一区二区三区四| 欧美专区一区| 午夜电影网亚洲视频| 欧美日韩精品久久| 国产精品无码久久av| 亚洲精品裸体| 色多多国产成人永久免费网站 | 视频一区在线免费看| 中文字幕一区三区| 久久99精品久久久久久三级| 亚洲天堂网视频| 亚洲免费大片| 久热精品视频在线观看一区| 三上悠亚ssⅰn939无码播放| 99精品在免费线偷拍| 亚洲国产视频在线| 亚洲一区二区三区精品在线观看 | 无码人妻av免费一区二区三区| 亚洲mv大片欧洲mv大片| 日韩精品高清在线| 永久免费的av网站| 乱人伦视频在线| 亚洲欧美二区三区| 亚洲欧美在线网| 视频午夜在线| 国产高清在线精品| 国产日产欧美a一级在线| 91porny在线| 国产综合精品| 美女啪啪无遮挡免费久久网站| 久久只有这里有精品| 高潮久久久久久久久久久久久久| 欧美日韩免费在线视频| 黑森林福利视频导航| 欧美aaaxxxx做受视频| 中文字幕在线免费不卡| 视频一区不卡| 成人精品一区| 久久精品免视看| 激情伦成人综合小说| 成人久久精品人妻一区二区三区| 国内精品伊人久久久久av影院 | 中文在线免费看视频| 亚洲欧美成人综合| 97成人超碰免| 日韩成人av毛片| 欧美激情综合色综合啪啪| y97精品国产97久久久久久| 国产三级在线观看完整版| 国产免费久久| 尤物tv国产一区| 日韩女同一区二区三区| 国产一区日韩| 在线视频精品一| 四虎影视1304t| 欧美国产小视频| 日韩视频免费在线观看| 黄色精品视频在线观看| 91高清一区| 九九久久精品一区| 久久久久久免费观看| 黄色精品一区| 欧美一级高清免费| 午夜精品免费观看| 蜜桃久久久久久久| 亚洲影院色无极综合| 精品人妻无码一区二区| 成人精品国产一区二区4080| 久久99精品久久久久久青青日本| 欧美精品a∨在线观看不卡| 久久久久久99精品| 亚洲欧洲国产精品久久| 在线免费观看的av| 午夜精品aaa| av视屏在线播放| 欧美jizz18| 日韩女优毛片在线| 久久久久国产精品区片区无码| 国产99久久| 久久精品91久久久久久再现| 国产性70yerg老太| 模特精品在线| 91中文精品字幕在线视频| 高清乱码毛片入口| 国产三级欧美三级日产三级99| 先锋影音一区二区三区| 污污的网站在线免费观看| 天天色天天操综合| 国产一线二线三线在线观看| 国产成人久久精品一区二区三区| 亚洲国产精品福利| 国产三级黄色片| 亚洲国产1区| 国产精品久久久久国产a级| 99久久免费国产精精品| 99re这里只有精品6| 亚洲一区3d动漫同人无遮挡 | 国产精品成人一区二区三区电影毛片| 日韩电影二区| 国内精品久久久久伊人av| 欧美 亚洲 另类 激情 另类 | 电影午夜精品一区二区三区| 精品999视频| 亚洲在线视频免费观看| 日韩爱爱小视频| 牛牛影视久久网| 久久手机免费视频| 超碰在线97观看| 成人18视频在线播放| 在线码字幕一区| 第84页国产精品| 欧美大黄免费观看| 国产美女高潮视频| 久久一区中文字幕| 国产另类第一区| av网址在线| 欧美日韩精品一区二区三区四区| 韩国无码一区二区三区精品| 亚洲视频精品| 91麻豆国产精品| 国产精品99999| 黄色成人在线免费| 日本50路肥熟bbw| 欧美日韩高清| 欧美资源在线观看| 手机看片1024日韩| 一区二区三区欧美日| 一级黄色录像在线观看| 国产免费av一区二区三区| 51精品在线观看| 国模人体一区二区| 一区二区三区国产精品| 在线观看免费不卡av| 日韩伦理视频| 日韩美女主播视频| 久草福利在线视频| 色欧美日韩亚洲| v8888av| 激情久久久久久久| 国产精品加勒比| 欧美家庭影院| 日韩丝袜情趣美女图片| 人妻人人澡人人添人人爽| 黄网站免费久久| 在线精品亚洲一区二区| 国产一区二区三区免费观看在线| 久久视频在线观看免费| 国产av精国产传媒| 一区二区三区日韩| 日本三级日本三级日本三级极| 国内成人在线| 国产九色精品| 成人一区福利| 中文字幕欧美在线| 艳妇乳肉豪妇荡乳av| 国产精品二区一区二区aⅴ污介绍| 亚洲综合日韩欧美| 婷婷久久国产对白刺激五月99| 91精品久久久久久久久久久| av小次郎在线| 亚洲成年人在线| 羞羞影院体验区| 国产人伦精品一区二区| 91亚洲精品久久久蜜桃借种| 一区二区中文| 国产美女精品在线观看| 悠悠资源网亚洲青| 亚洲欧美制服另类日韩| 中文字幕av影视| 亚洲伦理在线精品| 免费的av网站| 日韩中文字幕区一区有砖一区 | 精品综合久久| 国模视频一区| 久久久精品一区二区| 亚洲狼人综合网| 色先锋资源久久综合| 精品女人久久久| 国产91丝袜在线播放九色| 国产黄色一级网站| 欧美疯狂party性派对| 国产成人免费观看| 午夜av成人| 欧美日产国产成人免费图片| 香蕉人妻av久久久久天天| 欧美在线一区二区三区| 青春草免费视频| 久久久国产精品麻豆| 亚洲精品国产一区二区三区| 亚洲黄色在线| 中文字幕99| 日韩一级电影| 成人午夜在线观看| 亚洲永久av| 欧美精品在线第一页| 欧美成人免费| 日韩欧美自拍偷拍| 综合久久中文字幕| 午夜精品久久久久久久蜜桃app| youjizz亚洲女人| 成人免费高清视频| 五月天开心婷婷| 久久青草久久| 男人天堂手机在线视频| 91亚洲国产高清| 免费在线成人av| 亚洲亚洲一区二区三区| 国产精品日韩欧美| 自拍偷拍欧美视频| 久久久久久久电影一区| 日本成a人片在线观看| 亚洲美女av网站| 狠狠躁夜夜躁av无码中文幕| 欧美日韩久久一区| 真实新婚偷拍xxxxx| 欧美日在线观看| 久久精品国产亚洲av无码娇色| 中文字幕视频一区| 成人性生交大片免费看无遮挡aⅴ| 成人av在线播放网站| 中文字幕55页| 久久精品二区亚洲w码| 国产情侣av自拍| 国产一区二区三区成人欧美日韩在线观看 | 国精品人妻无码一区二区三区喝尿| 欧美人狂配大交3d怪物一区| 波多野结衣黄色网址| 岛国精品视频在线播放| 国产一级片播放| 亚洲最大的成人av| 欧美成欧美va| 亚洲欧美激情在线| 小早川怜子一区二区的演员表| 中文字幕在线不卡一区| 人妻互换一区二区激情偷拍| 国产欧美综合在线| 91激情视频在线观看| 久久精品亚洲麻豆av一区二区| 极品粉嫩小仙女高潮喷水久久| av资源站一区| 一区二区不卡免费视频| 久久综合狠狠综合久久综合88| 国产 xxxx| 91在线观看免费视频| 91精品小视频| 久久色.com| 蜜桃传媒一区二区亚洲| 国产欧美一区二区精品性| 极品蜜桃臀肥臀-x88av| 国产精品美女久久久久久| 后入内射无码人妻一区| 综合精品久久久| 欧美人妻精品一区二区三区| 亚洲国产乱码最新视频| 国产特黄大片aaaa毛片| 日韩欧美在线网址| 亚洲 欧美 日韩 在线| 在线观看欧美精品| 国产一区二区三区视频免费观看 | 亚洲 欧美 自拍偷拍| 亚洲精品永久免费| av电影在线网| 久久中文久久字幕| 九色porny丨首页入口在线| 青草青草久热精品视频在线网站 | 精品精品国产高清a毛片牛牛 | 欧美成人免费全部观看天天性色| 婷婷色在线资源| 18性欧美xxxⅹ性满足| 欧美精品高清| 91久热免费在线视频| 精品av导航| 亚洲欧洲一区二区在线观看| 亚洲蜜桃视频| 无码人妻丰满熟妇区96| 欧美96一区二区免费视频| 在线免费黄色小视频| 92精品国产成人观看免费| av手机在线播放| 一区二区三区av电影| av毛片在线免费观看| 91精品国产综合久久久久久| 神马午夜在线观看| 日韩中文字幕在线| 午夜羞羞小视频在线观看| 欧美在线影院在线视频| 国产亚洲精aa在线看| 久久综合福利| 五月婷婷六月综合| 波多野结衣家庭教师视频| 精品一区二区在线视频| 久久国产精品无码一级毛片| 亚洲欧美激情小说另类| 久久久精品福利| 日韩一区二区三区视频| 精品999视频| 欧美精品videosex牲欧美| 岛国一区二区| 久久久久久欧美精品色一二三四| 婷婷丁香综合| 久久精品影视大全| 波多野结衣精品在线| 天天做夜夜爱爱爱| 色综合久久久久综合| 草草视频在线播放| 在线观看亚洲视频| 色资源二区在线视频| 91青青草免费观看| 国产精品久久久久久久| 97视频在线免费播放| 成人免费观看av| 欧美日韩在线观看成人| 欧美少妇性性性| 美丽的姑娘在线观看免费动漫| 欧美激情亚洲一区| 国产视频一区二区在线播放| 亚洲一区二区在线免费观看| 亚洲一区二区免费看| 无码国产精品一区二区免费式直播 | 免费在线成人| 中文字幕 日本| 亚洲一区二区三区不卡国产欧美| 97人妻人人澡人人爽人人精品| 在线观看国产成人av片| 户外露出一区二区三区| 免费在线成人av| 男人的天堂亚洲在线| 国产中文字幕一区二区| 亚洲成人久久影院| 国产香蕉在线观看| 欧美激情视频给我| 成人在线超碰| 日韩欧美精品免费| 国产不卡高清在线观看视频| 三级影片在线看| 欧美一区二区三区影视| 超碰porn在线| 亚洲影院高清在线| 欧美日韩岛国| 欧美一级片在线免费观看| 一区二区三区高清| 亚洲欧美黄色片| 国内精品久久久| 久久悠悠精品综合网| 无码中文字幕色专区| www.亚洲色图.com| 久久久久久久久久影院| 亚洲欧美国产高清va在线播| 亚洲美女久久精品| 日韩精品久久久毛片一区二区| 日本在线不卡一区| 成人信息集中地| 日韩欧美一级二级三级| 欧美卡一卡二| 久久亚洲综合网| 日韩成人伦理电影在线观看| 日本精品久久久久中文| 6080yy午夜一二三区久久| 色老头在线观看| 韩日午夜在线资源一区二区 | 日本亚洲欧洲色α| 凹凸成人精品亚洲精品密奴| 亚洲男人天堂2021| 亚洲成人av一区二区三区| 青青操在线视频| 国产精品久久久久久网站| 91tv官网精品成人亚洲| 久久精品无码专区| 色婷婷久久久亚洲一区二区三区| a天堂中文在线88| 99电影网电视剧在线观看| 99日韩精品| 99热99这里只有精品| 欧美成人女星排行榜| 九色porny视频在线观看| 亚洲欧美丝袜| 成人av网在线| 中文字幕二区三区| 欧美激情综合亚洲一二区| 国产99久久| 极品白嫩的小少妇| 在线免费观看视频一区| 天堂av最新在线| 欧美一区二区三区成人久久片 | 亚洲xxxx视频| 亚欧美中日韩视频| 欧美肥妇bbwbbw| 日韩精品中文字幕视频在线| 91国产一区| 一本大道熟女人妻中文字幕在线| 国产精品国产三级国产aⅴ中文| 亚洲欧美另类一区| 国产精品一区专区欧美日韩| 亚洲人成毛片在线播放女女| 99自拍偷拍视频| 日韩精品福利网站| 午夜日韩影院| 亚洲欧美国产中文| 色综合久久综合|