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

直播房間服務基于CQRS的架構演進實踐

開發 架構
為了應對業務更大的挑戰,基于CQRS思想,分離大流量的用戶高讀場景(Query)和注重數據強一致性的開播創建房間等寫場景(Command)。對于用戶端可以無狀態無限制的擴容服務副本,做到支持更大線上用戶同時在線的目標。

引言

房間系統是直播業務的“基石”,開播和看播兩大體系都是圍繞房間場景展開。

房間系統架構也經歷一系列的升級和挑戰,從房間讀多活、混沌流量治理、熱點發現、多級緩存等,支撐了S11破千萬PCU的流量洪峰沖擊。

為了應對業務更大的挑戰,基于CQRS思想,分離大流量的用戶高讀場景(Query)和注重數據強一致性的開播創建房間等寫場景(Command)。對于用戶端可以無狀態無限制的擴容服務副本,做到支持更大線上用戶同時在線的目標。

背景

直播業務的技術服務體系也實踐過從單體到微服務化的演進之路,以技術視角看微服務體現單一職責和關注分離的思想,從大單體應用的進程模塊拓展到分布式的應用服務模塊化。同時微服務也是有額外成本的,微服務的拆分思路不僅僅是技術層面,更多會取決于組織和團隊(以及組織如何去看待業務)。

如康威定律所說:

Organizations which design systems[…] are constrained to produce designs which are copies of the communication structures of these organizations.

設計系統的組織,其產生的設計和架構等價于組織間的溝通結構。

單體架構到微服務架構是這個定律很好的體現。直播業務從一開始劃分了三個大的macro service domain,分別是用戶、主播、營收。房間服務被劃分在了主播這個Domain內,因其是主播創建房間、開播推流的基礎載體,沒有直播內容供給整個直播業務都無從談起。

將單塊架構先解耦成三塊大的業務域,每個團隊開發,測試和發布自己負責的服務,互不干擾,系統效率得到提升,滿足了一個階段內業務快速發展對于技術的要求。

本文后續將主播域(關注內容生產)簡稱為B端,將用戶域(關注流量消費)簡稱為C端,方便理解。

現狀分析

大單體應用拆分之初,房間服務是從中拆出的單個PHP服務room-service,不過服務中仍然耦合了過多的業務邏輯,從業務重要性/讀寫輕重/前后臺區分/面向用戶區分等幾個角度上考慮都不應該繼續在這個服務中繼續迭代業務邏輯。

隨著B站Golang微服務化演進,從room服務中陸續拆分出了幾個新的微服務:

  • xroom/daoanchor:房間主體服務
  • xanchor:主播業務服務
  • xroom-management:房間管控服務
  • xroom-extend:房間擴展信息服務

從組織視角拆分是合理有效的,但是從技術視角去觀察,房間服務既需要滿足B端開播場景的數據強一致性要求,也需要承擔來自C端用戶“推薦頁”、“上下滑列表頁”、“進房”等業務場景的高QPS。

xroom作為底層服務,常態化晚高峰需要承擔35W+ QPS,單接口最大QPS 18W,大流量Query通過服務熱點主動探測+Local Cache+依賴緩存組件抗壓,Redis主集群QPS達到百萬級別,盡量去減少DB層面回源的請求量級。

房間讀多活架構和多級緩存方案實施后,又需要一些措施能夠去主動探測發現偶發的數據不一致問題。

房間服務時常需要應對保障“關鍵事件開播管控”和“高熱賽事直播”兩種不同的業務場景,前者更關注房間開播平穩管控及時有效,后者關注高流量用戶進房,技術服務上的降級緩存/兜底邏輯/熔斷策略也會有差異。

If the same data model is not able to satisfy the read and write patterns of a system effectively, then it makes sense to decouple the two schemas by applying CQRS.

如果同一個數據模型不能有效滿足系統的讀寫模式,那么通過應用CQRS來解耦這兩個架構是有意義的。

