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

靈魂發(fā)問:重復消費順序消費分布式事務

開發(fā) 前端 分布式
這一篇我們要說的是重復消費、順序消費這兩個在消息隊列中常見的問題,以及一種事務消息,這種事務消息可以在消息隊列中完成分布式事務的特性。

?[[429685]]??

hello大家好

我是大家的學習成長小伙伴Captain

我們繼續(xù)學習RocketMQ,上一篇我們學習了廣播消息、延遲消息、批量消息、過濾消息這些在RocketMQ中的特性,這一篇我們繼續(xù)來學習RocketMQ中的那些奇奇怪怪的特性,讓你在開發(fā)中如魚得水

這一篇我們要說的是重復消費、順序消費這兩個在消息隊列中常見的問題,以及一種事務消息,這種事務消息可以在消息隊列中完成分布式事務的特性

把之前的這些技術點有關的文章貼到這里,大家可以先讀一讀


  • 搞懂什么是RocketMQ
  • 我怎么不知道RocketMQ生產者有這么多用法?(圖片在末尾,不謝)
  • 面試官問我:分布式事務是什么?

像這種啊,應該都是面試場上非Ban必選的技術點,除非面試官忘記了,否則他大概率會問起這些問題相關的技術棧,到時候可以到了發(fā)揮大家技術海和技術深度的時候了

01 重復消費問題

問題開始

我們來聊一聊消息隊列中的重復消費問題吧

這種問題應該是必然存在的,也是大家使用消費隊列必須考慮的問題之一,反正我用消息隊列這個問題都是首先考慮的,因為這個問題如果不去考慮,可能會造成業(yè)務上的不可接受的問題

重復消費,大家肯定也明白啥意思,就是同樣的消息消費了多次

為什么說這種問題必然存在呢,因為消息隊列一定有它的重試機制,也就是消息重發(fā),一旦消費端出現異常的情況下,消息隊列會進行消息的重發(fā)

你重發(fā)消息重新處理沒問題,但是一般一個消息的監(jiān)聽者不止一個,也就是可能多個系統(tǒng)都在監(jiān)聽著處理這個消息,別的系統(tǒng)要是不支持重復消費,那豈不很糟糕

別的系統(tǒng)的數據就會出現混亂,各個系統(tǒng)之間的數據便會出現不一致的情況

舉個例子,電商系統(tǒng)中的支付成功消息,支付成功之后發(fā)送一個消息,積分系統(tǒng)、物流系統(tǒng)多個系統(tǒng)監(jiān)聽這一消息,積分系統(tǒng)處理出現異常,該支付成功的消息重新發(fā)送了一條,物流系統(tǒng)要是不支持消息的重試,那就出現了兩個物流單子,那可能會造成客戶買了一件商品,付了一件商品的錢,結果呢,給用戶發(fā)了多個該商品





???

啊這...

這樣豈不糟糕透了?你也可能該收拾東西了

其實出現消息重試這真的真的是很常見的情況,也是大家在使用消息隊列必須必須要考慮的,比如網絡抖動、系統(tǒng)業(yè)務的處理bug等,這個問題不處理,系統(tǒng)后患無窮

那這種重復消費問題如何避免呢

解決方案:冪等




???

簡單來說,冪等是一個數學上的概念,通俗的解釋就是同樣的參數多次調用同樣的接口,調用的結果都是一樣的,也就是你支付成功的消息發(fā)送多少次,最終生成的物流數據還是一條

這樣就沒問題了

那如何去保證冪等呢

像這種問題我一般是分為兩種場景去回答的,一種是生產端的冪等,另一種是消費端的冪等

生產者端的冪等一般都是通過第三方的存儲來完成的,比如Redis,或者是流水表,在消息發(fā)送之后,將記錄暫時保存起來,下次發(fā)送消息之前,在Redis中檢查該消息是否發(fā)送過,不過這種在很多場景下是不合適的,這種會在生產端就限制了重試這一機制

如果生產端發(fā)送成功,消費失敗,則不會重新發(fā)送該消息

另一種消費者端的冪等,這種是屬于最常見的,生產者無論發(fā)送多少次同樣的消息,最終的執(zhí)行結果都是一樣的,可以分為強冪等和弱冪等來處理

