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

Dubbo中的連接控制,你真的理解嗎?

網絡 通信技術
dubbo 協議通信默認是長連接,連接配置功能用于決定消費者與提供者建立的長連接數。但官方文檔只給出了該功能的使用方法,卻并沒有說明什么時候應該配置連接控制,本文將主要圍繞該話題進行探討。

[[422543]]

本文轉載自微信公眾號「Kirito的技術分享」,作者kiritomoe。轉載本文請聯系Kirito的技術分享公眾號。

前言

剛發現微信公眾號有了標簽功能,于是乎,我將我 Dubbo 相關的文章都打上了標簽,仔細一統計,這已經是我第 41 篇原創的 Dubbo 文章了,如果你希望看到我其他的 Dubbo 文章,可以從話題標簽點擊進入。

這是一篇很久之前就想動筆寫的文章,最近正好看到群里有小伙伴分享了 Dubbo 連接相關的文章,才又讓我想起了這個話題。今天想跟大家聊的便是 Dubbo 中的連接控制這一話題。說到“連接控制”,可能有讀者還沒反應過來,但你對下面的配置可能不會感到陌生:

  1. <dubbo:reference interface="com.foo.BarService" connections="10" /> 

如果你還不了解 Dubbo 中連接控制的用法,可以參考官方文檔:https://dubbo.apache.org/zh/docs/advanced/config-connections/ ,話說最近 Dubbo 官方文檔來了一次大換血,好多熟悉的文檔差點都沒找到在哪兒 Orz。

眾所周知,dubbo 協議通信默認是長連接,連接配置功能用于決定消費者與提供者建立的長連接數。但官方文檔只給出了該功能的使用方法,卻并沒有說明什么時候應該配置連接控制,本文將主要圍繞該話題進行探討。

本文也會涉及長連接相關的一些知識點。

##使用方式

先來看一個 Dubbo 構建的簡單 demo,啟動一個消費者(192.168.4.226)和一個提供者(192.168.4.224),配置他們的直連。

消費者:

  1. <dubbo:reference id="userService" check="false" 
  2.     interface="org.apache.dubbo.benchmark.service.UserService" 
  3.     url="dubbo://192.168.4.224:20880"/> 

提供者:

  1. <dubbo:service interface="org.apache.dubbo.benchmark.service.UserService" ref="userService" /> 
  2. <bean id="userService" class="org.apache.dubbo.benchmark.service.UserServiceServerImpl"/> 

長連接是看不見摸不著的東西,我們需要一個觀測性工作來”看到“它。啟動提供者和消費者之后,可以使用如下的命令查看 tcp 連接情況

  • Mac 下可使用:lsof -i:20880
  • Linux 下可使用:netstat -ano | grep 20880

提供者:

  1. [root ~]# netstat -ano | grep 20880 
  2. tcp6       0      0 192.168.4.224:20880      :::*                    LISTEN      off (0.00/0/0) 
  3. tcp6    2502      0 192.168.4.224:20880      192.168.4.226:59100     ESTABLISHED off (0.00/0/0) 

消費者:

  1. [root@ ~]# netstat -ano | grep 20880 
  2. tcp6     320    720 192.168.4.226:59110     192.168.4.224:20880      ESTABLISHED on (0.00/0/0) 

通過上述觀察到的現象我們可以發現幾個事實。

僅僅是啟動了提供者和消費者,上述的 TCP 連接就已經了存在,要知道我并沒有觸發調用。也就是說,Dubbo 建連的默認策略是在地址發現時,而不是在調用時。當然,你也可以通過延遲加載 lazy="true" 來修改這一行為,這樣可以將建聯延遲到調用時。

  1. <dubbo:reference id="userService" check="false" 
  2.     interface="org.apache.dubbo.benchmark.service.UserService" 
  3.     url="dubbo://${server.host}:${server.port}" 
  4.     lazy="true"/> 

除此之外,還可以發現消費者和提供者之間只有一條長連接,20880 是 Dubbo 提供者默認開放的端口,就跟 tomcat 默認開放的 8080 一個地位,而 59110 是消費者隨機生成的一個端口。(我之前跟一些朋友交流過,發現很多人不知道消費者也是需要占用一個端口的)