通過CQRS我們可以切實分離大流量的讀場景和注重實時性和一致性的多寫場景。尤其對于C端大流量來說,可以無狀態擴容服務節點。理論上可以達到無限擴展目標,這對于千萬在線的直播是尤其重要的。

The second scenario in which CQRS is helpful is in separating the read load from the write load.

第二種 CQRS 有用的情況是將讀取負載與寫入負載分開。

CQRS架構模式適用性

主播是房間的所有者,對房間有管理權力,能夠改變直播間的狀態與屬性。

觀看用戶則是房間內容的消費者,B和C視角下都會有一個叫做“房間”的內容承載體。從面向用戶和權責分離角度來說,CQRS是比較好的一種思想來指導房間服務體系和業務域的拆分演進。

拆分目的是減少B端和C端之間領域穿插,雙方更加聚焦各自的業務領域,最終閉環從而提升架構穩定性規避系統性風險,并提升各自業務域內的組織效率。

業務拆分共識

圍繞房間實體,業務上有生產和消費的邏輯需要盤點,從BFF/基礎房間服務/直播biz服務三層進行BC Domain的拆分。

  • B/C兩端,都具有完整業務領域,領域內有各自相對獨立的業務上下文
  • App客戶端/Web前端,屬于多個領域共用的“視窗”
  • C端有兩路數據流,一路是看端領域閉環的數據流,第二路數據流是B端的數據流(開關播上下文、房間狀態變化上下文)

圖片圖片

根據GRASP(General Responsibility Assignment Software Pattern)中的信息專家(Information Expert)模式,數據應該放在需要經常使用它的地方,同時某一個功能在哪里實現,取決于數據哪里。換句話講,數據+功能=領域。

架構演進目標

房間核心系統耦合了消費端和生產端的邏輯,基于CQRS理論需要將服務和數據庫完全解耦,承擔高流量的xroom/dananchor服務劃分為C端業務域服務,新的B端服務閉環接受內容生產的讀寫請求和后臺管控聚合請求(寫多讀少)。

B端核心房間數據變更通過領域事件消息通知給到C端,C端關注數據的最終一致性,期間會有數據對賬腳本主動發現數據不一致并自動修復。

總體方向按照C&B職能原則來拆分,過渡階段允許歷史請求寫請求C服務,C proxy to B service。

圖片圖片

最終目標是完全解耦,通過領域事件數據流來同步必要信息。

圖片圖片

沒有銀彈

我們享受到了CQRS帶來的便利,相反的也要解決引入它帶來的“副作用”,這些副作用在直播領域下,表現的最核心無疑是開關播狀態的延遲,但是由于用戶和主播的天然隔離,反而不需要兩邊完全實時。

主播開播后,需要推流等一些列的動作,直到用戶可以看到主播的直播畫面,這個過程中很自然,符合人的直覺,而在架構層面我們通過引入消息中間件來同步數據,本身耗時在毫秒級別,這相比前面的自然過程幾乎可以忽略,但是我們的技術架構上服務和數據完全拆開了。

同時因為引入了更多的數據交互環節,請求拓撲變得更加復雜,每個環節的數據正確性排查變得更困難。我們通過平臺提供的Tracing+Metrics+Logging來進行問題輔助定位,雙寫+對賬腳本保障過渡階段數據最終一致性,灰度階段控制讀寫流量各自單獨放量驗證。

為了應對CQRS架構帶來的復雜性確實需要額外引入數據服務腳本等方式去做保障,這部分的思路更偏向于架構設計中的“風險驅動”。

執行落地過程

