国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

6 種事件驅(qū)動的架構(gòu)模式

共 7440字,需瀏覽 15分鐘

 ·

2021-07-13 02:41

點擊上方“服務端思維”,選擇“設(shè)為星標

回復”669“獲取獨家整理的精選資料集

回復”加群“加入全國服務端高端社群「后端圈」


作者 | Natan Silnitsky
出品 Wix 工程博客

在過去一年里,我一直是數(shù)據(jù)流團隊的一員,負責Wix事件驅(qū)動的消息傳遞基礎(chǔ)設(shè)施(基于 Kafka)。有超過 1400 個微服務使用這個基礎(chǔ)設(shè)施。在此期間,我實現(xiàn)或目睹了事件驅(qū)動消息傳遞設(shè)計的幾個關(guān)鍵模式,這些模式有助于創(chuàng)建一個健壯的分布式系統(tǒng),該系統(tǒng)可以輕松地處理不斷增長的流量和存儲需求。

1.消費與投影


針對那些使用非常廣泛、已經(jīng)成為瓶頸的服務


當有遺留服務存儲著大型域?qū)ο蟮臄?shù)據(jù),這些數(shù)據(jù)使用又非常廣泛,使得該遺留服務成為瓶頸時,此模式可以提供幫助。


在 Wix,我們的 MetaSite 服務就面臨著這樣的情況,它為 Wix 用戶創(chuàng)建的每個站點保存了大量的元數(shù)據(jù),比如站點版本、站點所有者以及站點上安裝了哪些應用程序——已安裝應用上下文(The Installed Apps Context.)。


這些信息對于 Wix 的許多其他微服務(團隊)很有價值,比如 Wix Stores、Wix booking、Wix Restaurants 等等。這個服務被超過 100 萬 RPM 的請求轟炸,它們需要獲取站點元數(shù)據(jù)的不同部分。


從服務的各種 API 可以明顯看出,它處理了客戶端服務的太多不同的關(guān)注點。



MetaSite 服務處理大約 1M RPM 的各類請求


我們想要回答的問題是,如何以最終一致的方式將讀請求從該服務轉(zhuǎn)移出來?

使用 Kafka 創(chuàng)建“物化視圖”


負責這項服務的團隊決定另外創(chuàng)建一個服務,只處理 MetaSite 的一個關(guān)注點——來自客戶端服務的“已安裝應用上下文”請求。

首先,他們將所有數(shù)據(jù)庫的站點元數(shù)據(jù)對象以流的方式傳輸?shù)?Kafka 主題中,包括新站點創(chuàng)建和站點更新。一致性可以通過在 Kafka Consumer 中進行 DB 插入來實現(xiàn),或者通過使用CDC產(chǎn)品(如Debezium)來實現(xiàn)。

其次,他們創(chuàng)建了一個有自己數(shù)據(jù)庫的“只寫”服務(反向查找寫入器),該服務使用站點元數(shù)據(jù)對象,但只獲取已安裝應用上下文并寫入數(shù)據(jù)庫。即將站點元數(shù)據(jù)的某個“視圖”(已安裝的應用程序)投影到數(shù)據(jù)庫中。



已安裝應用上下文消費與投影


  第三,他們創(chuàng)建了一個“只讀”服務,只接受與已安裝應用上下文相關(guān)的請求,通過查詢存儲著“已安裝應用程序”視圖的數(shù)據(jù)庫來滿足請求。



讀寫分離

效果


通過將數(shù)據(jù)以流的方式傳輸?shù)?Kafka,MetaSite 服務完全同數(shù)據(jù)消費者解耦,這大大降低了服務和 DB 的負載。

通過消費來自 Kafka 的數(shù)據(jù),并為特定的上下文創(chuàng)建一個“物化視圖”,反向查找寫入器服務能夠創(chuàng)建一個最終一致的數(shù)據(jù)投影,大幅優(yōu)化了客戶端服務的查詢需求。

將讀服務與寫服務分開,可以方便地擴展只讀 DB 副本和服務實例的數(shù)量,這些實例可以處理來自全球多個數(shù)據(jù)中心的不斷增長的查詢負載。

2.端到端事件驅(qū)動


針對簡單業(yè)務流程的狀態(tài)更新


請求-應答模型在瀏覽器-服務器交互中特別常見。借助 Kafka 和WebSocket,我們就有了一個完整的事件流驅(qū)動,包括瀏覽器-服務器交互。


這使得交互過程容錯性更好,因為消息在 Kafka 中被持久化,并且可以在服務重啟時重新處理。該架構(gòu)還具有更高的可伸縮性和解耦性,因為狀態(tài)管理完全從服務中移除,并且不需要對查詢進行數(shù)據(jù)聚合和維護。


考慮一下這種情況,將所有 Wix 用戶的聯(lián)系方式導入 Wix 平臺。


這個過程涉及到兩個服務:Contacts Jobs 服務處理導入請求并創(chuàng)建導入批處理作業(yè),Contacts Importer 執(zhí)行實際的格式化并存儲聯(lián)系人(有時借助第三方服務)。


傳統(tǒng)的請求-應答方法需要瀏覽器不斷輪詢導入狀態(tài),前端服務需要將狀態(tài)更新情況保存到數(shù)據(jù)庫表中,并輪詢下游服務以獲得狀態(tài)更新。


而使用 Kafka 和 WebSocket 管理者服務,我們可以實現(xiàn)一個完全分布式的事件驅(qū)動過程,其中每個服務都是完全獨立工作的。



使用 Kafka 和 WebSocket 的 E2E 事件驅(qū)動


首先,瀏覽器會根據(jù)開始導入請求訂閱 WebSocket 服務。


它需要提供一個 channel-Id,以便 WebSocket 服務能夠?qū)⑼ㄖ酚苫卣_的瀏覽器:



打開 WebSocket 通知“通道”


