精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品女人久久久| 91看片淫黄大片91| 在线观看一二三区| 欧美a级片一区| 精品久久一区二区| 男女av免费观看| 麻豆视频在线| www.日韩精品| 国产九九精品视频| 欧美黄色一级网站| 欧美xxxx在线| 欧美三级日本三级少妇99| 色中文字幕在线观看| 亚洲欧洲国产综合| 激情综合色综合久久| 国内自拍欧美激情| 精品视频第一页| 美腿丝袜亚洲图片| 欧美色倩网站大全免费| 99色这里只有精品| 日韩伦理在线电影| 久久丝袜美腿综合| 99理论电影网| 亚洲午夜激情视频| 亚洲一区观看| 久久久久九九九九| 欧美黄色高清视频| 欧洲vs亚洲vs国产| 日韩欧美中文一区二区| 日本肉体xxxx裸体xxx免费| 9999热视频在线观看| 专区另类欧美日韩| 日韩一区国产在线观看| 人妻精品一区一区三区蜜桃91| 美女一区二区三区| 日韩av观看网址| 日韩激情一区二区三区| 亚洲成人免费| 精品国产美女在线| 国产精品免费无码| 婷婷综合一区| 亚洲黄色www| 四虎国产精品免费| 国产成人免费av一区二区午夜 | 国产成人亚洲精品青草天美| 国产精品羞羞答答| 中国黄色一级视频| 视频精品一区二区| 日本老师69xxx| 国产一级做a爱片久久毛片a| 亚洲乱亚洲高清| 欧美俄罗斯乱妇| 永久看片925tv| 久久看人人摘| 日韩在线不卡视频| 大地资源高清在线视频观看| 国产精品99一区二区三区| 亚洲性生活视频在线观看| 性欧美13一14内谢| 综合国产视频| 亚洲视频专区在线| 51妺嘿嘿午夜福利| 久久爱www成人| 亚洲精品一区二区久| 粉嫩av蜜桃av蜜臀av| 精品一区欧美| 日日摸夜夜添一区| 欧美手机在线观看| 欧美不卡在线| 久久久久久久久91| 日韩欧美视频在线免费观看| 99热免费精品| 国产精品白嫩美女在线观看| 亚洲在线精品视频| 国产一区91精品张津瑜| 51精品国产人成在线观看| 精品人妻一区二区三区四区不卡| 国产不卡视频一区| 久久av一区二区三区漫画| 国产专区在线播放| 亚洲欧洲国产日本综合| 男人草女人视频| zzzwww在线看片免费| 色综合久久久久久久久| 国产极品美女高潮无套久久久| 欧美三级精品| 日韩一区二区在线看| 欧美大喷水吹潮合集在线观看| 亚洲精品蜜桃乱晃| 日韩有码在线视频| 自拍偷拍欧美亚洲| 欧美aaaaa成人免费观看视频| 亚洲qvod图片区电影| 人妻丰满熟妇av无码区hd| 国产欧美精品国产国产专区| 浴室偷拍美女洗澡456在线| 超碰中文在线| 在线观看免费亚洲| 日本少妇xxxx软件| 欧美一区二区三| 欧美日韩国产999| 中文字幕在线日本| 国产高清久久久久| 午夜精品视频在线观看一区二区| 在线三级电影| 欧美日韩中文精品| 999精品免费视频| 欧美国产偷国产精品三区| 91国内免费在线视频| 91国在线视频| 久久精品夜色噜噜亚洲aⅴ| 老司机午夜网站| 成人日韩在线| 亚洲二区中文字幕| 日韩精品一区二区三区在线视频| 国产欧美日韩一级| 91国产丝袜在线放| 阿v免费在线观看| 欧美日韩激情视频| 在线成人精品视频| 999精品视频| 日韩av免费看| 色av男人的天堂免费在线| 亚洲乱码一区二区三区在线观看| 天天操天天摸天天爽| 欧美一区二区三区久久| 久久久女人电视剧免费播放下载| 亚洲资源在线播放| 2020国产成人综合网| 国产毛片久久久久久国产毛片 | 99理论电影网| 国产黄色小视频在线| 欧美综合色免费| 播金莲一级淫片aaaaaaa| 国内一区二区三区| 亚洲综合av影视| 色影视在线观看| 欧美在线看片a免费观看| 特级西西人体4444xxxx| 激情综合久久| 国产精品裸体一区二区三区| 在线观看中文字幕的网站| 7777精品伊人久久久大香线蕉经典版下载| 亚洲精品乱码久久久久久久久久久久| 亚洲第一伊人| 96国产粉嫩美女| 国产最新在线| 欧美一区二区精品在线| √天堂中文官网8在线| 韩国av一区二区三区| 亚洲在线欧美| 亚洲男女网站| 久久不射热爱视频精品| 国产高清免费av| 一区二区三区在线视频观看| av地址在线观看| 欧美日韩一区自拍| 国产精品高清一区二区三区| 草莓视频丝瓜在线观看丝瓜18| 精品国产91乱码一区二区三区| 久久久久亚洲av成人片| 成人性视频网站| 日韩免费视频播放| 天海翼亚洲一区二区三区| 国产91在线播放精品91| 国产永久av在线| 欧美男生操女生| 极品魔鬼身材女神啪啪精品| 福利电影一区二区三区| 人人妻人人添人人爽欧美一区| 久久99精品久久久久久园产越南| 日产精品99久久久久久| av资源网在线观看| 欧美一区二区三区不卡| 久久综合加勒比| 91视频观看视频| 中文字幕有码av| **女人18毛片一区二区| 粉嫩av一区二区三区免费观看 | 午夜影院欧美| 成人片在线免费看| 中文字幕人成乱码在线观看| 综合网日日天干夜夜久久| 国产99久一区二区三区a片 | 久久精品偷拍视频| 综合婷婷亚洲小说| 日韩少妇一区二区| 日本成人在线电影网| 青青视频免费在线观看| 日韩极品少妇| 成人有码视频在线播放| 国产精选在线| 日日狠狠久久偷偷四色综合免费 | 欧美精选视频一区二区| 久热精品视频在线| 四虎在线免费观看| 91精品国产全国免费观看| 久久青青草视频| 亚洲欧美经典视频| 精品人妻互换一区二区三区| 国产成人免费xxxxxxxx| 能看的毛片网站| 欧美在线免费一级片| 欧美一区二区三区四区夜夜大片| 日韩成人精品| 国产精品一区二区久久久久| wwwwxxxx在线观看| 日韩专区在线观看| 毛片在线能看| 亚洲成人在线视频播放| 亚洲无码久久久久| 色欧美日韩亚洲| 久久精品亚洲无码| 亚洲天堂久久久久久久| 精品人伦一区二区| 成人黄色在线视频| 三级av免费看| 免费人成黄页网站在线一区二区| 丁香六月激情婷婷| 欧美在线日韩| 欧美aaa在线观看| 第一社区sis001原创亚洲| 久久久久欧美| 国产suv精品一区| 91亚洲一区精品| 久久三级毛片| 国产99久久精品一区二区 夜夜躁日日躁 | 日韩电影免费观看高清完整版在线观看| 韩国精品久久久999| 中文国产字幕在线观看| 北条麻妃久久精品| jzzjzzjzz亚洲成熟少妇| 亚洲精品少妇网址| 天堂中文网在线| 337p日本欧洲亚洲大胆色噜噜| 国产伦精品一区二区三区免.费| 欧美性猛交xxxxxx富婆| 69xxxx国产| 色狠狠桃花综合| 国产精品老女人| 黄色成人av网| 国产手机在线视频| 亚洲国产成人91porn| 精品视频一区二区在线观看| 亚洲宅男天堂在线观看无病毒| 91成人福利视频| 樱花草国产18久久久久| 欧美第一页在线观看| 亚洲欧美日韩久久| 农村黄色一级片| 亚洲亚洲人成综合网络| 国产精品.www| 精品久久久久久中文字幕一区奶水| 国产午夜激情视频| 第一福利永久视频精品| 日日夜夜综合网| 色婷婷久久久亚洲一区二区三区| 中文字幕一区在线播放| 91成人免费在线视频| 中文字幕乱码人妻二区三区| 欧美日韩在线播放三区| 国产麻豆91视频| 欧美刺激脚交jootjob| 免费av网站观看| 亚洲美女激情视频| www 日韩| 欧美美最猛性xxxxxx| 91jq激情在线观看| 日韩av片免费在线观看| 另类一区二区三区| 97在线电影| 窝窝社区一区二区| 五月婷婷一区| 国内精品久久久久久久97牛牛 | 日韩精品99| 91精品久久久久久久久久另类| 久久免费精品| 精品在线视频一区二区三区| 欧美精品一区二区久久| www国产免费| 亚洲免费影院| 亚洲精品在线视频播放| 成人av在线看| 久操视频在线观看免费| 亚洲精品写真福利| 色网站在线播放| 欧美日韩在线亚洲一区蜜芽| 黄色成人一级片| 中国china体内裑精亚洲片| 18+激情视频在线| 日本精品va在线观看| 伊人久久综合网另类网站| 精品中文字幕人| 欧美激情电影| aa在线免费观看| 国产一区二区视频在线| 亚洲av无码一区二区二三区| 亚洲日本va在线观看| 51国产偷自视频区视频| 7777精品伊人久久久大香线蕉完整版| 天天躁日日躁狠狠躁喷水| 伊人久久男人天堂| av资源新版天堂在线| 国产日本欧美一区| 日韩精品免费一区二区夜夜嗨| 三年中国中文在线观看免费播放 | 五月婷婷丁香综合网| av高清久久久| www.超碰在线观看| 欧美制服丝袜第一页| 手机av在线免费观看| 毛片精品免费在线观看| 激情开心成人网| 久久99精品久久久久久三级| 欧美暴力喷水在线| 99热一区二区| 国产日韩欧美一区二区三区综合| 国语对白一区二区| 欧美一区二区三区电影| 日本www在线观看视频| 人人澡人人澡人人看欧美| 日韩高清一区| 91社在线播放| 九色综合狠狠综合久久| 蜜桃传媒一区二区亚洲| 婷婷开心久久网| 成人毛片在线免费观看| 欧美超级免费视 在线| 欧美性aaa| 日本一区二区在线| 久久精品麻豆| 久久一区二区电影| 亚洲午夜精品久久久久久久久| 国产伦精品一区二区三区视频痴汉| 伊人伊人伊人久久| 日韩一区二区三区在线免费观看| 欧美日韩一区在线观看视频| 夜夜精品视频| 成人免费毛片日本片视频| 亚洲综合丁香婷婷六月香| 国产成人精品a视频| 久久视频在线直播| 精品一区二区三区亚洲| 中文字幕欧美日韩一区二区| 六月丁香综合在线视频| 亚洲精品天堂网| 欧美男生操女生| 91一区二区三区在线| 91超碰在线电影| 精品成人一区| 老司机午夜免费福利| 亚洲va国产天堂va久久en| 手机看片一区二区| 97在线视频免费看| 西野翔中文久久精品字幕| 日韩毛片在线免费看| 国产欧美一区二区在线| 亚洲性生活大片| 久久99精品视频一区97| 狠狠一区二区三区| 欧美 日韩 国产一区| 国产亚洲精品bt天堂精选| 特级西西444www高清大视频| 中文字幕日韩在线观看| 国产免费av国片精品草莓男男| www.黄色网址.com| 成人高清视频在线观看| 亚洲另类欧美日韩| 伊人伊人伊人久久| 麻豆国产精品| 浮妇高潮喷白浆视频| 国产日韩高清在线| 国产精品久久久久久久久久久久久久久久久久 | 国产精品最新在线观看| 91成人观看| 亚洲国产果冻传媒av在线观看| 在线观看免费视频综合| 超碰在线免费播放| 激情欧美一区二区三区中文字幕| 免费视频久久| 日韩三级久久久| 亚洲国产成人av在线| 精品欧美日韩精品| japanese在线播放| 26uuu国产在线精品一区二区| 中文字字幕在线中文乱码| 欧美超级乱淫片喷水| 九九亚洲视频| 国产探花在线观看视频| 福利视频导航一区| 麻豆av免费在线观看| 精品一区二区日本| 激情亚洲综合在线| 男人午夜免费视频| 免费av一区二区| 国产一区二区三区不卡视频网站| 污免费在线观看| 91久久精品日日躁夜夜躁欧美| av免费网站在线| 日韩久久久久久久|