日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

可伸縮架構案例:數據太多,如何無限擴展你的數據庫?

來源: 責編: 時間:2024-04-02 17:21:41 226觀看
導讀隨著我們業務的發展,每日的訂單量接近 100 萬。這個時候,訂單庫已有上億條記錄,訂單表有上百個字段,這些數據存儲在一個 Oracle 數據庫里。當時,我們已經實現了訂單的服務化改造,只有訂單服務才能訪問這個訂單數據庫,但隨著

隨著我們業務的發展,每日的訂單量接近 100 萬。這個時候,訂單庫已有上億條記錄,訂單表有上百個字段,這些數據存儲在一個 Oracle 數據庫里。當時,我們已經實現了訂單的服務化改造,只有訂單服務才能訪問這個訂單數據庫,但隨著單量的增長以及在線促銷的常態化,單一數據庫的存儲容量和訪問性能都已經不能滿足業務需求了,訂單數據庫已成為系統的瓶頸。所以,對這個數據庫的拆分勢在必行。Vwq28資訊網——每日最新資訊28at.com

數據庫拆分一般有兩種做法,一個是垂直分庫,還有一個是水平分庫。Vwq28資訊網——每日最新資訊28at.com

垂直分庫簡單來說,垂直分庫就是數據庫里的表太多,我們把它們分散到多個數據庫,一般是根據業務進行劃分,把關系密切的表放在同一個數據庫里,這個改造相對比較簡單。Vwq28資訊網——每日最新資訊28at.com

水平分庫某些表太大,單個數據庫存儲不下,或者數據庫的讀寫性能有壓力。通過水平分庫,我們把一張表拆成多張表,每張表存放部分記錄,分別保存在不同的數據庫里,水平分庫需要對應用做比較大的改造。Vwq28資訊網——每日最新資訊28at.com

圖片圖片Vwq28資訊網——每日最新資訊28at.com

通過水平分庫,你們將訂單的基本信息、商品明細和擴展信息分散到多個數據庫中,這樣做主要是為了解決兩個問題:一是減少了單個數據庫的數據量,從而提高了讀寫效率;二是分散了數據庫的負載,使系統能夠更好地擴展和維護。簡而言之,就是讓數據庫更快、系統運行更穩定。Vwq28資訊網——每日最新資訊28at.com

水平分庫后,應用通過訂單服務來訪問多個訂單數據庫,具體的方式如下圖所示:Vwq28資訊網——每日最新資訊28at.com

圖片圖片Vwq28資訊網——每日最新資訊28at.com

原來的一個 Oracle 庫被現在的多個 MySQL 庫給取代了,每個 MySQL 數據庫包括了 1 主 1 備 2 從,都支持讀寫分離,主備之間通過自帶的同步機制來實現數據同步。所以,你可以發現,這個項目實際包含了水平分庫和去 Oracle 兩大改造目標。Vwq28資訊網——每日最新資訊28at.com

分庫維度怎么定?

首先,我們需要考慮根據哪個字段來作為分庫的維度。這個字段選擇的標準是,盡量避免應用代碼和 SQL 性能受到影響。Vwq28資訊網——每日最新資訊28at.com

具體地說,就是現有的 SQL 在分庫后,它的訪問盡量落在單個數據庫里,否則原來的單庫訪問就變成了多庫掃描,不但 SQL 的性能會受到影響,而且相應的代碼也需要進行改造。Vwq28資訊網——每日最新資訊28at.com

具體到訂單數據庫的拆分,你可能首先會想到按照用戶 ID 來進行拆分。這個結論是沒錯,但我們最好還是要有量化的數據支持,不能拍腦袋。這里,最好的做法是,先收集所有 SQL,挑選出 WHERE 語句中最常出現的過濾字段,比如說這里有三個候選對象,分別是用戶 ID、訂單 ID 和商家 ID,每個字段在 SQL 中都會出現三種情況:Vwq28資訊網——每日最新資訊28at.com

單 ID 過濾,比如說“用戶 ID=?”;Vwq28資訊網——每日最新資訊28at.com

多 ID 過濾,比如“用戶 ID IN(?,?,?)”;Vwq28資訊網——每日最新資訊28at.com

該 ID 不出現。Vwq28資訊網——每日最新資訊28at.com

最后,我們分別統計這三個字段的使用情況,假設共有 500 個 SQL 訪問訂單庫,3 個候選字段出現的情況如下:Vwq28資訊網——每日最新資訊28at.com