對于當前比較成熟的業務系統去做拆分,是一件比較有挑戰的事情。我們先從橫縱兩個角度看下房間服務所在的層級位置。

 橫向技術架構分層

  • 面向用戶的終端設備:App粉版、Web端、開播App等
  • CDN -> SLB -> APIGW:內容分發邊緣加速,LB層與統一網關
  • BFF:Backend for Frontend,根據終端渠道區分的業務網關入口,eg:app-room / web-room / app-interface
  • Biz Service:業務邏輯服務
  • Domain Service / Fundamental Service:業務域服務/基礎服務,eg:Room Domain Service / Account Service

 縱向部署隔離

  • Region:eg sh/bj
  • Zone:eg sh001/sh002/sh003,每個Zone單元內的流量應盡可能閉環(讀多活寫回源 -> 讀寫多活、BFF failback cross Zone可選策略)
  • Cluster/Group:group1/group2/染色group,不同group可以設置服務發線上的weight權重
  • AppID:每個應用的服務發現naming id

圖片圖片

可以看到房間服務有眾多的請求上游,必須在讀寫切分過程中,保障好數據的一致性(B端業務域內強一致性,C端業務域內最終一致性)和服務的可用性(底層服務抖動會有放大效應)。

當然,上游業務服務fanout過多讀流量到下游服務也是需要治理的,這在另一個議題中去開展了。

在具體的實現過程中,我們將整個拆分劃分成三大階段。

圖片圖片

  • 數據對齊階段

本階段目標是把B端的數據庫從C端復制,并且保持數據一致。并且此階段可以拆分成增量對齊階段和存量對齊階段。

增量對齊,將新數據的創建和更新通過雙寫同步。

存量對齊,通過同步JOB將C端DB的存量數據同步到B端新DB,并且需要一種對賬系統去針對全量數據進行周期性的對比,來確保數據一致性。

  • 數據同步階段

針對數據一致性問題和業務上數據實時性問題,需要對相應的實時場景進行改造。B端構建新的房間領域事件消息,并同步到C端。

此階段完成C&B分寫邏輯,通過在DAO層控制BC表級和字段級的寫入控制,將寫操作分流到B和C的各自服務內,并且通過消息事件,來同步數據變更。此階段完成了數據拆分和同步的目標。

If the choice is made to keep the updates asynchronous, the entire system is forced to deal with the fallout of eventual consistency.

如果選擇保持更新為異步的,整個系統將不得不處理最終一致性所帶來的后果。

  • 最終閉環階段

此階段作為收尾,我們將上游的調用梳理出來,并且改造讀取各自領域真正的依賴服務,最終達到完全解耦的目標。

核心設計

 數據拆分 Data Division

當前直播的核心實體數據庫,BC屬于公用的狀態,每張表和每個字端按照上述的原則是可以劃分出BC屬性的。所以我們一步到位,顆粒度到最小單位字段級別,確保完全解耦。

BC拆分后短時間內兩套獨立數據庫的表字段可以保持相同,長期根據業務迭代節奏不同,兩邊可以變為異構shcema模式。同時要注意的是,業務數據層面切分后,需要聯動大數據層面同步hive表的變更,單獨重新建模或數據任務換源,這點是比較容易遺漏的。

領域事件驅動 Domain Event-Driven

BC房間業務各自劃分業務域邊界后,域之間的數據同步應通過領域事件驅動+觀察者模式去實現;域內的核心業務邏輯,可以走應用服務編排。

本次實踐過程中重新梳理制定了“房間狀態變更”事件,basic room info + extra info,滿足訂閱者服務對房間業務域核心字段的要求。

跨微服務的事件機制要總體考慮事件構建、發布和訂閱、事件數據持久化、消息中間件,甚至事件數據持久化時還可能需要考慮引入分布式事務機制等。完整實踐下來還是成本還是比較高的,實施者應考慮結合業務場景和對數據的實時性/一致性要求來決定實踐到哪一步。

Tip1:訂閱者需要實現消費冪等,業務場景如果有訴求需要額外實現數據版本協議(eg:稿件系統BC CQRS拆分,B端稿件數據被重新編輯審核,C端已開放的版本仍然可以瀏覽,即使用了數據版本協議字段)。

Tip2:如果訂閱者有實現接收Message后反向callback query的模式(更適合去保障最終一致性),需要關注query的數據源是來自主庫or從庫,不然會有因主從同步時延導致的數據不一致case。

