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

揭秘!阿里實時數倉分布式事務Scale Out設計

開發 開發工具 分布式
Hybrid Transaction Analytical Processing(HTAP) 是著名信息技術咨詢與分析公司Gartner在2014年提出的一個新的數據庫系統定義,特指一類兼具OLTP能力(事務能力)和OLAP能力(分析能力)的數據庫系統。

 [[396205]]

一 前言

Hybrid Transaction Analytical Processing(HTAP) 是著名信息技術咨詢與分析公司Gartner在2014年提出的一個新的數據庫系統定義,特指一類兼具OLTP能力(事務能力)和OLAP能力(分析能力)的數據庫系統。在傳統場景中,承擔OLTP任務和OLAP任務的數據庫是兩個不同的系統。典型的OLTP系統包括MySQL、PostgreSQL、PolarDB等,典型的OLAP系統包括Clickhouse、AnalyticDB等。在生產系統中,業務原始數據通常存儲在OLTP系統中,然后通過離線導入、ETL、DTS等方式以一定延遲同步到OLAP系統中,再進行后續的數據分析工作。

HTAP系統的一個直觀的優點是可以在一個系統中完成OLTP和OLAP任務,節約用戶的系統使用成本。而且,HTAP系統具備完整的ACID能力,讓開發者擁有更多的數據寫入方式,不管是實時插入、離線導入、數據單條更新,都可以輕松應對。另外,一個完備的HTAP產品,同樣是一個優秀的ETL工具,開發者可以利用HTAP系統處理常見的數據加工需求。HTAP系統能夠大大節約用戶的使用成本和開發成本,并影響上層業務系統的形態。目前,存儲計算分離、云原生技術和HTAP等技術,被業界公認為是數據庫系統目前的重要演進方向。

AnalyticDB PostgreSQL版是阿里云的一款實時數倉產品(以下簡稱ADB PG)。ADB PG采用MPP水平擴展架構,支持標準SQL 2003,兼容PostgreSQL/Greenplum,高度兼容 Oracle 語法生態,也是一款HTAP產品。ADB PG已經通過了中國信息通信研究院組織的分布式分析型數據庫和分布式事務數據庫功能和性能認證,是國內唯一一家同時通過這兩項認證的數據庫產品。ADB PG早期版本主打OLAP場景、具備OLTP能力。隨著HTAP的流行,ADB PG自6.0版本開始對OLTP性能在多個方面進行了大幅度優化,其中很重要的一個項目就是Multi-Master項目,通過Scale Out打破了原有架構的僅支持單個Master節點帶來的性能瓶頸問題,讓OLTP事務性能具備Scale out能力,更好地滿足用戶的實時數倉和HTAP需求。

Multi-Master項目在2019年啟動后,經歷了一寫多讀和多寫多讀2個演進階段,極大的提升了ADB PG系統高并發能力、實時寫入/更新/查詢的能力,在阿里內部支撐了如數據銀行等多個核心業務,也經過了阿里2020年雙11、雙12等大促的考驗。目前,產品的穩定性和性能都已經得到了廣泛驗證。在本文的如下部分,我們首先介紹ADB PG原有的Single-Master架構導致的性能瓶頸及其原因,并介紹Multi-Master的設計思路。然后我們會詳細介紹Multi-Master架構的詳細設計。之后我們會介紹我們在Multi-Master項目中所解決的幾個關鍵技術問題和核心解決方案。最后,我們會對Multi-Master架構的性能表現進行測試。

二 Single-Master架構 vs. Multi-Master架構

在數倉系統設計中,通常把系統中的節點分為Master節點和Segment節點(計算節點),Master節點和計算節點承擔不同類型的任務。以ADB PG為例,Master節點主要負責接收用戶的請求、查詢優化、任務分發、元信息管理和事務管理等任務。Segment節點負責計算任務和存儲管理任務。對于查詢請求,Master節點需要對用戶提交的SQL進行解析和優化,然后將優化后的執行計劃分發到計算節點。計算節點需要對本地存儲的數據進行讀取,然后再完成計算和數據shuffle等任務,最后計算節點把計算結果返回到Master節點進行匯總。對于建表、寫入等請求,Master節點需要對元信息、事務等進行管理,并協調計算節點之間的工作。

如上圖所示,ADB PG是由Greenplum演化而來,早期的ADB PG版本和Greenplum一樣,是一種單Master架構。也就是說,一個數據庫實例只有一個Main Master在工作,配置一個或者多個Standby Master節點作為高可用備份,只有當Main Master節點宕機,才會切換到Standby Master進行工作。隨著業務的發展,尤其是實時數倉和HTAP場景需求的增加, Single Master的系統瓶頸問題也逐漸顯現。對于查詢鏈路,有些查詢的最后一個階段需要在Master節點上進行最終的數據處理,消耗一定的CPU/內存資源。對于寫入場景,大量的實時插入/更新/刪除的需要高性能保證。而且Single Master架構如何處理超大并發連接數也是個問題。以上問題可以通過提高Master節點的配置(Scale up)來緩解,但是無法從根本上解決。