Vwq28資訊網——每日最新資訊28at.com

圖片圖片Vwq28資訊網——每日最新資訊28at.com

Vwq28資訊網——每日最新資訊28at.com

從這張表格的分析來看,選擇按用戶 ID 進行分庫是顯而易見的最佳選擇。但這只是基于靜態數據的判斷。實際上,不同 SQL 的訪問頻次各不相同,因此,進一步分析每條 SQL 的實際訪問量變得至關重要。在我們的項目中,我們聚焦于執行頻率最高的前15條 SQL,它們占據了總執行次數的85%,具有很高的代表性。通過分析,如果采用用戶 ID 作為分庫的依據,發現這些 SQL 中有85% 的訪問會集中在某個特定的數據庫上,13% 的訪問分布在幾個數據庫中,僅有2% 的訪問需要查詢所有數據庫。因此,從動態的 SQL 執行頻次來看,使用用戶 ID 進行分庫顯然優于采用其他標識符。這樣的量化分析不僅證實了按用戶 ID 分庫是最優策略,而且還明確了分庫對現有系統的具體影響。例如,在本案例中,85% 的 SQL 都會被定向到同一個數據庫,這意味著相對于未分庫的狀態,這部分數據的訪問性能將得到提升,同時也消除了我們對分庫有效性的疑慮,增強了我們進行分庫的決心。Vwq28資訊網——每日最新資訊28at.com

數據怎么分?

一般有兩種數據分法:根據 ID 范圍進行分庫,比如把用戶 ID 為 1 ~ 999 的記錄分到第一個庫,1000 ~ 1999 的分到第二個庫,以此類推。Vwq28資訊網——每日最新資訊28at.com

根據 ID 取模進行分庫,比如把用戶 ID mod 10,余數為 0 的記錄放到第一個庫,余數為 1 的放到第二個庫,以此類推。Vwq28資訊網——每日最新資訊28at.com

這兩種分法,各自存在優缺點,如下表所示:Vwq28資訊網——每日最新資訊28at.com

圖片圖片Vwq28資訊網——每日最新資訊28at.com

Vwq28資訊網——每日最新資訊28at.com

在實踐中,為了運維方便,選擇 ID 取模進行分庫的做法比較多。同時為了數據遷移方便,一般分庫的數量是按照倍數增加的,比如說,一開始是 4 個庫,二次分裂為 8 個,再分成 16 個。這樣對于某個庫的數據,在分裂的時候,一半數據會移到新庫,剩余的可以不用動。與此相反,如果我們每次只增加一個庫,所有記錄都要按照新的模數做調整。Vwq28資訊網——每日最新資訊28at.com

分幾個庫?

確定了數據分片的方案后,接下來要解決的問題是分成多少個數據庫。數據庫能夠處理的記錄數量上限是決定因素之一。Vwq28資訊網——每日最新資訊28at.com

通常情況下,當MySQL數據庫的記錄數超過5000萬,或Oracle數據庫的記錄數超過1億時,數據庫的負載會變得很高,這也取決于字段的數量、大小以及查詢的復雜性。Vwq28資訊網——每日最新資訊28at.com

在保證不超過單個數據庫記錄處理上限的情況下,如果分庫太少,我們無法實現分散存儲的目的,也不能有效減輕數據庫的性能壓力;而分得太多雖然能提高單個數據庫的訪問性能,但對于需要跨多個數據庫進行的訪問操作,應用程序必須同時連接多個數據庫。并行訪問會消耗更多的線程資源,而串行訪問則會大幅增加處理時間。Vwq28資訊網——每日最新資訊28at.com

此外,數據庫數量的增加也意味著更多的硬件成本。因此,確定分庫數量需要進行全面評估。通常建議初次進行數據庫分片時,可以選擇創建4到8個數據庫。例如,在我們的項目中,我們選擇創建了6個數據庫,這一數量能夠滿足訂單業務在未來一段時間內的需求。Vwq28資訊網——每日最新資訊28at.com

Vwq28資訊網——每日最新資訊28at.com

分庫路由

在實施數據庫分庫時,雖然這一變化不涉及業務邏輯,但它必定會對應用程序產生影響。為最小化這種影響,關鍵在于確保分庫邏輯盡可能只在數據訪問層(DAL)處理,而對上層的訂單服務保持透明,這樣,服務層代碼就無需進行大幅修改。實現這一目標確實具有一定挑戰性。以下是一些建議,用以明確DAL和訂單服務各自的職責范圍:Vwq28資訊網——每日最新資訊28at.com

