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

復雜分布式架構下的計算治理之路

開發 架構 分布式
在當前的復雜分布式架構環境下,服務治理已經大行其道。但目光往下一層,從上層 APP、Service,到底層計算引擎這一層面,卻還是各個引擎各自為政,Client-Server模式緊耦合滿天飛的情況。

 引子

在當前的復雜分布式架構環境下,服務治理已經大行其道。但目光往下一層,從上層 APP、Service,到底層計算引擎這一層面,卻還是各個引擎各自為政,Client-Server模式緊耦合滿天飛的情況。如何做好“計算治理”,讓復雜環境下各種類型的大量計算任務,都能更簡潔、靈活、有序、可控的提交執行,和保障成功返回結果?計算中間件 Linkis 就是上述問題的實踐。

[[311888]]

一、復雜分布式架構環境下的計算治理有什么問題?

1. 什么是復雜分布式架構環境?

分布式架構,指的是系統的組件分布在通過網絡相連的不同計算機上,組件之間通過網絡傳遞消息進行通信和協調,協同完成某一目標。一般來說有水平(集群化)和垂直(功能模塊切分)兩個拆分方向,以解決高內聚低耦合、高并發、高可用等方面問題。

多個分布式架構的系統,組成分布式系統群,就形成了一個相對復雜的分布式架構環境。通常包含多種上層應用服務,多種底層基礎計算存儲引擎。如下圖所示:

 

復雜分布式架構下的計算治理之路

 

2. 什么是計算治理?

就像《微服務設計》一書中提到的,如同城市規劃師在面對一座龐大、復雜且不斷變化的城市時,所需要做的規劃、設計和治理一樣,龐大復雜的軟件系統環境中的各種區域、元素、角色和關系,也需要整治和管理,以使其以一種更簡潔、優雅、有序、可控的方式協同運作,而不是變成一團亂麻。

在當前的復雜分布式架構環境下,大量 APP、Service 間的通信、協調和管理,已經有了從 SOA(Service-Oriented Architecture)到微服務的成熟理念,及從 ESB 到 Service Mesh 的眾多實踐,來實現其從服務注冊發現、配置管理、網關路由,到流控熔斷、日志監控等一系列完整的服務治理功能。服務治理框架的“中間件”層設計,可以很好的實現服務間的解耦、異構屏蔽和互操作,并提供路由、流控、狀態管理、監控等治理特性的共性提煉和復用,增強整個架構的靈活性、管控能力、可擴展性和可維護性。

但目光往下一層,你會發現在從 APP、Service,到后臺引擎這一層面,卻還是各個引擎各自為政,Client-Server 模式緊耦合滿天飛的情況。在大量的上層應用,和大量的底層引擎之間,缺乏一層通用的“中間件”框架設計。類似下圖的網狀。

 

復雜分布式架構下的計算治理之路

 

計算治理,關注的正是上層應用和底層計算(存儲)引擎之間,從 Client 到 Server 的連接層范圍,所存在的緊耦合、靈活性和管控能力欠缺、缺乏復用能力、可擴展性、可維護性差等問題。要讓復雜分布式架構環境下各種類型的計算任務,都能更簡潔、靈活、有序、可控的提交執行,和成功返回結果。如下圖所示:

 

復雜分布式架構下的計算治理之路

 

3. 計算治理問題描述

更詳細的來看計算治理的問題,可以分為如下治(architecture,架構層面)和理(insight,細化特性)兩個層面。

(1)計算治理之治(architecture)- 架構層面問題。

緊耦合問題,上層應用和底層計算存儲引擎間的 CS 連接模式。

所有 APP& Service 和底層計算存儲引擎,都是通過 Client-Server 模式相連,處于緊耦合狀態。以 Analytics Engine 的 Spark 為例,如下圖:

 

復雜分布式架構下的計算治理之路

 

這種狀態會帶來如下問題:

  • 引擎 client 的任何改動(如版本升級),將直接影響每一個嵌入了該 client 的上層應用;當應用系統數量眾多、規模龐大時,一次改動的成本會很高;
  • 直連模式,導致上層應用缺乏,對跨底層計算存儲引擎實例級別的,路由選擇、負載均衡等能力;或者說依賴于特定底層引擎提供的特定連接方式實現,有的引擎有一些,有的沒有;
  • 隨著時間推移,不斷有新的上層應用和新的底層引擎加入進來,整體架構和調用關系將愈發復雜,可擴展性、可靠性和可維護性降低。

重復造輪子問題,每個上層應用工具系統都要重復解決計算治理問題。

每個上層應用都要重復的去集成各種 client,創建和管理 client 到引擎的連接及其狀態,包括底層引擎元數據的獲取與管理。在并發使用的用戶逐漸變多、并發計算任務量逐漸變大時,每個上層應用還要重復的去解決多個用戶間在 client 端的資源爭用、權限隔離,計算任務的超時管理、失敗重試等等計算治理問題。

 

