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

微服務化后,這幾點一定要注意

開發 架構
隨著業務發展,很多系統需要經歷服務拆分的過程。微服務化過程踩坑也是很正常的事。如果在服務拆分之前做好充分準備,能幫我們少走很多彎路。本文主要從服務依賴,接口版本,隔離,數據一致等方面說說微服務化過程應該注意的點。

[[397850]]

本文轉載自微信公眾號「二馬讀書」,作者二馬讀書。轉載本文請聯系二馬讀書公眾號。

隨著業務發展,很多系統需要經歷服務拆分的過程。微服務化過程踩坑也是很正常的事。如果在服務拆分之前做好充分準備,能幫我們少走很多彎路。本文主要從服務依賴,接口版本,隔離,數據一致等方面說說微服務化過程應該注意的點。

循環依賴問題

微服務化之后服務之間會存在各種依賴關系,不過依賴需要遵循一定的規則,不能太隨意。否則,就會出現循環依賴的問題,而且會讓調用關系變得錯綜復雜難于維護。下面是服務依賴的幾條規則:

1,上層服務可以調用下層服務。

2,同級服務之間不能產生依賴關系,及不能產生調用關系。

3,下層服務不能調用上層服務。

4,服務之間的調用關系只能是單向的。

例如,在電商系統里包括支付服務(Pay),庫存服務(Inventory),訂單服務(Order)。支付服務和庫存服務屬于基礎服務,訂單服務屬于上層服務。支付服務和庫存服務是同級的服務,他們之間不能存在調用關系。訂單服務屬于上層服務,訂單服務可以調用支付服務和庫存服務,但是支付服務和庫存服務不能調用上層的訂單服務。

假設我們不管這些規則,讓Order和Pay可以互相調用。這樣就會產生循環依賴,Order調用Pay,Pay也調用Order,這樣彼此都會依賴對方。

循環依賴導致哪些問題?

1,無限遞歸調用