Tip3:絕對不要將核心DB的binlog消息暴露為Domain Message,一是暴露了過多細節字段下游并不一定都需要訂閱關心,要做很多filter邏輯,二是核心DB的字段變更將需要牽動所有下游,不利于變更。

灰度控制 Gray Scale Control

核心服務變更依賴一個比較完備的灰度發布方案,基于分布式KV組件(服務可以近實時地獲取到KV系統中配置的開關變更)我們設計了從BFF網關到服務的開關,來控制字段的外顯和關鍵Topic發送。

灰度策略有:功能總體關閉、白名單模式放量、百分位/千分位放量、功能全量打開,服務發布觀察遵從這個流程,從APIGW+服務染色發布引入流量+功能KV開關做到謹慎放量。

可觀測性建設 Observability Construction

新的架構落地只是起點,真正的考驗剛剛開始。我們必須為架構的穩定性,可用性負責。

保障整個CQRS系統,需要“配套設施”,其中的首要利器就是做可觀測性建設(Observability Construction),基于現有的基架能力,我們搭建了直播CQRS監控大盤,從生產方到消費方,全鏈路監控核心指標。

其中CQRS中的數據同步的相關指標,在數據保證數據最終一致性的背景下,尤其重要。整個實時性由三個部分組成,pub時間,網絡傳輸耗時,sub處理數據,其中在我們的CQRS大盤中,就包含B端業務pub的時間監控,和C端sub業務處理的時間監控,目前網絡傳輸耗時在毫秒級別,并且這塊指標也已經在灰度階段。

圖片圖片

系統魯棒性  System Robustness

CQRS的引入幫我們解耦了截然不同兩種場景的系統,但是也確實引入了mq,從全局視角看又增加了一個依賴,所以系統的復雜度是增加的。為了增強系統架構的魯棒性,我們考慮到引入另外一種備選手段來做數據同步,通過直連服務接口調用的方式,這塊我們使用了我站自研的railgun消息處理組件。當兩種本身可用性就很高的方法互為補充時,那么出現問題的可能,相當于兩個系統同時出問題的概率,這種概率是極低的。

在整個CQRS數據鏈路上,我們還針對一些寫場景做了異步重試來系統自愈,抵抗服務可用性的長尾不可用,另外我們也考慮到異常場景下,雖然降級到http調用同步數據,但是存量消息恢復時,數據不是最新的,所以加入過時消息走回源,保障數據正確性的設計,來盡可能讓系統在各個環節的抗風險能力提升。

數據對賬腳本 Data Verify Job

有一種比較常見的方式,即流式對賬,依靠我們數據流監控組件去實現,在設定一個經驗值的時間窗口閾值內,對兩邊數據源的流式binlog做對比。這種對賬方式比較適合終態業務對賬,而我們實時直播屬于反復跳變場景,目前我們利用最簡單有效的方式,連接雙方從庫,以B端庫為準進行數據對賬,并且滿足30s內數據一致比較,來兼容數據最終一致性,當對賬腳本發現不一致后,通過日志+主動告警+機器人等手段,配合自動化修復任務做自愈的設計,從而cover住大多數異常case,做到平常0職守。

 線上事故響應SOP Incident Response SOP

上文的系統魯棒性設計,最大程度保障服務的健壯穩定,以及上文兜底的數據對賬機制,最大程度客觀地幫助系統發現異常,而線上永遠有我們意想不到的情況,所以我們設計了一套線上事故響應機制,來應對“意外”。

首先我們從CQRS和BC服務的角度,預設配置了不同領域的關鍵日志或者指標告警,而且劃分了不同的緊急程度。二是我們提前管理規劃了告警組成員,覆蓋兩邊領域的一線研發,并且配置不同的通知渠道,可以讓最合適的同學最快地感知異常。三是我們從不同角度預設了我們可以枚舉異常現象,再去枚舉不同現象發生的根因,再輸出可以解決的方案list,所以基于這套sop,配合我站alchemy平臺tracing鏈路追蹤能力可以迅速定位故障點,以最快速度執行預設標準步驟,達到最快恢復可用性的目的。