第二,瀏覽器需要向 Jobs 服務發(fā)送一個 HTTP 請求,聯(lián)系人信息使用 CSV 格式,并附加 channel-Id,這樣 Jobs 服務(和下游服務)就能夠向 WebSocket 服務發(fā)送通知。注意,HTTP 響應將立即返回,沒有任何內(nèi)容。


第三,Jobs 服務在處理完請求后,會生成并向 Kafka 主題發(fā)送作業(yè)請求。



HTTP Import 請求和生成的 Import Job 消息


第四,Contacts Importer**服務消費來自 Kafka 的作業(yè)請求,并執(zhí)行實際的導入任務。當它完成時,它可以通知 WebSocket 服務作業(yè)已經(jīng)完成,而 WebSocket 服務又通知瀏覽器。



工作已消費、已處理和已完成狀態(tài)通知

效果


使用這種設(shè)計,在導入過程的各個階段通知瀏覽器變得很簡單,而且不需要保持任何狀態(tài),也不需要任何輪詢。

Kafka 的使用使得導入過程更具彈性和可擴展性,因為多個服務可以處理來自同一個原始導入 http 請求的作業(yè)。

使用 Kafka 復制,很容易將每個階段放在最合適的數(shù)據(jù)中心和地理位置。也許導入器服務需要在谷歌 DC 上,以便可以更快地導入谷歌聯(lián)系人。

WebSocket 服務的傳入通知請求也可以生成到 Kafka,然后復制到 WebSocket 服務所在的數(shù)據(jù)中心。

3.內(nèi)存 KV 存儲


針對 0 延遲數(shù)據(jù)訪問


有時,我們需要動態(tài)對應用程序進行持久化配置,但我們不想為它創(chuàng)建一個全面的關(guān)系數(shù)據(jù)庫表。


一個選擇是用HBase/Cassandra/DynamoDB為所有應用創(chuàng)建一個大的寬列存儲表,其主鍵包含標識應用域的前綴(例如“store_taxes_”)。



這個解決方案效果很好,但是通過網(wǎng)絡(luò)取值存在無法避免的延遲。它更適合于更大的數(shù)據(jù)集,而不僅僅是配置數(shù)據(jù)。


另一種方法是有一個位于內(nèi)存但同樣具有持久性的鍵/值緩存——Redis AOF提供了這種能力。


Kafka 以壓縮主題的形式為鍵/值存儲提供了類似的解決方案(保留模型確保鍵的最新值不會被刪除)。


在 Wix,我們將這些壓縮主題用作內(nèi)存中的 kv-store,我們在應用程序啟動時加載(消費)來自主題的數(shù)據(jù)。這有一個 Redis 沒有提供的好處,這個主題還可以被其他想要獲得更新的用戶使用。

訂閱和查詢


考慮以下用例——兩個微服務使用壓縮主題來做數(shù)據(jù)維護:Wix Business Manager(幫助 Wix 網(wǎng)站所有者管理他們的業(yè)務)使用一個壓縮主題存放支持的國家列表,Wix Bookings(允許安排預約和課程)維護了一個“(Time Zones)”壓縮主題。從這些內(nèi)存 KV 存儲中檢索值的延遲為 0。



各內(nèi)存 KV 存儲以及相應的 Kafka 壓縮主題


Wix Bookings 監(jiān)聽“國家(Countries)”主題的更新:



Bookings 消費來自壓縮主題 Countries 的更新


當 Wix Business Manager 將另一個國家添加到“國家”主題時,Wix Bookings 會消費此更新,并自動為“時區(qū)”主題添加一個新的時區(qū)?,F(xiàn)在,內(nèi)存 KV 存儲中的“時區(qū)”也通過更新增加了新的時區(qū):



South Sudan 的時區(qū)被加入壓縮主題


我們沒有在這里停下來。Wix Events(供 Wix Users 管理事件傳票和 RSVP)也可以使用 Bookings 的時區(qū)主題,并在一個國家因為夏令時更改時區(qū)時自動更新其內(nèi)存 kv-store。


兩個內(nèi)存 KV 存儲消費同一個壓縮主題

4.調(diào)度并遺忘


當存在需要確保計劃事件最終被處理的需求時


在許多情況下,需要 Wix 微服務根據(jù)某個計劃執(zhí)行作業(yè)。


Wix Payments Subscriptions 服務就是一個例子,它管理基于訂閱的支付(例如瑜伽課程的訂閱)。


對于每個月度或年度訂閱用戶,必須通過支付提供程序完成續(xù)訂過程。


為此,Wix 自定義的 Job Scheduler 服務調(diào)用由 Payments Subscription 服務預先配置好的 REST 端點。


訂閱續(xù)期過程在后臺進行,不需要(人類)用戶參與。這就是為什么最終可以成功續(xù)訂很重要,即使臨時有錯誤——例如第三支付提供程序不可用。


要確保這一過程是完全彈性的,一種方法是由作業(yè)調(diào)度器重復請求 Payment Subscriptions 服務(續(xù)訂的當前狀態(tài)保存在數(shù)據(jù)庫中),對每個到期但尚未續(xù)期的訂閱進行輪詢。這將需要數(shù)據(jù)庫上的悲觀/樂觀鎖定,因為同一用戶同一時間可能有多個訂閱續(xù)期請求(來自兩個單獨的正在進行的請求)。


更好的方法是首先生成 Kafka 請求。為什么?因為請求的處理將由 Kafka 的消費者順序完成(對于每個特定的用戶),所以不需要并行工作的同步機制。



此外,一旦消息生成并發(fā)送到 Kafka,我們就可以通過引入消費者重試來確保它最終會被成功處理。由于有這些重試,請求調(diào)度的頻率可能就會低很多。


在這種情況下,我們希望可以保持處理順序,這樣重試邏輯可以在兩次嘗試之間(以“指數(shù)退避”間隔進行)簡單地休眠。