而今天的主角”連接控制“便可以控制長連接的數量,例如我們可以進行如下的配置

  1. <dubbo:reference id="userService" check="false" 
  2.     interface="org.apache.dubbo.benchmark.service.UserService" 
  3.     url="dubbo://192.168.4.224:20880" 
  4.     connections="2" /> 

再啟動一次消費者,觀察長連接情況

提供者:

  1. [root@ ~]# netstat -ano | grep 20880 
  2. tcp6       0      0 192.168.4.224:20880      :::*                    LISTEN      off (0.00/0/0) 
  3. tcp6    2508     96 192.168.4.224:20880      192.168.4.226:59436     ESTABLISHED on (0.00/0/0) 
  4. tcp6    5016    256 192.168.4.224:20880      192.168.4.226:59434     ESTABLISHED on (0.00/0/0) 

消費者:

  1. [root@ ~]# netstat -ano | grep 20880 
  2. tcp6       0   2520 192.168.4.226:59436     192.168.4.224:20880      ESTABLISHED on (0.00/0/0) 
  3. tcp6      48   1680 192.168.4.226:59434     192.168.4.224:20880      ESTABLISHED on (0.00/0/0) 

可以看到,這里已經變成了兩條長連接了。

什么時候需要配置多條長連接

現在我們知道了如何進行連接控制,但什么時候我們應該配置多少條長連接呢?這個時候我可以跟你說,具體視生產情況而定,但你如果你經常看我的公眾號,肯定會知道這不是我的風格,我的風格是什么?benchmark!

寫作之前,我跟幾個同事和網友對這個話題進行了簡單的討論,其實也沒有什么定論,無非是對單連接和多連接吞吐量高低不同的論調。參考既往 Dubbo github 中的 issue,例如:https://github.com/apache/dubbo/pull/2457,我也參與了這個 pr 的討論,講道理,我是持懷疑態度的,我當時的觀點是多連接不一定能夠提升服務的吞吐量(還是挺保守的,沒有這么絕對)。

那接下來,還是用 benchmark 來說話吧,測試工程還是我們的老朋友,使用 Dubbo 官方提供的 dubbo-benchmark 工程。

  • 測試工程地址:https://github.com/apache/dubbo-benchmark.git
  • 測試環境:2 臺阿里云 Linux 4c8g ECS

測試工程在之前的文章介紹過,這里就不過多贅述了,測試方案也非常簡單,兩輪 benchmark,分別測試 connections=1 和 connections=2 時,觀察測試方法的吞吐量。

說干就干,省略一堆測試步驟,直接給出測試結果。

  1. Benchmark           Mode  Cnt      Score      Error  Units 
  2. Client.createUser  thrpt    3  22265.286 ± 3060.319  ops/s 
  3. Client.existUser   thrpt    3  33129.331 ± 1488.404  ops/s 
  4. Client.getUser     thrpt    3  19916.133 ± 1745.249  ops/s 
  5. Client.listUser    thrpt    3   3523.905 ±  590.250  ops/s 

connections=2

  1. Benchmark           Mode  Cnt      Score      Error  Units 
  2. Client.createUser  thrpt    3  31111.698 ± 3039.052  ops/s 
  3. Client.existUser   thrpt    3  42449.230 ± 2964.239  ops/s 
  4. Client.getUser     thrpt    3  30647.173 ± 2551.448  ops/s 
  5. Client.listUser    thrpt    3   6581.876 ±  469.831  ops/s 

從測試結果來看,似乎單連接和多連接的差距是非常大的,近乎可以看做是 2 倍了!看起來連接控制的效果真是好呀,那么事實真的如此嗎?

按照這種方案第一次測試下來之后,我也不太相信這個結果,因為我之前按照其他方式做過多連接的測試,并且我也參加過第三屆中間件挑戰賽,使得我對長連接的認知是:大多數時候,單連接往往能發揮出最優的性能。即使由于硬件原因,這個差距也不應該是兩倍。懷著這樣的疑問,我開始研究,是不是我的測試場景出了什么問題呢?

發現測試方案的問題

經過和閃電俠的討論,他的一席話最終讓我定位到了問題的所在。

不知道大家看完我和閃電俠的對話,有沒有立刻定位到問題所在。