生產配套 Production Support

一個安全的生產系統是需要一整套的“生產配套”體系,可以快速定位排障。這塊我們借鑒了很多類似系統,參考了醫院體系的”問診臺“,目前發育出開播互動問診臺生產配套,提升問題排障效率幾乎80%。

圖片圖片

技術項目管理

最后想聊聊技術項目的價值和實施周期。技術項目有些時候由于不會帶來明顯的業務增量價值,往往會被質問“為什么要做如此變更,不做這個變更業務難道不能用嗎?”諸如此類的靈魂拷問。

每個階段技術建設需要有一條經過設計的baseline,這條線應該略快于業務發展的基線一步。建設落后,技術跟不上業務,如同沙地之上建高樓,業務連續性會受到技術系統穩定性可用性的lost而直接受損。

建設過快,又有Over Design/Over Engineering的問題,所以略快過一步是合適的,保留了彈性擴展的余地,可以在需要時適配業務快速調整。

架構師和Tech Leader需要協同階段性review當前技術建設baseline和業務的適配情況,并決定是否投入有效資源進行技術架構迭代。

技術項目從立項之日起,就需要更嚴格于業務項目的管理機制。業務項目的業務目標(試錯/AB實驗/明確性收益延展)往往不由工程師來制定,而技術項目的目標感也是需要從開始就建立起來的,這有助于關鍵行為路徑拆解,并在項目收尾階段進行目標&結果比對。

技術項目要有階段性Milestone管理,技術立項 -> (原型方案討論) -> 技術方案確定 -> 技術實施(大項目應分階段實施,過程指標也被Track) -> 測試/驗證方案(測試用例收集&review) -> 發布方案 -> 線上驗收方案 -> (線上問題處理預案) -> 項目結果復盤。

立項、技術方案確認等階段需要有正式官宣(儀式感/目標感/參與感),避免流于私下的技術Topic探討,導致無法被正式地投入資源到實施階段。

End

最后,該項目實踐上仍然有諸多細節無法在文章中一一展示,文本在撰寫過程中也難免犯錯,希望大家可以指正,歡迎大家可以一起來進行技術交流。

參考

本期作者

劉瑞洲嗶哩嗶哩資深開發工程師劉瑞洲嗶哩嗶哩資深開發工程師

王清培 嗶哩嗶哩資深開發工程師王清培 嗶哩嗶哩資深開發工程師

責任編輯:武曉燕 來源: 嗶哩嗶哩技術
相關推薦

2018-05-04 10:04:47

Docker微服務架構

2023-12-07 14:20:05

2018-04-20 10:38:25

2023-11-14 20:51:08

2024-06-07 17:42:29

2023-12-30 08:27:13

2024-11-25 08:20:22

2016-08-27 20:40:02

直播彈幕

2015-07-22 15:19:46

Docker云計算微服務

2018-11-15 07:56:26

2024-06-05 12:03:43

微服務架構場景

2016-12-02 11:42:58

網易視頻云直播

2017-07-06 14:01:32

CQRSEvent Sourc架構

2017-05-04 08:48:36

達觀數據分析架構

2023-10-15 16:39:29

2018-03-28 09:53:50

Android架構演進

2016-12-05 11:27:04

直播

2019-09-16 15:30:51

2017-07-19 08:30:31

2022-08-26 20:00:00

系統架構
點贊
收藏

51CTO技術棧公眾號