Wix 開發(fā)人員使用我們自定義的Greyhound消費者,因此,他們只需指定一個 BlockingPolicy,并根據(jù)需要指定適當?shù)闹卦囬g隔。



在某些情況下,消費者和生產(chǎn)者之間可能會產(chǎn)生延遲,如長時間持續(xù)出錯。在這些情況下,有一個特殊的儀表板用于解除阻塞,并跳過開發(fā)人員可以使用的消息。


如果消息處理順序不是強制性的,那么 Greyhound 中還有一個使用“重試主題”的非阻塞重試策略。



當配置重試策略時,Greyhound 消費者將創(chuàng)建與用戶定義的重試間隔一樣多的重試主題。內(nèi)置的重試生成器將在出錯時生成一條下一個重試主題的消息,該消息帶有一個自定義頭,指定在下一次調(diào)用處理程序代碼之前應該延遲多少時間。


還有一個死信隊列,用于重試次數(shù)耗盡的情況。在這種情況下,消息被放在死信隊列中,由開發(fā)人員手動審查。


這種重試機制是受 Uber這篇文章的啟發(fā)。


Wix 最近開放了 Greyhound 的源代碼,不久將提供給測試用戶。要了解更多信息,可以閱讀 GitHub 上的自述文件。


總結(jié):


Kafka 允許按順序處理每個鍵的請求(例如使用 userId 進行續(xù)訂),簡化工作進程邏輯;

由于 Kafka 重試策略的實現(xiàn)大大提高了容錯能力,續(xù)期請求的作業(yè)調(diào)度頻率大大降低。

5.事務中的事件


當冪等性很難實現(xiàn)時


考慮下面這個典型的電子商務流程。


Payments 服務生成一個 Order Purchase Completed 事件到 Kafka。現(xiàn)在,Checkout 服務將消費此消息,并生成自己的 Order Checkout Completed 消息,其中包含購物車中的所有商品。


然后,所有下游服務(Delivery、Inventory 和 Invoices)將消費該消息并繼續(xù)處理(分別準備發(fā)貨、更新庫存和創(chuàng)建發(fā)票)。



如果下游服務可以假設(shè) Order Checkout Completed 事件只由 Checkout 服務生成一次,則此事件驅(qū)動流的實現(xiàn)會簡單很多。


為什么?因為多次處理相同的 Checkout Completed 事件可能導致多次發(fā)貨或庫存錯誤。為了防止下游服務出現(xiàn)這種情況,它們將需要存儲去重后的狀態(tài),例如,輪詢一些存儲以確保它們以前沒有處理過這個 Order Id。


通常,這是通過常見的數(shù)據(jù)庫一致性策略實現(xiàn)的,如悲觀鎖定和樂觀鎖定。


幸運的是,Kafka 為這種流水線事件流提供了一個解決方案,每個事件只處理一次,即使當一個服務有一個消費者-生產(chǎn)者對(例如 Checkout),它消費一條消息,并產(chǎn)生一條新消息。


簡而言之,當 Checkout 服務處理傳入的 Payment Completed 事件時,它需要將 Checkout Completed 事件的發(fā)送過程封裝在一個生產(chǎn)者事務中,它還需要發(fā)送消息偏移量(使 Kafka 代理能夠跟蹤重復的消息)。


事務期間生成的任何消息將僅在事務完成后才對下游消費者(Inventory Service)可見。



此外,位于 Kafka 流開始位置的 Payment Service Producer 必須轉(zhuǎn)變?yōu)閮绲龋↖dempotent)生產(chǎn)者——這意味著代理將丟棄它生成的任何重復消息。



要了解更多信息,請觀看我的視頻“Kafka中的恰好一次語義”。

6.事件聚合


當你想知道整個批次的事件已經(jīng)被消費時


在上半部分,我描述了在 Wix 將聯(lián)系人導入到 Wix CRM 平臺的業(yè)務流程。后端包括兩個服務。一個是作業(yè)服務,我們提供一個 CSV 文件,它會生成作業(yè)事件到 Kafka。還有一個聯(lián)系人導入服務,它會消費并執(zhí)行導入作業(yè)。



假設(shè) CSV 文件有時非常大,將工作負載分割成更小的作業(yè),每個作業(yè)中需要導入的聯(lián)系人就會更少,這個過程就會更高效。通過這種方式,這項工作可以在 Contacts Importer 服務的多個實例中并行。但是,當導入工作被拆分為許多較小的作業(yè)時,該如何知道何時通知最終用戶所有的聯(lián)系人都已導入?



顯然,已完成作業(yè)的當前狀態(tài)需要持久化,否則,內(nèi)存中哪些作業(yè)已完成的記錄可能會因為隨機的 Kubernetes pod 重啟而丟失。


一種在 Kafka 中進行持久化的方法是使用 Kafka 壓縮主題。這類主題可以看成是一種流式 KV 存儲。


在我們的示例中,Contacts Importer 服務(在多個實例中)通過索引消費作業(yè)。每當它處理完一些作業(yè),就需要用一個 Job Completed 事件更新 KV 存儲。這些更新可以同時發(fā)生,因此,可能會出現(xiàn)競態(tài)條件并導致作業(yè)完成計數(shù)器失效。

原子 KV 存儲


為了避免競態(tài)條件,Contacts Importer 服務將完成事件寫到原子 KV 存儲類型的 Jobs-Completed-Store 中。


原子存儲確保所有作業(yè)完成事件將按順序處理。它通過創(chuàng)建一個“Commands”主題和一個“Store”壓縮主題來實現(xiàn)。

順序處理


從下圖可以看出,原子存儲如何生成每一條新的 Import-job-completed“更新”消息,并以[Import Request Id]+[total job count]作為鍵。借助鍵,我們就可以總是依賴 Kafka 將特定 requestId 的“更新”放在特定的分區(qū)中。