當涉及到單一數據庫的訪問時,例如查詢操作明確指定了用戶ID,則此類SQL查詢應直接路由至特定的數據庫。這種情況下,DAL應負責自動完成路由,且當數據庫分裂時,僅需調整路由邏輯中的模數即可,而無需修改應用層代碼。Vwq28資訊網——每日最新資訊28at.com

對于簡單的跨庫查詢,DAL應負責匯集來自各個分庫的結果,并對上層應用保持透明。Vwq28資訊網——每日最新資訊28at.com

針對需要進行聚合操作的復雜查詢(如涉及groupby、orderby、min、max、avg等操作),建議讓DAL層先行匯總各分庫的查詢結果,隨后由訂單服務層完成進一步處理。這樣的安排既考慮到了DAL層實現所有聚合操作邏輯復雜度較高的問題,也顧及到根據實際經驗,這類需求在應用層處理會更加靈活和高效。Vwq28資訊網——每日最新資訊28at.com

數據訪問層還可以細分為底層的JDBC驅動層和更上層的數據訪問層。若在JDBC層面實現分庫邏輯,會使系統開發復雜度增加,靈活性降低,且目前缺乏成功案例。在實踐中,更常見的做法是在持久層框架的基礎上進一步封裝,形成一個分布式數據訪問層(DDAL),以便實現分庫路由。Vwq28資訊網——每日最新資訊28at.com

分頁處理

在實施水平分庫之后,確實,分頁查詢變得更加復雜,特別是當查詢需要遍歷所有分庫時。例如,假設要按時間順序展示某商家的所有訂單,每頁顯示100條記錄。因為是按商家查詢,需遍歷全部數據庫。若數據庫共有8個,分頁邏輯會相應變復雜:Vwq28資訊網——每日最新資訊28at.com

對于第1頁數據,需從每個數據庫獲取前100條記錄,匯總后共得到800條記錄。接著,在應用層進行二次排序,最終僅保留前100條。Vwq28資訊網——每日最新資訊28at.com

若獲取第10頁數據,每個庫需要提供前1000條記錄(100*10),合計8000條記錄。然后,再次在應用層進行排序,并選取第900到1000條記錄作為結果。Vwq28資訊網——每日最新資訊28at.com

這一機制說明,分頁查詢在分庫環境下需要從每個數據庫中獲取更多數據,并且在應用層執行二次排序,導致內存和處理時間需求隨著分頁深度的增加而顯著增長。與此相對,單庫環境下的分頁查詢則簡單得多,直接從數據庫獲取所需頁的記錄,無需應用層排序。Vwq28資訊網——每日最新資訊28at.com

解決分庫環境下分頁問題的策略包括:Vwq28資訊網——每日最新資訊28at.com

前端應用分頁:可以限制用戶只能訪問前n頁數據。這種做法業務上通常是可接受的,因為用戶很少需要查看后續頁面。若用戶確實需要訪問更深的頁面,可以引導他們縮小查詢范圍再次進行查詢。Vwq28資訊網——每日最新資訊28at.com

在采用用戶 ID 作為分庫依據的系統中,確實存在一個挑戰,即如何高效地處理基于非分庫字段(例如訂單 ID)的查詢。直接查詢所有分庫會導致大量不必要的資源消耗。為了解決這一問題,創建一個訂單 ID 與用戶 ID 之間的映射關系(Lookup 表)是一個有效的策略。這樣,每次基于訂單 ID 的查詢首先訪問 Lookup 表來確定對應的用戶 ID,進而實現對特定分庫的直接定位。Vwq28資訊網——每日最新資訊28at.com

Lookup 表的設計是這樣的:Vwq28資訊網——每日最新資訊28at.com

字段限定:該表僅包含兩個字段——訂單 ID 和用戶 ID,這使得它在存儲和查詢性能上都非常高效。Vwq28資訊網——每日最新資訊28at.com

獨立存儲:Lookup 表存放在一個獨立的數據庫中,這樣做不僅避免了與業務數據的混淆,還能提高查詢效率。Vwq28資訊網——每日最新資訊28at.com

緩存優化:為進一步提高查詢性能,可以利用分布式緩存來存儲這些映射關系。這樣,常見的查詢可以直接從緩存中獲取結果,大大減少數據庫訪問次數。Vwq28資訊網——每日最新資訊28at.com