ADB PG在2019年啟動了Multi-Master項目,目標是通過節點擴展(Scale out)的方式來解決Master層的資源瓶頸問題,更好地滿足實時數倉及HTAP等業務場景的需求。上圖是Multi-master架構的示意圖,通過增加多個Secondary Master節點來實現性能的Scale out,同時保留原有的Standby Master來保證高可用能力。為了保障ADB PG的事務能力,Multi-master項目需要克服一些其他不支持事務的實時數倉不會遇到的困難。一方面,ADB PG需要對分布式事務能力進行擴展,支持多個Master的場景。一方面,對于全局死鎖處理、DDL支持以及分布式表鎖支持方面,ADB PG需要進行算法的創新和修改。最后,ADB PG需要對更新之后的新架構的集群容錯能力和高可用能力進行設計。在本文的余下部分,我們將對上述幾個議題進行介紹。

三 Multi-Master 架構設計

相對于原Single-Master架構,Multi-Master架構在Main Master/Standby Master的基礎之上新增實現了Secondary Master的角色,Secondary Master(s)支持承接和Main Master一樣的DDL,DML等請求,同時用戶可以按需擴展來提升系統整體能力。下面是各個Master角色及對應主要能力的簡單介紹。

Main Master:承接用戶業務請求,并把任務分發到各個計算節點進行分布式處理。除此之外,Main Master還承擔了GTM,FTS和全局元信息服務的角色,這些組件與Multi-Master的實現密切相關。

  • GTM:全局事務管理(Global Transaction Manager),維護了全局的事務id及快照信息,是實現分布式事務的核心組件。
  • FTS:容錯服務(Fault-Tolerance Service), 檢測計算節點及輔協調節點的健康狀態,并在計算節點發生故障時進行計算節點的Primary與Mirror角色的切換。
  • Catalog:以系統表Catalog等信息為代表的全局元信息存儲。
  • Standby Master:和Main Master組成典型的主備關系,在原Main Master故障的時候可以接替成為新的Main Master。
  • Secondary Master:可以視為"弱化的Main Master",和Main Master一樣可以承接業務請求并將任務分發到各個計算節點進行處理。Secondary Master會通過GTM Proxy與Main Master上的GTM以及計算節點交互來實現分布式事務。

需要注意的是,Main Master與Secondary Master通過上層的SLB來做基于權重的負載均衡管理。如果是在Main Master和Secondary Master相同的規格配置下,Main Master會通過權重設置來承擔相對少的業務請求負載,從而為GTM,FTS等預留足夠的處理能力。

四 Multi-Master關鍵技術

本章將對Multi-Master的一些關鍵技術點進行詳細的介紹,主要包括分布式事務處理、全局死鎖處理、DDL支持、分布式表鎖支持、集群容錯和高可用能力。

1 分布式事務管理

ADB PG的分布式事務實現

ADB PG的分布式事務是使用二階段提交(2PC)協議來實現的,同時使用了分布式快照來保證Master和不同Segment間的數據一致性,具體實現實現要點如下。

分布式事務由Main Master發起,并通過2PC協議提交到Segments。2PC是分布式系統的經典協議,將整體事務的提交過程拆分成了Prepare和Commit/Abort兩個階段,如上面的簡單示意圖所示,只有參與事務的所有Segments都成功提交整體事務才會成功提交。如果在第一階段有存在Prepare失敗的Segment,則整體事務會Abort掉;如果在第二階段有Commit失敗的Segment,而且Master已經成功記錄了PREPARED日志,則會發起重試來Retry失敗的Commits。需要說明的是,如果一個事務僅僅牽涉到1個Segment,系統會優化為按照1PC的方式來提交事務從而提升性能,具體來說就是將上圖中Master參與協調的Prepare和Commit兩個階段合二為一,最終由唯一參與的Segment來保證事務執行的原子性。

Main Master上的GTM全局事務管理組件會維護全局的分布式事務狀態,每一個事務都會產生一個新的分布式事務id、設置時間戳及相應的狀態信息,在獲取快照時,創建分布式快照并保存在當前快照中。如下是分布式快照記錄的核心信息:

執行查詢時,Main Master將分布式事務和快照等信息序列化,通過libpq協議發送給Segment上來執行。Segment反序列化后,獲得對應分布式事務和快照信息,并以此為依據來判定查詢到的元組的可見性。所有參與該查詢的Segments都使用同一份分布式事務和快照信息判斷元組的可見性,因而保證了整個集群數據的一致性。另外,和 PostgreSQL 的提交日志clog類似,ADB PG會保存全局事務的提交日志,以判斷某個事務是否已經提交。這些信息保存在共享內存中并持久化存儲在distributedlog目錄下。另外,ADB PG實現了本地事務-分布式事務提交緩存來幫助快速查到本地事務id(xid)和分布式全局事務id(gxid)的映射關系。下面讓我們通過一個例子來具體理解一下:

如上圖所示,Txn A在插入一條數據后,Txn B對該數據進行了更新。基于PostgreSQL的MVCC機制,當前Heap表中會存在兩條對應的記錄,Txn B更新完數據后會將原來tuple對應的xmax改為自身的本地xid值(由0改為4)。此后,Txn C和Txn D兩個查詢會結合自己的分布式快照信息來做可見性判斷,具體規則是:

  • 如果 gxid < distribedSnapshot->xmin,則元組可見
  • 如果 gxid > distribedSnapshot->xmax,則元組不可見
  • 如果 distribedSnapshot->inProgressXidArray 包含 gxid,則元組不可見
  • 否則元組可見。如果不能根據分布式快照判斷可見性,或者不需要根據分布式快照判斷可見性,則使用本地快照信息判斷,這個邏輯和PostgreSQL的判斷可見性邏輯一樣。

基于上述規則,Txn C查到兩條tuple記錄后,通過xid和gxid映射關系找到兩條記錄對應的gxid值(分別為100, 105),規則c會限定Txn B的更新對Txn C不可見,所以Txn C查詢到的結果是'foo';而Txn D基于規則則對Txn B更新后的tuple可見,所以查詢到的是'bar'。

Multi-Master的分布式事務實現

Multi-Master的分布式事務本質是在原有分布式事務基礎之上進行了增強。如上圖所示,Postmaster是守護進程,Main Master的Backend業務處理進程和GTM Server之間通過共享內存通信,但Secondary Master是無法直接通過共享內存與Main Master上的GTM Server通信的,為此,我們在Secondary Master和Main Master之間新增了一條通道并實現了一套GTM交互協議。另外,為了減少Secondary Master和Main Master之間的連接并提升網絡通信效率,我們新增實現了GTM Proxy來代理同一個Secondary Master上多個Backend進程的GTM請求。下面,本文將從GTM交互協議 、GTM Proxy和分布事務恢復三個方面來系統的闡述一下Multi-Master分布式事務實現的技術細節。

(1)GTM交互協議

GTM交互協議是Secondary Master和Main Master之間事務交互的核心協議,具體協議的消息和說明如下表所示:

協議核心消息 說明
GET_GXID 分配gxid
SNAPSHOT_GET 取分布式快照
TXN_BEGIN 創建新事務
TXN_BEGIN_GETGXID 創建新事務并分配gxid
TXN_PREPARE 給定的事務完成2pc的prepare階段
TXN_COMMIT 提交給定的事務
TXN_ROLLBACK 回滾給定的事務
TXN_GET_STATUS 取屬于指定master的所有事務狀態信息
GET_GTM_READY 檢查GTM server是否可服務正常事務請求
SET_GTM_READY 設置GTM server可服務正常事務請求
TXN_COMMIT_RECOVERY master恢復階段提交給定的事務
TXN_ROLLBACK_RECOVERY master恢復階段回滾給定的事務
CLEANUP_MASTER_TRANS 恢復完時清除master的剩余事務

可以看到,消息的核心還是在交換GXID,SNAPSHOT等信息,同時做BEGIN/PREPARE/COMMIT/ABORT等事務操作,此處就不再做一一說明。值得特別指出的是,跨節點的消息交互成本是很高的,考慮到OLAP用戶的特點和需求,我們配合協議提供了不同的一致性選項,從而讓用戶可以在性能和一致性上進行權衡和選擇:

  • 會話一致:同一個會話滿足可預期的一致性要求,包括單調讀,單調寫,讀自己所寫,讀后寫的一致性。
  • 強一致:線性一致性,一旦操作完成,所有會話可見。也基于不同的一致性模式進行了定制和精簡。

如上表所示,如果用戶需要更高的性能而對于一致性可以做出一定妥協,則可以選擇會話一致模式,相對強一致,會話一致對協議交互進行了大幅度精簡,僅僅保留了 GET_GXID和 GET_GXID_MULTI :

協議核心消息 說明
GET_GXID 分配gxid
GET_GXID_MULTI 批量分配gxid