復雜分布式架構下的計算治理之路

 

想象你有 10 個并發任務數過百的上層應用,不管是基于 Web 的 IDE 開發環境、可視化 BI 系統,還是報表系統、工作流調度系統等,每個接入 3 個底層計算引擎。上述的計算治理問題,你可能得逐一重復的去解決 10*3=30 遍,而這正是當前在各個公司不斷發生的現實情況,其造成的人力浪費不可小覷。

擴展難問題,上層應用新增對接底層計算引擎,維護成本高,改動大。

在 CS 的緊耦合模式下,上層應用每新增對接一個底層計算引擎,都需要有較大改動。

以對接 Spark 為例,在上層應用系統中的每一臺需要提交 Spark 作業的機器,都需要部署和維護好 Java 和 Scala 運行時環境和變量,下載和部署 Spark Client 包,且配置并維護 Spark 相關的環境變量。如果要使用 Spark on YARN 模式,那么你還需要在每一臺需要提交 Spark 作業的機器上,去部署和維護 Hadoop 相關的 jar 包和環境變量。再如果你的 Hadoop 集群需要啟用 Kerberos 的,那么很不幸,你還需要在上述的每臺機器去維護和調試 keytab、principal 等一堆 Kerberos 相關配置。

 

復雜分布式架構下的計算治理之路

 

這還僅僅是對接 Spark 一個底層引擎。隨著上層應用系統和底層引擎的數量增多,需要維護的關系會是個笛卡爾積式的增長,光 Client 和配置的部署維護,就會成為一件很令人頭疼的事情。

應用孤島問題,跨不同應用工具、不同計算任務間的互通問題。

多個相互有關聯的上層應用,向后臺引擎提交執行的不同計算任務之間,往往是有所關聯和共性的,比如需要共享一些用戶定義的運行時環境變量、函數、程序包、數據文件等。當前情況往往是一個個應用系統就像一座座孤島,相關信息和資源無法直接共享,需要手動在不同應用系統里重復定義和維護。

典型例子是在數據批處理程序開發過程中,用戶在數據探索開發 IDE 系統中定義的一系列變量、函數,到了數據可視化系統里往往又要重新定義一遍;IDE 系統運行生成的數據文件位置和名稱,不能直接方便的傳遞給可視化系統;依賴的程序包也需要從 IDE 系統下載、重新上傳到可視化系統;到了工作流調度系統,這個過程還要再重復一遍。不同上層應用間,計算任務的運行依賴缺乏互通、復用能力。

 

復雜分布式架構下的計算治理之路

 

(2)計算治理之理(insight)- 細化特性問題:

除了上述的架構層面問題,要想讓復雜分布式架構環境下,各種類型的計算任務,都能更簡潔、靈活、有序、可控的提交執行,和成功返回結果,計算治理還需關注高并發,高可用,多租戶隔離,資源管控,安全增強,計算策略等等細化特性問題。這些問題都比較直白易懂,這里就不一一展開論述了。

二、基于計算中間件 Linkis 的計算治理 - 治之路(Architecture)

1. Linkis 架構設計介紹

核心功能模塊與流程

計算中間件 Linkis,是微眾銀行專門設計用來解決上述緊耦合、重復造輪子、擴展難、應用孤島等計算治理問題的。當前主要解決的是復雜分布式架構的典型場景 - 數據平臺環境下的計算治理問題。

Linkis 作為計算中間件,在上層應用和底層引擎之間,構建了一層中間層。能夠幫助上層應用,通過其對外提供的標準化接口(如 HTTP, JDBC, Java …),快速的連接到多種底層計算存儲引擎(如 Spark、Hive、TiSpark、MySQL、Python 等),提交執行各種類型的計算任務,并實現跨上層應用間的計算任務運行時上下文和依賴的互通和共享。且通過提供多租戶、高并發、任務分發和管理策略、資源管控等特性支持,使得各種計算任務更靈活、可靠、可控的提交執行,成功返回結果,大大降低了上層應用在計算治理層的開發和運維成本、與整個環境的架構復雜度,填補了通用計算治理軟件的空白。

 

復雜分布式架構下的計算治理之路

 

 

復雜分布式架構下的計算治理之路

 

要更詳細的了解計算任務通過 Linkis 的提交執行過程,我們先來看看 Linkis 核心的“計算治理服務”部分的內部架構和流程。如下圖:

 

復雜分布式架構下的計算治理之路

 

計算治理服務:計算中間件的核心計算框架,主要負責作業調度和生命周期管理、計算資源管理,以及引擎連接器的生命周期管理。

