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

用了這么久的RabbitMQ異步編程竟然都是錯的!

開發 前端
RabbitMQ雖可將消息落地磁盤,即使MQ異常消息數據也不會丟失,但異步流程在消息發送、傳輸、處理等環節,都可能發生消息丟失。所有MQ都無法確保百分百可用,業務設計都需考慮不可用時異步流程將如何繼續。

[[354956]]

 優秀的項目都由同步、異步和定時任務三種處理模式相輔相成。當屬異步編程充滿坑點。

1 適用場景

1.1 服務于主流程的分支流程

在注冊流程中,數據寫DB是主流程,但注冊后給用戶發優惠券或歡迎短信是分支流程,時效性也不強。

1.2 用戶無需實時看到結果

比如外賣下單后的配貨、送貨流程完全可異步處理,每個階段處理完成后,再給用戶發推送或短信讓用戶知曉即可。

1.3 MQ

任務的緩沖的分發,流量削峰、服務解耦和消息廣播。

當然了異步處理不僅僅是通過 MQ 來實現,還有其他方式

比如開新線程執行,返回 Future

還有各種異步框架,比如 Vertx,它是通過 callback 的方式實現

2 異步處理之坑

2.1 異步處理需做消息補償以閉環

RabbitMQ雖可將消息落地磁盤,即使MQ異常消息數據也不會丟失,但異步流程在消息發送、傳輸、處理等環節,都可能發生消息丟失。所有MQ都無法確保百分百可用,業務設計都需考慮不可用時異步流程將如何繼續。

因此,對于異步處理流程,必須考慮補償或建立主備雙活流程。

2.1.1 案例

用戶注冊后異步發送歡迎消息。

 

  • 用戶注冊落DB為同步流程
  • 會員服務收到消息后發送歡迎消息為異步流程

  • 藍線

           MQ異步處理(主線),消息可能丟失(虛線代表異步調用)

  • 綠線

          補償Job定期消息補償(備線),以補償主線丟失的消息

  • 考慮極端的MQ中間件失效場景

          要求備線的處理吞吐能力達到主線性能

代碼示例

UserController 注冊+發送異步消息。注冊方法,一次性注冊10個用戶,用戶注冊消息不能發送出去的概率為50%。

MemberService 會員服務監聽用戶注冊成功的消息,并發送歡迎短信。使用ConcurrentHashMap存放那些發過短信的用戶ID實現冪等,避免相同的用戶補償時重復發短信


對于MQ消費程序,處理邏輯須考慮去重(支持冪等):

  • MQ消息可能會因中間件本身配置錯誤、穩定性等原因出現重復
  • 自動補償重復
  • 比如本例,同一消息可能既走MQ也走補償,肯定會出現重復,而且考慮到高內聚,補償Job本身不會做去重
  • 人工補償重復

出現消息堆積時,異步處理流程必然延遲。若提供補償功能,則在處理遇到延遲時,很可能會先人工補償,過段時間后處理程序又收到消息了,重復處理。

有次MQ故障,MQ中堆積了幾十萬條發放資金消息,導致業務無法及時處理,運營以為程序出錯,就先通過后臺進行人工處理,結果MQ系統恢復后消息又被重復處理一次,造成大量資金重復發放。

異步處理須考慮消息重復可能性,因此處理邏輯須實現冪等,防止重復處理。

接著定義補償Job即備線操作。

定時任務,5秒做一次補償,因Job并不知道哪些用戶注冊的消息可能丟失,所以是全量補償。

  • 補償邏輯

           每5秒補償一次,按順序一次補償5個用戶,下一次補償操作從上一次補償的最后一個用戶ID開始

           補償任務提交到線程池以“異步”處理,提高處理能力


為實現高內聚,主線和備線處理消息,最好使用同一方法。本案例的MemberService監聽到MQ消息和CompensationJob補償,調用的都是welcome。

這里的補償邏輯簡單僅為 demo,實際生產代碼須:

  • 考慮配置補償的頻次、每次處理數量,以及補償線程池大小等參數為合適值,以滿足補償的吞吐量
  • 考慮備線補償數據進行適當延遲
  • 比如,對注冊時間在30s前的用戶再進行補償,以方便和主線MQ實時流程錯開,避免沖突
  • 諸如當前補償到哪個用戶的offset數據,需要落地DB
  • 補償Job本身須高可用,可使用類似xxl-job或ElasticJob等任務系統。