其中, GET_GXID_MULTI本質就是 GET_GXID的批量操作。在會話一致模式下,Secondary Master只需要從Main Master獲取全局的GXID信息,然后結合本地快照并配合重試及GDD全局死鎖檢測(后面會講到)來獨立處理事務,從而大幅度簡化與Master之間的消息交互提升性能。當然,這里的代價就是在一致性上做出的讓步,事實上,會話一致可以滿足絕大部分OLAP/HTAP客戶的訴求。

(2)GTM Proxy的實現

在Multi-Master的實現中,GTM Proxy是作為Postmaster的子進程來管理的,這樣做的好處是:1) 無需新增新的角色,配套管控更簡單;2) GTM Proxy和Backend之間是天然認證和互信的;3) GTM Proxy可以通過共享內存和Backend進程通信,這樣相比Tcp Loopback更高效,既可以減少內存拷貝,也無Network Stack開銷。

每個GTM Proxy進程會和GTM server建立一個網絡連接,并會服務多個本地的backend進程,將它們的GTM請求轉發給GTM server。GTM Proxy還針對性的做一些請求優化處理,如:

  • Backends間共享Snapshot,從而減少Snapshot請求數
  • 合并和批處理Backends的并發GTM請求
  • 批量獲取gxid(會話一致)

GTM Proxy是減少Secondary Master和Main Master之間連接并提升網絡通信效率的關鍵。事實上,在實現中,如果用戶開啟了強一致模式,我們在Main Master上會默認開啟GTM Proxy來代理Main Master上多個Backend進程與GTM Server之間的請求,從而進一步降低GTM Server的壓力。

(3)分布式事務的恢復

在很多情況下系統都需要做分布式事務的恢復處理,比如系統/Master重啟,Main Master/Standby Master切換等,當不考慮Multi-Master,分布式事務的恢復可以簡單劃分為如下3大步驟:

  1. Main Master回放xlog,找出所有已經Prepared但是尚未Committed的事務;
  2. 命令所有Segments提交所有需要Committed的事務;
  3. 收集所有Segments上未Committed而且不在“Main Master”需要提交的事務列表中的事務,Abort掉這些事務。

上面的流程如果進一步考慮Multi-Master,那么一些新的問題就引入了進來,核心需要解決的有:1)Secondary Master發起的事務的恢復;2) Segments和Secondary Master上殘留Prepared階段的事務在Secondary Master或者Master重啟等情況下的恢復/清理等等。為此,針對Multi-Master,我們對二階段事務的提交和分布式事務的恢復流程都做了增強,如下主要講一下二階段事務提交的增強和Secondary Master被刪除及第一次啟動時對應的清理流程:

此外,Main Master/Secondary Master重啟的流程也進行了增強,這里面和原Main Master重啟恢復的主要差別是需要區分出屬于自己發起的分布式事務,具體的區分是通過增強GXID來實現的。我們在原本GXID的基本信息之上添加了masterid信息,這樣{GXID}-MasterID結合起來,就可以基于GXID來區分出具體的Master了。

2 全局死鎖檢測

ADB PG 4.3版本是通過對表加寫鎖來避免執行UPDATE和DELETE時出現全局死鎖。這個方法雖然避免了全局死鎖,但是并發更新的性能很差。ADB PG從6.0開始引入了全局死鎖檢測。該檢測進程收集并分析集群中的鎖等待信息,如果發現了死鎖則殺死造成死鎖的進程來解除死鎖,這樣極大地提高了高并發情況下簡單查詢、插入、刪除和更新操作的性能。ADB PG 6實現全局死鎖檢測的要點如下:

  • 全局死鎖檢測服務進程(GDD)運行在Main Master上
  • GDD會周期性獲取所有segment上的分布式事務的gxid及其等待關系
  • GDD構造全局的事務等待關系圖,檢測是否成環,如果成環,則回滾環中一個事務,破解死鎖

ADB PG Multi-Master的全局死鎖檢測整體也是ADB PG 6.0版本的實現來增強的,如下圖所示:

ADB PG Multi-Master的GDD也運行在Main Master之上,主要新增了兩個Master-to-Master的RPC調用來采集由Secondary Master發起的分布式事務gxid列表以及通知Secondary Master去破解負責分布式事務的死鎖。

  • Get_gxids: 從每個secondary master獲取gxid列表,以判斷導致死鎖的事務各屬于哪些master
  • Cancel_deadlock_txn: 如果導致死鎖的事務屬于某個secondary master,則請求該master回滾掉該事務

3 DDL支持

在ADB PG的原生實現中,Main Master對DDL的支持和與Segments上Catalog的修改同步是通過2PC的方式實現的,ADBPG Multi-Master擴展了這一實現來支持對Secondary Master上Catalog的同步。