公共增強服務:通用公共服務,提供基礎公共功能,可服務于 Linkis 各種服務及上層應用系統。

其中計算治理服務的主要模塊如下:

  • 入口服務 Entrance,負責接收作業請求,轉發作業請求給對應的 Engine,并實現異步隊列、高并發、高可用、多租戶隔離
  • 應用管理服務 AppManager,負責管理所有的 EngineConnManager 和 EngineConn,并提供 EngineConnManager 級和 EngineConn 級標簽能力;加載新引擎插件,向 RM 申請資源, 要求 EM 根據資源創建 EngineConn;基于標簽功能,為作業分配可用 EngineConn。
  • 資源管理服務 ResourceManager,接收資源申請,分配資源,提供系統級、用戶級資源管控能力,并為 EngineConnManager 級和 EngineConn 提供負載管控。
  • 引擎連接器管理服務 EngineConn Manager,負責啟動 EngineConn,管理 EngineConn 的生命周期,并定時向 RM 上報資源和負載情況。
  • 引擎連接器 EngineConn,負責與底層引擎交互,解析和轉換用戶作業,提交計算任務給底層引擎,并實時監聽底層引擎執行情況,回推相關日志、進度和狀態給 Entrance。

如上圖所示,一個作業的提交執行主要分為以下 11 步:

1. 上層應用向計算中間件提交作業,微服務網關 SpringCloud Gateway 接收作業并轉發給 Entrance。

2. Entrance 消費作業,為作業向 AppManager 申請可用 EngineConn。

3. 如果不存在可復用的 Engine,AppManager 嘗試向 ResourceManager 申請資源,為作業啟動一個新 EngineConn。

4. 申請到資源,要求 EngineConnManager 依照資源啟動新 EngineConn

5.EngineConnManager 啟動新 EngineConn,并主動回推新 EngineConn 信息。

6. AppManager 將新 EngineConn 分配給 Entrance,Entrance 將 EngineConn 分配給用戶作業,作業開始執行,將計算任務提交給 EngineConn。

7.EngineConn 將計算任務提交給底層計算引擎。

8.EngineConn 實時監聽底層引擎執行情況,回推相關日志、進度和狀態給 Entrance,Entrance 通過 WebSocket,主動回推 EngineConn 傳過來的日志、進度和狀態給上層應用系統。

9.EngineConn 執行完成后,回推計算任務的狀態和結果集信息,Entrance 將作業和結果集信息更新到 JobHistory,并通知上層應用系統。

10. 上層應用系統訪問 JobHistory,拿到作業和結果集信息。

11. 上層應用系統訪問 Storage,請求作業結果集。

計算任務管理策略支持

在復雜分布式環境下,一個計算任務往往不單會是簡單的提交執行和返回結果,還可能需要面對提交失敗、執行失敗、hang 住等問題,且在大量并發場景下還需通過計算任務的調度分發,解決租戶間互相影響、負載均衡等問題。

Linkis 通過對計算任務的標簽化,實現了在任務調度、分發、路由等方面計算任務管理策略的支持,并可按需配置超時、自動重試,及灰度、多活等策略支持。

 

復雜分布式架構下的計算治理之路

 

基于 Spring Cloud 微服務框架

說完了業務架構,我們現在來聊聊技術架構。在計算治理層環境下,很多類型的計算任務具有生命周期較短的特征,如一個 Spark job 可能幾十秒到幾分鐘就執行完,EngineConn(EnginConnector)會是大量動態啟停的狀態。前端用戶和 Linkis 中其他管理角色的服務,需要能夠及時動態發現相關服務實例的狀態變化,并獲取最新的服務實例訪問地址信息。同時需要考慮,各模塊間的通信、路由、協調,及各模塊的橫向擴展、負載均衡、高可用等能力。

基于以上需求,Linkis 實際是基于 Spring Cloud 微服務框架技術,將上述的每一個模塊 / 角色,都封裝成了一個微服務,構建了多個微服務組,整合形成了 Linkis 的完整計算中間件能力。

 

復雜分布式架構下的計算治理之路

 

從多租戶管理角度,上述服務可區分為租戶相關服務,和租戶無關服務兩種類型。租戶相關服務,是指一些任務邏輯處理負荷重、資源消耗高,或需要根據具體租戶、用戶、物理機器等,做隔離劃分、避免相互影響的服務,如 Entrance, EnginConn(EnginConnector) Manager, EnginConn;其他如 App Manger, Resource Manager、Context Service 等服務,都是租戶無關的。

Eureka 承擔了微服務動態注冊與發現中心,及所有租戶無關服務的負載均衡、故障轉移功能。