運行程序,執行注冊方法注冊10個用戶,查看日志


可見

  • 共10個用戶,MQ發送成功的用戶有四個:1、5、7、8
  • 補償任務第一次運行,補償了用戶2、3、4,第二次運行補償了用戶6、9,第三次運行補充了用戶10

消息補償閉環的最高標準

能夠達到補償全量數據的吞吐量。即若補償備線足夠完善,即使直接停機MQ,雖會稍微影響處理及時性,但至少確保流程都能正常執行。

小結

實際開發要考慮異步流程丟消息或處理中斷場景。

異步流程需有備線以補償,比如這里的全量補償方式,即便異步流程徹底失效,通過補償也能讓業務繼續進行。

2.2 RabbitMQ廣播、工作隊列模式坑

消息模式是廣播 Or 工作隊列

  • 消息廣播

          同一消息,不同消費者都能分別消費

  • 隊列模式

          不同消費者共享消費同一個隊列的數據,相同消息只能被某一個消費者消費一次。

比如同一用戶的注冊消息

  • 會員服務需監聽以發送歡迎短信
  • 營銷服務需監聽以發送新用戶小禮物

但會員、營銷服務都可能有多實例,業務需求同一用戶的消息,可同時廣播給不同的服務(廣播模式),但對同一服務的不同實例(比如會員服務1和會員服務2),不管哪個實例來處理,處理一次即可(工作隊列模式):


實現代碼時務必確認MQ系統的機制,確保消息的路由按期望。

RocketMQ實現類似功能比較簡單直白:若消費者屬于一個組,那么消息只會由同組的一個消費者消費;若消費者屬不同組,每個組都能消費一遍消息。

而RabbitMQ的消息路由模式采用隊列+交換器,隊列是消息載體,交換器決定消息路由到隊列的方式。

step1:會員服務-監聽用戶服務發出的新用戶注冊消息

若啟動倆會員服務,那么同一用戶的注冊消息應只能被其中一個實例消費。

分別實現RabbitMQ隊列、交換器、綁定三件套。

  • 隊列使用匿名隊列
  • 交換器使用DirectExchange,交換器綁定到匿名隊列的路由Key是空字符串

收到消息之后,打印所在實例使用的端口。

  • 消息發布者、消費者、以及MQ的配置

使用12345和45678兩個端口啟動倆程序實例后,發條消息,輸出的日志,顯示同一會員服務兩個實例都收到了消息:

所以問題在于不明

RabbitMQ直接交換器和隊列的綁定關系

RabbitMQ的直接交換器根據routingKey路由消息。而程序每次啟動都會創建匿名(隨機命名)隊列,所以每個會員服務實例都對應獨立的隊列,以空routingKey綁定到直接交換器。

用戶服務發消息時也設置了空routingKey,所以直接交換器收到消息后,發現匹配倆隊列,于是都轉發消息


修復

對會員服務不要使用匿名隊列,而使用同一隊列。

將上面代碼中的匿名隊列換做普通隊列:

private static final String QUEUE = "newuserQueue";@Beanpublic Queue queue() { return new Queue(QUEUE);}

這樣對同一消息,倆實例中只有一個實例可收到,不同消息被輪詢發給不同實例。

現在的交換器和隊列關系


step2:用戶服務-廣播消息給會員、營銷服務

期望會員、營銷服務都能收到廣播消息,但會員/營銷服務中的每個實例只需收到一次消息。

聲明一個隊列和一個FanoutExchange,然后模擬倆用戶服務和倆營銷服務:


注冊四個用戶。日志發現一條用戶注冊的消息,要么被會員服務收到,要么被營銷服務收到,這不是廣播。可使用的明明是FanoutExchange,為什么沒起效呢?


因為廣播交換器會忽略routingKey,廣播消息到所有綁定的隊列。該案例的倆會員服務和兩個營銷服務都綁定了同一隊列,所以四服務只能收到一次消息:


修復

拆分隊列,會員和營銷兩組服務分別使用一條獨立隊列綁定到廣播交換器

現在的交換器和隊列結構


從日志輸出可以驗證,對每條MQ消息,會員服務和營銷服務分別都會收到一次,一條消息廣播到兩個服務同時,在每一個服務的兩個實例中通過輪詢接收: 

 

異步的消息路由模式一旦配置出錯,輕則可能導致消息重復處理,重則可能導致重要的服務無法接收到消息,最終造成業務邏輯錯誤。