接下來,作為原子存儲的一部分,消費者-生產(chǎn)者對將首先偵聽每個新的更新,然后執(zhí)行 atomicStore 用戶請求的“命令”——在本例中,將已完成作業(yè)數(shù)量的值加 1。



端到端更新流示例


讓我們回到 Contacts Importer 服務流。一旦這個服務實例完成了某些作業(yè)的處理,它將更新 Job-Completed KVAtomicStore(例如,請求 Id 為 YYY 的導入作業(yè) 3 已經(jīng)完成):



Atomic Store 將生成一條新消息到 job-completed-commands 主題,鍵為 YYY-6,值為 Job 3 Completed。


接下來,Atomic Store 的消費者-生產(chǎn)者對將消費此消息,并增加 KV Store 主題中鍵 YYY-6 的已完成作業(yè)計數(shù)。



恰好一次處理


注意,“命令”請求處理必須只發(fā)生一次,否則完成計數(shù)器可能不正確(錯誤增量)。為消費者-生產(chǎn)者對創(chuàng)建一個 Kafka 事務(如上文的模式 4 所述)對于確保統(tǒng)計準確至關(guān)重要。

AtomicKVStore 值更新回調(diào)


最后,一旦 KV 最新生成的已完成作業(yè)計數(shù)的值與總數(shù)匹配(例如 YYY 導入請求有 6 個已完成作業(yè)),就可以通知用戶(通過 WebSocket,參見本系列文章第一部分的模式 3)導入完成。通知可以作為 KV-store 主題生成動作的副作用,即調(diào)用用戶提供給 KV 原子存儲的回調(diào)。



注意事項:


完成通知邏輯不一定要在 Contacts Importer 服務中,它可以在任何微服務中,因為這個邏輯完全獨立于這個過程的其他部分,只依賴于 Kafka 主題。

不需要進行定期輪詢。整個過程都是事件驅(qū)動的,即以管道方式處理事件。

通過使用基于鍵的排序和恰好一次的 Kafka 事務,避免作業(yè)完成通知或重復更新之間的競態(tài)條件。

Kafka Streams API 非常適合這樣的聚合需求,其特性包括 groupBy(按 Import Request Id 分組), reduce 或 count(已完成作業(yè)計數(shù))和 filter (count 等于總作業(yè)數(shù)),然后是副作用 Webhook 通知。對于 Wix 來說,使用現(xiàn)有的生產(chǎn)者/消費者基礎(chǔ)設(shè)施更有意義,這對我們的微服務拓撲影響更小。

總結(jié)


這里的一些模式比其他的模式更為常見,但它們都有相同的原則。通過使用事件驅(qū)動的模式,可以減少樣板代碼(以及輪詢和鎖定原語),增加彈性(減少級聯(lián)失敗,處理更多的錯誤和邊緣情況)。此外,微服務之間的耦合要小得多(生產(chǎn)者不需要知道誰消費了它的數(shù)據(jù)),擴展也更容易,向主題添加更多分區(qū)(和更多服務實例)即可。

— 本文結(jié)束 —


● 漫談設(shè)計模式在 Spring 框架中的良好實踐

● 顛覆微服務認知:深入思考微服務的七個主流觀點

● 人人都是 API 設(shè)計者

● 一文講透微服務下如何保證事務的一致性

● 要黑盒測試微服務內(nèi)部服務間調(diào)用,我該如何實現(xiàn)?



關(guān)注我,回復 「加群」 加入各種主題討論群。



對「服務端思維」有期待,請在文末點個在看

喜歡這篇文章,歡迎轉(zhuǎn)發(fā)、分享朋友圈