Eureka 有個局限,就是在其客戶端,對后端微服務實例的發現與狀態刷新機制,是客戶端主動輪詢刷新,最快可設 1 秒 1 次(實際要幾秒才能完成刷新)。這樣在 Linkis 這種需要快速刷新大量后端 EnginConn 等服務的狀態的場景下,時效得不到滿足,且定時輪詢刷新對 Eureka server、對后端微服務實例的成本都很高。

為此我們對 Spring Cloud Ribbon 做了改造,在其中封裝了 Eureka client 的微服務實例狀態刷新方法,并把它做成滿足條件主動請求刷新,而不會再頻繁的定期輪詢。從而在滿足時效的同時,大大降低了狀態獲取的成本。

 

復雜分布式架構下的計算治理之路

 

Spring Cloud Gateway 承擔了外部請求 Linkis 的入口網關的角色,幫助在服務實例不斷發生變化的情況下,簡化前端用戶的調用邏輯,快速方便的獲取最新的服務實例訪問地址信息。

Spring Cloud Gateway 有個局限,就是一個 WebSocket 客戶端只能將請求轉發給一個特定的后臺服務,無法完成一個 WebSocket 客戶端通過網關 API 對接后臺多個 WebSocket 微服務,而這在我們的 Entrance HA 等場景需要用到。

為此 Linkis 對 Spring Cloud Gateway 做了相應改造,在 Gateway 中實現了 WebSocket 路由轉發器,用于與客戶端建立 WebSocket 連接。建立連接成功后,會自動分析客戶端的 WebSocket 請求,通過規則判斷出請求該轉發給哪個后端微服務,然后將 WebSocket 請求轉發給對應的后端微服務實例。詳見 Github 上 Linkis 的 Wiki 中,“Gateway 的多 WebSocket 請求轉發實現”一文。

 

復雜分布式架構下的計算治理之路

 

Spring Cloud OpenFeign提供的 HTTP 請求調用接口化、解析模板化能力,幫助 Linkis 構建了底層 RPC 通信框架。

但基于 Feign 的微服務之間 HTTP 接口的調用,只能滿足簡單的 A 微服務實例根據簡單的規則隨機選擇 B 微服務之中的某個服務實例,而這個 B 微服務實例如果想異步回傳信息給調用方,是無法實現的。同時,由于 Feign 只支持簡單的服務選取規則,無法做到將請求轉發給指定的微服務實例,無法做到將一個請求廣播給接收方微服務的所有實例。

Linkis 基于 Feign 實現了一套自己的底層 RPC 通信方案,集成到了所有 Linkis 的微服務之中。一個微服務既可以作為請求調用方,也可以作為請求接收方。作為請求調用方時,將通過 Sender 請求目標接收方微服務的 Receiver;作為請求接收方時,將提供 Receiver 用來處理請求接收方 Sender 發送過來的請求,以便完成同步響應或異步響應。如下圖示意。詳見 Github 上 Linkis 的 Wiki 中,“Linkis RPC 架構介紹”一文。

 

復雜分布式架構下的計算治理之路

 

至此,Linkis 對上層應用和底層引擎的解耦原理,其核心架構與流程設計,及基于 Spring Cloud 微服務框架實現的,各模塊微服務化動態管理、通信路由、橫向擴展能力介紹完畢。

2. 解耦:Linkis 如何解耦上層應用和底層引擎

Linkis 作為計算中間件,在上層應用和底層引擎之間,構建了一層中間層。上層應用所有計算任務,先通過 HTTP、WebSocket、Java 等接口方式提交給 Linkis,再由 Linkis 轉交給底層引擎。原有的上層應用以 CS 模式直連底層引擎的緊耦合得以解除,因此實現了解耦。如下圖所示:

 

復雜分布式架構下的計算治理之路

 

通過解耦,底層引擎的變動有了 Linkis 這層中間件緩沖,如引擎 client 的版本升級,無需再對每一個對接的上層應用做逐個改動,可在 Linkis 層統一完成。并能在 Linkis 層,實現對上層應用更加透明和友好的升級策略,如灰度切換、多活等策略支持。且即使后繼接入更多上層應用和底層引擎,整個環境復雜度也不會有大的變化,大大降低了開發運維工作負擔。

3. 復用:對于上層應用,Linkis 如何凝練計算治理模塊供復用,避免重復開發

上層應用復用 Linkis 示例(Scriptis)

有了 Linkis,上層應用可以基于 Linkis,快速實現對多種后臺計算存儲引擎的對接支持,及變量、函數等自定義與管理、資源管控、多租戶、智能診斷等計算治理特性。

好處:

以微眾銀行與 Linkis 同時開源的,交互式數據開發探索工具 Scriptis 為例,Scriptis 的開發人員只需關注 Web UI、多種數據開發語言支持、腳本編輯功能等純前端功能實現,Linkis 包辦了其從存儲讀寫、計算任務提交執行、作業狀態日志更新、資源管控等等幾乎所有后臺功能。基于 Linkis 的大量計算治理層能力的復用,大大降低了 Scriptis 項目的開發成本,使得 Scritpis 目前只需要有限的前端人員,即可完成維護和版本迭代工作。

如下圖,Scriptis 項目 99.5% 的代碼,都是前端的 JS、CSS 代碼。后臺基本完全復用 Linkis。

 

復雜分布式架構下的計算治理之路

 

4. 快速擴展:對于底層引擎,Linkis 如何以很小的開發量,實現新底層引擎快速對接

模塊化可插拔的計算引擎接入設計,新引擎接入簡單快速

對于典型交互式模式計算引擎(提交任務,執行,返回結果),用戶只需要 buildApplication 和 executeLine 這 2 個方法,沒錯,2 個方法,2 個方法,就可以完成一個新的計算引擎接入 Linkis,代碼量極少。示例如下。

(1). AppManager 部分:用戶必須實現的接口是 ApplicationBuilder,用來封裝新引擎連接器實例啟動命令。

  1. // 用戶必須實現的方法: 用于封裝新引擎連接器實例啟動命令defbuildApplication(protocol:Protocol):ApplicationRequest  

(2). EngineConn 部分:用戶只需實現 executeLine 方法,向新引擎提交執行計算任務:

  1. // 用戶必須實現的方法:用于調用底層引擎提交執行計算任務defexecuteLine(context:EngineConnContext,code:String):ExecuteResponse 

引擎相關其他功能 / 方法都已有默認實現,無定制化需求可直接復用。

5. 連通,Linkis 如何打通應用孤島

通過 Linkis 提供的上下文服務,和存儲、物料庫服務,接入的多個上層應用之間,可輕松實現環境變量、函數、程序包、數據文件等,相關信息和資源的共享和復用,打通應用孤島。

 

復雜分布式架構下的計算治理之路

 

Context Service 上下文服務介紹

Context Service(CS)為不同上層應用系統,不同計算任務,提供了統一的上下文管理服務,可實現上下文的自定義和共享。在 Linkis 中,CS 需要管理的上下文內容,可分為元數據上下文、數據上下文和資源上下文 3 部分。

 

復雜分布式架構下的計算治理之路

 

元數據上下文,定義了計算任務中底層引擎元數據的訪問和使用規范,主要功能如下:

  • 提供用戶的所有元數據信息讀寫接口(包括 Hive 表元數據、線上庫表元數據、其他 NOSQL 如 HBase、Kafka 等元數據);
  • 計算任務內所需元數據的注冊、緩存和管理。
  • 數據上下文,定義了計算任務中數據文件的訪問和使用規范。管理數據文件的元數據。
  • 運行時上下文,管理各種用戶自定義的變量、函數、代碼段、程序包等。
  • 同時 Linkis 也提供了統一的物料管理和存儲服務,上層應用可根據需要對接,從而可實現腳本文件、程序包、數據文件等存儲層的打通。

三、基于計算中間件 Linkis 的計算治理 - 理之路(Insight)

Linkis 計算治理細化特性設計與實現介紹,在高并發、高可用、多租戶隔離、資源管控、計算任務管理策略等方面,做了大量細化考量和實現,保障計算任務在復雜條件下成功執行。

1. 計算任務的高并發支持

Linkis 的 Job 基于多級異步設計模式,服務間通過高效的 RPC 和消息隊列模式進行快速通信,并可以通過給 Job 打上創建者、用戶等多種類型的標簽進行任務的轉發和隔離來提高 Job 的并發能力。通過 Linkis 可以做到 1 個入口服務(Entrance)同時承接超 1 萬 + 在線的 Job 請求。

多級異步的設計架構圖如下:

 

復雜分布式架構下的計算治理之路

 

如上圖所示 Job 從 GateWay 到 Entrance 后,Job 從生成到執行,到信息推送經歷了多個線程池,每個環節都通過異步的設計模式,每一個線程池中的線程都采用運行一次即結束的方式,降低線程開銷。整個 Job 從請求—執行—到信息推送全都異步完成,顯著的提高了 Job 的并發能力。

這里針對計算任務最關鍵的一環 Job 調度層進行說明,海量用戶成千上萬的并發任務的壓力,在 Job 調度層中是如何進行實現的呢?

在請求接收層,請求接收隊列中,會緩存前端用戶提交過來的成千上萬計算任務,并按系統 / 用戶層級劃分的調度組,分發到下游 Job 調度池中的各個調度隊列;到 Job 調度層,多個調度組對應的調度器,會同時消費對應的調度隊列,獲取 Job 并提交給 Job 執行池進行執行。過程中大量使用了多線程、多級異步調度執行等技術。示意如下圖:

 