之前測試方案最大的問題便是沒有控制好變量,殊不知:在連接數變化的同時,實際使用的 IO 線程數實際也發生了變化。

Dubbo 使用 Netty 來實現長連接通信,提到長連接和 IO 線程的關系,這里就要介紹到 Netty 的連接模型了。一言以蔽之,Netty 的設置 IO worker 線程和 channel 是一對多的綁定關系,即一個 channel 在建連之后,便會完全由一個 IO 線程來負責全部的 IO 操作。再來看看 Dubbo 是如何設置 NettyClient 和 NettyServer 的 worker 線程組的:

客戶端 org.apache.dubbo.remoting.transport.netty4.NettyClient:

  1. private static final EventLoopGroup NIO_EVENT_LOOP_GROUP = eventLoopGroup(Constants.DEFAULT_IO_THREADS, "NettyClientWorker"); 
  2.    
  3.   @Override 
  4.   protected void doOpen() throws Throwable { 
  5.       final NettyClientHandler nettyClientHandler = new NettyClientHandler(getUrl(), this); 
  6.       bootstrap = new Bootstrap(); 
  7.       bootstrap.group(NIO_EVENT_LOOP_GROUP) 
  8.               .option(ChannelOption.SO_KEEPALIVE, true
  9.               .option(ChannelOption.TCP_NODELAY, true
  10.               .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); 
  11.     ... 
  12.   } 

Constants.DEFAULT_IO_THREADS 在 org.apache.dubbo.remoting.Constants 中被寫死了

  1. int DEFAULT_IO_THREADS = Math.min(Runtime.getRuntime().availableProcessors() + 1, 32); 

在我的 4c8g 的機器上,默認等于 5。

服務端 org.apache.dubbo.remoting.transport.netty4.NettyServer:

  1. protected void doOpen() throws Throwable { 
  2.         bootstrap = new ServerBootstrap(); 
  3.  
  4.         bossGroup = NettyEventLoopFactory.eventLoopGroup(1, "NettyServerBoss"); 
  5.         workerGroup = NettyEventLoopFactory.eventLoopGroup( 
  6.                 getUrl().getPositiveParameter(IO_THREADS_KEY, Constants.DEFAULT_IO_THREADS), 
  7.                 "NettyServerWorker"); 
  8.  
  9.         final NettyServerHandler nettyServerHandler = new NettyServerHandler(getUrl(), this); 
  10.         channels = nettyServerHandler.getChannels(); 
  11.  
  12.         ServerBootstrap serverBootstrap = bootstrap.group(bossGroup, workerGroup) 
  13.             .channel(NettyEventLoopFactory.serverSocketChannelClass()); 
  14.         .option(ChannelOption.SO_REUSEADDR, Boolean.TRUE
  15.                 .childOption(ChannelOption.TCP_NODELAY, Boolean.TRUE
  16.                 .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); 
  17.                  
  18.  } 

服務端倒是可以配置,例如我們可以通過 protocol 來控制服務端的 IO 線程數:

  1. <dubbo:protocol name="dubbo" host="${server.host}" server="netty4" port="${server.port}" iothreads="5"/> 

如果不設置,則跟客戶端邏輯一致,是 core + 1 個線程。

好了,問題就在這兒,由于我并沒有進行任何 IO 線程的設置,所以客戶端和服務端都會默認開啟 5 個 IO 線程。當 connections=1 時,Netty 會將 channel1 綁定到一個 IO 線程上,而當 connections=2 時,Netty 會將 channel1 和 channel2 按照順序綁定到 NettyWorkerThread-1和 NettyWorkerThread-2 上,這樣就會有兩個 IO 線程在工作,這樣的測試結果當然是不公平的。

這里需要考慮實際情況,在實際生產中,大多數時候都是分布式場景,連接數一定都是大于 IO 線程數的,所以基本不會出現測試場景中的 channel 數少于 IO 線程數的場景。

解決方案也很簡單,我們需要控制變量,讓 IO 線程數一致,僅僅觀察連接數對吞吐量的影響。針對服務端,可以在 protocol 層配置 iothreads=1;針對客戶端,由于源碼被寫死了,這里我只能通過修改源碼的方式,重新本地打了一個包,使得客戶端 IO 線程數也可以通過 -D 參數指定。

改造之后的,我們得到了如下的測試結果:

1 IO 線程 1 連接

  1. Benchmark           Mode  Cnt      Score      Error  Units 
  2. Client.createUser  thrpt    3  22265.286 ± 3060.319  ops/s 
  3. Client.existUser   thrpt    3  33129.331 ± 1488.404  ops/s 
  4. Client.getUser     thrpt    3  19916.133 ± 1745.249  ops/s 
  5. Client.listUser    thrpt    3   3523.905 ±  590.250  ops/s 

1 IO 線程 2 連接

  1. Benchmark           Mode  Cnt      Score      Error  Units 
  2. Client.createUser  thrpt    3  21776.436 ± 1888.845  ops/s 
  3. Client.existUser   thrpt    3  31826.320 ± 1350.434  ops/s 
  4. Client.getUser     thrpt    3  19354.470 ±  369.486  ops/s 
  5. Client.listUser    thrpt    3   3506.714 ±   18.924  ops/s 

可以發現,單純提升連接數并不會提升服務的吞吐量,這樣的測試結果也更加符合我認知的預期。

總結

從上述測試的結果來看,一些配置參數并不是越大就代表了越好,類似的例子我也在多線程寫文件等場景分析過,唯有理論分析+實際測試才能得出值得信服的結論。當然個人的測試,也可能會因為局部性關鍵信息的遺漏,導致誤差,例如,如果我最終沒有發現 IO 線程數和連接數之間的隱性關聯,很容易就得出連接數和吞吐量成正比的錯誤結論了。當然,也不一定就代表本文最終的結論是靠譜的,說不定還是不夠完善的,也歡迎大家留言,提出意見和建議。

最終回到最初的問題,我們什么時候應該配置 Dubbo 的連接控制呢?按照我個人的經驗,大多數時候,生產環境下連接數是非常多的,你可以挑選一臺線上的主機,通過 netstat -ano| grep 20880| wc -l 來大概統計下,一般是遠超 IO 線程數的,沒必要再多配置成倍的連接數,連接數和吞吐量并不是一個線性增長的關系。

Dubbo 框架有這個能力和大家真的需要用這個能力完全是兩碼事,我相信大多數讀者應該已經過了技術新鮮感驅動項目的階段了吧?如果有一天你需要控制連接數,去達到一定特殊的用途,你就會真心感嘆,Dubbo 真是強呀,這個擴展點都有。

Dubbo 的連接控制真的完全沒有用嗎?也不盡然,我的測試場景還是非常有限的,可能在不同硬件上會跑出不一樣的效果,例如我在第三屆中間件性能挑戰賽中,就是用 2 連接跑出了最好的成績,并非單連接。

 

最后,你如果僅僅使用 Dubbo 去維系你們的微服務架構,大部分情況不需要關注到連接控制這個特性,多花點時間搬磚吧,就醬,我也去搬磚了。

 

責任編輯:武曉燕 來源: Kirito的技術分享
相關推薦

2021-04-23 07:27:31

內存分配CPU

2018-08-20 08:30:05

Kafka架構系統

2018-03-21 16:19:40

MVCMVPMVVM

2018-11-20 09:37:19

Java內存模型

2022-09-22 14:55:31

前端JavaScripthis

2022-09-26 13:10:17

JavaScriptthis

2022-01-05 12:03:48

MySQL索引數據

2018-09-29 15:34:34

JavaList接口

2020-06-04 14:15:55

Java中BigDecimal函數

2021-11-26 08:07:16

MySQL SQL 語句數據庫

2018-07-05 14:25:01

TCP握手原理

2023-05-17 08:52:56

Java原子性可見性

2016-06-01 15:42:58

Hadoop數據管理分布式

2020-06-29 08:32:21

高并發程序員流量

2018-12-21 11:24:55

Java時間處理編程語言

2023-10-16 10:29:51

mysqlMVCC

2014-04-17 16:42:03

DevOps

2020-04-17 14:25:22

Kubernetes應用程序軟件開發

2025-08-06 08:53:35

2022-07-26 00:00:22

HTAP系統數據庫
點贊
收藏

51CTO技術棧公眾號

日本一区二区在线视频| 欧美精品日韩三级| 孩娇小videos精品| 亚洲综合伊人久久大杳蕉| 成人精品鲁一区一区二区| 欧美怡红院视频一区二区三区| 国产视频不卡在线| 2020最新国产精品| 日本大香伊一区二区三区| 伊人久久大香线蕉精品| 天堂av一区二区三区| 美女视频黄久久| 1769国产精品| 97成人资源站| 国产成人黄色| 精品88久久久久88久久久| 丰满少妇在线观看| a国产在线视频| 成人欧美一区二区三区1314| 极品日韩久久| 99国产精品欲| 日本成人在线一区| 97视频免费在线观看| 少妇人妻丰满做爰xxx| 国产欧美日韩| 亚洲精品乱码久久久久久金桔影视 | 国产成人免费av电影| 欧美精品一区二区成人| 99re久久最新地址获取| 亚洲女同精品视频| 亚洲激情 欧美| 久久久久九九精品影院| 欧美日韩情趣电影| 国产xxxxx视频| 亚洲福利影院| 午夜精品久久久久久久99樱桃| 一区中文字幕在线观看| 九色视频在线播放| 久久这里只精品最新地址| 99精品国产一区二区| 国产又粗又猛又爽又黄视频| 青青草国产成人av片免费| 欧美一级黑人aaaaaaa做受| 国产午夜福利一区二区| 中文字幕一区二区三区欧美日韩| 在线观看日韩www视频免费| 国产激情视频网站| 国产ts一区| 精品久久久三级丝袜| 操人视频免费看| 国产精品一区二区三区av| 欧美区一区二区三区| 成人亚洲精品777777大片| 少妇精品视频一区二区免费看| 韩曰欧美视频免费观看| 国产成人黄色片| 中文在线а√天堂| 一本色道综合亚洲| 欧美精品一区二区三区免费播放| 波多野结衣久久精品| 精品久久久久久中文字幕一区奶水| www.18av.com| 欧美卡一卡二| 五月婷婷激情综合| 成人免费观看视频在线观看| 蜜臀国产一区| 欧美视频精品在线| 天天久久综合网| 九九九九九九精品任你躁| 日韩三级电影网址| 亚洲色图欧美另类| 色婷婷久久久| 伊人久久大香线蕉av一区二区| 欧美三级视频网站| 久久久久电影| 国内揄拍国内精品| 国内精品福利视频| 久久精品国产免费看久久精品| 国产深夜精品福利| 亚洲AV无码精品色毛片浪潮| av中文字幕不卡| 色播亚洲婷婷| 怡红院红怡院欧美aⅴ怡春院| 香蕉av福利精品导航| 免费在线观看日韩视频| 91精品店在线| 欧美mv和日韩mv的网站| wwwwxxxx国产| 久久精品影视| 欧洲美女7788成人免费视频| 一区二区精品视频在线观看| 国产69精品一区二区亚洲孕妇| 久久久久久一区| 国产福利第一视频在线播放| 亚洲精品午夜久久久| 97成人在线免费视频| 久久青草免费| 日韩av综合网| 秋霞欧美一区二区三区视频免费 | 国产婷婷色一区二区三区四区 | 欧美边添边摸边做边爱免费| 亚洲影院久久精品| 狠狠热免费视频| 亚洲超碰在线观看| 中文字幕不卡av| 一区二区三区免费高清视频| 麻豆免费精品视频| 精品久久久久久一区| 黄网站在线免费看| 91黄色免费观看| 亚洲香蕉中文网| 99久久99久久精品国产片桃花 | 2020国产精品极品色在线观看| 亚洲色图日韩av| 久久精品视频日本| 国产一区二区在线免费观看| 五月婷婷综合色| 偷拍自拍在线看| 精品999在线播放| 成人免费精品动漫网站| 日本视频免费一区| 蜜桃在线一区二区三区精品| 激情图片在线观看高清国产| 欧美精品三级日韩久久| 国产真人做爰视频免费| 午夜在线a亚洲v天堂网2018| 国产精品一区二区三区在线观| 精品孕妇一区二区三区| 91精品福利视频| 第四色在线视频| 亚洲国产高清视频| 99c视频在线| 黄色网页在线免费观看| 欧美日韩电影一区| 成人无码av片在线观看| 日韩精品视频网| 欧美精品一区三区在线观看| www在线看| 337p日本欧洲亚洲大胆精品| 日韩欧美国产成人精品免费| 黄色小说综合网站| 一区二区三区四区视频在线| a成人v在线| 色婷婷综合久久久久中文字幕1| 在线免费观看av网址| 久久夜色精品一区| 茄子视频成人免费观看| 亚洲+变态+欧美+另类+精品| 欧美亚洲国产视频| 欧美孕妇性xxxⅹ精品hd| 欧美午夜激情小视频| 欧美做受xxxxxⅹ性视频| 性色一区二区三区| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 成人福利视频| 国产亚洲精品久久久久久| 国产女主播喷水视频在线观看| 久久精品一二三| 日本老熟妇毛茸茸| 日韩欧美电影| 91免费视频网站| 四季久久免费一区二区三区四区| 日韩一本二本av| 国产真实的和子乱拍在线观看| jizz一区二区| 日韩精品免费播放| 日韩一区欧美| 97在线电影| 国产精品原创| 一本一本久久a久久精品牛牛影视| 在线观看日批视频| 亚洲影院久久精品| 成人乱码一区二区三区av| 免费看精品久久片| 日本美女爱爱视频| 牛牛精品成人免费视频| 国产精品久久久久久久久久| 岛国中文字幕在线| 亚洲国产精品久久久久秋霞不卡| 天天操夜夜操视频| 综合在线观看色| 在线观看免费视频黄| 视频在线观看91| 久久国产精品免费观看| 欧美日韩一区二区三区不卡视频| 国产精品69久久久久| 国产原厂视频在线观看| 日韩av在线不卡| 国产精品爽爽久久| 精品久久香蕉国产线看观看亚洲| 国产午夜福利一区| 成人国产精品免费观看视频| 日韩一级片播放| 自拍偷拍欧美专区| 欧美日韩视频在线一区二区观看视频| 深夜日韩欧美| 欧美一级大片在线免费观看| 超碰超碰在线| 亚洲色图35p| 欧美性受xxxx狂喷水| 欧美日韩在线不卡| 国产 日韩 欧美 在线| 国产精品久久久久久久久免费丝袜| 成人做爰69片免费| 蜜桃91丨九色丨蝌蚪91桃色| 777777av| 国产主播一区| 中文字幕在线中文字幕日亚韩一区 | 亚洲电影在线| 中文字幕久久综合| 欧美在线导航| 97国产超碰| 亚洲成人高清| 日韩美女视频免费看| 日韩专区av| www.亚洲成人| 国产在线一二三| 亚洲国产97在线精品一区| 91丨porny丨在线中文 | 国产精品白丝jk喷水视频一区 | 五月天丁香久久| 国内毛片毛片毛片毛片毛片| 久久久久久久国产精品影院| 欧美xxxx×黑人性爽| 国产一区二区三区香蕉| 污网站免费在线| 日韩和的一区二区| 啊啊啊一区二区| 亚洲日本激情| 国产手机免费视频| 欧美啪啪一区| 天堂а√在线中文在线| 91精品国产成人观看| 在线观看欧美一区| 久久高清精品| 亚洲精品中文字幕在线| 欧美午夜精彩| 亚洲黄色成人久久久| 成人精品久久| 亚洲三区视频| 久久免费大视频| 亚洲精品一品区二品区三品区| 伊人久久大香线蕉综合网站 | 91视频精品| 亚洲一区二区三区欧美| 日韩欧美在线中字| 亚洲一区精品视频| 羞羞色午夜精品一区二区三区| 一区不卡字幕| 亚洲理论电影网| 热久久最新网址| 国内在线观看一区二区三区| 一本久道高清无码视频| 野花国产精品入口| 日韩精品一区二区三区久久| 久久福利影视| 激情综合网俺也去| 久久99热这里只有精品| 日韩精品aaa| gogo大胆日本视频一区| 少妇精品一区二区| 国产欧美一区在线| www.99re6| 亚洲精品免费视频| 国产特黄大片aaaa毛片| 色婷婷久久综合| 一区二区小视频| 欧美一区二区日韩一区二区| 韩国av在线免费观看| 亚洲黄一区二区| 国产51人人成人人人人爽色哟哟| 色av中文字幕一区| 少女频道在线观看高清 | av亚洲精华国产精华精华| 成年人的黄色片| 中文字幕va一区二区三区| 欧美另类videoxo高潮| 亚洲成人精品在线观看| 在线视频一区二区三区四区| 欧美日韩免费在线视频| 亚洲高清视频网站| 亚洲三级av在线| 污污的网站在线免费观看| 欧美主播福利视频| 日韩欧乱色一区二区三区在线| wwwxx欧美| 欧美日韩国产免费观看视频| www.国产亚洲| 日本aⅴ免费视频一区二区三区 | 久久婷婷久久一区二区三区| 国产麻豆a毛片| 欧美日韩国产页| 国产精品一级视频| 日韩成人黄色av| 成年视频在线观看| 国产第一区电影| 1313精品午夜理伦电影| 亚洲.欧美.日本.国产综合在线| 欧美午夜在线视频| 搡女人真爽免费午夜网站| 成人午夜短视频| 精品国产大片大片大片| 欧美性猛交xxxx乱大交极品| 精品人妻午夜一区二区三区四区| 亚洲一品av免费观看| 18video性欧美19sex高清| 成人情趣片在线观看免费| 亚洲人成亚洲精品| 日b视频免费观看| 久色婷婷小香蕉久久| 90岁老太婆乱淫| 亚洲va韩国va欧美va| 国产孕妇孕交大片孕| 亚洲美女av在线播放| 超碰在线97国产| 91亚洲国产成人精品性色| 精品久久久久久久久久久下田| www..com日韩| 国产一区二区三区av电影| 日本精品久久久久中文| 欧美性猛交xxxx乱大交3| 东京干手机福利视频| 久久亚洲精品成人| 久久久久黄色| 亚洲7777| 免费在线看成人av| 亚洲第一综合网| 色噜噜狠狠成人网p站| 天天干,夜夜爽| 久久久亚洲网站| jizzjizzjizz欧美| 国产91在线亚洲| 国产精品白丝jk白祙喷水网站| 国产在线免费看| 欧美美女bb生活片| 69xxxx欧美| 国产一区私人高清影院| 日本黄色精品| 亚洲欧美自偷自拍另类| 国产精品激情偷乱一区二区∴| 奴色虐av一区二区三区| 国产亚洲精品va在线观看| 蜜臀国产一区| 视频一区二区精品| 蜜桃视频第一区免费观看| 青青青视频在线播放| 欧美美女一区二区三区| 久做在线视频免费观看| 91最新国产视频| 欧美日韩网站| 黄色激情在线观看| 欧美视频在线观看免费| 色播色播色播色播色播在线 | 永久免费观看精品视频| 国产91av视频在线观看| 国产又粗又猛又爽又黄91精品| 成人在线观看免费完整| 日韩精品一区二区三区视频在线观看| 中文在线观看免费| 国产亚洲一区在线播放 | 午夜精品福利在线| 亚洲色图欧美视频| 国产不卡精品视男人的天堂| 欧美日韩中文字幕一区二区三区| 一级黄色录像在线观看| 亚洲精品五月天| 日产精品久久久久久久性色| 国产精品久久久久99| 国产精品99久久精品| 美女又黄又免费的视频| 精品久久久久久久中文字幕| 极品白浆推特女神在线观看| 国产欧美日韩中文字幕在线| 一区二区三区在线电影| av无码一区二区三区| 欧美在线视频不卡| 在线观看免费视频你懂的| 国精产品一区二区| 久久综合综合久久综合| 免费在线视频观看| 亚洲视频电影图片偷拍一区| 2019中文亚洲字幕| 免费看又黄又无码的网站| 中文字幕的久久| 亚洲欧美另类日韩| 国产精品aaaa| 国内精品久久久久久久影视麻豆 | 成人动漫免费在线观看| 中文字幕第三区| 色先锋aa成人| 自拍亚洲图区| 欧美高清性xxxxhdvideosex| 国内精品在线播放| 天堂中文字幕在线观看| 久久久黄色av| 久久av超碰| 丰满岳乱妇一区二区| 欧美日韩一区不卡| 天堂√中文最新版在线| 公共露出暴露狂另类av|