在看點這里
瀏覽 34
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 男女抽插视频| 亚州在线中文字幕经典a| 欧美熟女内射| 国产高清自拍| 天天干天天操天天干| 精品国产三级片| 黄色大片在线| 亚洲AV久久无码| 大屌色片| 永久黄网站| 91麻豆精品国产91久久久吃药| 俺来也听听婷婷| 国产精品无码成人AV电影| 深爱激情五月天| 精品毛片| 久久久久久久久久久成人| 精品码A片18| 麻豆天美蜜桃91| 亚洲中文无码第一页| 日韩视频一区二区| 无码在线电影| 日韩天堂网| BBw日本熟妇BBwHD| 久久高潮| 操b免费| 六月婷婷五月丁香| 日韩激情| 伊人999| 亚洲黄片大全| 黄色一级片免费观看| 欧美日韩无| 操美逼| 91干穴穴在线观看| 中文字幕无码av| 国产AⅤ爽aV久久久久成人| 黄色电影中文字幕| 自拍视频国产| 四虎综合网| 97精品人人A片免费看| 无码啪啪| 国产精品视频免费观看| 国产久久这里只有精品视频| 99热99在线| 强伦轩人妻一区二区三区四区| 国产亚洲欧美视频| 91人妻人人澡人人爽人人DVD| 吴梦梦| 极品美女扒开粉嫩小泬高潮一| 黄色三级视频在线观看| 免费成人黄片| 日逼综合| 狠狠干2021| 天天爱综合| 三级内射| 91久久精品日日躁夜夜躁欧美| 久久精品99国产国产精| 亚洲视频综合网| 欧美亚洲色色网视频| 四房婷婷| 亚洲乱伦网| 一级片| 91天堂网| 五月天开心网| 91麻豆香蕉| av中文字幕无码| va婷婷在线免费观看| 操逼超碰| 奥门毛片| 无码草| 五月天婷婷色播| 欧美成人看片| 亚洲欧洲有码在线| 亚洲天堂在线观看视频| 欧美一区二区无码视频| 91av在线看| 91.xxxxx| 人人爽人人干| 色播五月婷婷| 韩国高清无码视频| 无码福利电影| 日本高清黄色视频| 97视频在线观看免费| 一道本高清无码视频| 久久久精品免费视频| 成人午夜在线视频| 大香蕉AV在线观看| 国产91视频在线观看| 国产美女做爱视频| 人妻无码人妻| 国产精品久久久大香蕉| 成人影视在线免费观看| 在线播放高清无码| 97成人精品| 国产Av资源| 国产成人V在线精品一区| 亚洲无码A区| 亚州精品成人片| 国产精品毛片一区视频播| 丁香视频| 天天操天天干麻豆| 在线观看免费视频无码| 免费的一级A片| 久久国产热在8| 亚洲av不卡| 一道本一区二区三区免费视频| 久久香蕉综合在线| 久久久久久97电影院电影院无码| 青青五月天| 国产成人电影免费在线观看| 2019中文字幕在线免费观看| 亚洲图片激情乱伦小说| 丁香四月婷婷| 中文字幕永久在线视频v1.0| 草逼A片| 欧美性爱无码在线| 国产夫妻av| 精品乱子伦一区二区在线播放| 五月丁香婷婷激情综合| 亚洲日本中文字幕在线| 色老久久| 翔田千里一区二区三区精品播放 | 夜夜嗨AV一区二区三区啊| 国产精品视频久久久久| 全部在线A片免费播放| 骚BBBB槡BBB槡BBB| 手机看片1024你懂的| 亚洲精品白浆高清久久久久久| 99在线精品观看| 97pao| 麻豆成人精品| 日韩黄色在线视频| 婷婷精品国产一区二区三区日韩| 国产三级片自拍| 精品一区二区ww| 日韩人妻精品无码| 亚洲AV无码一区| 先锋影音av在线| 亚洲精品秘一区二区三线观看| 中文字幕亚洲有码| 黄色视频在线观看18| 人妻少妇av中文字幕乱码牛牛| 久操伊人大香蕉| 91蜜桃传媒| 日本成人免费电影| 婷婷综合av| 51妺妺嘿嘿午夜成人| 日本黄色三级| 国产乱子伦-区二区三区熟睡91 | 亚洲性爱视频在线观看| 97毛片| 91av视频| 操B五月天| 亚洲综合网在线| 蜜乳av红桃嫩久久| 日日操人人操| 成人做爰黄A片免费视频网站野外 国产成人午夜精品无码区久久麻豆 | 艹逼逼视频| 成人在线日韩| 黑人大肉棒| 91丨九色丨国产在线| 国产在线精品观看| 亚洲天堂成人网| 九九热在线观看| 国产精品成人视频| 88AV视频| 开心色播五月天| 国产性生活视频| 大香蕉综合网站| 囯产精品99久久久久久WWW| 北条麻妃无码一区二区| 午夜成人在线观看| 色婷婷久久| 色天堂色天使| 自慰一区| 国产三级精品三级在线观看| 日韩无码视频网| 粉嫩av懂色av蜜臀av分享| 欧美性爱免费网站| 亚洲综合婷婷| 国产精品久久久久久久久久二区三区| 国产SUV精品一区二区| 韩国无码高清视频| 精品人妻无码一区二区三区四川人| 日韩毛片在线播放| 日韩黄片视频| 无码乱伦| 自拍偷拍一区二区三区| 超碰1999| 大香蕉AV在线观看| 色婷婷在线视频观看| 九九九亚洲| 夜夜撸| 亚洲美女视频在线| 激情五月天综合网| 一本色道久久综合无码| 蜜桃视频成人app| 日韩欧美中文字幕在线观看| 国产操穴视频| 女人18片毛片60分钟翻译| 国产一级AV免费观看| 成人福利午夜A片公司| 欧美一级aa| 亚洲第一在线| 丁香四月婷婷| 羞羞av| 上床视频网站| 人人射| 欧美国产日韩综合在线观看170| 中国少妇xxx| 欧美偷拍一区| 美女大香蕉| 日韩AV免费看| 黑人AV| 苍井空在线播放| 欧美午夜激情视频| 人妻精品在线| 久久伊| 6969电视影片最新更新| 91大神在线免费观看| 成人福利视频在线观看| 国产无遮挡A片又黄又爽小直播| 国产精品操逼视频| 开心色婷婷| 成人在线日韩| 九九综合伊人7777777| 四川乱子伦95视频国产| 国产一级在线观看| 人与鲁牲交| 亚洲青青| 五月丁香婷婷色| 青娱乐超碰| 刘玥精品A片在线观看| 五月激情丁香婷婷| 亚洲V国产v欧美v久久久久久 | 色综合婷婷| 日韩在线成人| 欧美操| 久久精品视频播放| 欧美啪啪网站| 午夜成人免费视频| 久久91久久久久麻豆精品| AV-ThePorn| 日韩性爱在线观看| 亚洲免费在线视频观看| 无码不卡视频在线观看| 天堂在线v| 精品欧美一区二区三区久久久| 国产有码视频| 91视频青青草| 亚洲成人无码视频在线观看| 日韩成人在线观看视频| 日本免费黄色视频| 四虎最新地址| 男女啊啊啊| 伊人大香蕉在线观看| 少妇人妻一区| 欧美一级成人| 91豆花成人网站| 99热最新| 激情人妻网站| 欧美少妇视频| 婷婷综合网| 91丨PORN首页| 亚洲欧美日韩色图| 日韩人妻精品中文字幕| 福利所导航| av无码免费| 一级aa片| 中文字幕在线欧美| 日本边摸边吻奶边做爰| 亚洲AV无码成人精品涩涩麻豆| 免费无码A片在线观看全| 日韩高清无码观看| 水蜜桃91| 天天爽爽爽爽爽成人片| 好男人WWW社区在线视频夜恋| 中文字幕人妻互换av久久| 天天澡天天爽日日AV| 国产伦精品一级A片视频夜夜 | 日韩高清无码一区二区| 久久久精品999| 亚洲免费观看高清完整版在线观| 欧美精品秘一区二区三区蜜臀 | 久久91欧美特黄A片| 老妇性BBWBBWBBWBBW| 日韩在线成人中文字幕亚洲| 免费无人区一码二码乱码怎么办| 成人大战香蕉最新视频| 特一级A片| 91精品国产偷窥一区二区| 九九久久影院| 色悠悠国产| 亚洲操b| 性爱视频亚洲| 乱子伦毛片国产| 亚洲69| 91嫩草久久久久久久| 五月天婷婷激情网| 婷婷五月天在线观看| 91人人妻人人澡人人爽人人精品| 成人精品国产| 大香伊人蕉| 亚洲黄色免费观看| 天天av天天av天天爽| 国产欧美精品AAAAAA片| 亚洲无码色| 天天干天天摸| 日韩AV无码一区二区| 一区亚洲| 亚洲精品无码在线播放| 成人电影无码| 麻豆一区二区| 91久久久青青青青草| 日韩成人一区| 综合av| 久久99人妻无码精品一区| 亚洲综合在线视频| 亚洲日韩免费| 激情五月天成人| 欧美色图色就是色| 国产内射无码| 啪啪网网站| 国产又粗又长视频| 亚洲操逼网| 天天干91| 另类激情| 久久久老熟女一区二区三区91 | 日本免费一区二区三区| 欧美色影院| 日韩福利电影| 日韩特黄片| 国产三级在线观看视频| 国产非洲欧美在线| 日韩av高清| 日韩国产欧美| 天天操夜夜干| 江苏妇搡BBBB搡BBBB| 操逼网123首页| av片在线免费观看| 三级久久网| 密臀AV在线| 国产浮力草草| 成人久久av| 一级黄片免费看| 2024AV在线| 欧美成人精品AAA| 国产精品人人| 久久成人毛片| aⅴ免费观看| 操逼在线免费观看| 午夜成人一区二区| 在线播放一区| 91人妻无码视频| 爱爱视频h| 成人午夜A片| 69er小视频| 韩国中文字幕HD久久| 久久色婷婷| 肏逼网| 国产成人无码精品| 黄片av| 中文字幕在线一区二区a| www.四虎成人网站| 怡春院视频| 99热在线免费观看| 性爱小说视频| 精品人妻一区二区三区鲁大师| 日中国老太太B| 亚洲欧美精品| 黄色片无码| av无码aV天天aV天天爽| 亚洲精品久久久久毛片A级绿茶| 中文字幕有码在线| 刘玥精品国产一区二区三区| 人人爽人人操| 国产家庭乱伦| 久久偷拍视频| 亚洲乱码中文字幕| 四虎无码丰满人妻| 一区二区无码区| 艹b视频在线观看| 牛牛免费视频| 久久国产精品在线| 一区二区三区免费看| 欧美日韩三级在线| 国产一级a毛一级a毛视频在线网站 | 91丨人妻丨偷拍| 97伊人超碰| 在线免费看av| 在线观看免费黄网站| 国产黄色在线| 各种BBwBBwBBwBBw| 天天视频色版免费观看视频| 91无码高清视频| 操逼网站大全| 国语A片| 婷婷五月天亚洲| 青娱乐大香蕉| H片免费在线观看| 胖老板办公室沙发无套爆秘书| 亚洲国产成人91精品| 久久久久国产一区二区三区四区| 无码秘人妻一区二区三-百度| 亚洲成人在线视频观看| 99久| 午夜国产在线视频| 久艹视频| jizz久久| 漂亮人妻吃鸡啪啪哥哥真的好| 国产一级婬乱片AV片AAA毛片| 国产在线一二三| 无码人妻精品一区二区三区99仓| 欧美激情亚洲无码| 在线成人| 无码电影免费观看| 法国《少女日记》电影| 亚洲无线视频| 99久久人妻精品免费二区| 亚洲精品视频在线播放| 亚洲免费AV在线| 97爱| 国产三级片在线观看视频| 国产黄色视频观看| 人人肏| 亚洲婷婷综合网| 久操| 好男人WWW一区二区三区| 日韩av一级| 99色热| 天天色色天天| 性色aV中文字幕| 91久久国产综合久久91精品网站 | 国产一级网站| 亚洲在线观看视频| 北条麻妃av在线播放| 午夜精品18视频国产| 日韩黄色一级视频| 亚洲男女网站| 无毛无码| 中文字幕精品在线观看| 亚洲AV无码乱码国产精品| 成人aaa| 97精品人妻一区二区三区在线| 欧美啪啪视频| 国产一级特黄A片| 黄片大全在线免费观看| 91熟女首页| 嫩小槡BBBB槡BBBB槡漫画| 久久久久久免费| 日韩精品成人专区无码| AV无码电影| 亚洲午夜久久| a片免费在线观看| 一区二区三区四区在线播放| 日本三级片无码| av女人天堂| 七六十路の高齢熟妇无码| 久久综合加勒比| 日本一区二区三区免费视频| 偷拍视频第一页| 成人无码欧美大片免费看| www亚洲无码A片贴吧| 自拍视频国产| 丰满人妻一区二区三区Av猛交| 污污污www精品国产网站| 不卡视频一区| 亚洲日韩中文无码| 无码黄色片| 久久国产热视频| 亚洲偷拍中文| 国产91在线播放| 精品蜜桃秘一区二区三区在线播放 | 麻豆91免费看| 黄色成人网站在线| 粉嫩av一区二区白浆| 久久久久久久香蕉视频| 色片视频| 停停五月天| 久久系列观看完整指南| 一级电影网站| 亚洲精品伊人| 午夜精品一区二区三区在线成人| www.操逼| 91草视频| 亚洲A∨无码无在线观看| 国产精品乱码毛片在线人与| 足浴店少妇69XXX| 亚洲三级片无码| www.seses| 国产精品一区在线观看| 男人天堂手机在线| 秋霞丝鲁片一区二区三区手机在绒免| 久久久久久久久久久久久自慰小片 | 狼人综合在线| 成人黄色一级A片| 天天操操操| 婷婷五月天成人电影| www.日韩av| 国产乱婬AV片免费| 国产三级片视频| 中文字幕乱码中文字幕电视剧| 国产精品在线看| 中文字幕免费久久| 欧美色视频一区二区三区在线观看 | 亚洲黄色视频在线观看网站| 翔田千里与黑人50分钟| 秋霞一级| 午夜理伦| 北条麻妃免费视频| 欧美性生活| 最好看的MV中文字幕国语| 视色视频在线观看18| 亚洲免费视频在线看| 天天干天天干天天干| 国产免费黄色片| 午夜天堂精品久久久| AAA一区二区三区| 国产综合自拍| 韩国无码一区二区三区| 日韩逼| 欧美一区二区三区在线播放| 成人电影亚洲天堂| 日皮视频免费观看| 豆花av在线| 久9精品| 国产AV网| 水蜜桃在线视频| 一级欧美日韩| 婷婷久久在线| 中国毛片视频| 香蕉网站操逼片| 久久av电影| 草草久久久无码国产专区的优势 | 欧美粗大| 青草网在线观看| 国产精品A片| 国产精品偷拍| 女同久久另类99精品国产91| 欧美特级黄| 91在线无码精品秘网站| 影音先锋成人网| 国产成人无码区亚洲A片356p| 青青草公开视频| 国产一区二区三区四区五区六区七区| 精品国产va久久久久久| 青青草无码成人天堂免费| 国产AV资源网| 性爱小说视频| 九九re| 91羞射短视频在线观看| 91精品久久久久久久| 亚洲AV免费看| 久久久精品午夜人成欧洲亚洲韩国| 99高清国产| 鸡巴在线观看| 久操视频在线观看| 成人片网址| 久久99久久99精品免视看婷婷| 蜜臀久久久99久久久久久久| 大肉大捧一进一出免费阅读| 五月欧美激情| 亚洲午夜福利| 久久伊| 视频一区二区三区免费| 欧美丁香五月| 欧美黄片一区二区| 熟妇操逼视频| 午夜免费播放观看在线视频| 亚洲第一伊人| 操屄视频在线观看| 欧美另类| 男女av免费| 在线播放高清无码| 国产无遮挡又黄又爽又| 综合站欧美精品| 色婷婷激情AV| 欧美一级免费| 欧美午夜精品成人片在线播放| 日韩精品免费在线观看| 人妻黑人一区二区三区| 日韩AV资源网| av三级片在线播放| 欧美日韩视频| 国产高潮视频| 午夜性视频| 婷婷精品在线| 91在线无码精品秘入口男同| 极品少妇av| 丁香婷婷社区| 欧美一级日韩三级| 18禁网站网址| 日韩成人无码| 国内特级毛片| 91探花视频精选在线播放| 亚洲中文娱乐| 亚洲最大黄色视频| 日日艹夜夜艹| 天天干天天操天天爽| 天天艹天天| 宅男看片| 亚州AV天堂| 欧美日逼视频| 国产九九| 成人香蕉网| 国产艹逼视频| 一本色道久久综合狠狠躁的推荐| 亚洲女人视频| 亚洲aⅤ| 亚洲日韩精品无码| 黄色视频大全在线观看| 日韩国产综合| 狠狠色狠狠操| 亚洲成人福利在线| 精品乱子伦一区二区三区,亚洲国产成| 男人先锋| 影音先锋天堂| 欧美香蕉| 97人妻一区二区三区| 91免费在线看| 一区二区无码区| 日韩中文字幕无码中字字幕| 三级无码片| 91蜜桃视频在线观看| 日本中文字幕在线观看视频| 欧美老女人的逼| 国产精品黑人ThePorn| 麻豆成人无码| 免费看欧美成人A片| 手机看片午夜福利网| 乱伦自拍| 欧美精品久久久| 性少妇| 亚洲AV第二区国产精品| 九九成人视频| 成人激情五月天| 丁香五月激情五月| 日本国产精品| 亚洲色小说| 日韩欧美精品一区二区| 婷婷五月天色色| 毛片成人网| 99er在线观看视频| 99re超碰| 色色五月丁香婷婷| 免费国产在线视频| 超碰97在线精品国产| 人妻夜夜爽天天爽| 手机在线毛片| 黑人毛片91久久久久久| 天天日天天操天天爽| 欧亚一区二区| 91丨PORN首页| 2017天天干天天射| 国产天堂av| 欧美色图狠狠干| 色色色五月婷婷| 久艹在线视频| 日本在线视频不卡| 国产成人精品一区二区三区四区 | 国产又粗又长的视频| 日日夜夜av| 三级黄视频| 17c精品麻豆一区二区免费| 久久精品国产亚洲| 亚洲人妻少妇| 日韩人妻一区| 臭小子啊轻点灬太粗太长了的视频| a免费视频| 一起操在线| 一级电影网站| 激情操逼| 欧美视频一区二区| 狠狠狠狠狠| 俺也来俺也去| 狠狠综合| 亚洲综合社区在线| 黑人干亚洲| 亚洲男女av| 91麻豆精品国产91久久久久久久久| 污视频在线观看免费| 做aAAAAA免费视频| 欧美一级特黄AAAAAA片在线视频 | 不卡一二三区| 成人在线18禁| 色综合五月婷婷| 亚洲一级无码视频| 8x8拨牐拨牐拨牐永久免费| 一本久道视频一本久道| 日韩无码系列| 第一福利导航大全| 久久久久999| 摸BBB搡BBB搡BBBB| 2014av天堂网| 蜜桃av秘无码一区三| 一区二区无码免费| 日逼日逼日逼| 伊人视频在线观看| 国产欧美综合视频| www.911国产| 黄色成人在线| 91婷婷| 吴梦梦《女教师时间暂停》| 午夜精品久久久久久久久久久久| 操b免费| 91人妻一区二区三区| AV操逼网| 69福利| jizz久久| 三级片亚洲| 九九精品视频在线观看| 成人精品毛片| 黑人操白人| 人人干人人色| 日韩性爱在线| 丰满人妻一区二区三区视频在线不卡 | 在线观看免费国产| 无码日| 亚洲毛片网| 日韩高清无码一区二区| 综合+++夜夜| 日日撸视频| 天天日夜| 黄色免费网| 久热思思| 91香蕉视频免费在线观看| 日韩中文无| 国产成人无码区免费AV片在线 | 91干| 婷婷日韩中文字幕| 亚洲av网站| 国产精品9999久久久久仙踪林| 国产伦子伦一级A片免费看老牛 | 天天色图片| 欧美最猛黑A片黑人猛交蜜桃视频 色噜噜狠狠一区二区三区300部 | 日产精品久久| 亚洲中文字幕无码在线观看| 中文资源在线观看| www高清无码| 午夜福利1000| 色色毛片| 天天干天天射天天操| 人人操人人爽| 日韩91在线视频| 操逼视频看看| 三级毛片在线| 日韩中文字幕网站| 西西人体大胆ww4444多少集| 大地影院在线资源观看| 欧美九九| 内射学生妹视频| 中文免费高清在线| 青娱乐网站| 插菊花综合网站| AV在线免费观看网站| 加勒比无码在线| 人人操碰成人网| 日韩欧美黄色片| 国产精品1区2区3区| 欧美精品福利| 国产一卡二卡在线| 五月天性爱| 亚洲国产成人精品女人久久久| 国产精品毛片一区视频播| 亚洲一区高清无码| AV无码免费| 午夜天堂网| 亚洲免费专区| 欧美成人视频大全| 亚洲AV片一区二区三区| 日韩少妇无码| 奇米88888| 天堂成人网| 亚洲AV影院| 日本女人高潮视频| 欧美AAAAAAAAAA特级| 熟妇一区二区| 青青草视频| 亚洲黄色网址| 中文字幕免费AV| 996热re视频精品视频这里 | 99热在线播放| 91视频熟女| 五月丁香六月激情综合| 婷婷五月丁香色| 午夜激情AV| 国产九九九| 天天射天天干天天| 国产人妻一区二区精选| 国产日韩欧美一区| av不卡在线| 黄色操逼网站?| 亚洲网站免费在线观看| 日韩av第一页| 国产精品免费观看视频| www.婷婷五月天| 小H片在线观看| 国产精品成人免费| 日韩欧美成人在线视频| 三级片麻豆| 国产三级视频| 嫩BBB搡BBBB搡BBBB| 一区二区无码av| 高清AV在线| 麻豆视频在线观看| 人人操干| 国精产品一区一区三区有限公司杨| 无码在线不卡| 国产精品99久久久久的广告情况 | 夜夜撸一撸| 亚洲乱码中文字幕| 91人妻人人爽人人爽| 中文字幕浅井香舞被黑人俘虏| 五月天婷婷小说| 激情伊人五月天| 狠狠一区| 爆操约了良家| 高清无码视频免费版本在线观看| 久久无码一区二区| 豆花av| 欧美五月在线网址| 天天草天天爽| jzzijzzij亚洲成熟少妇在线播放| 亚洲精品一区二三区不卡| 国产中文字幕AV在线播放| 毛片小电影| 成人高清无码在线观看| 久久久一区二区三区四区| 亚洲色在线播放| 99热精品免费| 国产精品911| 国产精品视频播放| 翔田千里53歳在线播放| 免费国产黄色视频| 中文字幕人妻丰满熟妇| 日韩精品在线免费视频| 日韩欧美性爱视频| 99Re66精品免费视频| 亚洲无码一| 久久久国产一区二区三区| 欧美特黄一级视频| 免费的毛片| 一级A片免费黄色视频| 青娱乐在线精品| 国产成人无码精品久在线观看| 亚洲午夜福利在线观看| 校园春色成人| 黃色一級片黃色一級片尖叫声-百度-百 | 国产成人午夜精品无码区久久麻豆 | 国产V视频| 操东北老女人| 麻豆911精一区二区| 污污污污污www网站免费观看| 亚洲一区二区在线免费观看| 中国A级片| 少妇人妻av| 91九色视频| 黄色色情小说| 欧美黄色免费在线观看| 欧洲操逼视频| 人人舔视频| 日韩人成| 亚洲日逼视频| 高清无码免费| 国产成人无码精免费视频| 久久久久久穴| 九九毛片| 亚洲欧美在线视频免费| 蜜桃视频一区二区三区四区使用方法| 亚洲AV影院| 91av在线观看视频| 黄色一级免费电影| 成人三级视频| 懂色AV无码中字幕一区| 91麻豆精品国产91久久久吃药| 国产三级黄色视频| 秘蜜桃色一区二区三区在线观看| av在线观看中文字幕| 污网站在线观看| 在线天堂a| 黄色视频久久| 日本一级特黄电影| 欧美成在线视频| 亚洲人妻无码在线| 无套进入无套内谢| 国产青草视频| 一级片在线免费观看| 高清毛片AAAAAAAAA片| 在线网址你懂的| 日韩一级一级| 久艹在线视频| 日韩毛片中文字幕| 五月天婷婷乱伦| av资源观看| 99re在线观看视频| 亚洲精品无码永久| 国产黄色视频在线看| 色五月激情五月| 欧美色图狠狠干| 熟女久久| 久久欧洲成人精品无码区|