復雜分布式架構下的計算治理之路

 

2. 其他細化特性

Linkis 還在高可用、多租戶隔離、資源管控、計算任務管理策略等方面,做了很多細化考量和實現。篇幅有限,在這里不再詳述每個細化特性的實現,可參見 Github 上 Linkis 的 Wiki。后繼我們會針對 Linkis 的計算治理 - 理之路(Insight)的細化特性相關內容,再做專題介紹。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-03-25 08:40:32

分布式架構

2022-04-07 18:41:31

云計算數據治理

2025-07-21 01:00:00

2024-03-01 09:53:34

2017-09-01 05:35:58

分布式計算存儲

2017-07-26 14:55:32

分布式技術架構

2023-05-29 14:07:00

Zuul網關系統

2017-01-10 16:18:26

分布式存儲建設

2019-10-10 09:16:34

Zookeeper架構分布式

2020-02-10 19:16:52

服務端高并發架構

2019-12-17 11:18:37

高并發分布式架構

2019-09-25 09:01:53

高并發架構分布式

2017-03-14 11:52:52

微服務架構數據管理

2023-02-21 16:41:41

分布式相機鴻蒙

2012-09-19 14:09:20

Hadoop開源

2013-03-26 13:43:08

Java分布式計算

2023-12-26 08:59:52

分布式場景事務機制

2019-06-19 15:40:06

分布式鎖RedisJava

2018-12-14 10:06:22

緩存分布式系統

2019-05-07 11:57:26

分布式架構負載均衡
點贊
收藏

51CTO技術棧公眾號