中文幕一区二区三区久久蜜桃| 性色一区二区三区| 日韩欧美国产1| 精品无码一区二区三区爱欲| 青青草免费在线视频| 丝瓜av网站精品一区二区| www.xxxx精品| 自拍视频一区二区| 欧美激情三区| 亚洲成av人在线观看| 欧美日韩综合另类| 精品国精品国产自在久不卡| 国产免费成人| 久久69精品久久久久久国产越南| 中文字幕一区二区人妻在线不卡| 欧美videos粗暴| 午夜久久久久久电影| 亚洲高清在线观看一区| 日韩在线视频第一页| 麻豆精品精品国产自在97香蕉| 午夜精品www| 又嫩又硬又黄又爽的视频| 国产精品久久久网站| 欧美三级电影精品| 国产二级片在线观看| 高清免费电影在线观看| 国产亚洲人成网站| 国产精品国产一区二区| 91美女精品网站| 欧美资源在线| 久久久久久久久中文字幕| 少妇的滋味中文字幕bd| 在线日韩网站| 亚洲成人久久久久| 国产不卡的av| 欧美高清xxx| 欧美午夜电影在线播放| 亚洲自偷自拍熟女另类| 激情av在线| 亚洲欧美另类在线| 中文字幕在线亚洲三区| 国产精品一区二区婷婷| 91麻豆免费观看| 国产超碰91| wwwxxxx国产| 国产一区二区三区观看| 国产欧亚日韩视频| 中文字幕欧美在线观看| 奇米影视7777精品一区二区| 日韩av免费在线播放| 国产精品视频免费播放| 亚洲久久视频| 91av成人在线| 国产毛片aaa| 在线午夜精品| 日本国产精品视频| 天天干天天色综合| 久久久夜夜夜| 国产精品福利网站| 国产精品第6页| 裸体在线国模精品偷拍| 国产精品主播视频| 国产又粗又猛又爽又黄的| 国产日韩精品suv| 99久久夜色精品国产亚洲96| 日韩中文视频免费在线观看| 五月天免费网站| 五月开心六月丁香综合色啪 | 日韩在线无毛| 久久亚洲精华国产精华液| 欧美视频小说| 98在线视频| 一区在线播放视频| 欧美另类videosbestsex日本| 色呦呦呦在线观看| 午夜不卡av免费| 日韩中文字幕免费在线 | 99久久99久久精品国产片| 国产精品久久久久久久免费看| 国模娜娜一区二区三区| 国产精品免费在线| 免费一级在线观看| 国产精品久久久久桃色tv| 麻豆视频传媒入口| 草草视频在线| 欧美三级日韩三级国产三级| 中文写幕一区二区三区免费观成熟| 亚洲精品国产九九九| 日韩av最新在线观看| 好吊视频在线观看| 68国产成人综合久久精品| 欧美高清在线播放| 在线观看 亚洲| 韩日精品视频一区| 精品欧美日韩在线| 免费在线观看黄| 性做久久久久久免费观看欧美| 欧美日韩第二页| 高清国产一区二区三区四区五区| 亚洲国模精品私拍| 国产精品精品软件男同| 亚洲三级免费| 成人激情免费在线| 亚洲色偷精品一区二区三区| 亚洲欧洲无码一区二区三区| 欧美牲交a欧美牲交| 国产精品免费精品自在线观看| 亚洲精品第一页| 久久久久久久久久97| 亚洲乱码视频| 91人人爽人人爽人人精88v| 日韩精品系列| 亚洲激情男女视频| 国内外免费激情视频| 在线视频亚洲欧美中文| 国产亚洲综合久久| 成人免费视频毛片| 国产成人av影院| 在线国产精品网| 欧洲精品一区二区三区| 亚洲精品在线免费观看视频| 免费高清在线观看电视| 日韩av一区二区三区四区| 国产精品jizz视频| 国产秀色在线www免费观看| 色综合中文字幕| 国内精品免费视频| 一区二区电影| 成人a视频在线观看| 亚洲av成人精品一区二区三区在线播放 | 一个色综合av| 99国产精品久久久久久| 欧美日韩在线二区| 欧美洲成人男女午夜视频| 高清乱码毛片入口| 一区二区三区在线视频免费| 久久久久国产一区| 精品国产网站| 日韩av电影免费观看高清| 丰满熟妇乱又伦| 亚洲黄色小说网站| 91在线第一页| 日韩精品四区| 国产精品久久久久久久午夜| 亚洲三级中文字幕| 欧美日韩亚洲精品内裤| 蜜臀av粉嫩av懂色av| 激情91久久| 99理论电影网| 福利写真视频网站在线| 日韩精品一区二区三区三区免费| www青青草原| 国产福利精品一区| 日本国产中文字幕| 精品中文字幕一区二区三区四区| 日韩中文字幕精品| 国产老女人乱淫免费| 亚洲品质自拍视频| 男女视频在线观看网站| 中文字幕午夜精品一区二区三区| 91在线播放国产| 国产羞羞视频在线播放| 精品粉嫩超白一线天av| 九九热国产视频| 99re免费视频精品全部| 成年人黄色片视频| 欧美午夜精品一区二区三区电影| 国产精品久久久久久亚洲调教| 91在线看片| 欧美一区二区视频免费观看| 欧美黄色免费在线观看| 不卡视频免费播放| 欧美视频第一区| 日韩理论电影| 99久久综合狠狠综合久久止| 人狥杂交一区欧美二区| 亚洲一区二区国产| 国产又粗又长又黄| 亚洲最新视频在线观看| 一女三黑人理论片在线| 视频在线观看一区| 强伦女教师2:伦理在线观看| 亚洲不卡在线| 日本精品视频在线观看| 麻豆tv免费在线观看| 精品美女在线播放| 国产女主播喷水视频在线观看 | 亚洲欧美在线第一页| 中文字幕在线观看1| 一区二区三区 在线观看视频| 欧美精品欧美极品欧美激情| 奇米888四色在线精品| 亚洲天堂第一区| 免费一区二区三区视频导航| 91九色精品视频| 亚洲国产福利| 久久夜色精品国产亚洲aⅴ| 午夜激情小视频| 欧美剧情片在线观看| 日韩欧美三级视频| 亚洲欧洲色图综合| 亚洲精品乱码久久| 久久er精品视频| www.com毛片| 91高清一区| 日韩精品资源| 国产精品chinese在线观看| 国产精品免费一区| 91www在线| 久久久精品2019中文字幕神马| 外国精品视频在线观看 | 久久免费精品视频在这里| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 韩国女同性做爰三级| 高清在线成人网| 在线免费av播放| 亚洲人成高清| 免费日韩在线观看| 欧美电影《睫毛膏》| 蜜桃导航-精品导航| 一区二区三区亚洲变态调教大结局| 国产精品成人观看视频国产奇米| 99在线视频影院| 色一区av在线| 国产三级在线免费| 日韩经典中文字幕| 欧美自拍第一页| 欧美一级一区二区| 97超碰人人模人人人爽人人爱| 91久久精品一区二区三区| 亚洲精品国产精品乱码| 亚洲一卡二卡三卡四卡| 日韩欧美综合视频| 18欧美乱大交hd1984| 青青草自拍偷拍| 日本一区二区免费在线| 国产男男chinese网站| av中文字幕不卡| av免费观看不卡| 成人网在线免费视频| 波多野吉衣在线视频| 国产美女在线观看一区| 欧美一级xxxx| 精品一区二区影视| 毛片毛片毛片毛| 久久精品国产在热久久| www午夜视频| 蜜桃传媒麻豆第一区在线观看| www.xxx亚洲| 人人超碰91尤物精品国产| 妺妺窝人体色www在线观看| 久久精品天堂| 日本美女高潮视频| 奇米影视一区二区三区| 午夜免费看毛片| 极品销魂美女一区二区三区| 亚洲高清视频免费| 国产精品资源网站| www.四虎精品| 97久久精品人人做人人爽| 男女做爰猛烈刺激| 中文字幕av资源一区| 免费一级suv好看的国产网站| 国产精品黄色在线观看| 欧美h片在线观看| 一区二区三区国产精品| 久久精品女人毛片国产| 欧美日韩国产一中文字不卡| 欧美性猛交bbbbb精品| 欧美性视频一区二区三区| 在线视频 中文字幕| 91精品国产综合久久久久久久 | 精品一区二区三区四区在线| 成人亚洲综合天堂| 久久精品人人做人人爽| 欧美精品videossex少妇| 91精品国产91久久久久| 蜜桃精品在线| 亚洲一区中文字幕在线观看| 久久99偷拍| 日韩影院一区| 中文字幕免费一区二区三区| 男人日女人bb视频| 久久国产精品99精品国产| 91超薄肉色丝袜交足高跟凉鞋| 91小视频在线观看| 福利视频第一页| 午夜精品久久久久久久| 波多野结衣av无码| 欧美一卡2卡三卡4卡5免费| av女名字大全列表| www.亚洲成人| 97se综合| 91在线观看免费| 国产成人一区二区三区影院| 在线观看一区欧美| 在线亚洲国产精品网站| 午夜免费看毛片| 97久久人人超碰| 欧美黑人性猛交xxx| 色综合久久中文综合久久牛| 国产模特av私拍大尺度| 亚洲精品自拍偷拍| av网站在线免费看推荐| 国产不卡视频在线| 91国内精品白嫩初高生| 亚洲一区二区三区午夜| 国产欧美一区二区三区国产幕精品| 亚洲综合婷婷久久| 99久久国产综合精品女不卡| 精品亚洲乱码一区二区| 一本色道久久综合精品竹菊| 国产精品视频无码| 亚洲男女性事视频| 大香伊人久久| 91久久精品美女高潮| 国产一区二区三区探花| 农民人伦一区二区三区| 狠狠色丁香九九婷婷综合五月| 成人免费毛片糖心| 五月天激情小说综合| 国产乱码久久久久| 中文字幕亚洲一区二区三区五十路| 爱啪啪综合导航| 国产精品一区二区三区免费观看| 91精品国产自产在线观看永久∴| 热久久精品国产| 91性感美女视频| 男女视频免费看| 精品少妇一区二区三区视频免付费 | 精品一区二区三区亚洲| 亚洲伊人婷婷| 奇米影视一区二区三区小说| 美女100%无挡| 舔着乳尖日韩一区| 色网站免费观看| 欧美精品成人在线| 中文字幕一区二区三区四区久久 | 麻豆系列在线观看| 国产精品日韩专区| 成人系列视频| 最新天堂中文在线| 国产精品卡一卡二卡三| 一本色道久久综合熟妇| 中文字幕欧美日韩精品| 成人看片在线观看| 亚洲高清在线播放| 免费成人av资源网| 九一在线免费观看| 欧美三级韩国三级日本一级| 欧美一区二区三区在线观看免费| 国产精品劲爆视频| 国产电影一区二区在线观看| 日本黄色的视频| 伊人夜夜躁av伊人久久| 精品久久无码中文字幕| 欧美激情精品在线| 久久男人av| 日韩中文字幕二区| 中文字幕的久久| 亚洲综合免费视频| 欧美成人一二三| 亚洲一区二区三区在线免费 | 青青草伊人久久| 91久久久久久久久久久久久久| 欧美精品成人一区二区三区四区| 麻豆网站在线免费观看| 亚洲伊人成综合成人网| 精品动漫一区| 制服 丝袜 综合 日韩 欧美| 欧洲另类一二三四区| 黄色片网站在线| 99在线视频首页| 国产精品毛片在线看| 欧美福利第一页| 欧美福利视频导航| 福利在线导航136| 欧美日韩亚洲综合一区二区三区激情在线| 日一区二区三区| 中文字幕电影av| 日韩精品有码在线观看| av在线一区不卡| 特大黑人娇小亚洲女mp4| 99天天综合性| 91国在线视频| 高清亚洲成在人网站天堂| 欧美限制电影| 又黄又色的网站| 欧美午夜一区二区三区| 人人超在线公开视频| 欧美激情导航| 国产毛片精品一区| 黄色片中文字幕| 久久伊人精品天天| 蜜桃一区二区| 中文字幕久久久久久久| 欧美性色黄大片手机版| 福利在线导航136| 亚洲一二三区精品| 99久久精品国产导航|