假如,Order調用Pay的A方法,Pay調用Order的B方法。然后,A方法里又調用了Order的B方法,B方法里又調用了Pay的A方法。這樣就會產生無限的遞歸調用,后果自然不言而喻了。

  1. Order { 
  2.    void B(){ 
  3.      Pay.A(); 
  4.    } 
  1. Pay{ 
  2.    void A(){ 
  3.      Order.B(); 
  4.    } 

2,部署依賴問題

假設Order,Pay,Inventory彼此之間都可以通過API互相調用。當API接口發生變更時,為了讓其他服務能夠正常調用,API需要重新編譯。如果Order和Pay的API都有變化,上線發布時就需要特別小心。為了保證發布成功,就需要根據服務間API的依賴關系,詳細考慮先打包部署哪個服務,后打包部署哪個服務,才不至于發布失敗。如果有更多的服務呢?比如10幾個,梳理依賴關系都會把人搞瘋的。

3,另外,循環依賴會讓服務間的調用關系變得錯綜復雜,系統難于維護。

接口版本兼容

一些初中級程序員往往會忽略接口變更的問題,經常會因為接口變更導致線上問題。比如某個小型電商平臺的訂單服務調用支付服務的某個接口,產品突然提了一個需求,這個需求需要在這個支付接口上加一個參數。開發這個需求的是個新手,他直接在原來的接口方法上實現了需求并加上了參數,聯調測試通過后就發布上線了。結果剛上線訂單服務就開始報錯,因為方法變了,加了參數,訂單服務找不到老的方法了。所以就會一直報錯,直到訂單服務上線為止。

所以我們一定要注意接口版本問題。我們可以新加一個方法去重載老的方法,在新方法里實現新的功能,新方法的定義除了多一個參數外,其他的和老方法一樣。也就是給老方法加了一個新版本。

這樣在支付服務上線后,訂單服務上線之前就不會報錯了,因為老方法仍然可用。訂單服務上線后就直接切到了新版本的方法。

如果我們服務框架選用的是Dubbo,當一個接口的實現,出現不兼容升級時,可以用Dubbo的版本號過渡,版本號不同的服務相互間不引用。

可以按照以下的步驟進行版本遷移:

1. 在低壓力時間段,先升級一半提供者為新版本

2. 再將所有消費者升級為新版本

3. 然后將剩下的一半提供者升級為新版本

老版本服務提供者配置:

  1. <dubbo:service interface="com.foo.BarService" version="1.0.0" /> 

新版本服務提供者配置:

  1. <dubbo:service interface="com.foo.BarService" version="2.0.0" 

老版本服務消費者配置:

  1. <dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" /> 

新版本服務消費者配置:

  1. <dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" /> 

關于隔離的考慮

數據隔離:

實際上,服務化的其中一個基本原則就是數據隔離,不同服務應該有自己的專屬數據庫,而不應該共用相同的數據庫,數據訪問可以通過服務接口或者消息隊列的方式。

很多公司微服務化后,只做了代碼工程的拆分,不同服務對應的數據仍然存放在同一個數據庫中。這樣做至少存在四個問題:

1,數據安全問題。別人的服務不但可以訪問你的數據,而且還能修改和刪除你的數據。

2,導致數據庫連接耗盡。一旦某個服務的開發者寫了一個慢SQL,并且這個服務也沒有合理限制連接數。可能會消耗掉所有的數據庫連接,進而造成訪問相同數據庫的其他服務拿不到數據庫連接,無法訪問數據庫。

3,表關聯查詢。無法避免其他服務的開發者,為了快速上線某些需求。直接查詢其他服務的表,或者跨服務做表關聯查詢。這樣會造成服務間的耦合越來越嚴重。

4,表結構變化的影響。如果某個服務直接依賴于其他服務的數據,一旦表結構發生任何變化,比如修改表名或者字段。很可能會產生災難性后果。

部署隔離:

我們經常會遇到秒殺業務和日常業務依賴同一個服務,以及C端服務和內部運營系統依賴同一個服務的情況,比如說都依賴支付服務。而秒殺系統的瞬間訪問量很高,可能會對服務帶來巨大的壓力,甚至壓垮服務。內部運營系統也經常有批量數據導出的操作,同樣會給服務帶來一定的壓力。這些都是不穩定因素。所以我們可以將這些共同依賴的服務分組部署,不同的分組服務于不同的業務,避免相互干擾。

業務隔離:

以秒殺為例。從業務上把秒殺和日常的售賣區分開來,把秒殺做為營銷活動,要參與秒殺的商品需要提前報名參加活動,這樣我們就能提前知道哪些商家哪些商品要參與秒殺,可以根據提報的商品提前生成商品詳情靜態頁面并上傳到CDN預熱,提報的商品庫存也需要提前預熱,可以將商品庫存在活動開始前預熱到Redis,避免秒殺開始后大量訪問穿透到數據庫。

數據一致性問題

做了微服務拆分后,還可能會出現數據不一致的問題。比如支付服務中,支付狀態發生變更后要通知訂單服務修改對應訂單的狀態。如果支付服務沒有正常通知到訂單服務,或者訂單服務接到通知后沒能正常處理通知,就會導致支付服務的支付狀態和訂單服務的支付狀態不一致,也就是數據會不一致。

那么如何避免數據不一致的問題產生呢?

我們通常所說的服務間數據一致性,主要包括數據強一致性和最終一致性。對于強一致性,使用的業務場景很少,而且會有明顯的性能問題。所以這里我們主要討論最終一致性。

一般我們可以采用如下幾種方式來保證服務間數據的最終一致:

定時任務重試,同步調用接口

這種方式,采用定時任務去掃表,每次定時任務掃描所有未成功的記錄,并發起重試。注意,要保證重試操作的冪等性。

這種方式的優點是:實現簡單。缺點是:需要啟動專門的定時任務,定時任務存在一定的時間間隔,實時性會比較差。而且同步接口調用的方式,耦合較重,有時無法避免循環依賴的問題。

比如,Order服務可以調用Pay,Pay做為基礎服務不應該調用Order。當Pay的某筆交易狀態發生變更后,需要通知Order。如果采用定時任務的方式就需要Order提供一個接口,定時任務掃描過程中同步調用這個接口去更新Order的訂單狀態。這樣又違反了單向依賴的原則,形成了循環依賴。

異步消息隊列,發送事務型消息

如上圖,以電商下單流程為例。下單流程最后一步,通知WMS撿貨出庫,是異步消息走消息隊列。

  1. public void makePayment() { 
  2.    orderService.updateStatus(OrderStatus.Payed); //訂單服務更新訂單為已支付狀態 
  3.    inventoryService.decrStock(); //庫存服務扣減庫存 
  4.    couponService.updateStatus(couponStatus.Used); //卡券服務更新優惠券為已使用狀態       
  5.    發送MQ消息撿貨出庫; //發送消息通知WMS撿貨出庫 

按上面代碼,大家不難發現問題!如果發送撿貨出庫消息失敗,數據就會不一致!有人說我可以在代碼上加上重試邏輯和回退邏輯,發消息失敗就重發,多次重試失敗所有操作都回退。這樣一來邏輯就會特別復雜,回退失敗要考慮,而且還有可能消息已經發送成功了,但是由于網絡等問題發送方沒得到MQ的響應。還有可能出現發送方宕機的情況。這些問題都要考慮進來!

幸好,有些消息隊列幫我們解決了這些問題。比如阿里開源的RocketMQ(目前已經是Apache開源項目),4.3.0版本開始支持事務型消息(實際上早在貢獻給Apache之前曾經支持過事務消息,后來被閹割了,4.3.0版本重新開始支持事務型消息)。

先看看RocketMQ發送事務型消息的流程:

1,發送半消息(所有事務型消息都要經歷確認過程,從而確定最終提交或回滾(拋棄消息),未被確認的消息稱為“半消息”或者“預備消息”,“待確認消息”)

2,半消息發送成功并響應給發送方

3,執行本地事務,根據本地事務執行結果,發送提交或回滾的確認消息

4,如果確認消息丟失(網絡問題或者生產者故障等問題),MQ向發送方回查執行結果

5,根據上一步驟回查結果,確定提交或者回滾(拋棄消息)

看完事務型消息發送流程,有些讀者可能沒有完全理解,不要緊,我們來分析一下!

問題1:假如發送方發送半消息失敗怎么辦?

半消息(待確認消息)是消息發送方發送的,如果失敗,發送方自己是知道的并可以做相應處理。

問題2:假如發送方執行完本地事務后,發送確認消息通知MQ提交或回滾消息時失敗了(網絡問題,發送方重啟等情況),怎么辦?

沒關系,當MQ發現一個消息長時間處于半消息(待確認消息)的狀態,MQ會以定時任務的方式主動回查發送方并獲取發送方執行結果。這樣即便出現網絡問題或者發送方本身的問題(重啟,宕機等),MQ通過定時任務主動回查發送方基本都能確認消息最終要提交還是回滾(拋棄)。當然出于性能和半消息堆積方面的考慮,MQ本身也會有回查次數的限制。

問題3:如何保證消費一定成功呢?

RocketMQ本身有ack機制,來保證消息能夠被正常消費。如果消費失敗(消息訂閱方出錯,宕機等原因),RocketMQ會把消息重發回Broker,在某個延遲時間點后(默認10秒后)重新投遞消息。

結合上面幾個同步調用hmily完整代碼如下:

  1. //TransactionListener是rocketmq接口用于回調執行本地事務和狀態回查 
  2. public class TransactionListenerImpl implements TransactionListener { 
  3.      //執行本地事務 
  4.      @Override 
  5.      public LocalTransactionState executeLocalTransaction(Message msg, Object arg) { 
  6.          記錄orderID,消息狀態鍵值對到共享map中,以備MQ回查消息狀態使用; 
  7.          return LocalTransactionState.COMMIT_MESSAGE; 
  8.      } 
  9.   
  10.      //回查發送者狀態 
  11.      @Override 
  12.      public LocalTransactionState checkLocalTransaction(MessageExt msg) { 
  13.          String status = 從共享map中取出orderID對應的消息狀態;  
  14.          if("commit".equals(status)) 
  15.            return LocalTransactionState.COMMIT_MESSAGE; 
  16.          else if("rollback".equals(status)) 
  17.            return LocalTransactionState.ROLLBACK_MESSAGE; 
  18.          else 
  19.            return LocalTransactionState.UNKNOW; 
  20.      } 
  1. //訂單服務 
  2. public class OrderService{ 
  3.  
  4.   //tcc接口 
  5.   @Hmily(confirmMethod = "confirmOrderStatus", cancelMethod = "cancelOrderStatus"
  6.   public void makePayment() { 
  7.      1,更新訂單狀態為支付中 
  8.      2,凍結庫存,rpc調用 
  9.      3,優惠券狀態改為使用中,rpc調用 
  10.      4,發送半消息(待確認消息)通知WMS撿貨出庫 //創建producer時這冊TransactionListenerImpl 
  11.   } 
  12.    
  13.   public void confirmOrderStatus() { 
  14.      更新訂單狀態為已支付 
  15.   } 
  16.  
  17.   public void cancelOrderStatus() { 
  18.      恢復訂單狀態為待支付  
  19.   }   
  20.    
  1. //庫存服務 
  2. public class InventoryService { 
  3.  
  4.   //tcc接口 
  5.   @Hmily(confirmMethod = "confirmDecr", cancelMethod = "cancelDecr"
  6.   public void lockStock() { 
  7.      //防懸掛處理 
  8.      if (分支事務記錄表沒有二階段執行記錄) 
  9.        凍結庫存 
  10.      else 
  11.        return
  12.   } 
  13.    
  14.   public void confirmDecr() { 
  15.      確認扣減庫存 
  16.   } 
  17.   public void cancelDecr() { 
  18.      釋放凍結的庫存 
  19.   }   
  20.    
  1. //卡券服務 
  2. public class CouponService { 
  3.  
  4.   //tcc接口 
  5.   @Hmily(confirmMethod = "confirm", cancelMethod = "cancel"
  6.   public void handleCoupon() { 
  7.      //防懸掛處理 
  8.      if (分支事務記錄表沒有二階段執行記錄) 
  9.        優惠券狀態更新為臨時狀態Inuse 
  10.      else 
  11.        return
  12.   } 
  13.    
  14.   public void confirm() { 
  15.      優惠券狀態改為Used 
  16.   } 
  17.   public void cancel() { 
  18.      優惠券狀態恢復為Unused 
  19.   }   
  20.    

如果執行到TransactionListenerImpl.executeLocalTransaction方法,說明半消息已經發送成功了,也說明OrderService.makePayment方法的四個步驟都執行成功了,此時tcc也到了confirm階段,所以在TransactionListenerImpl.executeLocalTransaction方法里可以直接返回LocalTransactionState.COMMIT_MESSAGE 讓 MQ提交這條消息,同時將該訂單信息和對應的消息狀態保存在共享map里,以備確認消息發送失敗時MQ回查消息狀態使用。

3,采用TCC,SAGA,Seata等框架

 

責任編輯:武曉燕 來源: 二馬讀書
相關推薦

2020-11-23 18:36:21

容器微服務程序

2024-03-21 15:01:44

2018-10-26 14:32:46

2017-06-07 09:13:13

云存儲云服務公有云

2019-09-21 20:57:59

Android安卓開發

2021-12-06 23:11:34

手機電池充電

2022-01-10 13:06:13

微服務API網關

2023-12-26 16:33:57

k8s私有化云服務

2021-09-14 11:26:22

微服務架構模式

2020-03-27 08:46:51

微服務服務網關

2021-10-16 07:33:26

Windows 11操作系統微軟

2019-12-02 15:35:25

電腦i7i5

2020-12-23 13:29:15

微服務架構面試官

2019-12-31 09:43:54

微服務JavaDocker

2015-08-03 11:32:44

Windows 10安裝

2017-10-30 12:49:43

2019-04-15 13:24:31

2018-01-23 06:50:04

云計算遷移

2009-08-28 09:26:35

C#連接Access

2021-06-04 09:16:13

微服務架構開發
點贊
收藏

51CTO技術棧公眾號

午夜在线视频观看| 欧美精品乱码视频一二专区| 亚洲精品在线影院| 国产精品免费视频观看| 亚洲影院色无极综合| 久久99久久久| 国产成人一区| 日韩一区二区三区四区五区六区| 日韩国产一级片| 国产三级在线看| 国产一区二区在线观看视频| 97在线看免费观看视频在线观看| 蜜桃av乱码一区二区三区| 国产一区二区av在线| 精品久久久久久中文字幕一区奶水 | eeuss国产一区二区三区| 国产精品扒开腿做爽爽爽男男| 91杏吧porn蝌蚪| 国产亚洲欧美日韩在线观看一区二区 | 国产在线精品91| 日韩免费网站| 91女人视频在线观看| 91精品久久久久久久久中文字幕| 日本在线视频中文字幕| 91精品一区二区三区综合在线爱| 亚洲老头老太hd| 中文字幕无码毛片免费看| 亚洲精品国产嫩草在线观看| 亚洲成a人v欧美综合天堂 | 日本在线不卡一区二区| 久久久加勒比| 色婷婷综合久色| 久久国产精品网| av网站在线看| 国产精品美女久久久久久久| 鲁丝一区鲁丝二区鲁丝三区| 亚洲精品国产精品国| 久久99精品久久久久久久久久久久 | 欧美成人aaaaⅴ片在线看| 91一区二区| 尤物九九久久国产精品的特点| 中文成人无字幕乱码精品区| 视频一区中文字幕精品| 日韩一区和二区| 最新免费av网址| 国产福利亚洲| 欧美在线free| 亚洲男人天堂色| 免费福利视频一区二区三区| 第一福利永久视频精品| 你真棒插曲来救救我在线观看| 日韩少妇视频| 亚洲综合一区在线| 伊人再见免费在线观看高清版 | 国产av一区二区三区| 美女精品一区二区| 国产精品日韩在线一区| 亚洲av无码不卡| 日韩精品一二三区| 国产精品欧美一区二区| 五月婷婷六月婷婷| 日本欧美一区二区三区乱码| 国产精品福利网站| 中文字幕在线观看免费| 老司机免费视频一区二区| 国产精品视频地址| 国产精品久久久久久久久久久久久久久久久久 | 久久se精品一区精品二区| 国产精品免费观看在线| 亚洲影视一区二区| 国产精品中文有码| 国产精品免费一区二区三区四区| 欧美一级做性受免费大片免费| 成人午夜私人影院| 精品伊人久久大线蕉色首页| 免费在线黄色影片| 国产精品美女久久福利网站| 精品一区二区成人免费视频| 成人三级小说| 黑人精品xxx一区一二区| 中文字幕欧美人妻精品一区| 婷婷精品久久久久久久久久不卡| 欧美一级搡bbbb搡bbbb| 中文字幕人妻一区二区三区| 性人久久久久| 神马久久桃色视频| 精品人妻在线播放| 久久黄色网页| 91精品国产自产在线| 亚洲欧美激情国产综合久久久| 91免费视频网址| 一区二区精品视频| 超碰在线资源| 欧美丝袜丝交足nylons| 国产乱国产乱老熟300部视频| 天堂综合网久久| 久久精品91久久久久久再现| 日本免费一二三区| 蜜桃av一区二区在线观看| 99在线观看视频| 欧美巨乳在线| 亚洲色图清纯唯美| 久久久精品在线视频| 日韩三级一区| 亚洲欧美精品中文字幕在线| 老女人性淫交视频| 久久一区二区三区四区五区| 97av影视网在线观看| 国产美女性感在线观看懂色av| 亚洲精品视频免费观看| 久久久久国产精品熟女影院| 亚洲天堂中文字幕在线观看| 中日韩美女免费视频网站在线观看 | 中文字幕乱码在线人视频| 亚洲三级性片| 国内揄拍国内精品| 国产永久免费视频| 久久精品人人做| 人人妻人人添人人爽欧美一区| 2019中文亚洲字幕| 亚洲人成网站免费播放| 日本一区二区不卡在线| 国产精品影视在线| 亚洲精美视频| 朝桐光一区二区| 亚洲激情在线观看视频免费| 欧美黑人猛猛猛| 蜜桃免费网站一区二区三区| 日韩av电影免费在线观看| 国产美女高潮在线| 8x8x8国产精品| 国产又粗又硬视频| 日韩主播视频在线| 欧美精品在线一区| 综合久久2023| 日韩毛片在线看| 日本网站免费观看| 国产不卡在线播放| 第九区2中文字幕| 高清国产一区二区三区四区五区| 自拍视频国产精品| 伊人成人在线观看| 欧美国产禁国产网站cc| 国产视频一区二区三区在线播放 | 日本黄色成人| 中文字幕在线视频日韩| 在线免费观看日韩视频| 日本一区二区三区四区| 国产 porn| 日韩欧美精品一区| 国产精品专区第二| 久久日韩视频| 欧美一区二区三区在线| 欧美日韩亚洲国产另类| 国产精品主播直播| 亚洲一区二区三区av无码| 91久久精品无嫩草影院| 久久男人资源视频| 天堂91在线| 色综合久久综合| 娇妻被老王脔到高潮失禁视频| 老**午夜毛片一区二区三区| 日韩欧美第二区在线观看| 国产精品一区二区免费福利视频| 中文字幕在线成人| 精品欧美在线观看| 五月婷婷综合网| 日本xxx在线播放| 日韩av中文在线观看| 亚洲欧洲国产日韩精品| 欧美欧美在线| 91高清视频免费| 国产免费av高清在线| 欧美久久久久久久久中文字幕| av成人免费网站| 成人sese在线| 三级在线免费看| 亚洲欧美偷拍自拍| 极品尤物一区二区三区| 第四色男人最爱上成人网| 在线视频亚洲欧美| 午夜久久久久久噜噜噜噜| 欧美色欧美亚洲高清在线视频| 91麻豆精品国产91久久综合| 国产精品一级片在线观看| 激情深爱综合网| 久久国产亚洲| 国产一区不卡在线观看| 97精品国产99久久久久久免费| 久久精品国产综合| 天堂在线一二区| 欧美日韩三级一区二区| 久久综合色综合| 国产拍揄自揄精品视频麻豆| 成人三级做爰av| 日本午夜精品视频在线观看| 999一区二区三区| 精品国产99| 粉嫩精品一区二区三区在线观看| 国产另类xxxxhd高清| 欧美精品成人在线| av在线日韩国产精品| 亚洲国产99精品国自产| 一本到在线视频| 欧美午夜片在线免费观看| 精品国产欧美日韩不卡在线观看 | 看黄色录像一级片| 91看片淫黄大片一级| 污污视频在线免费| 日韩av成人高清| 玩弄中年熟妇正在播放| 亚洲欧美综合久久久| 欧美精品一区在线| 麻豆精品少妇| 999在线免费观看视频| jizzjizz少妇亚洲水多| 91精品国产自产91精品| 永久免费网站在线| 日韩有码在线播放| 国产高清美女一级毛片久久| 欧美精品一区二区三区视频| 国产免费高清视频| 在线免费不卡电影| 中文字幕在线欧美| 欧美日韩精品在线视频| 国产一级视频在线| 亚洲黄网站在线观看| 福利视频第一页| 国产视频一区二区在线观看| 97人妻精品一区二区三区免| 成人精品电影在线观看| 国产伦精品一区二区三区妓女下载| 久草精品在线观看| 天天干天天av| 久久国产夜色精品鲁鲁99| 国产一级特黄a大片免费| 久久亚洲风情| 久久久精品三级| 日韩电影在线免费| 日韩av播放器| 日韩国产高清在线| 一区二区三区韩国| 免费在线观看日韩欧美| 91国产精品视频在线观看| 日本欧美一区二区三区| 向日葵污视频在线观看| 麻豆视频一区二区| 男人的天堂最新网址| 久久99精品国产91久久来源| 中文字幕资源在线观看| 国产一区不卡精品| 欧美xxxx黑人| 成人激情黄色小说| 亚洲欧美在线不卡| 久久女同性恋中文字幕| 波多野结衣 在线| 国产欧美综合在线观看第十页| xxxxx99| 亚洲人精品一区| 欧美人妻一区二区| 亚洲r级在线视频| 亚洲天堂一区在线| 欧洲精品一区二区三区在线观看| 这里只有精品999| 欧美美女网站色| 亚洲成人黄色片| 日韩精品在线影院| eeuss影院www在线播放| 久久视频中文字幕| 成人性生交大片免费看网站| 欧美又大又粗又长| 国产成人精选| 岛国视频一区免费观看| 夜夜躁狠狠躁日日躁2021日韩| 色一情一乱一伦一区二区三区 | 国产强被迫伦姧在线观看无码| 日韩一级片网站| 午夜在线观看视频18| 丝袜美腿亚洲一区二区| 欧美78videosex性欧美| 日本精品久久久久影院| 亚洲欧美专区| 九九久久99| 久久蜜桃av| 毛片在线播放视频| 免费观看30秒视频久久| 2018国产精品| 中文字幕av免费专区久久| 欧美国产日韩在线观看成人| 欧美体内谢she精2性欧美| 国产精品毛片一区视频播| 亚洲激情自拍图| 免费看a在线观看| 91精品国产91久久久久久吃药| 精品视频在线一区二区在线| 99久久精品免费看国产四区| 欧美美女在线| 国产高清www| 美国av一区二区| 欧美bbbbb性bbbbb视频| 亚洲欧美激情一区二区| 久久久久久在线观看| 精品国产亚洲在线| 日韩黄色影院| 国产不卡av在线| 国产精品中文字幕制服诱惑| 亚洲一区二区精品在线| 免费在线观看成人av| 性生交大片免费看l| 亚洲欧美一区二区在线观看| 国产亚洲欧美在线精品| 精品美女被调教视频大全网站| 自拍视频在线免费观看| 2025国产精品视频| 91精品啪在线观看国产爱臀| 制服诱惑一区| 日本在线不卡视频一二三区| 一区二区视频观看| 一区二区三区四区在线| 国产一区二区在线视频观看| 国产亚洲美女精品久久久| 涩涩涩视频在线观看| 国产欧美一区二区视频| 欧美精品一卡| 色男人天堂av| 国产精品毛片久久久久久久| 你懂的国产在线| 亚洲大胆人体视频| 性欧美高清come| 91精品视频免费观看| 色喇叭免费久久综合网| 欧美日韩第二页| 91一区二区在线观看| 日韩精品国产一区二区| 欧美mv日韩mv国产网站app| bt在线麻豆视频| 91九色单男在线观看| 欧美成人milf| 97人人爽人人| 亚洲三级电影全部在线观看高清| 伊人久久国产精品| www.久久色.com| 伊人亚洲精品| 熟妇熟女乱妇乱女网站| 国产一区二区三区四区五区美女| 任我爽在线视频| 5858s免费视频成人| www.在线视频| 99在线高清视频在线播放| 亚洲网站啪啪| 国产xxxxxxxxx| 欧美性色19p| 川上优的av在线一区二区| 国产精品99久久久久久www| 国产欧美一区二区三区精品观看| www.xxx亚洲| 一区免费观看视频| www日本高清| 性欧美激情精品| 九一精品国产| 日韩在线不卡一区| 亚洲猫色日本管| 好吊色一区二区| 日本欧美黄网站| 国产精品精品| 日本不卡视频一区| 精品久久久久人成| 无遮挡动作视频在线观看免费入口| 成人激情av在线| 影音国产精品| 欧美激情aaa| 在线电影欧美成精品| 麻豆av在线免费观看| 久热国产精品视频一区二区三区| 久久综合九色| 最新一区二区三区| 亚洲第一视频网站| 第四色男人最爱上成人网| 天天综合五月天| 99精品视频在线观看免费| 欧美视频xxxx| 久久69精品久久久久久久电影好 | 中文字幕第99页| 久久69精品久久久久久久电影好 | 成人性生活视频免费看| 久久久久国产精品麻豆| 91久久久久久久久久久久| 久久久久中文字幕| 精品日韩欧美一区| jjzz黄色片| 在线看日本不卡| 欧美精品videossex少妇| 日本一区视频在线| 国产成人在线色| 日韩欧美国产另类| 欧美精品video| 999久久久免费精品国产| 黄色国产在线观看| 日韩丝袜美女视频| 成人精品高清在线视频|