強冪等其實就是用于必須冪等的業(yè)務場景,不允許出現差錯的,這種更為謹慎些,比如上面的支付成功的這種消息,物流消費方的處理肯定要是強冪等咯

這里可以引進一個三方存儲,流水表或者Redis都可以,支付成功之后,記錄到流水表中,這里用Redis可能會丟失,把支付成功和記錄到流水表放入到同一個事務中,要么一起成功,要么一起失敗

每次消息過來之后根據訂單號去流水表中檢查是否有這條流水,有流水則直接return就可以了

也可以直接用數據庫的唯一約束來做insert操作

還以一種屬于是弱冪等性,這種不能保證百分百情況下冪等,比如用Redis來存儲業(yè)務ID作為唯一key來處理,Redis宕機可能導致短信發(fā)送情況的丟失,不過問題不大,用戶也是可以接受的,我們來看一下實例代碼


 String idempotentValue = RedisUtil.get(RedisConstant.IDEMPOTENT.concat(msgId), String.class);   if (!StringUtils.isEmpty(idempotentValue)) {       log.info("========該消息已經被消費:【{}】", msgBody);       return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;     }  //業(yè)務代碼 //冪等處理  RedisUtil.setEx(RedisConstant.IDEMPOTENT.concat(msgId), "1", 5, TimeUnit.DAYS); 

02 順序消費

那你說一下你有沒有遇到過順序消費這個場景呢?

順序消費這個場景其實不是特別的常見,但是也是必不可少的,因為在某些業(yè)務場景下順序是很關鍵的,保證消息的消費順序也是很關鍵的

比如我們有一個操作需要對數據進行刪除、增加、修改三個操作,這種在一般的系統(tǒng)中我們都會采用SQL來進行操作,但是當數據量很大的時候,我們做備份同步數據的時候,這種同步有的時候會通過消息隊列來慢慢的去執(zhí)行,這個時候就很有必要保證消息的順序性,如果上面的三個操作變成了修改、刪除、增加這樣的順序,那就不是我們想要的效果了

普通的消息的消費當然是沒有固定順序的,消息發(fā)送的時候默認是采用的輪詢的方式發(fā)送到不同的分區(qū)中




???

而消費端消費的時候則是會分配到多個分區(qū)的,多個分區(qū)是同時拉取提交消費的,在同一個分區(qū)queue中,是可以保證FIFO的,但是普通消息是沒法達到順序消費的,只需要將消息投遞到同一條queue中即可




???

按照上面所說,我們只需要保證需要保持順序的消息投遞到相同的queue中即可,這樣同一個queue中的消息肯定會投遞到同一個消費實例,同一個消費實例肯定是順序拉取消息,然后順序的去消費

即使觸發(fā)重排導致queue分配給了別的消費者也沒有關系,由于queue的消息永遠是FIFO的,所以只需要保證消息的重復消費的冪等性即可,queue的內部順序還是沒問題的

順序消費分配全局順序和分區(qū)順序


  • 全局順序:對于指定的一個Topic,所有消息按照嚴格的先入先出FIFO(First In First Out)的順序進行發(fā)布和消費。
  • 分區(qū)順序:對于指定的一個Topic,所有消息根據Sharding Key進行區(qū)塊分區(qū)。同一個分區(qū)內的消息按照嚴格的FIFO順序進行發(fā)布和消費。Sharding Key是順序消息中用來區(qū)分不同分區(qū)的關鍵字段,和普通消息的Key是完全不同的概念。

為什么全局魂虛順序消息消費性能一般

全局順序消息是嚴格按照FIFO的消息阻塞原則,即上一條消息沒有被成功消費,那么下一條消息會一直被存儲到Topic隊列中。如果想提高全局順序消息的TPS,可以升級實例配置,同時消息客戶端應用盡量減少處理本地業(yè)務邏輯的耗時。

在rocketmq中,一個topic下有多個隊列queue,于是乎為了保證消息的順序性,將消息發(fā)送到同一個queue中,rocketmq提供了MessageQueueSelector隊列選擇機制,有三種實現




???

使用Hash取模法讓需要順序消費的消息發(fā)送到同一個queue中,再使用同步發(fā)送,當然這個取模根據的是這些消息的共同屬性