精品欧美午夜寂寞影院| 日韩在线视频观看免费| 99精品视频在线观看免费播放 | 欧美午夜精品理论片a级大开眼界| 日本中文字幕免费| 成人在线电影在线观看视频| 欧美一区二区视频在线观看| 免费国产黄色网址| 亚洲视频tv| www.av亚洲| 国产精品日韩在线观看| 免费视频网站www| 亚洲最好看的视频| 3atv在线一区二区三区| 日本少妇高潮喷水视频| 男人资源在线播放| 成人精品视频.| 国产精品男人的天堂| 免费在线视频观看| 色综合天天综合网中文字幕| 亚洲丁香婷深爱综合| 在线观看免费av网址| 亚洲精品国产精品国产| 夜夜亚洲天天久久| 在线观看日韩片| 欧美白人做受xxxx视频| 东方欧美亚洲色图在线| 国产在线播放不卡| 久久久久在线视频| 国产专区一区| 啊v视频在线一区二区三区| 中文字幕无码人妻少妇免费| 国产高清视频一区二区| 欧美专区在线观看一区| 国产一区二区网| 在线免费av导航| 国产精品私房写真福利视频| 牛人盗摄一区二区三区视频| 黄频网站在线观看| 国产麻豆日韩欧美久久| 国产欧美精品xxxx另类| 69亚洲精品久久久蜜桃小说| 国内精品99| 萌白酱国产一区二区| chinese全程对白| 欧美一区二区三区激情视频| 亚洲精品永久免费| 亚洲 欧美 日韩在线| 一本一道久久a久久| 91麻豆精品国产91久久久使用方法| 国产熟人av一二三区| 手机看片久久| 一本大道av伊人久久综合| 欧美视频在线观看网站| 91九色在线看| 午夜亚洲福利老司机| 阿v天堂2018| 暧暧视频在线免费观看| 亚洲成人综合视频| 国产av麻豆mag剧集| 黄色视屏在线免费观看| 欧美日韩国产区| 日本三级免费网站| 欧美二三四区| 色www精品视频在线观看| 哪个网站能看毛片| 日韩欧美少妇| 欧美日韩一级大片网址| www.久久av.com| 精品午夜视频| 精品捆绑美女sm三区| 国产真实乱人偷精品| 亚洲第一二三区| 尤物yw午夜国产精品视频| 蜜桃视频最新网址| 一区二区三区在线观看免费| 欧美理论电影在线播放| 日韩av在线天堂| 久久一二三四| 91精品中文在线| 亚洲男人天堂久久| 久久麻豆一区二区| 一区精品在线| 性直播体位视频在线观看| 亚洲福利视频三区| 日韩精品免费播放| 成人自拍视频| 亚洲国产精品高清久久久| 国产男男chinese网站| 日韩在线不卡| 久久久噜久噜久久综合| 人妻丰满熟妇av无码区| 国内精品写真在线观看| 国产精品国产三级国产专区53 | 亚洲欧美在线观看视频| 视频精品一区二区| 91观看网站| 欧美日本网站| 亚洲免费毛片网站| www.国产区| 日本成人手机在线| 亚洲欧洲中文天堂| 久久久久久久久久久久国产| 可以免费看不卡的av网站| 91免费人成网站在线观看18| 亚洲区小说区图片区| 中文字幕日韩欧美一区二区三区| 日韩精品一区在线视频| 国产黄色一区| 日韩大片免费观看视频播放| 91n在线视频| 先锋影音久久| 亚洲最大成人在线| 国产精品一级伦理| 午夜电影一区二区| 色婷婷激情视频| 国产成人黄色| 韩剧1988在线观看免费完整版| 伊人网站在线观看| www成人在线观看| 日韩美女爱爱视频| 欧美v亚洲v综合v国产v仙踪林| 亚洲精品久久久一区二区三区 | 欧洲一区二区视频| 精品欧美在线观看| 亚洲欧洲成人精品av97| 久久久久久久少妇| 欧美日韩一区二区三区四区不卡 | 久久国产精品一区二区三区四区| 国产一二区在线观看| 欧美私人免费视频| av中文字幕免费观看| 99视频+国产日韩欧美| 91久久国产综合久久蜜月精品| 999在线视频| 日韩欧美国产高清91| 中文字幕第3页| 国产精品激情| 99re在线视频上| 成人在线观看亚洲| 777a∨成人精品桃花网| 国产三级在线观看完整版| 先锋亚洲精品| 欧美凹凸一区二区三区视频| cao在线视频| 日韩精品最新网址| 欧美亚洲日本在线| 欧美丰满熟妇bbbbbb| 激情久久久久久| 99一区二区| 少妇av在线| 日韩欧美国产一二三区| 欧美日韩亚洲国产另类| 国产一区二区三区蝌蚪| 热这里只有精品| 国产乱码精品一区二区三区亚洲人| 中文字幕日韩精品在线| 中文字幕91爱爱| 国产日韩精品一区二区浪潮av| 韩国一区二区av| 精品国产一级毛片| 国产精品久久久久久久久久久新郎| 黄色在线视频观看网站| 91搞黄在线观看| 美国精品一区二区| 久久狠狠亚洲综合| 潘金莲一级淫片aaaaa免费看| 亚洲日本免费电影| 免费av在线一区| www黄色网址| 亚洲1区2区3区4区| 素人fc2av清纯18岁| 日本亚洲天堂网| 一区二区冒白浆视频| 免费精品一区| 欧美激情一区二区三区久久久| 亚洲国产精品欧美久久| 午夜av一区二区| 国产精久久一区二区三区| 蜜桃视频一区二区| 777久久精品一区二区三区无码| 91综合精品国产丝袜长腿久久| 97精品一区二区三区| fc2在线中文字幕| 欧美二区在线观看| 国产午夜久久久| 国产日韩欧美麻豆| 波多野结衣网页| 亚洲影视在线| 一区二区在线观看网站| 岛国精品一区| 国产精品久久二区| 美女航空一级毛片在线播放| 亚洲精品中文字幕av| 亚洲中文字幕一区二区| 亚洲线精品一区二区三区| 性高潮久久久久久久| 国产一区二区中文字幕| 精品国产免费av| 欧美gayvideo| 国产精品播放| 国产欧美自拍| 韩国日本不卡在线| 免费黄网站在线| 日韩av一卡二卡| 一区二区www| 欧美日韩一区二区三区在线免费观看| 超碰人人人人人人人| 成人免费高清视频| 一个色综合久久| 99热免费精品| 中文字幕在线中文| 国产精品羞羞答答在线观看| 成人国产1314www色视频| 99久久婷婷国产综合精品首页| 欧美激情中文网| 日本福利专区在线观看| 亚洲福利在线播放| 国产手机精品视频| 欧美性极品少妇| 日韩 欧美 精品| 亚洲精品免费在线| 久久久精品成人| 久久夜色精品一区| 精品人妻一区二区免费| 国内成人精品2018免费看| 国产精品欧美激情在线观看| 国产综合精品| 日韩人妻精品一区二区三区| 欧美亚洲激情| 免费久久99精品国产自| 精品国产乱子伦一区二区| 亚洲xxxxx电影| 先锋影音网一区二区| 国产精品jvid在线观看蜜臀| 日韩电影毛片| 97国产精品免费视频| 性xxxfreexxxx性欧美| 日韩中文字幕国产| 97超碰人人在线| 亚洲欧美日韩在线高清直播| 性感美女视频一二三| 精品国偷自产国产一区| 亚洲国产精品久久人人爱潘金莲 | 国产亚洲婷婷免费| 国产三级国产精品| 波多野结衣中文字幕一区二区三区 | 国产精品xvideos88| 欧美一级免费在线观看| 91视频综合| 在线视频欧美一区| 色偷偷综合网| 正义之心1992免费观看全集完整版| 热久久天天拍国产| 亚洲一区二区三区欧美| 欧美a级片视频| ijzzijzzij亚洲大全| 中文在线日韩| 999一区二区三区| 在线欧美三区| 阿v天堂2017| 久久男女视频| 热久久精品免费视频| 蜜桃视频在线一区| 成人综合久久网| 国产激情91久久精品导航| 特种兵之深入敌后| 成人av电影免费在线播放| 麻豆国产精品一区| 久久一区二区三区四区| 97在线观看免费视频| 日韩一区有码在线| 免看一级a毛片一片成人不卡| 亚洲午夜免费福利视频| xxxx.国产| 欧美视频一区二| 91精品国产乱码久久久| 日韩精品一区二区三区四区 | 日韩精品极品在线观看| 国模吧精品人体gogo| 日韩在线视频国产| 欧美videos另类精品| 欧美在线国产精品| 国产香蕉久久| 成人久久18免费网站漫画| 欧美挤奶吃奶水xxxxx| 日韩影视精品| 欧美一区高清| 国产精品无码人妻一区二区在线 | 综合久久一区二区三区| 精品无码人妻一区二区三区| 欧美性猛交xxxx乱大交3| 91禁在线观看| 亚洲国产高潮在线观看| 国产在线视频资源| 欧美国产一区二区三区| 国产精品专区免费| 亚洲影院在线看| 色爱综合av| 日本黄色a视频| 亚洲综合不卡| 69久久精品无码一区二区| 久久久国际精品| 欧美色图亚洲视频| 在线看国产一区| 狠狠人妻久久久久久综合麻豆| 在线观看国产精品91| 黄色在线观看www| 成人一区二区电影| 亚洲毛片免费看| 久久综合久久久久| 久久精品国产网站| 日本69式三人交| 亚洲免费观看高清完整版在线观看熊| 九一国产在线观看| 欧美一级午夜免费电影| 国产黄在线观看免费观看不卡| 欧美黄色性视频| 日韩电影精品| 日韩久久不卡| 国产欧美另类| 亚洲黄色小说在线观看| 国产精品久久国产精麻豆99网站| 日本高清www免费视频| 日韩免费一区二区| 浪潮av一区| 国产精品久久久久久久久免费| 日韩aaa久久蜜桃av| 日韩久久久久久久久久久久| 捆绑调教一区二区三区| 中文字幕免费高清| 一本大道久久a久久综合| 色婷婷av一区二区三区之红樱桃| 美女啪啪无遮挡免费久久网站| 78精品国产综合久久香蕉| 欧洲亚洲一区二区| 国产精品亚洲欧美| 97人妻精品一区二区三区免| 亚洲高清免费一级二级三级| 国产成人精品一区二三区四区五区| 在线视频日本亚洲性| 日韩三区免费| 日韩精品久久久毛片一区二区| 免费精品视频| 中文字幕av网址| 色综合久久天天| 青青草免费观看免费视频在线| 久久久久久久久爱| 国产精品18hdxxxⅹ在线| 欧美日韩福利在线| 成人听书哪个软件好| 激情五月婷婷小说| 精品三级在线观看| 7777kkk亚洲综合欧美网站| 国产精品免费一区二区三区观看| 国产精品观看| 日韩 中文字幕| 日韩欧美999| 国产大片在线免费观看| 国产精品免费看久久久香蕉| 成人羞羞在线观看网站| 国产乱女淫av麻豆国产| 亚洲欧美一区二区不卡| av一级黄色片| 午夜精品久久17c| 欧美亚洲色图校园春色| 日本xxxxxxx免费视频| 国产精品天美传媒沈樵| 国产丰满果冻videossex| 久久久噜噜噜久噜久久| 欧美三级午夜理伦三级小说| 国产精品99久久免费黑人人妻| 欧美激情一区二区三区四区| 一区二区不卡视频在线观看| 欧美另类高清videos| 牛牛影视一区二区三区免费看| 人妻有码中文字幕| 国产精品欧美一级免费| 精品国产亚洲av麻豆| 97成人在线视频| 成人羞羞网站入口免费| 日本一级大毛片a一 | www.av88| 久久久精品999| 欧美午夜寂寞| 天堂中文av在线| 亚洲第一福利一区| 成人网视频在线观看| 91亚洲精品久久久久久久久久久久| 一区精品久久| 妺妺窝人体色WWW精品| 日韩午夜三级在线| 亚洲校园激情春色| 中国一级黄色录像| 久久综合九色综合欧美98| 一区二区三区免费观看视频| 国内外成人免费激情在线视频| 精品久久精品| 午夜影院福利社| 欧美日韩亚洲丝袜制服|