日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

alibaba sentinel限流组件 源码分析

發布時間:2025/7/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 alibaba sentinel限流组件 源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何使用?

maven引入:

<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>sentinel-core</artifactId>
  <version>1.5.1</version>
</dependency>

該組件是保護資源用,什么資源呢?Conceptually, physical or logical resource,明白了吧。

web應用中大部分情況都是用于保護接口,防止負載過大,支持限流、降級處理,規則可配。

入門級使用方法如下:

public void foo() {Entry entry = null;try {entry = SphU.entry("abc");// resource that need protection} catch (BlockException blockException) {// when goes there, it is blocked// add blocked handle logic here} catch (Throwable bizException) {// business exception Tracer.trace(bizException);} finally {// ensure finally be executedif (entry != null){entry.exit();}}}

或者

public void foo() {
  if (SphO.entry("abc")) {
  try {
    // business logic
  } finally {
    SphO.exit(); // must exit()
  }
  } else {
    // failed to enter the protected resource.
  }
}

入口為com.alibaba.csp.sentinel.SphU和com.alibaba.csp.sentinel.SphO。兩者的區別從使用就可以看出,限流發生時,SphU是通過異常的形式反饋出來,SphO是通過entry的返回值反饋出來的。

查看SphO的代碼,如下圖,其實是內部捕獲了異常,然后返回boolean類型。所以,我們就從SphU開始分析吧。

SphU

最終會調用到com.alibaba.csp.sentinel.CtSph.entryWithPriority(ResourceWrapper, int, boolean, Object...)這個方法。

里面的核心為調用com.alibaba.csp.sentinel.CtSph.lookProcessChain(ResourceWrapper)獲取對應的處理鏈,方法如下:

從上面代碼可知,一個chain關聯一個資源,這一點很重要,后面分析node節點結構時會用到

public static ProcessorSlotChain newSlotChain() {if (builder != null) {return builder.build();}// 構建chainBuilder,具體說明見下面代碼resolveSlotChainBuilder();if (builder == null) {RecordLog.warn("[SlotChainProvider] Wrong state when resolving slot chain builder, using default");builder = new DefaultSlotChainBuilder();}return builder.build();}private static void resolveSlotChainBuilder() {List<SlotChainBuilder> list = new ArrayList<SlotChainBuilder>();boolean hasOther = false;
     // java.util.ServiceLoader 方式擴展功能,這是jdk的,簡稱spi擴展,sentinel有很多地方用到這種擴展方式
     // 關于ServiceLoader擴展的詳解不在這里討論,后面有時間可以單獨拎出來分析下
for (SlotChainBuilder builder : LOADER) {if (builder.getClass() != DefaultSlotChainBuilder.class) {hasOther = true;list.add(builder);}}if (hasOther) {builder = list.get(0);} else {// No custom builder, using default.builder = new DefaultSlotChainBuilder();}RecordLog.info("[SlotChainProvider] Global slot chain builder resolved: "+ builder.getClass().getCanonicalName());}

通過上面代碼可知,一般情況下采用的默認chainBuilder,那我們就來看看這個build:

通過上面com.alibaba.csp.sentinel.CtSph.entryWithPriority(ResourceWrapper, int, boolean, Object...)方法可知,最終調用方式如下:

通過entry調用把chain中的所有ProcessorSlot串起來,挨個調用。

主體已經清晰了,重點其實也就是chain中添加的那些ProcessorSlot,下面我們就一個個看下這些slot到底干了啥,劃下重點,StatisticSlot這個slot是核心,用于統計各種數量。

?NodeSelectorSlot

構建調用資源調用路徑,最終在內存中會形成一個樹狀結構。

ContextUtil.enter("entrance1", "appA");Entry nodeA = SphU.entry("nodeA");if (nodeA != null) {nodeA.exit();}ContextUtil.exit();

上述代碼對象結構如下:

      machine-root
        /
       /
   EntranceNode1
      /
     /
DefaultNode(nodeA)- - - - - -> ClusterNode(nodeA);

ContextUtil.enter("entrance1", "appA");Entry nodeA = SphU.entry("nodeA");if (nodeA != null) {nodeA.exit();}ContextUtil.exit();ContextUtil.enter("entrance2", "appA");nodeA = SphU.entry("nodeA");if (nodeA != null) {nodeA.exit();} ContextUtil.exit();

上述代碼會形成結構如下:

? ? ? ? ? ? ? ? machine-root
? ? ? ? ? ? ? ? ? /? ? ? ? ? ? \
? ? ? ? ? ? ? ? /? ? ? ? ? ? ? ? \
? ?EntranceNode1? ? ?EntranceNode2
? ? ? ? ? ? ?/? ? ? ? ? ? ? ? ? ? ? ?\
    /     ? ? ? ?  \
DefaultNode(nodeA) DefaultNode(nodeA)
    |          ?|
    +- - - - - - - - - - +- - - - - - -> ClusterNode(nodeA);

ContextUtil.enter("entrance1", "appA");Entry nodeA = null;try {nodeA = SphU.entry("nodeA");Entry nodeB = null;try {nodeB = SphU.entry("nodeB");}finally {if (nodeB != null) {nodeB.exit();}}}finally {if (nodeA != null) {nodeA.exit();}} ContextUtil.exit();

上述代碼會形成結構如下:

? ? ? ? ?   ? ? ? machine-root
? ? ? ? ?   ? ? ? ? /? ? ? ??
? ? ? ?   ? ? ? ? /? ? ? ? ??
?   ?EntranceNode1?
? ?   ? ? ? ? ?/? ? ? ? ??
      /    
  DefaultNode(nodeA)?- - - - - -> ClusterNode(nodeA);

    /

   /

DefaultNode(nodeB)- - - - - -> ClusterNode(nodeB);

說明:

a.一條路徑對應一個Context;如果是入門的那種使用方法,即沒有顯式使用ContextUtil.enter("entrance1", "appA")方式創建context的話,會默認使用MyContextUtil.myEnter創建一個名為sentinel_default_context的context;

源碼釋義:

一次資源的訪問都會走到com.alibaba.csp.sentinel.CtSph.entryWithPriority(ResourceWrapper, int, boolean, Object...),方法開始處通過ContextUtil.getContext()從threadlocal中獲取context,ContextUtil.enter會檢查threadlocal有沒有context,沒有就創建,有就直接返回。如果限流時沒有調用ContextUtil.enter顯式開啟context,就會走到下面MyContextUtil.myEnter處創建默認名為

sentinel_default_context的context。最終都會調用到com.alibaba.csp.sentinel.context.ContextUtil.trueEnter(String, String),創建context部分代碼如下,每一個context會先創建一個EntranceNode入口node,然后掛到Constants.ROOT下,結構見上面的樹狀圖。

?

b.一次資源的調用會根據threadlocal獲取Context,同一線程下如果要切換context必須調用ContextUtil.exit();結束上一個context,再ContextUtil.enter("entrance2", "appA")開啟新的context;

源碼釋義:

context的獲取見上面一條釋義,這里看下ContextUtil.exit()方法,要想真正的將threadlocal清空,還得將context的CurEntry清空,怎么做?就是按照entry的調用順序反向依次調用com.alibaba.csp.sentinel.CtEntry.exit(int, Object...):

c.一個DefaultNode對應同一個資源調用在某一個Context下的統計數據;

源碼釋義:

首先,一次資源的entry調用會先去尋找ProcessorSlotChain,查看代碼可知,chain是以ResourceWrapper為key緩存在map中的,由DefaultSlotChainBuilder可以對應到一次entry調用對應一個NodeSelectorSlot實例,而NodeSelectorSlot中緩存了一個以contextName為key,DefaultNode為value的map,一句話總結下就是先去com.alibaba.csp.sentinel.context.ContextUtil.trueEnter(String, String)方法中通過contextNameNodeMap獲取以contextName緩存的該name對應的EntranceNode節點并以該EntranceNode為參數new一個context對象返回,然后在該資源對應的slotChain中的NodeSelectorSlot獲取一contextName為key緩存的DefaultNode。

這里解釋下DefaultNode第一次是怎么掛到context的EntranceNode下的。

代碼如下,重點是紅框中的代碼,獲取context中最末尾的節點,并把當前節點掛在后面。

我們再看下context的getLastNode節點,代碼如下:

由上面代碼自然會想的curEntry是什么時候設置的呢?如下圖所示,是在com.alibaba.csp.sentinel.CtSph.entryWithPriority(ResourceWrapper, int, boolean, Object...)中構建CtEntry時設置的,entry之間的關系在context中是以雙向鏈表結構維護的:

回到上一步,我們看下entry的getLastNode方法,如下圖所示,從parentEntry中獲取curNode,如果是第一次調用的話parent肯定為null,回到上一步的話就是返回該context的entranceNode。

NodeSelectorSlot中就會將當次entry在該context下首次調用創建的DefaultNode掛到剛剛獲取到的entranceNode節點下,也就是該context的入口節點下,如果該context下之前有過別的資源調用,就會順序掛到那次調用產生的DefaultNode下面,形成上面描述的樹狀結構圖。

DefaultNode處理完后會將context的CurNode設置為該DefaultNode,如下圖所示:

實際上是設置的context中當前entry對應的CurNode,如下圖所示,所以上面getLastNode是從parenEntry中獲取的CurNode。

d.ClusterNode對應同一個資源在所有context下的統計數據;

源碼釋義:

ClusterBuilderSlot中維護的一個實例變量實際就是對應一個資源,原因上面已經分析了,一個資源對應一個slotChain,然后將該clusterNode設置到本次調用對應的DefaultNode中,在DefaultNode做加法操作時,會同時調用clusterNode的加法操作,這樣,分布在不同context下的同一個資源對應的所有DefaultNode都會去調用clusterNode去匯總統計相同資源的統計數據。

e.一個資源對應一個ProcessChain,自然就對應一個NodeSelectorSlot實例,所以在NodeSelectorSlot里面DefaultNode node = map.get(context.getName());這行代碼的一維是資源,二維才是context,如果搞反了可能看到這行會蒙圈;

源碼釋義:

見c的分析。

ClusterBuilderSlot

構建ClusterNode并設置到上面slot選中的node中,如果context中有設置調用來源Origin就創建一個StatisticNode針對具體某個調用方統計數據

Note that 'origin' usually is Service Consumer's app name:

StatisticSlot

核心slot,用于統計各種數據的地方,然后被后面的slot應用。

先調用fireEntry執行后面的slot,檢查本次請求能否通過,如果通過,就給對應的node做加法操作。

先給自身node做加法,在給ClusterBuilderSlot中創建并傳入的closterNode做加法。

最終調用ArrayMetric的addPass:

需要申明的是,sentinel統計采用的是滑動窗口的實現方式,這里的重點是com.alibaba.csp.sentinel.slots.statistic.base.LeapArray.currentWindow(long)方法,我們看下如何獲取當前窗口。

// 根據當前時間戳計算當前窗口的索引
private
int calculateTimeIdx(/*@Valid*/ long timeMillis) {
     // 索引從0開始,整除后得到的結果就是當前時間戳所在的窗口,實際上我們的窗口只有array長度的固定幾個,
     // 可以想象一下這是在一個無限延長的虛擬時間線窗口,再對array的length取余數就得到了實際所在的窗口索引
long timeId = timeMillis / windowLengthInMs;// Calculate current index so we can map the timestamp to the leap array.return (int)(timeId % array.length());}protected long calculateWindowStart(/*@Valid*/ long timeMillis) {
     // 計算虛擬窗口對應的開始時間,當前時間減去超出當前窗口的那一段時間就得到開始時間
return timeMillis - timeMillis % windowLengthInMs;}/*** Get bucket item at provided timestamp.** @param timeMillis a valid timestamp in milliseconds* @return current bucket item at provided timestamp if the time is valid; null if time is invalid*/public WindowWrap<T> currentWindow(long timeMillis) {if (timeMillis < 0) {return null;}// 獲取當前窗口索引int idx = calculateTimeIdx(timeMillis);// Calculate current bucket start time.
     // 獲取窗口開始時間
long windowStart = calculateWindowStart(timeMillis);/** Get bucket item at given time from the array.** (1) Bucket is absent, then just create a new bucket and CAS update to circular array.* (2) Bucket is up-to-date, then just return the bucket.* (3) Bucket is deprecated, then reset current bucket and clean all deprecated buckets.*/while (true) {WindowWrap<T> old = array.get(idx);
       // 如果索引對應的窗口還沒有創建就新建窗口對象
if (old == null) {/** B0 B1 B2 NULL B4* ||_______|_______|_______|_______|_______||___* 200 400 600 800 1000 1200 timestamp* ^* time=888* bucket is empty, so create new and update** If the old bucket is absent, then we create a new bucket at {@code windowStart},* then try to update circular array via a CAS operation. Only one thread can* succeed to update, while other threads yield its time slice.*/WindowWrap<T> window = new WindowWrap<T>(windowLengthInMs, windowStart, newEmptyBucket(timeMillis));
         // 原子操作,如果設置成功就返回,如果設置失敗就讓出cpu,等待再次被翻牌
if (array.compareAndSet(idx, null, window)) {// Successfully updated, return the created bucket.return window;} else {// Contention failed, the thread will yield its time slice to wait for bucket available. Thread.yield();}
       // 如果當前窗口時間一致,說明當前窗口還未過期,就返回該窗口對象}
else if (windowStart == old.windowStart()) {/** B0 B1 B2 B3 B4* ||_______|_______|_______|_______|_______||___* 200 400 600 800 1000 1200 timestamp* ^* time=888* startTime of Bucket 3: 800, so it's up-to-date** If current {@code windowStart} is equal to the start timestamp of old bucket,* that means the time is within the bucket, so directly return the bucket.*/return old;
       // 如果窗口開始時間過期了,就重置當前窗口的開始時間為最新的時間}
else if (windowStart > old.windowStart()) {/** (old)* B0 B1 B2 NULL B4* |_______||_______|_______|_______|_______|_______||___* ... 1200 1400 1600 1800 2000 2200 timestamp* ^* time=1676* startTime of Bucket 2: 400, deprecated, should be reset** If the start timestamp of old bucket is behind provided time, that means* the bucket is deprecated. We have to reset the bucket to current {@code windowStart}.* Note that the reset and clean-up operations are hard to be atomic,* so we need a update lock to guarantee the correctness of bucket update.** The update lock is conditional (tiny scope) and will take effect only when* bucket is deprecated, so in most cases it won't lead to performance loss.*/if (updateLock.tryLock()) {try {// Successfully get the update lock, now we reset the bucket.return resetWindowTo(old, windowStart);} finally {updateLock.unlock();}} else {// Contention failed, the thread will yield its time slice to wait for bucket available. Thread.yield();}
       // 正常情況下不會走這里,因為時間是往前走的}
else if (windowStart < old.windowStart()) {// Should not go through here, as the provided time is already behind.return new WindowWrap<T>(windowLengthInMs, windowStart, newEmptyBucket(timeMillis));}}}

最終是在MetricBucket中用LongAdder做的原子加,LongAdder是jdk8的特性,這里sentinel直接挪了過來,避免要求sentinel用戶必須使用jdk8.為什么是LongAdder而不是AtomicLong,因為前者在并發下表現更優異,具體區別請自行了解。

SystemSlot

通過之前統計節點中Constants.ENTRY_NODE這個node中的數據檢查全局qps等是否滿足要求。

AuthoritySlot

黑白名單匹配。通過com.alibaba.csp.sentinel.slots.block.authority.AuthorityRuleManager.loadRules(List<AuthorityRule>)設置規則。

FlowSlot

流量控制。通過com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager.loadRules(List<FlowRule>)設置規則。

DegradeSlot

降級處理。通過com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager.loadRules(List<DegradeRule>)設置規則。

轉載于:https://www.cnblogs.com/restart30/p/10796725.html

總結

以上是生活随笔為你收集整理的alibaba sentinel限流组件 源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产成人黄色av | 日本中文字幕在线播放 | 国产亚洲欧美一区 | 欧美日韩不卡在线视频 | 日韩在线中文字幕视频 | h视频在线看| 欧美色综合久久 | 国产精品久久久久9999吃药 | 五月婷婷丁香六月 | 精品在线观看免费 | 天天综合成人网 | 在线观看中文字幕第一页 | 欧美性色xo影院 | 久久综合操 | 国产精品一区二区久久精品爱涩 | 亚洲日本va午夜在线影院 | 国产视频午夜 | 国产在线精品二区 | 欧美9999| 日韩av一区二区三区四区 | 天堂资源在线观看视频 | 亚洲精品视频一二三 | 亚洲精品777 | 成人欧美一区二区三区黑人麻豆 | 免费特级黄色片 | av免费看在线 | 超碰精品在线观看 | 精品国产一区二区三区免费 | 色中色亚洲 | 精品视频资源站 | 毛片1000部免费看 | 久久精品久久久久久久 | 成年人免费看片 | 天天激情在线 | 国产精选在线观看 | 中文字幕在线观看三区 | av一级在线 | 成人福利在线观看 | 国产福利91精品一区 | 2018亚洲男人天堂 | 激情影院在线 | 中文字幕在线观看91 | 青草视频在线播放 | 一区二区视频在线观看免费 | 伊人视频 | 色综合五月天 | 国产三级精品三级在线观看 | 99精品免费久久久久久久久 | 伊人开心激情 | 中文在线字幕免费观 | 久久久久久草 | 免费在线观看黄 | 99精品一级欧美片免费播放 | 91精品视频一区二区三区 | 日本精品视频在线观看 | 中文字幕国产一区 | 91精品一区在线观看 | 免费日韩电影 | 久久久久久久毛片 | 99在线免费观看视频 | 国产午夜av | 亚洲永久av | 欧美黄色成人 | 国产精品久久久久久久久久三级 | 国产老妇av | 国产在线观看h | 亚洲人成人天堂h久久 | 天堂中文在线播放 | 美女黄频视频大全 | 99精品黄色片免费大全 | 天天爽人人爽夜夜爽 | 免费观看www视频 | www.天天操.com | 天天色天天综合 | 免费亚洲视频在线观看 | 欧美一二区视频 | 久久久久中文 | 夜色在线资源 | 热99在线视频 | 国产另类av | 免费精品 | 国产精品免费在线视频 | 女人18片毛片90分钟 | 久久成人在线 | 久久久18 | 在线看污网站 | 国产一区二区在线免费观看 | 天天操夜夜曰 | 国产一级在线观看 | 在线观看国产www | 丰满少妇久久久 | 9ⅰ精品久久久久久久久中文字幕 | 国产精品高潮呻吟久久av无 | 精品一区二区久久久久久久网站 | 国内精品久久影院 | 超碰免费久久 | 久久久久9999亚洲精品 | 久99视频| 国产特级毛片aaaaaa高清 | 麻豆视频一区二区 | 西西大胆免费视频 | 国产精品欧美一区二区三区不卡 | 91在线精品观看 | 午夜久久| 免费看片网址 | 日本一区二区免费在线观看 | www.色午夜| 日韩在线免费视频 | 日韩在线观看一区 | 九九九热精品免费视频观看网站 | 黄色片毛片 | 免费激情网 | 国产精品久久久久久久久久白浆 | 伊人婷婷久久 | 超碰伊人网 | 久久夜色精品国产欧美乱 | 欧美一区二区三区四区夜夜大片 | 日韩v在线 | 一区二区三区久久 | 精品一区二区在线播放 | 九色琪琪久久综合网天天 | www.eeuss影院av撸| 国内外成人免费在线视频 | 91视频黄色| 中文字幕免费高清在线 | 国产精品婷婷午夜在线观看 | 国产在线精品一区二区三区 | 国产黄色精品视频 | 激情片av | 久久久91精品国产一区二区精品 | 黄色av影院| 欧美成年人在线观看 | 少妇自拍av| 国产 一区二区三区 在线 | 久久成人国产精品 | 欧美大片在线观看一区 | 国产综合在线观看视频 | 成人免费在线电影 | av大片免费看 | 欧美伦理电影一区二区 | 成人av电影在线 | 综合铜03| 深夜福利视频一区二区 | 天天在线免费视频 | 在线电影日韩 | 蜜臀91丨九色丨蝌蚪老版 | 久久久免费毛片 | 欧美日产在线观看 | 久艹视频在线观看 | 激情久久综合网 | 在线免费观看国产精品 | 五月天六月婷 | 亚洲免费色 | 97av色| 操操操夜夜操 | 亚洲综合爱 | 有码中文字幕在线观看 | 成人免费视频网址 | 91精品久久久久久久久久入口 | 在线免费观看羞羞视频 | 久久夜夜夜 | 天天插日日射 | 五月开心婷婷网 | 日韩色在线 | 欧美日韩色婷婷 | 国产精品国产三级国产 | 中文字幕乱码日本亚洲一区二区 | 精品久久久久久亚洲综合网站 | 国产精品区一区 | 日韩视频一区二区 | 高清不卡一区二区在线 | 久久久久免费精品 | 一级做a爱片性色毛片www | 国产无套精品久久久久久 | 久久精品国产免费 | 天天干天天天天 | 麻豆国产露脸在线观看 | 日韩和的一区二在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 黄色视屏在线免费观看 | 一区二区伦理 | 久久99精品一区二区三区三区 | 丁香色婷| 99久久久久国产精品免费 | 99久久精品免费看国产四区 | 国产亚洲精品电影 | 久久不见久久见免费影院 | 免费97视频| 三级小视频在线观看 | 超碰97在线人人 | 国产亚洲视频在线免费观看 | 久久精品久久精品久久39 | 三级av中文字幕 | 四虎影院在线观看av | 尤物九九久久国产精品的分类 | 欧美专区日韩专区 | 超碰人人舔 | 伊人影院在线观看 | 天堂在线视频中文网 | 免费观看国产成人 | 国产粉嫩在线 | 在线导航av | 欧美精品久久久久久久久久白贞 | 久久久久久草 | 国产日本在线观看 | 久久在线免费 | 91久久爱热色涩涩 | 亚洲国产精品一区二区久久hs | www亚洲一区 | 成人在线播放视频 | 人人看看人人 | 五月婷婷色综合 | 99精品偷拍视频一区二区三区 | 日韩成人免费在线电影 | 日日夜夜天天久久 | 国产在线a不卡 | 亚洲精品免费在线观看视频 | 蜜桃av综合网 | 成年人在线观看免费视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产精品av电影 | 国产 日韩 欧美 中文 在线播放 | 91成人精品观看 | 久久久影视 | 国产精品99精品久久免费 | 在线国产不卡 | 国产日产精品一区二区三区四区的观看方式 | 日韩二区三区在线观看 | 人人艹视频 | 又色又爽又黄 | 少妇bbw搡bbbb搡bbbb | 99精品国自产在线 | 97视频亚洲| 五月的婷婷 | 高清av免费看 | 久久专区| 日韩国产欧美视频 | 97超碰中文| 久久精品亚洲综合专区 | 97福利在线观看 | 五月天丁香视频 | 日韩视频一区二区 | 视频一区亚洲 | 国产精品一区二区av影院萌芽 | 免费在线观看91 | 亚洲天堂网在线观看视频 | 99久久久久| 天天爽夜夜爽人人爽一区二区 | 久久国产亚洲 | 久久久国产精品亚洲一区 | 99国产在线 | 在线国产一区二区 | 天天天天天天天操 | 日韩精品免费专区 | 亚洲精品黄 | 极品国产91在线网站 | 欧美午夜a | 亚洲电影影音先锋 | 成人app在线播放 | 中文日韩在线视频 | 97超碰在线人人 | 国产亚洲人成网站在线观看 | 在线观看激情av | 久久精品麻豆 | 成片免费观看视频999 | 欧美日韩免费观看一区二区三区 | 日韩资源在线 | 2023国产精品自产拍在线观看 | 伊人永久 | 丁香六月婷 | 一区二区不卡高清 | 免费看黄在线网站 | 天天操夜夜干 | 久草视频手机在线 | 激情视频一区 | 久久久久福利视频 | 国产资源中文字幕 | 在线观看日本高清mv视频 | 欧美日韩调教 | 黄色小说免费在线观看 | 亚洲国内精品在线 | 91一区啪爱嗯打偷拍欧美 | 91精品国产综合久久婷婷香蕉 | 欧洲精品久久久久毛片完整版 | 日韩高清免费在线观看 | 高清av中文在线字幕观看1 | 国产福利免费在线观看 | 国产黄色大全 | 国产香蕉97碰碰久久人人 | 成人免费91 | 在线观看黄污 | 色五婷婷| www在线观看视频 | 欧洲亚洲精品 | 欧美大荫蒂xxx | 99热这里只有精品久久 | 久久久久久久国产精品影院 | 亚洲视频在线视频 | 免费在线观看日韩欧美 | 99爱国产精品 | 色五月成人 | 一本一本久久aa综合精品 | 在线日韩亚洲 | 久久久久日本精品一区二区三区 | 成人av在线观 | 五月天.com | www免费网站在线观看 | 久久久精品 | 91在线视频网址 | 99久久精品国产网站 | 狠狠操夜夜 | 免费毛片aaaaaa | 久久久91精品国产一区二区三区 | 欧美日韩国产区 | 成人欧美在线 | 国产成人91 | 91最新中文字幕 | 中文字幕 91| 精品久久在线 | 日韩在线一二三区 | 色视频在线观看免费 | 日日日操操 | www.香蕉| 美女一区网站 | 国产日本在线 | 波多野结衣视频在线 | 免费看搞黄视频网站 | 日韩精品视频免费专区在线播放 | 成人免费在线视频 | 久久久久免费精品国产小说色大师 | 欧美性脚交| 国产亚洲亚洲 | 免费国产一区二区视频 | 91视频免费网址 | 国产成人精品在线播放 | 国产黄色在线 | 日本精品一区二区三区在线播放视频 | 亚洲精选在线 | 日本成人免费在线观看 | 亚洲欧美日韩一二三区 | 欧美巨大荫蒂茸毛毛人妖 | 亚洲专区免费观看 | 欧美日韩精品电影 | 午夜丁香视频在线观看 | 免费在线观看日韩 | 99精品亚洲 | 草久热 | 久久精品99国产国产精 | 一级黄色片在线免费观看 | 特黄特色特刺激视频免费播放 | 久久久免费观看视频 | 欧美一性一交一乱 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲国产精久久久久久久 | 久久久www成人免费精品张筱雨 | 欧美日韩一级视频 | 国产福利91精品一区 | 成年人在线免费视频观看 | 亚洲精品国产精品99久久 | 97在线观看免费视频 | 亚洲国产免费网站 | 成人av电影免费在线播放 | 一本一本久久a久久精品综合小说 | 国产亚洲在 | 欧美国产大片 | a黄色一级片 | 国产精品成久久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 色婷婷综合久色 | 五月婷婷综合在线观看 | 久久天堂网站 | 国产成人a亚洲精品v | 国产一二区免费视频 | 国产一区二区在线影院 | 亚洲深夜影院 | 亚洲精品在线免费观看视频 | 欧美亚洲精品在线观看 | 日本在线观看一区 | 欧美一区三区四区 | 成人毛片在线观看视频 | 久久久网 | 欧美国产精品久久久久久免费 | 日韩精选在线观看 | 91九色丨porny丨丰满6 | 97精产国品一二三产区在线 | 在线观看中文字幕网站 | 成人在线视频论坛 | 免费视频一区二区 | 三级av网站 | 日本三级在线观看中文字 | 91在线资源 | 国产精品99蜜臀久久不卡二区 | 丰满少妇在线观看网站 | 欧美日韩免费观看一区二区三区 | 91av色| 国产精品成人久久久久久久 | 国产视频精品久久 | 亚洲深夜影院 | 国产成人一区二 | 在线观看亚洲免费视频 | 日韩av一区二区三区四区 | 少妇bbb搡bbbb搡bbbb | 免费看一级特黄a大片 | 日韩欧美观看 | 天天干.com | 中文字幕在线视频第一页 | 日韩在线视频不卡 | 精品久久一区二区三区 | 亚洲www天堂com | 成在人线av | 综合色爱| 日本性xxx | 色综合欧洲 | 日韩在线免费电影 | 久久日韩精品 | 国产色视频一区 | 国产 日韩 在线 亚洲 字幕 中文 | 人交video另类hd | 日韩免费在线 | 婷婷中文字幕综合 | av在线播放快速免费阴 | 国产小视频在线播放 | 激情五月网站 | 狠狠色免费 | 久久精品99国产 | 国产一级二级在线 | 日本精品久久久久 | 亚洲午夜精品久久久久久久久久久久 | 国产在线91在线电影 | 欧美日韩一区久久 | 麻豆网站免费观看 | 国产91亚洲精品 | 久草男人天堂 | 激情欧美一区二区三区免费看 | 日日射天天射 | 久久夜av| 欧美成年人在线观看 | 国产精品2019 | 国产精久久久久久久 | av高清网站在线观看 | 五月激情av| 亚洲国产精品一区二区久久hs | www.色五月 | 久久精品久久精品久久39 | 成人xxxx | 国产免费又爽又刺激在线观看 | 国产精品视频一二三 | 91九色老 | www.色在线| 中文字幕在线观看完整版 | 99在线精品视频观看 | 亚洲h在线播放在线观看h | 久久久免费精品视频 | 午夜视频免费在线观看 | 亚洲激精日韩激精欧美精品 | 亚洲午夜久久久久久久久电影网 | 中文字幕av播放 | 久久久久久久久毛片精品 | 免费的黄色av | 51久久夜色精品国产麻豆 | 五月婷婷一区二区三区 | 色诱亚洲精品久久久久久 | 国产剧情一区二区在线观看 | 色综合天天综合在线视频 | 久久视频在线观看中文字幕 | 国产成人精品一区二区在线 | 黄色三级网站在线观看 | 欧美成人按摩 | 91看片在线| 丁香婷婷久久 | 国产一区国产二区在线观看 | 国产黄色观看 | 91精品国产99久久久久久红楼 | 午夜 在线 | 丁香婷婷综合激情五月色 | 国产中文字幕一区二区 | av在线影视 | 精品久久美女 | 精品国产精品久久一区免费式 | 97超级碰碰 | 深夜免费福利视频 | 蜜桃视频精品 | 五月婷婷激情六月 | 婷婷色资源 | 91看片在线观看 | 亚洲三级黄 | 国产精品剧情 | 男女精品久久 | 亚洲尺码电影av久久 | 免费试看一区 | 91精品国产99久久久久久久 | 97人人模人人爽人人喊中文字 | 97香蕉久久超级碰碰高清版 | 九九一级片 | 亚洲欧美视频在线观看 | 色网站国产精品 | 国产欧美精品一区二区三区四区 | 亚洲天堂激情 | 欧美一级电影 | 麻豆视频在线看 | 国产亚洲视频中文字幕视频 | 国产一级片一区二区三区 | 青青久视频| 在线免费观看亚洲视频 | 国产在线一区二区 | 乱子伦av| 日本性动态图 | 久久婷婷激情 | 国产精品手机视频 | 久久艹在线观看 | www国产亚洲精品久久网站 | 天天色视频| japanesefreesex中国少妇 | 久草在线资源视频 | 久久综合久久久久88 | 99电影456麻豆| 91精品啪在线观看国产81旧版 | 国产精品久久久久久一二三四五 | 免费日韩 精品中文字幕视频在线 | 久久 精品一区 | 欧美性色综合网 | 午夜精品一区二区三区在线播放 | 成人在线免费看视频 | 黄色日本免费 | 久久综合中文字幕 | 成人综合婷婷国产精品久久免费 | 99精品在线免费视频 | 久久精品国产一区二区电影 | 国产亚洲在线视频 | 91大神精品视频在线观看 | 国产精品尤物视频 | 激情视频免费在线 | 五月婷婷丁香色 | 久久69精品久久久久久久电影好 | 国产精品自产拍在线观看蜜 | 四虎免费在线观看视频 | 亚洲人成综合 | a成人v在线 | 欧美日韩中文视频 | 成人午夜电影网站 | 国色天香在线 | 午夜国产一区二区 | 中文在线a∨在线 | 九九久久精品视频 | 精品一区二区免费在线观看 | 麻豆果冻剧传媒在线播放 | 懂色av一区二区在线播放 | 午夜在线看片 | 亚洲丁香日韩 | 色.www | 天天射综合网视频 | 免费看片黄色 | 深爱激情亚洲 | 国产第一页在线播放 | 天天弄天天干 | 国产高清在线永久 | 91自拍成人 | 粉嫩一区二区三区粉嫩91 | 日韩精品一区电影 | 亚洲精品午夜久久久久久久久久久 | 日韩精品短视频 | 国产精品第二页 | 中文字幕在线观看播放 | 91九色在线观看视频 | 99久久久久久久久久 | 97网| 99久久久久国产精品免费 | 天天天干 | 日日夜夜中文字幕 | 欧美一级片在线观看视频 | 亚洲一二区精品 | 午夜久久 | 97色综合| 亚洲免费不卡 | 婷婷六月激情 | 国产精品久久久久久久久久不蜜月 | 黄色av电影免费观看 | 成人av一区二区三区 | 久久欧美在线电影 | 日韩一级黄色大片 | 久99精品| 中文字幕亚洲国产 | 国产精品成人a免费观看 | 国产亚洲成av人片在线观看桃 | 亚洲黄色高清 | 国产成人黄色片 | 久久久久一区 | 亚洲 成人 一区 | 精品久久久久久国产 | 久久精品九色 | 91九色国产在线 | 99精品在线直播 | 国产又粗又硬又爽视频 | 国产一区二区三区高清播放 | 精品免费一区二区三区 | 久久99影院| 国产97在线观看 | 日韩免费不卡视频 | 中文字幕视频观看 | 麻豆91在线 | 天天做天天爱夜夜爽 | 亚洲国产日韩在线 | 日本韩国精品一区二区在线观看 | 国产成人精品午夜在线播放 | 国产成人在线免费观看 | 欧美亚洲免费在线一区 | 最近2019好看的中文字幕免费 | 97视频网站 | 亚洲成av人片在线观看 | 精品字幕在线 | 婷婷射五月 | 五月婷婷丁香激情 | 成人国产精品久久久久久亚洲 | 狠狠综合久久 | 色偷偷网站视频 | 日日夜夜91 | 国产精品美女久久久久久久 | 麻豆久久精品 | 91新人在线观看 | 国产精品1区2区在线观看 | 日日操夜夜操狠狠操 | 97电影手机版 | 免费在线色视频 | www色网站 | 国产黄在线 | 亚洲精品网站在线 | 日韩大片在线播放 | 亚洲午夜精品久久久久久久久久久久 | av福利电影| 人人干在线观看 | 九色视频网址 | 操操操人人人 | 在线免费观看av网站 | 亚洲人xxx | 狠狠狠狠狠狠狠 | 一二三精品视频 | 国产在线观看91 | 国产视频久久久 | 国产精久久久久久久 | 国产一区在线免费观看 | 少妇bbb好爽 | 中文字幕在线播放一区二区 | 国产中文字幕久久 | 欧美在线视频第一页 | 狠狠天天 | 91精品国产99久久久久 | 婷婷综合伊人 | 91久久国产露脸精品国产闺蜜 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 五月综合在线观看 | 伊人色综合久久天天网 | 欧美日韩在线精品一区二区 | 国产精品手机播放 | 91精品视频免费观看 | 久久免费看av | 激情电影影院 | 日韩色高清 | 中文字幕丝袜美腿 | 国产一级不卡毛片 | 在线观看亚洲a | 96精品高清视频在线观看软件特色 | 成人h在线观看 | 狠狠色丁香婷婷综合久小说久 | 日韩在线观看视频网站 | 国产精品久久久久久久久久东京 | 国产精品一区二区久久 | 激情视频一区二区三区 | 日产乱码一二三区别免费 | 黄色福利视频网站 | 精品国产亚洲一区二区麻豆 | 日韩av女优视频 | 国产99久久精品一区二区300 | 美女网站视频一区 | 欧美 亚洲 另类 激情 另类 | jizzjizzjizz亚洲 | 日韩成人邪恶影片 | 精品国产免费人成在线观看 | 在线免费黄 | 国产美女视频免费 | 一区二区三区免费 | 91在线视频网址 | 国产精品 久久 | 欧美激情精品久久久久 | 国产精品va在线观看入 | 免费色视频网址 | 久久久久久久久久久电影 | 二区三区在线 | 狠狠色噜噜狠狠狠狠2021天天 | 韩国av一区二区三区 | 天天干天天射天天爽 | www最近高清中文国语在线观看 | 91av视频播放| 成人免费av电影 | 丁香花中文在线免费观看 | 免费视频99 | 国产 视频 久久 | 免费观看黄 | 最近最新mv字幕免费观看 | 91亚色视频在线观看 | 中文字幕在线网址 | 亚洲精品国产精品乱码不99热 | 久久艹综合| 亚洲三级黄 | 久久久久久久久毛片精品 | 在线观看aaa | 一区二区电影网 | 四虎在线视频免费观看 | av一级在线观看 | 99热在线观看免费 | 日日干夜夜操视频 | 国产黄色片久久久 | 久热精品国产 | www.五月天激情 | 欧美午夜性 | 黄色av电影免费观看 | 97国产超碰 | 激情文学丁香 | 久久精品亚洲精品国产欧美 | 欧美日韩中文在线观看 | aa级黄色大片 | 天天综合中文 | 日韩影片在线观看 | 日韩高清免费在线观看 | 午夜少妇av | 精品国产成人av | 天天在线免费视频 | 国产色拍拍拍拍在线精品 | 午夜在线观看影院 | 天天干天天干天天色 | 国产精品 亚洲精品 | 国产精品久久久久久久久搜平片 | 婷婷性综合 | 五月天久久久久久 | 亚洲黄a | 亚洲乱码国产乱码精品天美传媒 | 天天爽夜夜爽精品视频婷婷 | 国产一级h | 500部大龄熟乱视频 欧美日本三级 | 欧美精品久久久久久久 | 天天干,狠狠干 | 亚洲激情在线播放 | 精品99久久久久久 | 久草精品视频在线观看 | 国产精品久久久久久久午夜片 | 三上悠亚一区二区在线观看 | 亚洲精品高清在线 | 成人av资源网| 久久精品国产免费看久久精品 | 国产一二三四在线观看视频 | 黄色h在线观看 | 亚洲综合射 | 日韩久久精品一区 | 国产日韩精品在线观看 | 国产高清在线a视频大全 | 91精品91| 国内精品久久久久影院男同志 | www蜜桃视频 | 国产露脸91国语对白 | 九九免费观看视频 | 亚洲女人天堂成人av在线 | 国产xxxxx在线观看 | 在线蜜桃视频 | 国产在线理论片 | 一级α片免费看 | 国产资源在线免费观看 | 亚洲国产成人久久 | 成人看片| 久久亚洲影视 | 99re6热在线精品视频 | 国产在线播放一区二区 | 日韩欧美69| 99久久激情 | 亚洲国产中文字幕 | 九九热视频在线免费观看 | 日韩免费av网址 | 97精品国产97久久久久久久久久久久 | 亚洲天堂社区 | 伊人久久国产精品 | 97成人在线视频 | 精品国产一区二区三区久久久蜜月 | 国产91免费在线 | 久久99亚洲网美利坚合众国 | 狠狠躁夜夜av | 色综合夜色一区 | 亚洲国产中文字幕在线视频综合 | 日韩在线视频免费看 | 人人爽人人做 | 在线观看91| 婷婷av电影 | 蜜桃av综合网 | 国产在线免费 | 最近免费中文视频 | 探花视频在线版播放免费观看 | 亚洲成aⅴ人片久久青草影院 | 欧美不卡视频在线 | 天天色中文 | 亚洲小视频在线 | 亚洲五月综合 | 国产中文字幕一区二区 | 日韩一二三 | 久久精品久久精品久久精品 | 国产精品一区二区久久精品爱涩 | 久久久久一区二区三区 | 午夜久久影视 | 日韩av片无码一区二区不卡电影 | 免费视频一二三区 | 久久伊人热 | 天天操天天操天天操天天操天天操天天操 | 免费看片在线观看 | 亚洲精品国偷拍自产在线观看 | 色久天| 黄色一级大片在线免费看产 | 中文字幕在线有码 | 国产精品国产三级国产不产一地 | 97天天综合网 | 国产日韩精品在线观看 | 天天操偷偷干 | 久久伊人国产精品 | 国产精品第72页 | 精品 激情 | 一级做a爱片性色毛片www | 国产一级片不卡 | www.com操| 精精国产xxxx视频在线播放 | 日韩最新中文字幕 | 五月天六月婷婷 | 在线观看亚洲精品视频 | 亚洲一区日韩在线 | 视频国产一区二区三区 | 91精品国产高清自在线观看 | 亚洲成年片 | 99国产视频 | 新版资源中文在线观看 | 国产一区高清在线 | 99精品一区二区三区 | 91亚色视频| 亚洲精品中文字幕在线 | 国产视频一级 | 天天做天天射 | 九九九热精品免费视频观看 | 五月开心婷婷网 | 一区二区影院 | 超碰.com| 成人av电影免费在线播放 | 91av综合| 天堂视频中文在线 | 在线观看视频一区二区 | 黄色网在线播放 | 激情五月婷婷激情 | 麻豆传媒视频在线 | 国产精品黑丝在线观看 | 亚州五月 | 91亚洲国产成人 | 欧美日韩免费一区 | 欧美另类xxx | 91香蕉视频720p | 欧美男女爱爱视频 | 天天操天天操天天操天天 | 国产日韩中文字幕 | 四虎成人免费观看 | 国产视频久久久 | 国产精品一区二区三区久久久 | 精品国产一区二区三区久久久蜜臀 | 久草五月 | 亚洲欧美视频网站 | 亚洲成av人片在线观看香蕉 | 欧美性另类 | 涩涩网站在线观看 | 免费a级毛片在线看 | 亚洲国产午夜精品 | 国产视频1区2区 | 亚洲黄色成人网 | 免费视频91| 久久天天操 | 国产高清视频网 | 天天色天天射综合网 | 亚洲aⅴ在线 | 夜夜操狠狠操 | 国产+日韩欧美 | 欧美成人理伦片 | www.在线观看视频 | 久久99久久99精品免观看粉嫩 | 一区二区在线电影 | 久草视频国产 | 国产精品露脸在线 | 日韩亚洲国产精品 | 久久免费视频网站 | 欧美精品在线免费 | 久久婷婷亚洲 | 日韩91av| 精品久久综合 | 欧美日比视频 | 日韩免费一区二区 | 久久久久麻豆v国产 | 国产成人免费av电影 | 亚洲欧美国产精品 | 亚洲精品久久久久58 | 亚洲在线a | 欧美日韩国产在线观看 | 成人av片在线观看 | 日韩精品欧美视频 | 九九免费视频 | 天天干天天射天天操 | 免费观看9x视频网站在线观看 | 美女黄濒| 天天射,天天干 | 伊人网站 | 日韩成人免费在线 | 亚洲一区久久久 | 国产在线观看你懂得 | 久久免费电影网 | 久久久久亚洲精品男人的天堂 | 国产美女网站视频 | 日韩欧美xxxx | 国产精品一区二区你懂的 | 国产精品嫩草影院123 | 91久久国产自产拍夜夜嗨 | 欧美日韩亚洲在线观看 | 手机av资源 | 国产在线视频一区二区三区 | 久草精品视频在线看网站免费 | 91福利试看 | 99久久精品国产观看 | 激情av五月婷婷 | 国产精品中文字幕av | 人人插人人澡 | 欧美在线18 | 欧美国产日韩一区二区三区 | 精品久久久久久亚洲综合网站 | 91漂亮少妇露脸在线播放 | 亚洲综合在线一区二区三区 | 亚洲精品中文字幕视频 | 婷婷中文字幕 | a视频在线看 | 精品久久久久久亚洲综合网 | 久久99国产综合精品免费 | 免费中文字幕在线观看 | 精品国产aⅴ一区二区三区 在线直播av | 一区二区三区日韩在线观看 | 亚洲日本va午夜在线影院 | 日本h视频在线观看 | 久久精品一区二区三区中文字幕 | 亚洲综合色视频 | 视频福利在线 | 三级黄色在线 | 亚洲欧美日韩一区二区三区在线观看 | 日日爱影视 | 美女视频黄频大全免费 | 狠狠狠的干 | 国产精品热 | 韩日精品中文字幕 | 青青草视频精品 | 66av99精品福利视频在线 | 韩国av电影在线观看 | 在线观看免费视频你懂的 | 91av成人 | 美女黄久久 | 奇米影视8888在线观看大全免费 | av一区二区三区在线观看 | 808电影| 欧美日韩国产高清视频 | 日韩一级片大全 | 一级特黄aaa大片在线观看 | 中文字幕乱偷在线 | 国产精品久久久久一区二区 | 亚洲精品日韩在线观看 | www.69xx| 欧美精品三级 | 欧美成人xxx| 日韩高清免费无专码区 | 国产成人三级在线播放 | 久久久久五月天 | 国产一区二区影院 | 国产精品欧美 | 综合五月婷婷 | 国精产品满18岁在线 | av中文在线 | 天天草视频 | 九九欧美视频 | 亚洲视频在线播放 | 久草99 | 黄色在线观看免费 | 日韩av电影中文字幕 | 婷婷色中文网 | 欧美日本中文字幕 | 2017狠狠干 | 黄色小说在线观看视频 | 久久免费在线视频 | 91麻豆看国产在线紧急地址 | 国产美女精品视频 | 亚洲精品久久久久58 | 又黄又刺激的视频 | 精精国产xxxx视频在线播放 | 色综合久久五月天 | 欧美日韩国产综合网 | 亚洲精品9 | 日韩激情片在线观看 | 国产视频精品视频 |