rocketmq僅僅保證了發(fā)送的順序性,至于最終的順序消費還是要由消費者業(yè)務來保證,就是我保證我發(fā)給你的是按照順序的消息,但是你要是自己給處理亂了就不關我rocketmq的事了,那就是你自己的代碼問題了

其實還是存在一些異常的場景會導致出現亂序的情況,比如master宕機,導致寫入隊列的數量發(fā)生了變化,你想啊,采用上面的hash取模就會出現消息分散到其它的queue中,這樣就不能保證有序了,除非選擇master如果掛了就無法發(fā)送接下來的消息

03 分布式事務

聊一下分布式事務吧

大家看一下這篇面試官問我:分布式事務是什么?

簡單來說就是,事務是要么全部執(zhí)行成功,要么全部執(zhí)行失敗;而分布式事務就是跨機器的,跨服務的,跨系統(tǒng)的事務保證,現在的系統(tǒng)都是拆分成很多的服務,每個服務最少部署兩臺,分別部署在不同的機器上

這樣系統(tǒng)之間的事務保證就是分布式事務

而rocketmq中的事務消息則天然支持分布式事務

事務消息:實現類似X或者Open XA的分布式事務功能,以達到最終一致性

消息隊列RocketMQ版提供類似X或Open XA的分布式事務功能,通過消息隊列RocketMQ版事務消息,能達到分布式事務的最終一致。

半事務消息:暫不能投遞的消息,發(fā)送方已經成功地將消息發(fā)送到了消息隊列RocketMQ版服務端,但是服務端未收到生產者對該消息的二次確認,此時該消息被標記成“暫不能投遞”狀態(tài),處于該種狀態(tài)下的消息即半事務消息。

消息回查:由于網絡閃斷、生產者應用重啟等原因,導致某條事務消息的二次確認丟失,消息隊列RocketMQ版服務端通過掃描發(fā)現某條消息長期處于“半事務消息”時,需要主動向消息生產者詢問該消息的最終狀態(tài)(Commit或是Rollback),該詢問過程即消息回查。




???

跟Captain來看看事務消息發(fā)送步驟:

1、發(fā)送方將半事務消息發(fā)送到服務端Broker,服務端會將消息持久化,成功之后會返回ACK確認消息已經發(fā)送成功,此時消息為半事務消息

2、發(fā)送方開始執(zhí)行本地事務的邏輯

3、發(fā)送方會根據本地事務的執(zhí)行結果向服務端提交二次確認,決定Commit還是Rollback,服務端收到Commit之后則把這個消息標記為可投遞,發(fā)送到消費方;服務端收到Rollback之后則刪除半事務消息,服務端不會發(fā)送,則消費方也不會收到

如可是如果斷網或者應用重啟這些情況,上述的步驟的二次確認信息無法到達服務端,怎么辦?

這里其實有個回查機制,發(fā)送方發(fā)送消息之后,需要本地執(zhí)行事務,如果事務執(zhí)行的過程出現卡死的情況,或者事務執(zhí)行結果因為網絡等問題,無法傳遞事務結果到服務端,服務端會執(zhí)行一個回查機制,來確認這個半事務消息的最終提交情況

本文轉載自微信公眾號「Java賊船」

???


責任編輯:姜華 來源: Java賊船
相關推薦

2021-09-30 07:26:15

MQ消息丟失

2022-06-27 08:21:05

Seata分布式事務微服務

2022-06-21 08:27:22

Seata分布式事務

2017-07-26 15:08:05

大數據分布式事務

2019-10-10 09:16:34

Zookeeper架構分布式

2009-06-19 15:28:31

JDBC分布式事務

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2021-09-29 09:07:37

分布式架構系統(tǒng)

2025-04-29 04:00:00

分布式事務事務消息

2019-06-26 09:41:44

分布式事務微服務

2022-03-24 07:51:27

seata分布式事務Java

2025-05-15 08:05:00

2021-04-14 13:32:50

Redis輕量級分布式

2024-06-05 06:37:19

2020-03-31 08:05:23

分布式開發(fā)技術

2018-10-28 17:54:00

分布式事務數據

2023-09-11 15:40:43

鍵值存儲云服務

2023-12-26 08:59:52

分布式場景事務機制