此外, Secondary Master也支持處理DDL,簡單說來,我們在Secondary Master內部實現了一個簡單的代理,Secondary Master如果收到DDL請求,會將請求轉發給Main Master來處理。具體如下圖所示:

DDL的實現非常復雜,真實的落地其實要比上面復雜很多,也牽涉到很多細節,比如VACCUM/CLUSTER/ANALYZE等相對特殊的DDL處理,但整體的實現方案都基本遵從上面的原則。

4 分布式表鎖

眾所周知,在數據庫的實現里,為支持對表數據的并發訪問,一般都會通過鎖來實現。ADB PG的鎖模型和PostgreSQL是兼容的,具體如下表所示:

Multi-Master對ADB PG的表鎖協議進行了增強和適配,總結起來,我們定義了一套新的分布式表鎖協議來規范Main Master及Secondary Master上加鎖的順序和規則:

任意Master上的進程請求1-3級鎖

  • 本地請求該表鎖
  • 在所有Segments上請求該表鎖
  • 事務結束時所有節點釋放鎖

Main Mater上的進程請求4-8級鎖

  • 本地請求該表鎖
  • 在所有Secondary master上請求該表鎖
  • 在所有Segments上請求該表鎖
  • 事務結束時所有節點釋放鎖

Secondary Master上的進程請求4-8級鎖

  • 在Main Master上請求該表鎖
  • 本地請求該表鎖
  • 在所有其他Secondary Master上請求該表鎖
  • 在所有Segments上請求該表鎖
  • 事務結束時所有節點釋放鎖

基于上述規則,我們可以實現任何的表鎖請求會最終在某個Master或者Segment得到裁決,從而保證了對ADB PG的原表鎖協議的兼容。

5 集群容錯與高可用

ADB PG是通過復制和監控來實現容錯和高可用的,主要包括:1)Standby Master和Mirror Segment分別為Main Master和Primary Segment提供副本(通過PG流復制實現);2)FTS在后臺負責監控與主備切換。如上圖中的流程:

  • Main Master到Standby Master的流復制;
  • Primary Segment到Mirror segment的流復制;
  • Main Master的FTS Probe進程發包探活Primary Segment;
  • Main Master的FTS Probe進程發包探活Secondary Master;
  • Main Master重啟后,其FTS Probe進程向GTM Server通報所有Master;
  • Secondary Master的FTS Probe發包探活Main Master,獲取最新集群配置和狀態信息并存在本地;
  • Secondary Master的FTS Probe無法連接Main Master后嘗試探活Standby master,若成功則更新其為新的Main Master;否則繼續探活原Main Master。

簡單說來,ADBPG Multi-Master在原ADB PG的容錯和高可用基礎之上進行了增強,讓系統能夠進一步對Secondary Master進行兼容。另外,Secondary Master如果故障,則會進一步由管控系統看護并做實時修復。

五 Multi-master 擴展性能評測

ADB PG單Master實例在高并發點查、導入等偏OLTP的場景往往會存在單Master瓶頸,而Multi-Master的引入很好的解決了問題。為了驗證Multi-Master在OLTP負載下橫向擴展的能力,本章節對ADB PG Multi-Master在默認的會話一致模式下的TPC-B/C兩種典型負載進行了性能測試。

1 TPC-C性能測試

TPC-C是事務處理性能委員會(TPC)旗下一的一個主流性能測試Benchmark集合,主要是測試數據庫系統的事務能力。TPC-C測試過程中,會實現多種事務處理并發執行、在線與離線事務混合執行等方式,能夠比較全面地考察數據庫系統的事務能力。我們采用的測試環境是基于阿里云ECS的ADB PG實例,具體參數如下:

  • Master(Main Master/Secondary Master):8c64g
  • 節點規格(segment):4C32G
  • 節點數量(segment): 32
  • 存儲類型:ESSD云盤
  • 節點存儲容量(segment): 1000GB

可以看到,在只有1個Master時,當并發數到達64時,TPC-C的性能基本達到峰值,無法再隨著并發數增加而增加,但是當有4個Masters時,隨著并發數的增加TPC-C的性能依舊可以非常好的線性擴展。

2 TPC-B性能測試

TPC-B是TPC旗下另一個性能測試Benchmark集合,主要用于衡量一個系統每秒能夠處理的并發事務數。我們采用的測試環境是基于阿里云ECS的ADB PG實例,具體參數如下:

  • Master(Main Master/Secondary Master):8c64g
  • 節點規格(segment):4C32G
  • 節點數量(segment): 32
  • 存儲類型:ESSD云盤
  • 節點存儲容量(segment): 1000GB

可以看到,和TPC-C類似,在只有1個Master時,當并發數到達64時,TPC-B的性能基本達到峰值,無法再隨著并發數增加而增加,但是當有4個Masters時,隨著并發數的增加TPC-B的性能依舊可以非常好的線性擴展。