數據一致性:在新增訂單時,除了在訂單數據庫中添加記錄外,還需同步更新 Lookup 表。這確保了訂單 ID 到用戶 ID 的映射關系始終保持最新。Vwq28資訊網——每日最新資訊28at.com

理任務:對于需要批量獲取數據的場景,可以增加每批次的數據量,例如,每次處理5000條記錄。這樣做可以有效減少分頁訪問次數,減輕數據庫壓力。Vwq28資訊網——每日最新資訊28at.com

利用大數據平臺:在分庫設計中,通常會配備大數據平臺來匯總所有分庫的數據。對于某些分頁查詢,可以考慮通過大數據平臺來實現,特別是當需要全庫數據概覽時。Vwq28資訊網——每日最新資訊28at.com

Vwq28資訊網——每日最新資訊28at.com

整體架構

圖片Vwq28資訊網——每日最新資訊28at.com

在這種架構下,上層應用(如訂單服務)與數據庫之間的交云通過一系列中間層來實現分庫的邏輯,同時保持對上層服務的透明性。這種設計不僅優化了數據存取效率,還大大簡化了應用層的開發和維護。下面是這個系統架構的關鍵組成部分及其功能:Vwq28資訊網——每日最新資訊28at.com

分庫代理:這是分庫邏輯的核心,它負責實現包括聚合運算和訂單 ID 到用戶 ID 的映射在內的所有分庫相關功能。通過分庫代理,訂單服務無需關心背后的分庫邏輯,可以像訪問單一數據庫一樣進行數據操作。Vwq28資訊網——每日最新資訊28at.com

Lookup 表:專門用于存儲訂單 ID 和用戶 ID 之間的映射關系,這樣即使是基于非分庫字段(訂單 ID)的查詢也能快速定位到對應的數據庫。Lookup 表的存在是優化查詢性能的關鍵,尤其是在基于訂單 ID 查詢時,能夠直接指向單個庫,避免全庫掃描。Vwq28資訊網——每日最新資訊28at.com

緩存(Cache):為了進一步提升查詢效率,Lookup 表的數據會被緩存在分布式緩存中。這種機制可以減少對數據庫的直接訪問,快速響應查詢請求,特別是對于高頻訪問的數據。Vwq28資訊網——每日最新資訊28at.com

分布式數據訪問層(DDAL):提供數據庫路由功能,能夠根據用戶 ID 準確地定位到特定的分庫。對于需要跨多個數據庫進行的操作,DDAL 還支持多線程并發訪問模式以及簡單的結果匯總,優化了數據訪問的效率和響應時間。Vwq28資訊網——每日最新資訊28at.com

數據初始化與同步:Lookup 表的初始數據來源于現有的分庫數據,確保了從一開始就能正確映射訂單 ID 和用戶 ID。當有新的訂單記錄產生時,分庫代理會負責異步將這些新記錄寫入Lookup 表,保持數據的一致性和最新性。Vwq28資訊網——每日最新資訊28at.com

如何安全落地?

為了確保訂單水平分庫的平穩過渡,整個遷移和上線過程采用了分階段實施的策略。這種方法不僅能夠降低風險,還能確保在轉換期間系統的穩定性和數據的一致性。下面是實施過程的詳細步驟:Vwq28資訊網——每日最新資訊28at.com

階段一:技術驗證和部分功能遷移

Vwq28資訊網——每日最新資訊28at.com

并行運行Oracle和MySQL數據庫:在初始階段,所有的數據讀寫操作仍然指向原有的Oracle數據庫。同時,通過數據同步程序,定期(例如,每3分鐘)將Oracle數據庫中的數據增量同步到多個MySQL庫中。這樣做的目的是確保MySQL數據庫能夠及時反映最新數據狀態,同時驗證數據同步的準確性和效率。Vwq28資訊網——每日最新資訊28at.com

選擇非實時場景進行驗證:挑選一些對數據實時性要求不高的業務場景(如查詢歷史訂單)作為先行者,將這部分業務的數據訪問切換到MySQL數據庫。這一步驟旨在驗證整個方案的可行性,包括分庫代理、DDAL、Lookup表等基礎設施的功能和性能。Vwq28資訊網——每日最新資訊28at.com

階段二:全面業務遷移

Vwq28資訊網——每日最新資訊28at.com