2022-01-26 13:46:40

分布式事務集合,這

2024-01-05 07:28:50

分布式事務框架
點贊
收藏

51CTO技術棧公眾號

碰碰在线视频| 精品少妇人欧美激情在线观看| 国精品无码一区二区三区| 欧美亚洲二区| 韩国三级视频在线观看| 国产二区三区在线| 成人一区二区三区在线观看| 国外成人在线直播| 伊人网伊人影院| 日韩精品一页| 偷拍与自拍一区| 国产精品我不卡| 日本三级视频在线| 日韩免费一区| 欧美日韩成人高清| www.亚洲视频.com| 91在线视频| 丁香另类激情小说| 国产精品夜间视频香蕉| 欧美成人精品一区二区免费看片| 香蕉久久夜色精品国产使用方法| 91麻豆精品国产综合久久久久久| 成人免费看片'免费看| 欧美孕妇孕交| 成人免费高清视频| 成人免费视频在线观看超级碰| 精品处破女学生| 香蕉视频官网在线观看日本一区二区| 亚洲美女精品久久| 熟女人妻一区二区三区免费看 | 久久国内精品一国内精品| 久久综合毛片| 国产精品-色哟哟| 国产一区二区三区的电影| 国产午夜精品视频免费不卡69堂| 国产精品一区二区无码对白| 国产精一区二区| 在线观看日韩毛片| 日本阿v视频在线观看| 成人直播在线| 中文字幕精品—区二区四季| 韩国一区二区三区美女美女秀 | 日韩欧美不卡在线观看视频| 污色网站在线观看| 欧美aa在线| 偷拍与自拍一区| 国产九九九九九| 日本小视频在线免费观看| 亚洲人成网站色在线观看| 亚洲国产一区二区三区在线| 成人免费在线视频网| 国产欧美一区二区精品仙草咪| 国产综合精品一区二区三区| 成人精品在线播放| 久久国产夜色精品鲁鲁99| 555www成人网| 日本高清不卡码| 六月天综合网| 国产精品美女免费| 亚洲永久精品一区| 麻豆国产一区二区| 国产在线精品播放| 一区二区自拍偷拍| 狠狠久久亚洲欧美| 2022国产精品| 免费观看国产视频| 91在线云播放| 日韩av影视| 在线看黄色av| 亚洲精品日韩一| 东北少妇不带套对白| 国产夫妻在线播放| 性感美女久久精品| 日本精品www| 欧美日韩在线精品一区二区三区激情综合 | 26uuu亚洲电影在线观看| 亚洲精品美腿丝袜| 蜜桃导航-精品导航| 久久伊伊香蕉| 国产人伦精品一区二区| 爱爱爱视频网站| 久久不射影院| 成人免费观看男女羞羞视频| 激情伦成人综合小说| 黄色片免费在线| 亚洲婷婷在线视频| 日韩不卡视频一区二区| 欧美人与禽猛交乱配| 欧美日韩国产中文精品字幕自在自线 | 欧美色图天堂网| 佐山爱在线视频| 欧美日韩一区二区三区在线电影 | 成人午夜高潮视频| 亚洲av永久无码国产精品久久| 99re热视频精品| 中文字幕一区二区三区最新| 麻豆网站视频在线观看| 亚洲超丰满肉感bbw| 免费的一级黄色片| 精品成人av| 欧美r级电影在线观看| 日本大片免费看| 日韩a**中文字幕| 日韩一级免费一区| 人妻av无码一区二区三区| 99re6这里只有精品| 久久久视频在线| 国产精品国产精品国产| 成人精品免费看| 亚洲一区二区在线看| 蜜桃视频www网站在线观看| 欧美日韩国产一级片| 熟妇人妻久久中文字幕| 羞羞答答成人影院www| 日本91av在线播放| 亚洲男人天堂久久| 自拍偷拍亚洲综合| 日本在线观看一区| 日韩av毛片| 欧美日韩国产综合视频在线观看 | 99热这里只有精品在线播放| 国产成人一二| 久久精品成人欧美大片| 亚洲无码精品一区二区三区| 国产精品77777竹菊影视小说| 日韩亚洲视频| 高清av不卡| 亚洲国产精品热久久| 欧美激情图片小说| 久久国产精品一区二区| 欧美亚洲另类久久综合| 黄视频网站在线观看| 欧美精品1区2区| 日本精品久久久久中文| 99精品热6080yy久久| 99re视频在线播放| 视频三区在线| 欧美色视频日本高清在线观看| 人妻 丝袜美腿 中文字幕| 成人在线免费小视频| 日韩美女在线播放| 日韩美女一级视频| 欧美色道久久88综合亚洲精品| 人妻体内射精一区二区三区| 色97色成人| 国产美女主播一区| 日本www在线| 欧美日韩中文字幕精品| 小早川怜子久久精品中文字幕| 免费亚洲网站| 日日噜噜噜噜夜夜爽亚洲精品| av日韩亚洲| 亚洲欧美在线免费| 成人一级免费视频| 欧美高清在线视频| 亚欧激情乱码久久久久久久久| 日韩成人影院| 国产一区二区丝袜高跟鞋图片| 三级在线电影| 色综合久久天天| 天天摸日日摸狠狠添| 麻豆一区二区三| 日韩国产精品毛片| 国产美女久久| 亚洲网站视频福利| 国产九色91回来了| 亚洲欧洲日产国产综合网| 亚洲综合20p| 午夜日韩视频| 鲁丝一区二区三区免费| 3d欧美精品动漫xxxx无尽| 亚洲欧美日韩网| 夜夜嗨av禁果av粉嫩avhd| 国产精品美女久久久久久久| 91欧美一区二区三区| 日韩影院二区| 99国精产品一二二线| 国产高清视频色在线www| 在线观看欧美日韩国产| 国产三级视频在线播放| 亚洲午夜精品17c| 欧美特级黄色录像| 久久字幕精品一区| 青青成人在线| 日韩美女在线| 国精产品一区一区三区有限在线| 毛片在线播放网址| 91精品蜜臀在线一区尤物| 欧美久久久久久久久久久久| 91在线视频网址| 国产色视频在线播放| 18成人免费观看视频| 欧美一区1区三区3区公司| 国产高清精品二区| 日本久久久久久久| 日本1级在线| 欧美小视频在线观看| 亚洲综合自拍网| 男女男精品视频网| 四虎4hu永久免费入口| 伦理一区二区| 91精品视频专区| 欧美性xxx| 综合激情国产一区| 蜜臀久久99精品久久久| 欧美高清你懂得| 天天操天天爽天天干| 久久九九久久九九| 香蕉久久久久久av成人| 免费人成在线不卡| 日本网站免费在线观看| 五月激情综合| 亚洲成人一区二区三区| 亚洲国产精品免费视频| 国产精品久久久久秋霞鲁丝| 羞羞的视频在线观看| 亚洲人成电影在线| 风流老熟女一区二区三区| 欧美午夜一区二区三区| 西西44rtwww国产精品| 亚洲丝袜另类动漫二区| 国产三级在线观看完整版| 99re在线精品| 国产男女无遮挡| 国模吧视频一区| 天天爱天天做天天操| 久久精品99久久无色码中文字幕| 国产精品久久久久久免费观看| 亚洲香蕉久久| 国产欧美精品日韩| 国产一区一一区高清不卡| 日本人成精品视频在线| 国产伦子伦对白在线播放观看| 久久91亚洲精品中文字幕| 黄色网页在线免费看| 日韩在线观看视频免费| 你懂的视频在线免费| 日韩成人在线视频| 日本免费网站在线观看| 欧美一区二区精品久久911| 一级片在线免费观看视频| 欧美性大战久久久久久久| 日韩免费av网站| 色狠狠一区二区三区香蕉| 一级黄色大片视频| 精品毛片网大全| 国产精品久久久久久久妇| 精品久久久久久电影| 久久丫精品久久丫| 亚洲午夜国产一区99re久久| 国产真实乱在线更新| 久久精品男人的天堂| 亚洲熟妇一区二区三区| 国产调教视频一区| 久久久久久久毛片| 亚洲国产成人午夜在线一区| 国产黄色片在线| 国产三级精品三级| xxxxx99| 久久网站最新地址| 欧美a在线播放| 亚洲丝袜精品丝袜在线| 久草网在线观看| 亚洲一二三区视频在线观看| 综合五月激情网| 亚洲国产美女搞黄色| 久热精品在线观看| 欧美日韩亚洲成人| 中文在线观看免费高清| 欧美日韩一区 二区 三区 久久精品| 中文字幕乱码无码人妻系列蜜桃| 欧美日韩高清不卡| 免费看黄网站在线观看| 亚洲精品色婷婷福利天堂| 午夜视频免费在线| 亚洲视频第一页| 黄色网址在线免费观看| 欧美精品www在线观看| 黄视频网站在线观看| 91国在线精品国内播放| 成人软件在线观看| 91久久精品视频| 精品国产影院| 一区二区三区不卡在线| 亚洲调教视频在线观看| 国产男女在线观看| 青青国产91久久久久久 | 青青青手机在线视频| www.成人在线| 天天摸日日摸狠狠添| 亚洲午夜精品在线| 小泽玛利亚一区二区三区视频| 欧美一区二区在线免费观看| 无码国产精品一区二区色情男同 | 影音先锋人妻啪啪av资源网站| 韩国女主播成人在线| www.欧美com| 不卡一二三区首页| 国产免费无遮挡吸奶头视频| 亚洲精品五月天| 日韩av免费播放| 日韩三级视频在线观看| 黄色视屏网站在线免费观看| 欧美大尺度在线观看| 天天综合网站| 极品日韩久久| 久久免费大视频| aa在线免费观看| 久久精品国产色蜜蜜麻豆| 东京热av一区| 亚洲男女毛片无遮挡| www.com亚洲| 亚洲成人999| 成人video亚洲精品| 国产成人午夜视频网址| 久久伊人久久| 亚洲激情一区二区| 亚洲一区黄色| 亚洲制服中文字幕| 国产亚洲视频系列| 丰满少妇乱子伦精品看片| 亚洲成人av中文| 亚洲熟妇无码久久精品| 亚洲人成网在线播放| 第一福利在线视频| y111111国产精品久久婷婷| 久久中文字幕av| 国产成人精品无码播放| 精东粉嫩av免费一区二区三区| 色哟哟精品观看| 欧美午夜激情在线| 三级小视频在线观看| 久久99久久久久久久噜噜| 台湾成人免费视频| 日本日本精品二区免费| 亚洲欧美日韩国产| 欧美在线一级片| 午夜精品福利一区二区蜜股av | 成人在线视频播放| 欧美高清性xxxxhd| 麻豆精品网站| 人妻体内射精一区二区三区| 亚洲制服欧美中文字幕中文字幕| 国产三区在线播放| 欧美成人性生活| www.成人在线.com| 黄色网络在线观看| 国产ts人妖一区二区| 国产成人综合在线视频| 欧美少妇性性性| 日本视频在线播放| 成人亚洲综合色就1024| 91精品国产91久久综合| 亚洲成人手机在线观看| 亚洲男女一区二区三区| 好男人www在线视频| 欧美激情在线狂野欧美精品| 9l亚洲国产成人精品一区二三| 久久99久久99精品| 99国产欧美久久久精品| 日韩免费黄色片| 精品亚洲精品福利线在观看| 亚洲承认视频| 日本午夜精品一区二区三区| 久久国产精品露脸对白| 永久久久久久久| 亚洲精品国精品久久99热一| 中文在线资源| 日韩精品电影网站| 久久国产精品久久w女人spa| 国产免费嫩草影院| 在线观看www91| 成人在线观看黄色| 91热福利电影| 一本久道综合久久精品| 一二三不卡视频| 欧美日韩一区中文字幕| h片在线免费| 久久久久网址| 久久狠狠亚洲综合| 久久免费公开视频| 日韩精品在线观| 亚洲精品乱码日韩| 久久久久免费看黄a片app| 国产欧美日韩激情| a级片在线视频| 26uuu亚洲伊人春色| 国产探花一区| 人妻精油按摩bd高清中文字幕| 狠狠色狠狠色综合日日五| 超碰免费97在线观看| 国产精品视频精品| 欧美日韩一区二区三区四区在线观看| 少妇光屁股影院| 91精品欧美一区二区三区综合在 | 黄色小视频免费在线观看| 97视频在线免费观看| 97精品视频| 一级中文字幕一区二区| www.狠狠干|