六 總結

ADB PG Multi-Master通過水平擴展Master節點很好的突破了原架構單Master的限制,配合計算節點的彈性,系統整體能力尤其是連接數及讀寫性能得到進一步提升,可以更好的滿足實時數倉及HTAP等業務場景的需求。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2021-06-08 12:46:27

分布式阿里TCC

2022-06-27 08:21:05

Seata分布式事務微服務

2022-06-21 08:27:22

Seata分布式事務

2017-07-26 15:08:05

大數據分布式事務

2022-09-28 07:08:25

技術實時數倉

2021-01-18 05:20:52

數倉hive架構

2021-12-10 12:08:25

高可用數倉Hologres

2019-10-10 09:16:34

Zookeeper架構分布式

2019-01-11 18:22:07

阿里巴巴技術開源

2009-06-19 15:28:31

JDBC分布式事務

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2021-09-29 09:07:37

分布式架構系統

2022-08-01 15:58:48

數據倉庫架構數據

2023-08-29 10:20:00

2022-06-02 10:35:20

架構驅動

2023-08-27 16:11:35

數據庫分布式事務數據庫

2022-01-11 09:38:22

數倉場景趨勢

2025-04-29 04:00:00

分布式事務事務消息

2019-06-26 09:41:44

分布式事務微服務
點贊
收藏

51CTO技術棧公眾號