小結

微服務場景下不同服務多個實例監聽消息的情況,一般不同服務需要同時收到相同的消息,而相同服務的多個實例只需要輪詢接收消息。我們需要確認MQ的消息路由配置是否滿足需求,以避免消息重復或漏發問題。

2.3 死信堵塞MQ之坑

始終無法處理的死信消息,可能會引發堵塞MQ。

若線程池的任務隊列無上限,最終可能導致OOM,類似的MQ也要注意任務堆積問題。對于突發流量引起的MQ堆積,問題并不大,適當調整消費者的消費能力應該就可以解決。但在很多時候,消息隊列的堆積堵塞,是因為有大量始終無法處理的消息。

2.3.1 案例

用戶服務在用戶注冊后發出一條消息,會員服務監聽到消息后給用戶派發優惠券,但因用戶并沒有保存成功,會員服務處理消息始終失敗,消息重新進入隊列,然后還是處理失敗。這種在MQ中回蕩的同一條消息,就是死信。

隨著MQ被越來越多的死信填滿,消費者需花費大量時間反復處理死信,導致正常消息的消費受阻,最終MQ可能因數據量過大而崩潰。

定義一個隊列、一個直接交換器,然后把隊列綁定到交換器


sendMessage發送消息到MQ,訪問一次提交一條消息,使用自增標識作為消息內容


收到消息后,直接NPE,模擬處理出錯


調用sendMessage接口發送兩條消息,然后來到RabbitMQ管理臺,可以看到這兩條消息始終在隊列,不斷被重新投遞,導致重新投遞QPS達到1063。


在日志中也可看到大量異常信息。

修復方案

  • 解決死信無限重復進入隊列最簡單方案

          程序處理出錯時,直接拋AmqpRejectAndDontRequeueException,避免消息重新進入隊列

 

  1. throw new AmqpRejectAndDontRequeueException("error"); 

但更希望對同一消息,能夠先進行幾次重試,解決因為網絡問題導致的偶發消息處理失敗,若依舊失敗,再把消息投遞到專門設置的DLX。對于來自DLX的數據,可能只是記錄日志發送報警,即使出現異常也不會再重復投遞。

邏輯如下


針對該問題,我們來看

Spring AMQP的簡便解決方案

  1. 定義死信交換器、死信隊列。其實都是普通交換器和隊列,只不過專門用于處理死信消息
  2. 通過RetryInterceptorBuilder構建一個RetryOperationsInterceptor以處理失敗時候的重試。策略是最多嘗試5次(重試4次);并且采取指數退避重試,首次重試延遲1秒,第二次2秒,以此類推,最大延遲是10秒;如果第4次重試還是失敗,則使用RepublishMessageRecoverer把消息重新投入一個DLX
  3. 定義死信隊列的處理程序。本案例只記錄日志

代碼


執行程序,發送兩條消息,查看日志:


  • msg2的4次重試間隔分別是1秒、2秒、4秒、8秒,再加上首次的失敗,所以最大嘗試次數是5
  • 4次重試后,RepublishMessageRecoverer把消息發往DLX
  • 死信處理程序輸出了got dead message msg2。

雖然幾乎同時發倆消息,但msg2在msg1四次重試全部結束后才開始處理,因為默認SimpleMessageListenerContainer只有一個消費線程。可通過增加消費線程避免性能問題:

直接設置concurrentConsumers參數為10,來增加到10個工作線程


也可設置maxConcurrentConsumers參數,讓SimpleMessageListenerContainer動態調整消費者線程數。

小結

一般在遇到消息處理失敗的時候,可設置重試。若重試還是不行,可把該消息扔到專門的死信隊列處理,不要讓死信影響到正常消息處理。

 

責任編輯:姜華 來源: JavaEdge
相關推薦

2022-02-08 13:39:35

LinuxUNIX系統

2021-05-28 07:12:58

Mybatis面試官Java

2021-05-28 06:16:28

藍牙Wi-FiNFC

2021-11-08 10:00:19

require前端模塊

2021-07-21 10:10:14

require前端代碼

2022-01-25 12:41:31

ChromeResponse接口

2018-01-31 10:24:45

熱插拔原理服務器

2020-12-07 11:05:21

HttpClient代碼Java

2019-11-27 10:54:43

Tomcat連接數線程池

2020-02-15 15:33:55

Python如何運作