全面接入MySQL:在第一階段驗證無大的技術問題后,接下來將所有實時讀寫操作切換到MySQL數據庫。這一步驟要求徹底廢棄Oracle數據庫,意味著MySQL將成為系統的主要數據存儲方案。Vwq28資訊網——每日最新資訊28at.com

業務功能驗證:在這一階段,重點是驗證遷移后的業務功能是否正常。所有依賴訂單服務的應用都需要接入新的MySQL數據庫。通過大量的測試來確保性能和功能符合預期。Vwq28資訊網——每日最新資訊28at.com

實施這個分庫方案時,分兩個階段一次性成功地完成了上線,特別是在第二階段,超過100個依賴訂單服務的應用僅通過簡單重啟就順利完成了系統升級,期間未遇到較大的問題。這個案例充分證明了分階段實施策略的有效性,同時也展示了良好的前期準備和詳盡測試的重要性。通過這種方式,可以在最大程度上減少遷移帶來的風險,確保系統遷移的平穩執行。Vwq28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-80865-0.html可伸縮架構案例:數據太多,如何無限擴展你的數據庫?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 終于有人把Autowired注解講清楚了,贊!!!

下一篇: 三分鐘學會消息隊列實踐

標簽:
  • 熱門焦點
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據今天鴻蒙OS 4.0的現場演示顯示,華為的實況窗可以更高效的展現出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 容量越大越不壞?24萬塊硬盤故障率報告公布 這些產品零故障

    8月5日消息,云存儲服務商Backblaze發布了最新的硬盤故障率報告,年故障率有所上升。Backblaze發布的硬盤季度統計數據,其中包括故障率等重要方面。這些結
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 網傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網友@長三角行健者爆料稱,據經銷商集團反饋,小米汽車目前已經開始了交付中心的篩選工作,要求候選場地至少有120個車位,建筑不能低
  • iQOO 11S新品發布會

    iQOO將在7月4日19:00舉行新品發布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • AI藝術欣賞體驗會在上海梅賽德斯奔馳中心音樂俱樂部上演

    光影交錯的鏡像世界,虛實幻化的視覺奇觀,虛擬偶像與真人共同主持,這些場景都出現在2019世界人工智能大會的舞臺上。8月29日至31日,“AI藝術欣賞體驗會”在上海
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
一区二区三区久久| 国产精品久久一区主播| 久久久97精品| 欧美成人午夜免费视在线看片 | 99国产精品视频免费观看| 亚洲伦理一区| 亚洲欧美日韩精品久久久| 久久九九精品| 欧美理论视频| 国产麻豆精品在线观看| 在线日韩电影| 亚洲香蕉伊综合在人在线视看| 久久精品国产第一区二区三区最新章节| 六十路精品视频| 国产精品精品视频| 亚洲第一在线综合网站| 亚洲天堂av高清| 久久综合福利| 国产精品无码专区在线观看| 在线看片一区| 亚洲欧美日韩精品综合在线观看| 免费中文日韩| 国产美女诱惑一区二区| 亚洲人成网在线播放| 欧美一区综合| 欧美人牲a欧美精品| 很黄很黄激情成人| 亚洲午夜精品久久久久久浪潮| 乱中年女人伦av一区二区| 国产精品亚洲欧美| 日韩亚洲国产欧美| 久久视频在线视频| 国产精品视频免费观看www| 亚洲国产精品精华液网站| 欧美亚洲视频在线看网址| 欧美日韩一区二区三区| 永久域名在线精品| 欧美一区二区视频在线观看2020| 欧美日韩国产91| 揄拍成人国产精品视频| 欧美一级久久| 国产精品久久久久99| 亚洲三级观看| 久久综合狠狠综合久久综青草| 国产精品一区三区| 中国女人久久久| 欧美伦理a级免费电影| 在线日韩一区二区| 久久久成人精品| 国产女主播在线一区二区| 在线一区亚洲| 欧美精品一卡二卡| 亚洲国产婷婷| 狂野欧美一区| 国产在线视频欧美一区二区三区| 亚洲女人天堂av| 欧美日韩视频第一区| 亚洲激情在线视频| 免费在线国产精品| 极品尤物久久久av免费看| 欧美一区二区私人影院日本| 国产精品久久国产精品99gif| 日韩一区二区精品葵司在线| 欧美多人爱爱视频网站| 亚洲电影免费在线观看| 久久女同互慰一区二区三区| 韩国三级电影一区二区| 久久精品夜色噜噜亚洲a∨| 国产小视频国产精品| 午夜精品久久久久久久99水蜜桃| 国产精品国产三级国产aⅴ入口 | 国产亚洲精品成人av久久ww| 午夜精品区一区二区三| 国产精品羞羞答答| 亚洲在线观看视频| 国产精品久久久久影院亚瑟| 99视频在线观看一区三区| 欧美久久在线| 99re这里只有精品6| 欧美日韩不卡一区| 在线视频亚洲| 国产精品久久久久久久7电影 | 久久亚洲不卡| 亚洲成人在线视频网站| 免费在线观看一区二区| 亚洲精华国产欧美| 欧美伦理在线观看| 中文一区字幕| 国产精品日韩精品欧美精品| 性感少妇一区| 一区在线影院| 欧美黄色视屏| 中文日韩在线| 国产情侣久久| 久久亚洲电影| 亚洲欧洲日韩女同| 欧美日韩三级一区二区| 亚洲在线观看视频网站| 国产日韩亚洲| 另类av导航| 日韩一级黄色av| 国产精品久久中文| 久久久av网站| 亚洲人精品午夜| 国产精品久久777777毛茸茸| 欧美怡红院视频一区二区三区| 黄色精品一区二区| 欧美精品免费在线| 亚洲视频中文| 国产亚洲激情在线| 欧美aⅴ一区二区三区视频| 一区二区三区欧美激情| 国产欧美在线视频| 欧美成人高清| 亚洲在线第一页| 激情久久中文字幕| 欧美日韩精品福利| 欧美主播一区二区三区美女 久久精品人 | 美女爽到呻吟久久久久| 9色porny自拍视频一区二区| 国产精品无码永久免费888| 久久香蕉国产线看观看av| 夜久久久久久| 国产主播一区二区三区| 欧美精品久久久久久久免费观看 | 午夜在线a亚洲v天堂网2018| 影音先锋久久精品| 欧美视频在线不卡| 久久久久青草大香线综合精品| 亚洲精品综合精品自拍| 国产婷婷色综合av蜜臀av| 欧美第一黄色网| 小处雏高清一区二区三区 | 亚洲精品一区二区网址| 国产情侣一区| 欧美精品一区二区蜜臀亚洲| 欧美一级视频免费在线观看| 亚洲人成网站色ww在线| 国产精品日韩一区| 欧美成人一区二区三区| 午夜一区二区三区在线观看| 亚洲欧洲在线播放| 国产视频一区欧美| 欧美日韩午夜精品| 久久综合狠狠| 亚洲免费网址| 亚洲三级免费电影| 国产综合精品| 国产精品久久久久久影视| 欧美电影免费观看| 久久国产日本精品| 亚洲视频在线观看三级| 91久久国产自产拍夜夜嗨| 国产午夜精品在线观看| 欧美性色综合| 欧美精品亚洲精品| 久久在线免费视频| 午夜在线视频观看日韩17c| 99亚洲一区二区| 亚洲国产精品嫩草影院| 国产亚洲网站| 国产精品试看| 欧美日韩免费一区| 欧美成人亚洲成人日韩成人| 久久久精品tv| 欧美一级理论性理论a| 亚洲一区二区视频在线| 99视频精品在线| 亚洲国产欧美日韩精品| 黄色亚洲在线| 国产日韩精品一区二区三区| 欧美午夜视频在线| 欧美日本在线播放| 欧美不卡视频| 免费观看久久久4p| 久久天堂精品| 久久精品免费| 欧美在线999| 欧美一区二区三区久久精品 | 老司机午夜精品| 久久嫩草精品久久久精品一| 久久都是精品| 欧美亚洲日本一区| 先锋影音国产精品| 亚洲综合日韩中文字幕v在线| 一区二区三区四区精品| 99亚洲一区二区| 99精品欧美一区二区三区| 亚洲精品国产精品国自产在线| 亚洲国产老妈| 亚洲国产欧美精品| 亚洲国产另类久久精品| 亚洲国产日韩欧美一区二区三区| 一区二区视频免费在线观看| 国产一在线精品一区在线观看| 国产一区二区福利| 国产日韩在线一区二区三区| 国产日韩亚洲| 狠狠爱综合网| 伊人成人在线| 亚洲黄页一区| 日韩视频在线观看| 一本色道久久综合亚洲二区三区 | 久久嫩草精品久久久精品一|