国产拍在线视频| 最近中文字幕免费在线观看| 亚洲精品一区二区三区中文字幕| 亚洲欧美日韩电影| 亚洲最大福利视频网| 久热精品在线观看| 亚洲黄页网站| 欧美久久一二区| 久操手机在线视频| 亚洲精品国产精| 国产精品资源| 日韩中文字幕在线观看| 久久久久久无码精品人妻一区二区| 免费a级在线播放| 国产98色在线|日韩| 97在线视频免费播放| 一道本在线观看| 国产免费一区二区三区网站免费| a级片在线免费观看| 久久久亚洲综合| 国产乱肥老妇国产一区二| 国精品人伦一区二区三区蜜桃| 秋霞一区二区| 亚洲成人福利片| 一区二区免费电影| 人妻少妇精品无码专区久久| 强制捆绑调教一区二区| 欧美激情精品久久久久久黑人| 69亚洲乱人伦| 免费日韩成人| 婷婷综合在线观看| 91精品国产吴梦梦| 久久精品蜜桃| 丁香六月综合激情| 国产精品久久久亚洲| 日韩 欧美 精品| 国产综合久久久| 日韩西西人体444www| 国产精品人人爽人人爽| 波多野结衣在线观看| 国产精品欧美久久久久一区二区| 亚洲一区二区在线| 波多野结衣人妻| 亚洲精品少妇| 欧美国产乱视频| 日本激情视频一区二区三区| 六月丁香久久丫| 日韩一区二区视频在线观看| www.涩涩涩| 欧美少妇精品| 亚洲国产精品麻豆| 狠狠精品干练久久久无码中文字幕 | 欧美久久亚洲| 欧美日韩和欧美的一区二区| 无码人妻丰满熟妇区毛片18| 国产精品一二三产区| 亚洲国产日韩综合久久精品| 天堂精品一区二区三区| 欧美女优在线| 高清不卡在线观看| 91丝袜脚交足在线播放| 国产三级漂亮女教师| 久久精品国产精品青草| 国产精品va在线| 无码人妻精品一区二区三区不卡| 激情综合在线| 欧美二区在线播放| 久久久久国产精品夜夜夜夜夜| 亚洲男女av一区二区| 日韩视频在线免费观看| 老司机精品免费视频| av亚洲在线观看| 国产小视频91| 极品蜜桃臀肥臀-x88av| jvid福利在线一区二区| 少妇高潮久久久久久潘金莲| 久久精品国产亚洲AV成人婷婷| 成人久久久久| 在线播放日韩av| 妺妺窝人体色WWW精品| 亚洲视频分类| 在线视频欧美日韩精品| 欧美特级黄色录像| 欧美综合久久| 少妇高潮久久久久久潘金莲| 九九热最新地址| 午夜精品久久| 久久香蕉国产线看观看网| 午夜国产小视频| 国产精品红桃| 9.1国产丝袜在线观看| 三级视频在线观看| 日本欧美一区二区三区| 国产精品夜间视频香蕉| 精品国产九九九| 不卡视频一二三| 欧美日韩日本网| 蜜桃视频在线观看免费视频网站www| 国产欧美精品一区| 黄瓜视频免费观看在线观看www| 91精选在线| 精品国产乱码久久久久酒店| 午夜精品久久久久久久无码| 日韩一级二级| 91精品免费观看| 韩国无码一区二区三区精品| 九九热爱视频精品视频| 久久中文字幕国产| 成人免费视频毛片| 美女视频黄 久久| 成人国产一区二区| 国产在线小视频| 一片黄亚洲嫩模| 国产日韩一区二区在线| 亚洲图片小说区| 欧美一区二区三区免费大片 | 欧美三根一起进三p| 亚洲欧美网站| 7777精品伊久久久大香线蕉语言 | 男女性色大片免费观看一区二区| 97久久人人超碰caoprom欧美| 手机福利在线| 自拍偷拍亚洲欧美日韩| 国产免费观看高清视频| 欧美高清xxx| 亚洲激情免费观看| 99久久精品久久亚洲精品| 日韩视频一区二区三区在线播放免费观看| 国产精品xxxxx| 五月天丁香视频| 亚洲欧美区自拍先锋| 97xxxxx| 91精品入口| 日韩在线观看免费网站| 午夜偷拍福利视频| 黄页视频在线91| 日韩视频专区| 制服丝袜专区在线| 91精品国产综合久久香蕉的特点| 久久av无码精品人妻系列试探| 韩国在线一区| 91久久夜色精品国产网站| 狠狠v欧美ⅴ日韩v亚洲v大胸| 亚洲一区二区精品3399| 999热精品视频| 黄色不卡一区| 欧美一区二区三区四区在线| 黄色aaa毛片| 亚洲欧美激情一区二区| 天天干天天操天天做| 欧美精品系列| 国产成人久久久精品一区| 姝姝窝人体www聚色窝| 一区二区三区毛片| 日本高清免费在线视频| 99久久久久| 成人在线视频福利| 欧美三级电影一区二区三区| 色婷婷亚洲综合| 精品人妻一区二区三区香蕉 | 一本色道久久综合狠狠躁篇怎么玩 | kk眼镜猥琐国模调教系列一区二区| 做爰高潮hd色即是空| 久久av影院| 日韩在线免费视频观看| 一级片免费在线播放| 久久夜色精品一区| 99热在线这里只有精品| 成人知道污网站| 高清在线视频日韩欧美| 少妇高潮久久久| 欧美日韩午夜视频在线观看| 伊人春色在线观看| 国产视频一区在线观看一区免费| 91精品久久久久久久久久入口 | 一本色道久久精品| 91欧美激情另类亚洲| 日本在线观看视频| 7777女厕盗摄久久久| 成人在线观看免费完整| 国产精品乡下勾搭老头1| 欧美大黑帍在线播放| jizz性欧美2| 2020久久国产精品| 电影av在线| 69精品人人人人| 久久婷婷国产麻豆91| 国产乱码精品一区二区三区五月婷| 性生活免费观看视频| 51亚洲精品| 日韩免费在线免费观看| fc2在线中文字幕| 日韩欧美一区二区免费| 欧美黄片一区二区三区| 国产精品 欧美精品| 日韩国产成人无码av毛片| 四虎5151久久欧美毛片| 国产精品福利无圣光在线一区| 日韩子在线观看| 精品久久一区二区| 日韩精品成人免费观看视频| 国产欧美日韩激情| 欧美xxxx黑人| 三级欧美在线一区| 男女h黄动漫啪啪无遮挡软件| 给我免费播放日韩视频| 欧美精品videos| 国产福利在线看| 日韩欧美美女一区二区三区| 国产精品一区二区三区四| 中文字幕中文字幕一区二区| 国产一线在线观看| 日本三级亚洲精品| 成人在线视频一区二区三区| 精品视频日韩| 国产精品永久入口久久久| 91国拍精品国产粉嫩亚洲一区| 欧美国产日韩一区二区在线观看 | 欧美sss在线视频| 成人免费自拍视频| 视频一区在线免费看| 欧美一级视频一区二区| 激情av在线| 久久激情视频久久| 77777影视视频在线观看| 精品亚洲一区二区三区在线观看| 亚洲不卡免费视频| 欧美浪妇xxxx高跟鞋交| 中文字幕在线天堂| 欧美性xxxx| 成人免费看片98欧美| 亚洲国产中文字幕在线视频综合 | 蜜桃视频在线观看www社区| 亚洲欧美日韩网| 四虎在线免费看| 日韩精品一二三四区| 黄色一级a毛片| 亚洲高清久久网| 色噜噜在线播放| 日韩成人久久久| 五月激情丁香婷婷| 亚洲开心激情网| 黄色在线免费观看大全| 亚洲一区二区精品| 超碰免费在线观看| 中文字幕亚洲无线码a| 成人av电影观看| 怡红院精品视频| 在线观看a视频| 色妞欧美日韩在线| v天堂福利视频在线观看| 久久久www成人免费精品| 性xxxxfjsxxxxx欧美| 欧美激情欧美狂野欧美精品| a毛片不卡免费看片| 91干在线观看| 欧美精品总汇| 国产一区二区在线免费| 99精品女人在线观看免费视频| 亚洲一区二区三区成人在线视频精品 | 成人自拍视频网站| 欧美亚洲大陆| 日韩电影天堂视频一区二区| 精品大片一区二区| 26uuu成人| 99精品国产在热久久| 亚洲人成无码www久久久| 日韩**一区毛片| 欧美国产在线一区| 91首页免费视频| 少妇愉情理伦三级| 一级日本不卡的影视| 波多野结衣国产| 欧美日产国产精品| 亚洲精品18在线观看| 亚洲美女激情视频| 免费网站成人| 亚洲97在线观看| 国产成+人+综合+亚洲欧美| 91嫩草免费看| 欧美日韩在线观看视频小说| 久久久成人精品一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 超碰在线99| 国产精品视频网站| 亚洲精品黑牛一区二区三区| 欧美精品一区二区三区久久| 奇米影视亚洲| 成 年 人 黄 色 大 片大 全| 日韩精品一级中文字幕精品视频免费观看 | 久久夜精品va视频免费观看| 欧美freesex黑人又粗又大| 国产精品91久久久| 成人午夜三级| 亚洲一区二区免费视频软件合集 | 精品不卡一区| 日本免费a视频| 麻豆精品视频在线| 屁屁影院国产第一页| |精品福利一区二区三区| 久久一区二区三区视频| 欧美一区三区四区| 国模吧精品人体gogo| 国模视频一区二区三区| 亚洲国产尤物| 久久精彩视频| 国内久久精品| 亚洲日本黄色片| 国产亚洲午夜高清国产拍精品 | 九色综合婷婷综合| 99久久综合| 日本熟妇人妻中出| 99视频在线观看一区三区| 五月天婷婷色综合| 欧美亚洲国产bt| 欧美日韩国产综合视频| 久久久久这里只有精品| 四虎国产精品免费久久5151| 热re99久久精品国产99热| 亚洲乱码久久| 蜜臀av粉嫩av懂色av| 综合久久久久综合| 中文在线免费看视频| 亚洲欧美国产日韩天堂区| av免费在线视| 成人黄色在线免费观看| 91精品国产91久久综合| 欧美成人黄色网址| 国产校园另类小说区| 精品人妻一区二区三区免费看| 精品国产免费视频| 亚洲小说区图片区都市| 91色精品视频在线| 香蕉国产精品| 6080国产精品| **性色生活片久久毛片| 国产乱码久久久| 久久综合免费视频| 成人噜噜噜噜| 国产欧美123| 国产**成人网毛片九色| 免费麻豆国产一区二区三区四区| 欧美一区二区视频在线观看| 成人video亚洲精品| 91成人免费观看| 欧美日韩第一区| 精品影片一区二区入口| 午夜精品久久一牛影视| 艳母动漫在线看| 茄子视频成人在线| 欧美综合在线视频观看| 亚洲天堂网2018| 亚洲黄一区二区三区| 亚洲欧美国产高清va在线播放| 久久久久久久久久久久久久久久久久av| 成人爽a毛片| 18岁视频在线观看| 国产精品国产a| 精品人妻无码一区二区色欲产成人| 久久97精品久久久久久久不卡| 白白在线精品| 欧美日韩一区二区在线免费观看| 在线观看麻豆| 欧美一三区三区四区免费在线看 | 日韩三级av高清片| 日韩精品视频在线观看视频| 99国产麻豆精品| 中文字幕一区二区三区四区视频 | 日本一区二区三区四区在线观看| 日韩黄色小视频| 成人免费黄色小视频| 精品对白一区国产伦| 网友自拍亚洲| 四虎永久免费网站| 成人精品国产福利| 波多野结衣一二区| 美女久久久久久久久久久| jizz18欧美18| 在线免费视频a| 一区二区久久久| 国产系列电影在线播放网址| 91九色精品视频| 性色一区二区三区| 成人在线观看小视频| 日韩电影中文字幕在线| 日韩国产一二三区| 亚洲人精品午夜射精日韩| 国产精品福利电影一区二区三区四区| 亚洲av无码一区二区乱子伦| 国产精品第3页| 亚洲高清激情| 免费成人深夜蜜桃视频| 亚洲国产中文字幕久久网| 国产成人福利夜色影视| 精品无码一区二区三区在线| 国产精品嫩草影院av蜜臀| 少妇av在线播放| 91入口在线观看| 免费av网站大全久久| 丰满少妇乱子伦精品看片|