2020-03-30 09:22:03

AI語音技術機器視覺

2021-05-27 21:18:56

谷歌Fuchsia OS操作系統

2021-04-28 11:35:06

Java框架日志

2024-12-10 13:00:00

C++引用

2022-08-21 14:00:11

消息中間件MQ

2020-12-21 09:43:26

微信微信功能移動應用

2018-05-09 16:25:20

關系型數據庫SQL Server

2021-04-23 14:49:31

云計算混合云

2018-06-08 10:12:10

Web緩存體系服務器

2017-03-21 13:53:17

運維戴爾企業級解決方案
點贊
收藏

51CTO技術棧公眾號

欧美一级淫片aaaaaaa视频| 欧美性xxxxx极品少妇| 好吊色欧美一区二区三区| 欧美三日本三级少妇99| 欧美色图一区| 日韩午夜激情电影| 黄色国产精品视频| 色噜噜狠狠色综合网| 一级黄色片大全| 亚洲热av色在线播放| 午夜婷婷国产麻豆精品| 四虎影院一区二区三区| 丰满人妻一区二区三区免费| 视频一区二区三区中文字幕| 色综合久久88| 天天摸日日摸狠狠添| 福利电影一区| 777xxx欧美| 日本黄色三级大片| 美洲精品一卡2卡三卡4卡四卡| av在线一区二区| 成人在线一区二区| 久久久久久亚洲av无码专区| 天天射综合网视频| 亚洲视频axxx| 国产日韩欧美亚洲一区| 国产人妖一区二区| 日韩精品一区第一页| 91国自产精品中文字幕亚洲| 国产67194| 日韩欧美午夜| 亚洲性线免费观看视频成熟| 国产视频精品视频| 亚洲精品国产久| 最新电影电视剧在线观看免费观看| 国产91精品一区二区| 国产一区二区丝袜高跟鞋图片| 黄色片网站在线免费观看| 一区三区视频| 欧美激情亚洲自拍| 欧美高清视频一区二区三区| 午夜精品视频一区二区三区在线看| 亚洲精品综合久久中文字幕| 日韩av无码一区二区三区不卡| 免费看日产一区二区三区| 欧美日韩高清影院| 亚洲综合欧美在线| 青青青国产精品| 欧美色图片你懂的| 爱情岛论坛亚洲首页入口章节| 日韩精品一区二区三区| 日本久久精品电影| 嫩草av久久伊人妇女超级a| 交100部在线观看| 午夜久久久久久| 久草视频国产在线| ririsao久久精品一区| 亚洲曰韩产成在线| 天天做天天躁天天躁| 欧美xxxx黑人又粗又长| 一区二区高清免费观看影视大全| 久久久天堂国产精品| 污污的网站在线免费观看| 综合久久久久久久| 亚洲色婷婷久久精品av蜜桃| 欧美人与性动交α欧美精品图片| 亚洲在线中文字幕| 亚洲自偷自拍熟女另类| 在线国产成人影院| 欧美视频三区在线播放| 男女视频在线看| 不卡一区视频| 欧美成人国产一区二区| 日本一区二区在线观看视频| 香蕉久久精品| 在线日韩中文字幕| 久草视频免费在线播放| 一区二区三区福利| 国产精品丝袜一区二区三区| 国产乱淫a∨片免费观看| 成人一区二区三区在线观看| 九九九九九九精品| 在线观看免费黄视频| 亚洲欧美另类在线| 日韩少妇内射免费播放18禁裸乳| 日本精品不卡| 日韩一区二区免费高清| 亚洲久久久久久| 日韩精品永久网址| 久久久久亚洲| 精品国产91洋老外米糕| 三级男人添奶爽爽爽视频| 亚洲素人在线| 欧美成人一二三| 中文字幕视频网| 老司机午夜精品99久久| 国产日韩欧美精品| 日本在线观看网站| 精品国产乱码久久久久久天美| 亚洲 欧美 日韩系列| 风间由美中文字幕在线看视频国产欧美| 国产视频精品va久久久久久| 丰满少妇高潮久久三区| 久久久久国产精品一区三寸| 99高清视频有精品视频| 国产一区二区三区福利| 亚洲成人av福利| 黄色小视频免费网站| 天堂99x99es久久精品免费| 精品国偷自产在线视频| 欧美啪啪小视频| 国产精品综合在线视频| 日韩片电影在线免费观看| a级片免费在线观看| 欧美精选在线播放| 亚洲精品国产一区黑色丝袜| 国产一区二区中文| 国产日韩欧美在线观看| 肉丝一区二区| 亚洲综合视频在线| 性欧美在线视频| 精品国产乱码久久久| 91精品国产99| www.com在线观看| 中文字幕在线观看一区| 91视频免费版污| 欧美freesex8一10精品| 九九精品在线播放| 国产视频aaa| 国产精品久久久久桃色tv| 美女福利视频在线| 风间由美一区二区av101| 欧美xxxx做受欧美| 国产又粗又大又爽| 国产精品久久久久9999吃药| 国产精品亚洲a| 精品自拍偷拍| 久久久午夜视频| 亚洲爱情岛论坛永久| ...av二区三区久久精品| 福利在线一区二区三区| 欧美码中文字幕在线| 国产91久久婷婷一区二区| 天堂中文资源在线| 岛国av一区二区| 人妻丰满熟妇aⅴ无码| 天天干天天操av| 国产99久久久久久免费看农村| 特级毛片在线免费观看| 色噜噜成人av在线| 久久激情视频久久| 99国产精品欲| 亚洲综合在线观看视频| 免费a v网站| 国产精品久久久免费| 久久综合福利| 日韩欧美一区二区三区免费观看| 一区二区三区在线播放欧美| 中文字幕网址在线| 亚洲天堂久久久久久久| 91丝袜超薄交口足| 欧美 日韩 国产 一区| 成人自拍视频网站| 亚洲涩涩在线| 中文字幕亚洲一区在线观看| 国产又粗又黄又爽| 亚洲va韩国va欧美va精品| 免费中文字幕av| 久久三级视频| 亚洲人一区二区| 久久国产精品美女| 91国产美女视频| 日本啊v在线| 欧美日韩精品系列| 国产主播在线观看| 国产午夜精品一区二区三区嫩草| 黄大色黄女片18第一次| 国产精品magnet| 乱一区二区三区在线播放| 久久免费资源| 欧美精品第一页在线播放| 瑟瑟在线观看| 欧美精品v国产精品v日韩精品| 黄色一级视频免费| 久久久99精品免费观看| 欧美成人手机在线视频| 日韩午夜激情| 伊人天天久久大香线蕉av色| 极品束缚调教一区二区网站 | 欧美视频二区| 国产一区二区免费电影| 电影在线观看一区二区| 九九精品视频在线| 丁香婷婷在线| 亚洲第一福利视频| 中文在线字幕av| 午夜精品久久久久久久久久 | 日本欧美肥老太交大片| 亚洲一区二区少妇| 欧美电影网址| 色综合五月天导航| 成人亚洲综合天堂| 精品国偷自产国产一区| 中文字字幕在线中文乱码| 亚洲国产人成综合网站| 在线看片中文字幕| 99精品热视频| 亚洲天堂小视频| 日本免费新一区视频| 久艹视频在线免费观看| 天天av综合| 亚洲国产精品久久久久久女王| caoporn成人| 亚洲jizzjizz日本少妇| 日韩制服一区| 欧美亚洲国产视频| 欧美aaa免费| 日韩一区二区精品视频| 三级国产在线观看| 亚洲成人精品视频| 99久久久久久久| 欧美日韩一区不卡| 久久精品视频1| 午夜伊人狠狠久久| 久草精品视频在线观看| 亚洲久本草在线中文字幕| 国产欧美小视频| 久久这里只有精品6| 国产精品一区二区人妻喷水| 国产成人综合自拍| 欧美国产在线一区| 国产一区二区电影| 亚洲一区精品视频在线观看| 日本va欧美va瓶| 能看的毛片网站| 久久综合影音| 成年人网站大全| 日韩制服丝袜av| 全球最大av网站久久| 91精品蜜臀在线一区尤物| 伊人手机在线视频| 天天影视涩香欲综合网| 日本少妇性生活| 亚洲在线视频免费观看| 清纯粉嫩极品夜夜嗨av| 亚洲免费观看高清完整版在线 | 欧美性做爰毛片| 色在线视频观看| 91av视频在线观看| 一本大道色婷婷在线| 国产精品一二一区| 国产女主播一区二区三区| 在线观看视频一区二区三区| 成人动漫在线观看视频| 一区中文字幕| 国产亚洲情侣一区二区无 | 久久五月天婷婷| 婷婷精品在线观看| 日本高清一区| 久久综合av| www.69av| 亚洲精品字幕| 亚洲国产精品毛片av不卡在线| 丝袜美腿亚洲色图| 女同激情久久av久久| 国内精品伊人久久久久影院对白| 色偷偷中文字幕| 成人黄色a**站在线观看| 给我免费观看片在线电影的| 久久嫩草精品久久久精品| 国产sm调教视频| 亚洲欧美综合色| 免费视频一二三区| 欧美日韩免费看| 中文字幕91爱爱| 欧美一二三四在线| 在线观看xxx| 综合136福利视频在线| 在线看一级片| 69**夜色精品国产69乱| 成人日韩av| 国产成人成网站在线播放青青| 欧美freesex8一10精品| 亚洲午夜精品福利| 精品69视频一区二区三区Q| 欧美综合在线观看视频| 国产一区二区三区视频在线播放| 老司机午夜免费福利| 亚洲人成777| 97不卡在线视频| 欧美美女被草| 精品视频一区二区| 99久久久国产精品美女| 国产原创中文在线观看| 美女视频免费一区| 久久精品女同亚洲女同13| 国产精品色眯眯| 日韩精品一卡二卡| 欧美日韩高清在线| 三级视频在线| 欧美激情第1页| 日韩漫画puputoon| 国产美女精品久久久| 日韩精品二区| 777精品久无码人妻蜜桃| 老司机免费视频一区二区三区| 国产高清成人久久| 日韩毛片高清在线播放| 四虎成人在线观看| 精品99一区二区三区| 三区四区电影在线观看| 欧美一区三区三区高中清蜜桃| 欧美极品在线| 日本一区二区三区视频在线播放| 欧美视频网站| 天堂av8在线| 国产精品久久影院| 六月丁香婷婷综合| 亚洲精品在线观看视频| 羞羞污视频在线观看| 国产在线播放不卡| 欧美少妇性xxxx| 国产最新免费视频| 99国产精品久久久久久久久久| 无码人妻精品一区二区三区夜夜嗨| 欧美性大战久久久久久久| 日韩av资源站| 9.1国产丝袜在线观看| 精品久久久久久亚洲综合网站 | 欧美日韩最好看的视频| 国产精品久久| 蜜桃视频无码区在线观看| 亚洲视频小说图片| 136福利视频导航| 日韩在线免费观看视频| 播放一区二区| 先锋影音欧美| 免费成人在线视频观看| 中文字幕欧美激情极品| 欧美日免费三级在线| 91精彩在线视频| 国产精品视频xxx| 成人一区二区| 亚洲xxx在线观看| 国产精品久久久久久久久图文区| 波多野结衣一区二区三区四区| 亚洲香蕉在线观看| 精品成人免费一区二区在线播放| 日韩免费中文专区| 美国欧美日韩国产在线播放| 国产jizz18女人高潮| 欧美日本精品一区二区三区| 日本免费中文字幕在线| 成人综合国产精品| 欧美精品导航| zjzjzjzjzj亚洲女人| 亚洲欧洲在线观看av| jizz中国少妇| 韩国三级日本三级少妇99| 欧美性生活一级片| 成人精品视频一区二区| 国产精品久久久久久久久久久免费看 | 中国毛片在线观看| 日韩欧中文字幕| а天堂8中文最新版在线官网| 国产欧美久久久久久| 91精品动漫在线观看| 无码国产精品久久一区免费| 午夜视频一区二区三区| 久草视频在线看| 国产欧美va欧美va香蕉在| 影视亚洲一区二区三区| 色哟哟视频在线| 在线观看免费亚洲| 国产在线激情视频| 精品福利影视| 喷水一区二区三区| 青青草免费av| 亚洲男人天堂2019| 久久久久黄色| 国产h视频在线播放| 欧美国产国产综合| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 欧美一区二区色| 欧美淫片网站| 国产aⅴ激情无码久久久无码| 欧美日韩国产一区二区三区地区| 少妇高潮一区二区三区69| 国产精品旅馆在线| 一区在线观看| av在线播放中文字幕| 精品国产亚洲在线| 国产精品久久久久久吹潮| 国产精品无码免费专区午夜| 日本一区二区视频在线| 成人福利小视频| 国产精品久久久久久久久久东京| 好看的亚洲午夜视频在线| 久久久视频6r| 亚洲国产精品免费|