亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Sentinel底層原理與生產(chǎn)實(shí)踐:從配置到滑動(dòng)窗口與規(guī)則持久化

Sentinel底層原理與生產(chǎn)實(shí)踐:從配置到滑動(dòng)窗口與規(guī)則持久化 提到Sentinel很多同學(xué)第一反應(yīng)是限流熔斷組件但真正到要接入項(xiàng)目的時(shí)候又容易被一堆概念繞暈資源、規(guī)則、Slot鏈、滑動(dòng)窗口、控制臺(tái)推送……這套東西要是沒(méi)搞懂底層機(jī)制配置半天不生效生產(chǎn)環(huán)境一壓測(cè)就原形畢露。這篇文章把我自己從“會(huì)用注解”到“能看懂源碼鏈路”這段時(shí)間踩過(guò)的坑、梳理清楚的關(guān)鍵點(diǎn)完整整理出來(lái)。適用的讀者比較明確已經(jīng)在用或者準(zhǔn)備用Sentinel做流量治理的Java后端開(kāi)發(fā)尤其是微服務(wù)架構(gòu)剛起步、接口偶發(fā)性抖動(dòng)、想引入限流但不知道從哪下手的團(tuán)隊(duì)。我會(huì)先從配置流程講起再深入到底層實(shí)現(xiàn)原理這一次盡量把“為什么這樣配置”和“運(yùn)行時(shí)到底發(fā)生了什么”串起來(lái)講而不是貼一堆官方文檔。1. 先搞清楚Sentinel解決什么問(wèn)題1.1 三個(gè)核心場(chǎng)景直擊痛點(diǎn)Sentinel的核心能力概括起來(lái)就三塊流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載保護(hù)。聽(tīng)起來(lái)很抽象實(shí)際遇到的問(wèn)題是具體的。流量控制對(duì)應(yīng)的是突發(fā)流量把服務(wù)打掛的問(wèn)題。比如某個(gè)活動(dòng)頁(yè)面零點(diǎn)上線瞬間涌入的請(qǐng)求是平時(shí)的幾十倍數(shù)據(jù)庫(kù)連接池和下游服務(wù)根本沒(méi)有喘息機(jī)會(huì)。Sentinel做的不是單純限制QPS數(shù)字而是根據(jù)你定義好的閾值和策略把超過(guò)閾值的流量擋在業(yè)務(wù)邏輯之前保護(hù)入口鏈路不被打穿。熔斷降級(jí)對(duì)應(yīng)的是下游依賴出問(wèn)題時(shí)的“雪崩”傳導(dǎo)。比如訂單服務(wù)調(diào)用了庫(kù)存服務(wù)庫(kù)存服務(wù)GC停頓三秒訂單服務(wù)的線程就大批堆積堆積的線程又占滿Tomcat線程池緊接著整個(gè)訂單服務(wù)也假死。Sentinel通過(guò)慢調(diào)用比例、異常比例這些指標(biāo)判斷下游是否處于不健康狀態(tài)一旦觸發(fā)就快速返回兜底結(jié)果不再去請(qǐng)求異常的依賴。系統(tǒng)負(fù)載保護(hù)更偏向整機(jī)維度不是只看單個(gè)接口的QPS而是結(jié)合CPU使用率、系統(tǒng)Load、平均RT這些機(jī)器級(jí)指標(biāo)做兜底。這一點(diǎn)在很多網(wǎng)關(guān)場(chǎng)景特別有用后端機(jī)器已經(jīng)高負(fù)載了即使每個(gè)接口都沒(méi)達(dá)到流控閾值也應(yīng)該主動(dòng)削峰。三條能力各有適用場(chǎng)景但它們的底層都是“統(tǒng)計(jì) 規(guī)則判斷”理解這一點(diǎn)后面的機(jī)制就好懂很多。1.2 資源和規(guī)則理解配置的最小單元Sentinel整個(gè)模型可以壓縮成兩個(gè)詞資源和規(guī)則。資源是你要保護(hù)的目標(biāo)規(guī)則是定義怎么保護(hù)。資源在代碼里通常是一個(gè)方法、一個(gè)接口、或者一段業(yè)務(wù)邏輯。手動(dòng)埋點(diǎn)時(shí)用SphU.entry(someResource)創(chuàng)建入口用注解SentinelResource(someResource)也可以起到類似效果。規(guī)則則通過(guò)Rule對(duì)象描述比如FlowRule描述流控規(guī)則、DegradeRule描述熔斷規(guī)則、AuthorityRule描述黑白名單規(guī)則。配置規(guī)則的本質(zhì)就是把“資源”和“限制條件”關(guān)聯(lián)起來(lái)。我剛開(kāi)始接觸時(shí)有個(gè)誤區(qū)以為只要在控制臺(tái)配了規(guī)則代碼里不用做任何改動(dòng)就自動(dòng)生效。實(shí)際上資源埋點(diǎn)才是前提控制臺(tái)規(guī)則只是告訴Sentinel“對(duì)這個(gè)已埋點(diǎn)的資源做什么限制”。如果代碼里根本沒(méi)對(duì)某接口埋點(diǎn)控制臺(tái)配再多規(guī)則也是空轉(zhuǎn)。1.3 Sentinel和其他限流組件的本質(zhì)差異和Hystrix這類線程隔離方案比Sentinel的差異很直觀。Hystrix用線程池隔離來(lái)保護(hù)依賴每個(gè)依賴分配固定線程數(shù)超了直接拒絕代價(jià)是每一個(gè)下游調(diào)用都要跨線程切換線程開(kāi)銷很大。Sentinel走的是統(tǒng)計(jì)流量再加規(guī)則判斷的路線不額外創(chuàng)建線程池請(qǐng)求仍然走原始調(diào)用線程只是在入口處做了計(jì)數(shù)器判斷性能開(kāi)銷要小得多。Resilience4j是另一種輕量級(jí)方案它的滑動(dòng)窗口和熔斷器也做得不錯(cuò)但規(guī)則管理和控制臺(tái)體驗(yàn)比Sentinel弱一些。實(shí)際業(yè)務(wù)中Sentinel的優(yōu)勢(shì)主要體現(xiàn)在幾方面細(xì)粒度的實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)、豐富的流控效果快速失敗、Warm Up、排隊(duì)等待、與微服務(wù)體系的控制臺(tái)聯(lián)動(dòng)。這些不是單純一個(gè)算法庫(kù)能提供的屬于完整的治理方案。2. 最小可用配置十分鐘接入哨兵2.1 引入依賴和初始化接入Sentinel的第一步是引入依賴。以最常見(jiàn)的Spring Boot項(xiàng)目為例Maven里加上對(duì)應(yīng)依賴即可。如果你是Spring Cloud Alibaba體系可以直接引spring-cloud-starter-alibaba-sentinel會(huì)連自動(dòng)配置一起帶進(jìn)來(lái)如果是純Spring Boot項(xiàng)目引sentinel-core和sentinel-transport-simple-http也夠用。dependency groupIdcom.alibaba.csp/groupId artifactIdsentinel-core/artifactId version1.8.6/version /dependency !-- 控制臺(tái)通信依賴接入dashboard時(shí)需要 -- dependency groupIdcom.alibaba.csp/groupId artifactIdsentinel-transport-simple-http/artifactId version1.8.6/version /dependency初始化代碼很少Sentinel提供了SPI機(jī)制大多數(shù)組件會(huì)自動(dòng)加載。如果是在非Spring環(huán)境里使用手動(dòng)調(diào)用一下InitExecutor.doInit()也可以強(qiáng)制觸發(fā)初始化。這個(gè)階段最容易忽略的是配置project.name所有接入控制臺(tái)的客戶端都會(huì)用這個(gè)名字上報(bào)不設(shè)置的話控制臺(tái)的“機(jī)器列表”里會(huì)看到一個(gè)默認(rèn)名多個(gè)應(yīng)用混在一起很難排查。2.2 用注解和API手動(dòng)埋點(diǎn)接入后第一件事不是配規(guī)則而是決定在哪里做資源埋點(diǎn)。注解方式最推薦在關(guān)鍵業(yè)務(wù)方法上使用直觀同時(shí)便于維護(hù)SentinelResource(value createOrder, blockHandler handleBlock) public Order createOrder(OrderRequest request) { // 核心業(yè)務(wù)邏輯 } public Order handleBlock(OrderRequest request, BlockException ex) { // 被限流或熔斷后的兜底邏輯 return Order.fallback(); }注意blockHandler方法的簽名必須和原方法一致且多一個(gè)BlockException參數(shù)。這里有個(gè)很容易踩的坑如果不寫(xiě)blockHandler接口被限流后直接把異常拋給上層用戶看到的就是500錯(cuò)誤而不是一個(gè)優(yōu)雅的降級(jí)提示。平時(shí)我看到不少項(xiàng)目過(guò)度依賴SentinelResource所有方法都加注解。其實(shí)有些場(chǎng)景適合手動(dòng)埋點(diǎn)比如被調(diào)用的第三方SDK方法不好加注解時(shí)可以用SphU直接包一層try (Entry entry SphU.entry(cacheGet)) { return cache.get(key); } catch (BlockException ex) { return getFromBackup(key); }埋點(diǎn)要在真實(shí)的熱點(diǎn)路徑上比如查詢接口入口、秒殺下單入口、數(shù)據(jù)庫(kù)寫(xiě)入前而不是在鏈路末端打個(gè)沒(méi)意義的標(biāo)記。2.3 三種規(guī)則配置方式規(guī)則配置有硬編碼、通過(guò)控制臺(tái)推送、通過(guò)外部數(shù)據(jù)源拉取三種常見(jiàn)方式。硬編碼方式適合本地驗(yàn)證和測(cè)試直接代碼里創(chuàng)建FlowRuleFlowRule rule new FlowRule(); rule.setResource(createOrder); rule.setGrade(RuleConstant.FLOW_GRADE_QPS); rule.setCount(100); FlowRuleManager.loadRules(Collections.singletonList(rule));loadRules一調(diào)用規(guī)則立刻內(nèi)存生效不需要重啟。但生產(chǎn)環(huán)境千萬(wàn)別這么做每次發(fā)版改規(guī)則都要改代碼而且規(guī)則只存在本地內(nèi)存應(yīng)用重啟規(guī)則就沒(méi)了這是硬編碼最大的局限??刂婆_(tái)推送方式指在Dashboard頁(yè)面新增流控規(guī)則通過(guò)簡(jiǎn)單HTTP接口下發(fā)到客戶端內(nèi)存里。好處是可視化壞處是同樣不持久化應(yīng)用重啟后規(guī)則丟失需要重新推一遍。更致命的是多臺(tái)實(shí)例時(shí)控制臺(tái)會(huì)向每臺(tái)客戶端分別推送如果有一臺(tái)實(shí)例網(wǎng)絡(luò)抖動(dòng)沒(méi)收到該實(shí)例規(guī)則就跟其他實(shí)例不一致。所以生產(chǎn)環(huán)境只用控制臺(tái)推規(guī)則等于給自己埋雷。外部數(shù)據(jù)源方式是把規(guī)則放到注冊(cè)中心或配置中心客戶端通過(guò)DataSource自動(dòng)監(jiān)聽(tīng)變化。這是生產(chǎn)環(huán)境推薦方案具體做法下一章展開(kāi)。2.4 控制臺(tái)的安裝與客戶端接入Sentinel控制臺(tái)是個(gè)獨(dú)立的Web應(yīng)用官方給出的啟動(dòng)方式很直接java -Dserver.port8080 \ -Dcsp.sentinel.dashboard.serverlocalhost:8080 \ -Dproject.namesentinel-dashboard \ -jar sentinel-dashboard.jarcsp.sentinel.dashboard.server對(duì)控制臺(tái)本身來(lái)說(shuō)是注冊(cè)到哪個(gè)服務(wù)端默認(rèn)指向自己即可。啟動(dòng)成功后訪問(wèn)localhost:8080默認(rèn)賬號(hào)密碼都是sentinel??蛻舳私尤肟刂婆_(tái)時(shí)必須指定控制臺(tái)地址和應(yīng)用名java -Dcsp.sentinel.dashboard.serverlocalhost:8080 \ -Dproject.nameorder-service \ -jar order-service.jar如果是在Spring Boot的application.properties里配置對(duì)應(yīng)是這樣spring.cloud.sentinel.transport.dashboardlocalhost:8080 spring.application.nameorder-service客戶端接入后不會(huì)立即出現(xiàn)在控制臺(tái)必須等某個(gè)Sentinel資源第一次被訪問(wèn)產(chǎn)生了統(tǒng)計(jì)數(shù)據(jù)客戶端才會(huì)上報(bào)心跳和指標(biāo)。我第一次部署時(shí)在控制臺(tái)等機(jī)器列表一直不出現(xiàn)后來(lái)臨時(shí)調(diào)了一下接口才發(fā)現(xiàn)是“懶加載”機(jī)制。3. 規(guī)則持久化與動(dòng)態(tài)推送3.1 為啥規(guī)則老丟很多團(tuán)隊(duì)用控制臺(tái)配置完規(guī)則后遇到過(guò)一個(gè)詭異現(xiàn)象規(guī)則當(dāng)時(shí)是生效的但應(yīng)用一重啟規(guī)則全部消失還得重新配置。原因就是上一章說(shuō)的控制臺(tái)默認(rèn)模式是把規(guī)則推給客戶端內(nèi)存并沒(méi)有落到任何持久化存儲(chǔ)。Sentinel的FlowRuleManager.loadRules只負(fù)責(zé)更新內(nèi)存中的規(guī)則集合它本身沒(méi)有“保存到數(shù)據(jù)庫(kù)”的邏輯。這種設(shè)計(jì)在線上的問(wèn)題不止重啟丟規(guī)則。假設(shè)訂單服務(wù)部署了10臺(tái)機(jī)器你在控制臺(tái)把下單接口的閾值從100改到200控制臺(tái)會(huì)向每臺(tái)機(jī)器的內(nèi)存分別推送新規(guī)則。只要其中一臺(tái)推送失敗它留在舊值整個(gè)集群的流控閾值就是不均勻的流量調(diào)度隨機(jī)到這臺(tái)機(jī)器時(shí)表現(xiàn)會(huì)和別的不一樣。3.2 DataSource機(jī)制解析Sentinel為了解決規(guī)則來(lái)源問(wèn)題抽象出了DataSource接口它負(fù)責(zé)從外部存儲(chǔ)讀取規(guī)則并把變更推送給對(duì)應(yīng)RuleManager。核心流程是一個(gè)外部源配置中心或數(shù)據(jù)庫(kù)保存規(guī)則內(nèi)容格式通常是JSON字符串。DataSource定時(shí)拉取或者訂閱變更事件。拿到內(nèi)容后通過(guò)Converter轉(zhuǎn)換成規(guī)則列表。調(diào)用FlowRuleManager.register2Property(property)或DegradeRuleManager.register2Property(property)把規(guī)則送入對(duì)應(yīng)的規(guī)則管理器。讀到這里你會(huì)發(fā)現(xiàn)DataSource只是解決了“規(guī)則從哪里加載”的問(wèn)題至于你怎么往配置中心寫(xiě)規(guī)則可以手動(dòng)寫(xiě)、可以用控制臺(tái)改造后寫(xiě)、也可以寫(xiě)個(gè)腳本定時(shí)同步。常見(jiàn)可用的數(shù)據(jù)源有Nacos、Zookeeper、Apollo、Etcd核心思想都一樣配置中心是規(guī)則唯一權(quán)威來(lái)源。3.3 基于Nacos的規(guī)則持久化實(shí)例以Nacos作為配置中心做一個(gè)最簡(jiǎn)單的流控規(guī)則持久化。先引入擴(kuò)展依賴dependency groupIdcom.alibaba.csp/groupId artifactIdsentinel-datasource-nacos/artifactId version1.8.6/version /dependencySpring Boot項(xiàng)目里配置數(shù)據(jù)源BeanConfiguration public class SentinelNacosConfig { Bean public FlowRuleDataSource flowRuleDataSource() { String rule [\n {\n \resource\: \createOrder\,\n \grade\: 1,\n \count\: 100,\n \limitApp\: \default\\n }\n ]; return new FlowRuleDataSource(localhost:8848, sentinel-group, order-create-flow-rules, new NacosConverter()); } private static class NacosConverter implements ConverterString, ListFlowRule { Override public ListFlowRule convert(String source) { return JSON.parseArray(source, FlowRule.class); } } }配置完之后應(yīng)用啟動(dòng)時(shí)會(huì)自動(dòng)從Nacos拉取規(guī)則后續(xù)Nacos配置變更也會(huì)被監(jiān)聽(tīng)并熱更新。注意幾個(gè)參數(shù)dataId對(duì)應(yīng)Nacos配置IDgroup對(duì)應(yīng)Nacos分組grade為1表示QPS維度0表示并發(fā)線程數(shù)維度容易配反。實(shí)際生產(chǎn)環(huán)境里我建議把規(guī)則配置放在獨(dú)立的配置文件中不同環(huán)境用不同dataId分段例如order-service-flow-dev、order-service-flow-prod避免測(cè)試環(huán)境改閾值影響到生產(chǎn)。3.4 生產(chǎn)環(huán)境規(guī)則治理建議規(guī)則持久化只是第一步規(guī)則治理牽扯到更細(xì)的問(wèn)題。規(guī)則變更要遵循可追溯原則。每一次修改閾值都算一次變更最好有記錄誰(shuí)改的、什么時(shí)候改的、從多少改到多少??刂婆_(tái)本身日志比較弱可以通過(guò)改造數(shù)據(jù)源的寫(xiě)入端統(tǒng)一走公司的配置中心變更審計(jì)這樣出問(wèn)題時(shí)能查得到。規(guī)則發(fā)布要關(guān)注生效范圍。Nacos配置更新后所有客戶端實(shí)例會(huì)同時(shí)收到新規(guī)則。如果新閾值設(shè)置得太激進(jìn)比如從1000改成100全量實(shí)例瞬間收緊流量接口可用性可能大幅下降。穩(wěn)妥的做法是先改一臺(tái)實(shí)例的規(guī)則做灰度驗(yàn)證穩(wěn)定后再推全局。還要區(qū)分“業(yè)務(wù)規(guī)則”和“治理規(guī)則”。限流閾值往往和業(yè)務(wù)容量評(píng)估、壓測(cè)結(jié)果強(qiáng)相關(guān)不是運(yùn)維憑空填一個(gè)數(shù)。每隔一段時(shí)間需要根據(jù)峰值流量回放壓測(cè)看當(dāng)前閾值是否合理避免閾值定得太高起不到保護(hù)作用或者定得太低誤傷正常流量。4. 底層原理資源與Slot鏈的協(xié)作4.1 默認(rèn)鏈路從入口到最終攔截Sentinel的底層核心是一個(gè)責(zé)任鏈模式叫ProcessorSlotChain。每個(gè)資源在第一次訪問(wèn)時(shí)會(huì)構(gòu)建一條獨(dú)立的Slot鏈后續(xù)所有經(jīng)過(guò)該資源的流量都會(huì)在這條鏈上依次過(guò)一遍。一條默認(rèn)鏈路包含的主要Slot按順序是NodeSelectorSlot負(fù)責(zé)為當(dāng)前資源創(chuàng)建DefaultNode并把調(diào)用樹(shù)上下文綁到當(dāng)前入口。ClusterBuilderSlot負(fù)責(zé)創(chuàng)建ClusterNode用于統(tǒng)計(jì)整個(gè)資源粒度的全局?jǐn)?shù)據(jù)。StatisticSlot最核心的統(tǒng)計(jì)實(shí)例負(fù)責(zé)把請(qǐng)求的通過(guò)數(shù)、拒絕數(shù)、RT數(shù)據(jù)寫(xiě)入滑動(dòng)窗口。AuthoritySlot做黑白名單校驗(yàn)。SystemSlot做系統(tǒng)負(fù)載保護(hù)。FlowSlot根據(jù)限流規(guī)則判斷是否需要拒絕。DegradeSlot根據(jù)熔斷規(guī)則判斷當(dāng)前資源是否處于熔斷狀態(tài)。我最早看這個(gè)鏈時(shí)很疑惑為什么統(tǒng)計(jì)放在最前面規(guī)則判斷放在后面。后來(lái)一想就通了規(guī)則判斷需要依賴統(tǒng)計(jì)數(shù)據(jù)所以先讓StatisticSlot把本次請(qǐng)求寫(xiě)入統(tǒng)計(jì)窗口隨后FlowSlot讀取窗口數(shù)據(jù)時(shí)就能計(jì)算當(dāng)前QPS是否超限。如果超限拋出BlockException請(qǐng)求在鏈上被攔截如果正常請(qǐng)求繼續(xù)向下走最終進(jìn)入真實(shí)業(yè)務(wù)邏輯。這個(gè)設(shè)計(jì)還有一個(gè)精妙之處StatisticSlot在任何規(guī)則判斷之前都會(huì)把原始數(shù)據(jù)采集下來(lái)所以即使某個(gè)規(guī)則沒(méi)觸發(fā)控制臺(tái)依然能看到實(shí)時(shí)指標(biāo)。整個(gè)鏈路像流水線上的傳感器加閘機(jī)傳感器先記錄流量閘機(jī)再?zèng)Q定放不放行。4.2 統(tǒng)計(jì)數(shù)據(jù)的滑動(dòng)窗口實(shí)現(xiàn)Sentinel統(tǒng)計(jì)的核心不是簡(jiǎn)單計(jì)數(shù)器而是一個(gè)滑動(dòng)窗口。具體實(shí)現(xiàn)類是LeapArray它內(nèi)部維護(hù)一個(gè)環(huán)形數(shù)組數(shù)組每個(gè)元素就是一個(gè)窗口桶WindowWrap。每個(gè)窗口桶里保存了該時(shí)間窗口內(nèi)統(tǒng)計(jì)到的總請(qǐng)求數(shù)、總RT、成功數(shù)、異常數(shù)等指標(biāo)。在默認(rèn)秒級(jí)統(tǒng)計(jì)場(chǎng)景下Sentinel把1秒劃分成2個(gè)500毫秒的桶數(shù)組長(zhǎng)度也按這個(gè)粒度初始化。當(dāng)時(shí)間推進(jìn)到新的桶周期時(shí)會(huì)復(fù)用或覆蓋舊桶數(shù)據(jù)。這樣做的直接好處是QPS計(jì)算不需要額外加鎖讀當(dāng)前時(shí)間所在桶的計(jì)數(shù)除以窗口跨度即可。相比傳統(tǒng)的整秒固定窗口滑動(dòng)窗口能明顯緩解臨界問(wèn)題——固定窗口在秒邊界切換瞬間可能出現(xiàn)兩倍流量穿透滑動(dòng)窗口把粒度細(xì)化統(tǒng)計(jì)更連續(xù)。值得注意的是規(guī)則里的閾值比較是通過(guò)ClusterNode的指標(biāo)計(jì)算的不是單機(jī)DefaultNode。這意味著即使在多線程并發(fā)下統(tǒng)計(jì)也能拿到整個(gè)應(yīng)用內(nèi)該資源的總流量。int windowLength 500; // 500ms一個(gè)桶 int sampleCount 2; // 1s內(nèi)2個(gè)桶 long currentQps node.passQps(); // 統(tǒng)計(jì)通過(guò)QPS4.3 節(jié)點(diǎn)模型DefaultNode與ClusterNode節(jié)點(diǎn)模型是理解Sentinel統(tǒng)計(jì)隔離性的關(guān)鍵。每個(gè)資源在每次請(qǐng)求入口處會(huì)創(chuàng)建DefaultNode它歸屬于當(dāng)前調(diào)用鏈上下文。更準(zhǔn)確地說(shuō)同一個(gè)資源的DefaultNode在相同Context下是同一個(gè)實(shí)例在不同Context下是不同的實(shí)例。ClusterNode則是資源維度的全局節(jié)點(diǎn)和應(yīng)用入口無(wú)關(guān)。FlowSlot做限流判斷時(shí)用的是ClusterNode的統(tǒng)計(jì)值因?yàn)橄蘖麝P(guān)心的是這個(gè)資源總共過(guò)來(lái)了多少流量而不是某個(gè)上游或某個(gè)調(diào)用關(guān)系單獨(dú)給了多少流量。我自己寫(xiě)代碼時(shí)有一個(gè)習(xí)慣如果發(fā)現(xiàn)需要對(duì)某個(gè)上游來(lái)源單獨(dú)限流比如只限制某個(gè)內(nèi)部系統(tǒng)請(qǐng)求這個(gè)接口的頻率那就需要配合AuthoritySlot或者自定義origin白名單邏輯而不是單純依賴默認(rèn)的ClusterNode統(tǒng)計(jì)。5. 限流算法的內(nèi)核與配置取舍5.1 滑動(dòng)窗口計(jì)數(shù)模型Sentinel的默認(rèn)限流基于滑動(dòng)窗口計(jì)數(shù)它的判斷邏輯很簡(jiǎn)單讀取當(dāng)前滑動(dòng)窗口內(nèi)已經(jīng)通過(guò)的請(qǐng)求數(shù)如果加上當(dāng)前這個(gè)請(qǐng)求會(huì)超過(guò)閾值就拒絕。舉個(gè)例子閾值QPS100當(dāng)前500ms桶里已經(jīng)通過(guò)80個(gè)請(qǐng)求這時(shí)新請(qǐng)求進(jìn)來(lái)判斷通過(guò)總數(shù)如果即將超過(guò)100就攔截。但注意讀到的不是嚴(yán)格的1秒整窗口而是最近若干個(gè)桶的區(qū)間。窗口劃分得越細(xì)統(tǒng)計(jì)越平滑但計(jì)算也越重。Sentinel秒級(jí)統(tǒng)計(jì)默認(rèn)2個(gè)桶分鐘級(jí)統(tǒng)計(jì)默認(rèn)60個(gè)桶各有各的用途?;瑒?dòng)窗口的問(wèn)題在于它不是一個(gè)基于排隊(duì)論的平滑算法流量短時(shí)脈沖仍可能瞬時(shí)超過(guò)閾值只是不會(huì)像固定窗口那樣在窗口翻新瞬間出現(xiàn)雙倍量級(jí)的問(wèn)題。對(duì)于絕大多數(shù)接口限流場(chǎng)景這個(gè)精度已經(jīng)足夠。5.2 三種流控效果怎么選配置FlowRule時(shí)controlBehavior字段決定了流量超過(guò)閾值后的行為??焖偈∈悄J(rèn)模式超過(guò)閾值直接拋出BlockException在注解場(chǎng)景下進(jìn)入blockHandler。適合大多數(shù)業(yè)務(wù)接口對(duì)調(diào)用方來(lái)說(shuō)語(yǔ)義清晰服務(wù)忙請(qǐng)重試。Warm Up模式適合處理冷系統(tǒng)啟動(dòng)場(chǎng)景。比如配置了1000 QPS系統(tǒng)剛剛啟動(dòng)時(shí)不會(huì)讓流量一下子全上來(lái)而是從一個(gè)較小的值默認(rèn)是閾值的1/3逐漸增長(zhǎng)到1000 QPS。我經(jīng)常用在需要預(yù)熱的場(chǎng)景比如頻繁使用Java JIT、連接池剛建立等這個(gè)模式能有效避免冷啟動(dòng)瞬間被打滿。排隊(duì)等待模式本質(zhì)上是漏桶算法的實(shí)現(xiàn)。請(qǐng)求超閾值后不直接拒絕而是讓它在隊(duì)列里等待以固定的速率放行。適合應(yīng)對(duì)突發(fā)性質(zhì)的流量比如消息任務(wù)偶發(fā)大批量執(zhí)行、定時(shí)任務(wù)集中跑批不適合實(shí)時(shí)在線接口請(qǐng)求延遲會(huì)明顯變大。FlowRule rule new FlowRule(); rule.setResource(batchJob); rule.setGrade(RuleConstant.FLOW_GRADE_QPS); rule.setCount(50); rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER); rule.setMaxQueueingTimeMs(500);這個(gè)例子里超出的請(qǐng)求最多等500毫秒如果等待超時(shí)還是沒(méi)獲得放行直接拒絕。5.3 熔斷降級(jí)的狀態(tài)機(jī)與恢復(fù)策略熔斷降級(jí)和限流最大區(qū)別在于它關(guān)注的是“被調(diào)用方是否健康”而不是“調(diào)用方有多少流量”。Sentinel的熔斷狀態(tài)有三個(gè)CLOSED關(guān)閉、OPEN打開(kāi)、HALF_OPEN半開(kāi)。初始狀態(tài)是CLOSED一切正常。當(dāng)統(tǒng)計(jì)周期內(nèi)慢調(diào)用比例或異常比例達(dá)到閾值熔斷器切換到OPEN接下來(lái)所有請(qǐng)求直接走降級(jí)邏輯不再真實(shí)調(diào)用下游。OPEN狀態(tài)持續(xù)timeWindow毫秒后自動(dòng)進(jìn)入HALF_OPEN半開(kāi)狀態(tài)此時(shí)放行少量探測(cè)請(qǐng)求如果探測(cè)請(qǐng)求成功熔斷器回到CLOSED如果還失敗重新回到OPEN。我這里有一個(gè)配置經(jīng)驗(yàn)慢調(diào)用比例閾值不能只看平均值要結(jié)合TP99來(lái)定。假如TP99本身是200ms你把最大RT定成100ms那幾乎所有請(qǐng)求都會(huì)被判成慢調(diào)用接口稍微波動(dòng)一下直接熔斷恢復(fù)后馬上又熔斷像個(gè)開(kāi)關(guān)一樣反復(fù)橫跳。初始配置寧愿寬松一點(diǎn)先觸發(fā)了再逐步收緊。DegradeRule degradeRule new DegradeRule(); degradeRule.setResource(getUserInfo); degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_RT); degradeRule.setCount(200); // 最大RT 200ms degradeRule.setTimeWindow(10); // 熔斷10秒 degradeRule.setMinRequestAmount(5); // 至少5個(gè)請(qǐng)求才觸發(fā)統(tǒng)計(jì) degradeRule.setStatIntervalMs(1000);minRequestAmount這個(gè)參數(shù)容易忽略但非常重要。請(qǐng)求量太少的時(shí)候統(tǒng)計(jì)樣本沒(méi)有統(tǒng)計(jì)意義可能一個(gè)慢請(qǐng)求就讓整個(gè)接口熔斷。加這個(gè)參數(shù)等于要求“至少積累這么多樣本才能下結(jié)論”。5.4 熱點(diǎn)參數(shù)與系統(tǒng)自適應(yīng)限流常規(guī)流控只針對(duì)資源整體熱點(diǎn)參數(shù)限流則細(xì)化到參數(shù)值維度。比如同一個(gè)商品查詢接口全網(wǎng)熱賣商品和普通商品的流量天差地別你希望針對(duì)商品ID做精細(xì)化限流某個(gè)熱門商品ID最多每秒查20次其他商品最多每秒查200次。這時(shí)需要用ParamFlowRule指定參數(shù)索引位置。系統(tǒng)自適應(yīng)規(guī)則相對(duì)更“大而全”它不會(huì)去區(qū)分具體資源而是全局生效。典型配置包括CPU使用率閾值、系統(tǒng)Load閾值、平均RT閾值、入口總QPS閾值、線程數(shù)閾值。其中系統(tǒng)Load的保護(hù)在Linux下才真正可靠因?yàn)橐x系統(tǒng)負(fù)載文件Windows下會(huì)退化為不生效。這套規(guī)則特別適合做入口網(wǎng)關(guān)的兜底保護(hù)比如整個(gè)網(wǎng)關(guān)的入口QPS先設(shè)置一個(gè)總量閾值其次再通過(guò)每條業(yè)務(wù)線自己的流控規(guī)則細(xì)化形成兩層保護(hù)。優(yōu)先級(jí)上系統(tǒng)規(guī)則在最前面防止整機(jī)資源被打滿業(yè)務(wù)規(guī)則在后面做更精準(zhǔn)的接口級(jí)控制。6. 常見(jiàn)問(wèn)題速查與踩坑排雷6.1 規(guī)則不生效怎么查這是出現(xiàn)頻率最高的問(wèn)題。第一步先確認(rèn)資源名是否一致??刂婆_(tái)配置里寫(xiě)的資源名必須和代碼埋點(diǎn)里的value一模一樣一個(gè)字符差都不行。很多人控制臺(tái)里寫(xiě)的是接口路徑/order/create代碼里注解寫(xiě)的是createOrder看起來(lái)像是同一個(gè)接口但Sentinel只認(rèn)字符串字面量對(duì)不上就是不生效。第二步確認(rèn)是否真的訪問(wèn)了資源。Sentinel是懶加載的沒(méi)有流量經(jīng)過(guò)埋點(diǎn)控制臺(tái)就不會(huì)有該資源的統(tǒng)計(jì)信息規(guī)則自然不會(huì)被觸發(fā)。檢查機(jī)器列表里是否能看到應(yīng)用如果看不到說(shuō)明客戶端跟控制臺(tái)心跳都不通更談不上規(guī)則下發(fā)了。第三步看是否有異常被吞掉。比如SentinelResource搭配了兜底方法但兜底方法內(nèi)部被try-catch吃掉了你看到的可能就是接口正常返回掩蓋了限流發(fā)生的事實(shí)。最好在兜底方法里加日志把BlockException的類型打出來(lái)快速定位是流控、熔斷、還是系統(tǒng)保護(hù)觸發(fā)的。6.2 監(jiān)控?cái)?shù)據(jù)與預(yù)期不符常見(jiàn)表現(xiàn)是控制臺(tái)看到的QPS和壓測(cè)工具統(tǒng)計(jì)的TPS對(duì)不上。一方面Sentinel控制臺(tái)顯示的QPS是經(jīng)過(guò)埋點(diǎn)資源統(tǒng)計(jì)的如果埋點(diǎn)位置在網(wǎng)關(guān)之后那就統(tǒng)計(jì)不到網(wǎng)關(guān)前的流量另一方面控制臺(tái)指標(biāo)是客戶端定時(shí)上報(bào)的本身有秒級(jí)延遲不是實(shí)時(shí)精確值。更隱蔽的一個(gè)坑是多個(gè)實(shí)例的統(tǒng)計(jì)隔離。如果應(yīng)用部署了多臺(tái)機(jī)器控制臺(tái)上顯示的是單臺(tái)機(jī)器的指標(biāo)不是說(shuō)所有實(shí)例聚合后的總量。你給單機(jī)配額100 QPS兩臺(tái)機(jī)器就是200 QPS總?cè)肟诹髁窟@在容量規(guī)劃時(shí)要算清楚。如果發(fā)現(xiàn)壓測(cè)流量被限流了但指標(biāo)沒(méi)明顯異??梢钥紤]是不是有Warm Up規(guī)則存在一開(kāi)始流量被壓低一段時(shí)間后才恢復(fù)也可能是maxQueueingTimeMs設(shè)置過(guò)小大量請(qǐng)求排無(wú)可排直接拒絕但統(tǒng)計(jì)數(shù)據(jù)里排隊(duì)時(shí)間看著正常。6.3 性能開(kāi)銷和依賴沖突Sentinel本身的性能開(kāi)銷主要集中在統(tǒng)計(jì)寫(xiě)入上由于滑動(dòng)窗口數(shù)據(jù)結(jié)構(gòu)是預(yù)分配數(shù)組加原子更新正常情況下單次統(tǒng)計(jì)耗時(shí)很短暫不會(huì)成為瓶頸。但如果你的業(yè)務(wù)本身QPS已經(jīng)特別高每個(gè)請(qǐng)求又埋了非常多資源點(diǎn)統(tǒng)計(jì)和Slot鏈遍歷的開(kāi)銷會(huì)成倍增加。這種時(shí)候要合理控制埋點(diǎn)粒度盡量在入口處和關(guān)鍵依賴處埋點(diǎn)不要層層埋點(diǎn)。依賴沖突常見(jiàn)于同時(shí)引入老版本Sentinel和應(yīng)用自帶的fastjson或jackson版本不一致導(dǎo)致反序列化規(guī)則JSON報(bào)錯(cuò)。排查方法很簡(jiǎn)單看到Converter轉(zhuǎn)ListFlowRule異常時(shí)多數(shù)是JSON庫(kù)沖突調(diào)整版本或者用自定義轉(zhuǎn)換器處理。還有一類問(wèn)題是控制臺(tái)版本和客戶端版本不一致。Dashboard版本過(guò)舊客戶端用新版本注冊(cè)時(shí)可能出現(xiàn)協(xié)議不兼容反饋到現(xiàn)象上是機(jī)器列表不顯示、規(guī)則推不進(jìn)去。我建議客戶端和Dashboard盡量保持同一個(gè)主版本升級(jí)時(shí)先升控制臺(tái)再升客戶端。6.4 一套推薦的配置落地順序根據(jù)我接入多個(gè)項(xiàng)目的經(jīng)驗(yàn)生產(chǎn)落地不要一上來(lái)就堆規(guī)則。建議按這個(gè)順序推進(jìn)先做好資源埋點(diǎn)梳理核心接口和熱點(diǎn)場(chǎng)景保證所有需要治理的入口都有明確的資源名。然后部署控制臺(tái)拿到基礎(chǔ)監(jiān)控?cái)?shù)據(jù)搞清每個(gè)接口的真實(shí)QPS、RT、異常率基線。有了基線之后再配限流規(guī)則閾值設(shè)為基線峰值的1.2到1.5倍先寬松后收緊。最后再逐步補(bǔ)充熔斷規(guī)則、熱點(diǎn)參數(shù)規(guī)則和系統(tǒng)規(guī)則每加一條規(guī)則都要觀察一段時(shí)間看觸發(fā)頻率和業(yè)務(wù)影響。規(guī)則之間也會(huì)互相作用比如入口QPS規(guī)則和慢調(diào)用熔斷規(guī)則同時(shí)存在時(shí)出現(xiàn)流量突增入口限流先攔掉一批熔斷統(tǒng)計(jì)到的請(qǐng)求數(shù)可能不足以觸發(fā)熔斷。這種時(shí)候要結(jié)合監(jiān)控日志看整個(gè)鏈路而不是盯著某一條規(guī)則調(diào)參。接入Sentinel這件事難點(diǎn)從來(lái)不在寫(xiě)幾行配置而在于你能否回答出“每個(gè)閾值為什么是這個(gè)數(shù)”“每一類規(guī)則到底在保護(hù)哪個(gè)薄弱點(diǎn)”。先把底層原理摸清楚配置只是順?biāo)浦鄣氖?。最后提個(gè)建議所有限流規(guī)則定義完畢之后花半天時(shí)間做一輪全鏈路壓測(cè)讓規(guī)則在真實(shí)流量下多跑一會(huì)兒這會(huì)暴露很多控制臺(tái)圖表看不出來(lái)的問(wèn)題。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
997色在线| 五月丁香| 999熟女精品| 婷婷色导航| 极品综合| 91人人| 青草影院内射高潮| 欧美久久人体| 国产精品一级二级在线| 大香蕉琪琪日本女优不卡| 亚洲性综合9| 亚洲色系另类精品国产| 亚洲欧洲成人在线电影| 亚州男人天堂| 久久蜜桃一区二区| 性感美女啊啊啊在线| 美女大乳久久久久久久女人18| 精品久热| 97在线免费看| 九九热超碰97亚洲最新香蕉| 中文一区二区婷婷视频| 国产精品熟女AV中文字幕在线播放| 人、人、摸,人、人、草| 久久透逼视频| 一本色道久久天天射天天干| 一类av片在线看| 大学生美女口爆| 欧美色亚洲色| 熟妇一区二区| 天天综合网91| 丁香婷婷五月| 精品欧美А∨无码黑人大荫蒂| 久久产精品一区二区三区电影| 天天综合色图| 国产 日韩 欧美一区| 日韩精品一区二区人人人| 丁香7月婷婷| 男人天堂最新手机版在线青青草| 台湾佬大香蕉| 国产精品分类在线观看| 熟妇xxxxx性春色| 国产第12页| 国产精品不卡一区二区三区av| 一区二区高清视频| 久久一区二区高清免费| 亚洲成av人片色午夜乱码| 岛国片在线观看视频亚洲| 日韩精品黄片免费观看| 色五月婷婷五月天| 青青青操| 伊人少妇久久久| 日本道日本道中文字幕日本道最新日本道在线观看| 四虎精品一区| 新亚洲无码| 欧美v亚洲v综合v国产v妖精| 日韩无码三级影院| 人妻啊啊人妻啊啊| 亚洲天堂第一页| 农村妇女精品一区二区| 日韩欧美麻豆| 思思热在线视频在线| 日韩免费簧片| 国产97视频免费观看| 国产福利第一视频| 日本人体九九九九九九| 后入日本1234| 国产AV久久野战精品| 日本精品第一视频在'| 曰韩无码777| 亚洲色鬼| 欧美激情一| 久草午夜| 欧美人妻久久精品二区三区| 青青操在线亚洲视频观看欧美在线 | 久久久久国产精品喷潮免费观看臀 | 日本一级一级一级一级| 麻豆天美传媒在线视频天堂| 懂色av中文字幕| 日韩猛交| 五月婷婷丁香| 曰本道人妻久久久在线不卡色视频 | 午夜无码精品免费看性色| 竹菊影视国产一区二区| 女生自91网站| 69精品| 九色精品视频导航1| 狠狠干婷婷| 国产少妇高潮| 2019天天干| 深夜激情无码| 日欧毛片久久| 黄色片A级一区二区三区| 久精品无码av一区二免费国产在线观看| 狠狠久久亚洲欧美专区| 久久骚| 综合97| 亚洲成A∨人影院在线欢看| 91 国产丝袜在线放观看| 夜夜骑日日| 亚洲国产91精品一区二区久久| 91黑人无码激情在线| 污污污8888| 日本影视久久免费| 亚洲有码 视频一区| 色悠久久久av| 一区二区三区免费岛国片| 女一区二区| 91亚洲人| 五月婷婷丁香| 亚洲阿v天堂在线| 东京热亚洲一区二区| 中文精品少妇天堂| 黄色欧美性爱视频| 久久久天堂| 偷看洗澡一二三区美女| 国产乱不卡| 凹凸视频在线观看伊人| 97超碰超欧美。| 国产美女自拍AV| 久久av色| 午夜AV人气不卡| 无码视频一区二区| 免费观看国产小粉嫩喷水精品午| 欧洲精品网| 亚洲精品国产熟女| 漂亮人妻被强中文字幕hd| 国产精品熟女乱伦| 不卡视频一区蜜桃视频| 日本三级中国三级99人妇网站| 欧美综合在线第一页| 久久欧美性爱视频| 3PAV乱伦视频| 日韩9999| 国产精品青草综合久久| 亚洲 暴爽 AV人人爽日日碰| 亚州成人a∨| 国产又粗又大硬免费色网视频| 亚洲国产剧情少妇激情| 一区二区三区激情在线观看| 国内精品99999| 久久精品三级影视| 人人操人人操人人人操| 亚洲人妻精品一区二区| 久久久久久性爱视频| 欧美大香蕉久| 国产精品高朝久久久久久久| 日韩久久三区| 永久免费av无码网站国产app| 久久、1234| 人人人人插| 丝袜狠狠草尤物 91| 被体育老师抱着c到高潮| 欧美性夜| 美日韩在线不卡人妻| 亚洲黄色网址视频| 欧美视频一| 久久99深爱久久99精品| 开心五月深爱五月| 强奸乱伦Av网| 亚洲成人精品在线一区| 综合色久欲| 天美国产精品| 狠狠干综合| 九九综合久久中文字幕| 大香蕉2017| 91网站18在线观看| 亚洲欧美精品一区天堂久久 | 综合影院永久入口国产| 久久久久久9| 一级黄碟| 中文在线久久字幕| www四虎| 日本 欧美 国产一区| 日本不卡一区| 日日AAvv| 色www精品视频在线观看| 亚洲九区| 久久综合亚洲色1080p| 揉揉揉夜夜| 日韩 成人 有码| 国产女人高潮视频| 欧美性爱伊人| 日本中文字幕在线电影| 一区二区偷拍拍视频| 亚洲无码免费看| 曰韩中文人妻视频| 哈哈操电影| 亚洲高清在线se| 九九亚洲精品| 国产怡红院| 亚洲综合五月天| 日韩精品人妻一| 中文乱码字字幕在线第5页| 少妇高潮九九九九九九九| 欧亚久久偷拍视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚洲欧美精品一区天堂久久 | 好吊色在线观看| 日本一级性爱| 综合自拍| 91精品伊人久久久大香线蕉91| 中文字幕日韩人妻视频| 91av熟女人妻| 亚洲阿v天堂无码z2018| 亚洲精品无码成人久久久99| 无码丰满熟妇一区二区浪潮AV| 亚洲色人阁| 蜜汁欧美| 青青青在线高清视频在线一二三四区| 亚洲天堂资源网| 天堂av最新电影网| 亚洲资源吧| 国产嫩草精品A88AV| 日韩人妻精品| 久久久久久久久久久久97 | 综合色色婷婷| 怡红院怡春院| 神马久久啊啊| 国产精品一级二级在线| 偷拍新久久| 国产精彩女在线观看视频| 十八禁黄色成人网站观看| 大香蕉欧美国产日韩高潮| 熟妇艹鸡八| 少妇人妻精品| 91九色丨风韵犹存| 波多野结衣之双飞调教在线播放 | 五月天激情四射| 婷婷中文字幕| 99热在线不卡| 一本色道久久综合狠狠操| 懂色AV网| 久久伊人最新网址视频| 手机在线人成免费视频| 日韩内射视频| 校园春色家庭伦理欧美激情| 鸥美中出| 久久精品国产99精品亚洲蜜...| 三级特黄60分钟播放| 欧美亚洲尤物久久| 国产亚洲99久久精品| 一牛影视久久久一区二区三区| 一区 欧美 日韩 麻豆| 91nbbbbbb| 亚洲交换| A级在线视频| 国产精品婬乱一级毛片彝族| 日韩超碰精品综合| 亚洲做性| 内射夫妻三片| 另类视频在线| 精品美女在线视频| 啪啪啪亚欧美视频| 久久精品中文字幕观看| 白嫩嫩一区| 日本999精品| 欧美国产婷婷久久| 久久精品国产亚洲AV片多多| 久久久99久9| 免费99精品国产自在在线| 欧美色图综合网| 成人乱人伦一区二区| 91大学精品激情戏| 成人久久久精品| 欧美组图日韩亚洲中文字幕| 久久天堂婷婷网| 国产久久日| 成年无码动漫av片无尽在线 | 不卡六六在线91| 91av熟女人妻| 欧美亚洲激情小说| 国产免费小视频| 亚洲va有码在线天堂| 天天综合日韩网| 欧美亚洲韩国视频十五区| 欧美性爱第一页久久| 丁香啪啪| 青青草在线视频美女| 操逼视频国产无套| 欧美少妇一区二区三区| 亚洲电影中字一区二区| 精品久久久久,69国产成人精| 91在线/欧洲| 翔田千里爆乳巨臀无码| 国产传媒日本欧美专区| 久久久精品电影| 蜜臀AV一区二区三区激情综合| 啪啪啪男女亚洲中文字幕99| 91麻豆va国产精品| AV色女综合| 黄片不用下载在线观看| 亚洲天天精品| 操逼操网| 骚鸭AV| 日韩黄色一区二区三区| 老女人91| 亚洲av无码成人精品国产| 91美女国产在线| 999亚洲国产视频| 中文字幕第23区| 久操网无码在线| 欧美在线55555| 国产日韩欧美亚洲精品95| 欧美色图 人妻| 3D污黄视频在线观看| 中文字幕第23区| 强奸乱伦AV网站| 91欧美性| 亚洲精品99| 熟女人妻一区二区三区| 日韩中文字幕熟妇人妻 | 99热超碰| 百度百度日本操逼| 青青草日本中文字幕| 91影库| 亚洲黄色网址| 高清在线偷拍自拍视频| 日日摸天天爽夜夜欢| 91 亚洲 欧洲| 国产精品操| 麻豆一区二区AV天美| 视频国产精品未满十八禁止在线观看| 中文字幕第23区| 日韩欧美经典在线观看| 婷婷激情四射| 欧美少妇性乱| 五月丁香啪啪| 草草影院最新网址| 极品美女嘿咻| 91电影色诱| 26uuu国产免费观看| 欧美春色| 亚州中文字幕超碰97| 去干网最新版| 国内毛片无遮挡国产| 综合大香蕉美。| 青青国产精品在线| 凹凸久久人人| 欧美乱伦专区| 激情婷婷丁香网| 不卡码视频| 国产福利精品最新在线| 国产精品ⅴ无码大片在线看.| 国产精品97超碰| 熟妇人妻一区二区三区| 五月丁香影院| 丁香九月激情啪| 秋霞一级鲁丝片A片| 97亚洲自在精品在线观看| 啊嗯好大视频在线观看| 六月激情网| 日韩乱伦影音先锋| 黄色大片免费在线| 无码精品久久久久久亚洲| 亚洲日本大香蕉1| 精品国产一区二区三区久久久蜜臀 | 伊人久久亚洲中文字幕不卡| 江都AV在线| 99热啪啪| 女人高潮大叫一级毛片| 国产AV久久野战精品| 天天草天天日| 亚洲欧洲激情卡通另类文学四射小说网站| 97少妇人妻中文字幕久久| 午夜天堂精品久久| 日韩AV色图| 欧美成人都市人妻| 色婷婷影视| 欧美一级黄片免费播放| 91爆操视频| 欧美日韩不卡a片| 伊人国产成人av网站| 资源新线在线天堂| 欧美加勒比| 青青草综合在线| 青青草中日韩在线| 劲爆欧美人妖三区91| 安徽熟妇视频| 国产精品熟女九九九| 国产视频三区四区| 有码免费观看| 91草草草| 玖玖综合视频| 美女诱惑久久| 操东北女人| 久久精品人妻一区| 久久久久久99AV无码免费网站| 91精片| 久久久久亚洲Av无码专区老牛影视| 欧美色91| 天天干天天操天天操夜夜操天天操| 69精品| 亚洲中文字幕精品一区| AV一起草在线| 国产人伦a片信息免费片| 精品久久久久av影院| 麻花传媒免费网站在线观看| 人成午夜免费大片| 久久久草成人网站久久久草成人久久久草久久久 | 99精彩视频| 丁香五月天激情综合| 91操人| 亚洲 91 在线| 色臀aV| 亚洲中文字幕av| 超碰2017| 色狠狠 - 百度| 综合自拍| 久久理论字幕视频| 欧美天堂超碰97| 欧美日韩亚洲少妇寂寞影院正在播放 | 天天射天天色成人| 色99999| 老外又粗又长一晚做五次| jizzjizz欧美| 免费视频在线观看啊啊啊啊啊| a人欧美综合天堂麻豆| 亚洲电影91| 久久精品无码专区| 777AV电影| 日本污ww视频网站| 超碰在线97国产| 97神马久久| 国产精品视频自拍在线| 狠狠狠狠狠狠| 69丨亚洲丨精品丨入口免费播放| 熟女人妻精品一区二区视频| 99热在线观看| 校园春色亚洲欧洲| 久久久日本电影| 精品无码久久久久久国产浪潮| 色婷婷香蕉| 大香蕉天天看妹子| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 中国一级特黄大片护士| 日韩乱码Av| 久久妇| 色在线视频导航| www.av在线观看| 九热大香蕉| 日本不卡一二区| ..日韩av毛片精品久久久| 五月丁香激情综合网| 91久久午夜无码鲁丝片久久人妻| 人妻精品一区二区三区| 美国日韩黄色片| 日韩午夜国产| 精品国产Av无码久久久亚洲| 综合婷婷| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 在线观看一级α片刺激高潮视频| 日本精品一区三区| 性欧美999| 亚洲二区精品在线观看| 国产视频第2页| 在线观看不卡一区二区三区| 伊人大香蕉在线| 伊色久人大在线| www色日本| 亚洲精品蜜桃久久久久久久| 麻豆综合一区av| 日本熟妇熟色97一本在线观看| 人伦四五区| 色yeye成人免费视频| 人人澡人人弄| 色网在线视频观看免费| 91网18| 操b在线观看| 欧美少妇大量自拍视频在线观看| 日本大香蕉综合网| 中日无幕一二三四区| 日韩熟女精一区二区三区不卡| 人、人、摸,人、人、草| 啊啊啊啊啊啊啊在线| 太久视频| 欧美精品不卡一二三四在线91| 欧美日韩国产中文精品字幕自在自线| 丰满人妻一区| 免费看日本操逼视频| 欧美色老汉| 色丁香五月婷婷| 97干在线视频| 日韩AV色图| 乱伦a片视频| 97欧美久久久久久久| 亚洲无码久久久久久久| a啊啊啊啊啊啊啊啊一区二区| 97人人干| 18禁看网站一区| 亚洲熟女一区| 成人片在线播放| 男人的天堂网页| 国产黄色动态精品| 粉嫩av在线一区二区| 欧亚三区动漫| 一区二区三区国产精产| 福利伊人玖玖国产| 久久久偷拍| 精品人妻一区二区三区-国产精品| A 天堂| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 91午夜无码| 一本色道久久综合亚洲二区三区| av天堂影视中文在字幕在线中文| 欧美爱三级日韩久久| 动漫av中文| 99精品在线播放| 精品人妻一区二区三区在| 97人人爱人人做人人乐| 在线国产一区二区av| 国产精品天堂| 97情超碰色| 日韩美一区| 国产91精品福利在线| 九九热av| 九七毛片九九毛片| 中文字幕一二三区| 99久久99久久综合| 探花一区二区三| 激情一区二区| 97资源站久久| 久操 高清| 男人的天堂啪啪| 人人摸人人干人人拍97| 精品一级毛片在线观看| 婷婷10月天青娱乐| 亚洲国产青青| 丰满少妇高潮无码| 亚洲色人妻综合| 欧美精品999| 国产中文大片资源中文字幕| 久久精品一区二区一8| 亚洲成人AB| 丝袜av一区二区三区| 91老司机在线视频免费观看 | 欧美精品亚洲精品日韩传电影| 超碰在线974| 一本一道人妻久久一区二区三区| 亚洲图片偷拍视频区| 综合五月婷婷亚洲一区| 日本熟女不卡视频| 亚洲无992tv| 欧美日本不卡在线| 性欧美999| 激情文学亚洲| 色九九九九九九| 亚洲男人综合网| 超碰97色色| 综合网久久| 男人的天堂.com| 亚洲色堂免费视频| 丰满少妇人妻久久久久久| 亚洲国男人的天堂| renqi久久久久久久久久久久| 2020国产精品| 99视频精品| 激情五月综合| 91 刺激在线| 一起草av| 97蜜桃综合| 欧美性爱一区| 欧美少妇高潮久久91| 欧美亚洲AN| 日本淫穴在线| 久久久久久久久国产| 国内一区二区三区| 欧美se综合| 99热在线播放| 91丨国产丨白浆秘 洗澡动漫| 超碰97久久| 极品销魂美女一区二区| 高清国产成人无码| 国产高清无码一区二区三区四区皇冠| 国产视频一区二区免费| 亚洲九区| 大鸡巴久久久| 麻豆成人av| 91老熟女91老女人| 欧美 亚洲 在线| 日韩免费在线观看不卡| 台湾成人无码AV| 操逼操操操91| 亚洲天堂另类美腿| 国产少妇高潮| 91亚洲影视| 男插女青青影院| av网页一区二区三区| 国产一区二区视频在线播放| 偷拍 精品另类 凸凹了四区| 曰本熟女视频| 9久9久9久9久视频网站| 男人的天堂2019| 亚洲av综合色区图片亚洲| 日韩性爱再线视频| 乱日视频| 国产日韩中文字幕欧美| 国产精品内射婷婷一级二| 国产一区二区精品久久99| 99久久网站| 欧美日韩人人早| 亚洲丨在线| 99久久精品欧美国产| 手机看av网站在线看| 翘臀vidoes| 欧美超碰人妻97| 国产60页| 五月天激情四射| 粉嫩AV一区夜夜嗨| 91激情| 蜜桃av综合网发布| 91美女在线视频| 热热色中文无码| www.大香| 大香伊人在线一区| 亚洲毛片基地专区| 制服乱伦| 亚洲午夜蜜臀| 国产日韩色综合| 东北夫妻性偷拍| 色老大| 近亲乱伦一区二区| 一区二区三区 丝袜高跟| 91女色| 无码乱人伦中文视频| 大香蕉色网| 国产精品美女视频诱惑| 久久人妻视频| 日本幼女18+| 首页中文字幕中文字幕免费| 亚洲天天影视综合网| 国产一区二区二区按摩精品啪视频| 天天干人妇| 大香蕉综合在线| 蜜臀AV秘一区翔田千里| 超碰在线974| 女人天堂av在线播放| 大香蕉手机视频| 大香蕉一人| 996热| 就去色综合| 97最新在线播放视频| 99re在线视频这里只有精品| 日韩 欧美 视频 在线 一区| 嫩草影院永久在线制服丝袜| 国产性爱在线视频一区二区| 亚洲国产中文字幕| 亚洲Av无码成人精品国产| 亚洲色图综合网| 金莲网址| 久久亚洲日韩国产欧| 国产亚州高清国产拍精| 人人澡人人澡人人| 成人午夜无码视频| 97天天| 麻豆黄色五月天| 男女啪啪啪18禁网站| 成人老鸭窝人人在线视频| 99久久久无码国产精品性啊聊| 99热97| 亚洲影院365| 色五月第四色| 欧亚性爱啪啪| 亚洲无码一区成人免费午夜 | 亚洲风情在线观看| 成 人 影视 一区 二区 三区 四区| 中文字幕在线观看网址| 欧美天天谢综合网| 国产免费操逼| 亚洲资源一区| 91网亚洲| 欧美性爱十八禁| 欧美 亚洲精品首页| 九九九九九九九九九九九免费国产| 大香蕉乱级| 中文字幕伊人| 亚洲天堂综合AV| 国产精品久久久久久久久久梁医生| 欧美大色交| 激情四射五月天| 日韩国产精品人妻无码久久久| 诱惑人妻欧美一区在线播放| 人人摸人人摸人人干| 一二三区视频在线观看| 丝袜喷水在线| 久久久久国产无av| 亚洲电影中字一区二区| 中文字幕色AV| 怡红院怡春院| 中文字幕jul-617人妻熟女| 亚洲另类春色| 人人爽夜夜玩视频| 嗯阿好爽好紧| 中文字幕一区日韩精| 亚洲人成在线放东京热| 九九九精品色乱九九九| 精品久久久无码| 国产精品自拍xxxx| 在线视频亚洲无码| 亚春色色| 老司机午夜福利视频一区二区| 婷婷中文字幕| 国产亚洲精品美女久久久久久2021| 久久久久久久久久久久色网| 欧美91在线+|+欧美| 亚洲丝袜二区| 中文自拍欧美影视| 日韩精品色呦呦| 天天伊人| 男人的天堂三级| 91五月天| 超碰色中文| 婷婷色婷婷| 久久久久国产精品片区无码直播| 欧美一级黄色免费专区| 水滴偷拍| 超碰色美女| 欧美亚洲日韩16色| 婷婷激情一区二区三区俺也去| 婷婷中文字幕| 操婷婷逼| 熟女突然公开看18禁影片| 日韩人妻有码免费视频| 日韩无码一级黄色av片| 少妇无码999| 东京男人天堂| 久久婷婷一区| 精品丰满熟妇人妻一区| 日韩丨制服丨中文|在线| 中国小夫妻勾搭露脸淫荡对白| 亚洲中文人妻色| 天综合网| 看黑人AV不卡| 九一综合精品视品av| 天天添天天干电影| 一区二区偷拍拍视频| 日本久久精品| 久/久精品99看9| 人人扣人人操| 99热这里只有精品8| 国产67194| 5月婷婷6月六月丁香| 人人摸人人叼| 欧美亚洲中文字幕| www色色com| 国产精品麻豆成人AV艾秋| 丁香六月啪啪| 天无日色综合| 精品久久99| 青春草A| 97精品国产精品免费观看| 欧美91网站| 国产麻豆一区二三区| 女人天堂网| 99热一区二区三区四区| 91天天综合网| 国产在线综合网| 日本黄色大片一级视频免费麻豆| 国产女人与拘做受视频免费| 日美免费黄片| 五月丁香婷婷综合网| 五月天婷婷成人网| 欧美老熟另类| 歐美性天天| 久久亚州大香蕉| 亚洲中文字幕熟女少妇一区二区| 男人的天堂 在线一区| 亚洲天堂五月天国产| 强奸乱伦亚洲第一页| 日韩精品在线观看网站| 亚洲日韩AV视色| 久久偷拍人| 蜜桃臀AV在线| 91老熟女视频| 台湾成人无码AV| 久热99| 亚洲免费97免费| 不卡六六在线91| 极品销魂美女一区二区 | 亚洲欧美91√| 91处女在线观看| 色黄色美女大长腿午夜视频| 91欧美| 97AV在线免费观看| 精品久久97| 亚洲精品国产熟女| 天天操夜夜操| daxiangjiao你懂的| 中文字幕后石码三区四区| 一区二区三区黄色片a| 天天干天天爽| 97在线资源| 91亚洲综合| 欧美性爱一级操| 亚洲一二三精品久久网| 亚春色色| 国产日韩欧美亚洲精品95 | 成人怡红院| 人妻日日干| 亚洲瓯美色图| JuliaAnn丝袜熟女系列| 影音先锋视频在线| 色噜噜人妻av 中文字幕| 男人的天堂无码| 十八禁视频一区二区| 色婷婷在线视频| 久久久精品一区二区| 亚洲无码精品AV久久久| 五月综合激情| 干美女人妻| 777AV电影| 国产农村妇女精品一| 99热伊人| 九九Av| 嗯~啊~轻一点 视频| 亚洲图片日本AⅤ欧美在线| 久久久久久久极品香蕉视频| 综合自拍| 91在线无码精品秘 软件| 中文字幕神马久久| 久久久久久亚洲Av无码精| 综合五月天| 亚州欧美在线| 美女自卫慰黄网站免费| 亚洲熟女乱色一区二区三区久久久| 丁香色狠狠色综合久久小说| 日韩熟妇二区| 久久久久久久9999| www.丁香五月| 老熟女阿 国产91| 日韩啪啪网| 日韩三级av片| 99色| 成人怡红院| 人妻天天夜夜爽一区二区| 超碰美女97| 天美国产三级传媒| 亚洲无线观看久久| 三级片大波波| 无码 黑人一区二区三区| 天堂国产AV| 五月婷婷六月丁香网址| 干B| 顶级丝袜熟女一区二区三区| 青青草无码视频| 国产乱人伦AVA麻豆软件.| 国产丸一视频| 亚洲国产日韩欧美熟妇在线| 超碰吊日色| 99色色| 亚洲天堂久久久久久粉红视频| 色婷婷丁香五月| 欧美人妻另类在线| av无码精品久久久久| 亚洲97| 精品少妇一区二区三区| 色综合av男人天堂| 九九成人精品| 亚洲91在线播放影院| 丝袜色综合| 1024日韩| 国产精品一区二区a| 亚洲自拍一区夜夜操| 91人妻素女| 亚洲综合色图欧美| 国产av青草| 金莲网址| 成人无码欧美一级A片狼牙直播| 亚码激情| 无码黑人精品一区二区三区三| 久久久久幕乱码| 国产乱码久久| 久久国产性爱| 欧美亚洲手机在线| 97 国产一区| 亚洲国产无码精品首页久久久| 99久久99久久免费精品蜜臀| 粉嫩少妇自慰在线| 久久久com| 97资源视频| 日产精品久久久一区二区| 国产有码一区| 欧美劲爆视频一区二区| 东京热一区二区中文字幕| 久久久久久久久久久久久久久久9| 黄色高清无码无码破解免费暗网| 久久久久久久久999| 亚洲色香| 91是天天| 国产欧美日韩在线不卡第一页| 精品无码欧美三级| 在线看污网站| 欧美97视频| 日本三级久| 少妇高潮对白在线观看| 伊人影院日本| 日比av无码| 校园春色宗合网| 欧美制服网站美腿丝袜| 亚洲欧美国产其他二区| 久久精品 六十路 熟女 欧美| 国产中午字一暮区| 国产综合久久久鬼色| 综合五月天| 俺去俺来也在线www| 性爱视频免费网址| 97综合国产| 久久噜噜噜精品国产亚洲综合| 好看的91视频| 麻豆 欧美 日韩| 久综合网| 99热只有这里有精品| 小日子操bb在线看| 午夜国产综合视频在线观看 | 极品综合| 五月亭亭六月丁香| 唯美清纯 妖精视频| 性九九九九九九| 久久国模av| 97超碰色屌| 亚洲s在线观看| 久久日韩毛| 婷婷五月天福利| 青青草在线成人视频| 久久精精区一区二区一蜜桃一区二区| 日韩影片中文字幕一区二区三区| 天美传媒在线一区| 极品美女嘿咻| 亚洲av综合伊人久久| 久久精品国产亚洲AV无码电影| 狠狠综合| 欧美成人综合| 欧美 亚洲| 乱伦a片视频| 亚洲综合五月天| 超碰 av 女人天堂| 久久久无码精品人妻二区| 日本国产欧美一区三区二区| 亚洲国产精品无码AV在线| 丰满人妻一区二区三区| 日韩av情韩国爱禁区av一区二区| 黄色十八禁| 激情文学小说一区二区| 大香蕉一人| 久久一区二区蜜桃| 国产400孕妇孕交群| 91网站18| 日韩黄片影院| 亚洲阿v天堂无码z2018| 日韩亚洲中文有码视频| 午夜偷拍久久熟女| 国产成人自拍视频在线| 日本三级韩三级99久久| 久久极品伊人| 91美乳| 校园春色宗合网| 99最新日韩偷拍视频| 成人无码欧美一级A片狼牙直播| 三四中文字幕| 欧美v日韩v亚洲v最新在线| 国产精品久久aV| 中文字幕奈奈美被公侵犯| 亚洲最新a在线观看| 大屁股xxxxx| 亚洲男人天堂Av| 日本精品人妻少妇一区二区| 国产25页| 麻豆色约约| av网站在线看| 亚洲97久久精品亚洲| 日韩成人综合网| 中文字幕 av v| 人妻少妇精品久久久| 日本三级精品| 国产成人拍国产亚洲精品| 亚洲国产精品成人无码久久久| 久久综合激情| 中文字幕精品人妻丝袜| 岛国不卡超碰护士AV在线播放| 国产综合久| 国产精品日韩在线一区| 国产在线精品偷| 不卡超碰护士AV在线免费播放| 无码久| 欧美色图亚洲色| 精品人妻av在线播放| 亚洲欧美在线观看免费| 校园春色综合色| 青青操网| 久久只有精品一区二区三区| 少妇一级无码精品| 国产suv精品一区二区四| 天天网综合| 校园春色 男人天堂| 91日韩国产欧美亚洲另类精盘州至城都| 日本肏逼视频在线观看| 婷婷九月丁香| 熟女突然公开看18禁影片| 国产AV天美传媒一区二区三区 | 日日摸天天爽夜夜欢| 1024香蕉视频| 欧美日日网| 色欲人妻一区二区在线| 五十路三区在线| 免费中文在线| 久久m| 国产高清午夜成人在线观看| 丁香五月天激情网站| 亚洲精品一卡二卡三卡福利视频网站 | 92久久| 国产精选三级在线观看| 亚洲自拍一区夜夜操| 91无遮挡| 色五月婷婷在线| 五十路熟女,国产欧美精品区一区二区三区| 人妻9117c| 国产精品天美传媒| 色综合91好| 超碰成人免费| 久久99久久99精品天美传媒棢·纸:. | 一区二区偷拍拍视频| 久久天堂网| 一区二区影院| 极品久久久久久久久久久久久久| 欧美亚洲| 欧美激情总合网| 另类欧美色| 五月丁香六月激情| 久久99干一本高清| 亚洲最大网站av| 狠狠操狠狠燥| 一本一道vs波多野结衣| 91nbbbbbb| 2019天天干天天操| 国产第二页| 国产亚洲精品美女久久久m| 精品9区| 国产家庭乱伦网址| 欧美九一精品久久久熟妇| 围产精品一区二区三区视频播放| 9999九九九久久久| 少妇熟女一区二区三区| 大香蕉中文aV在线| 欧美视频边做饭边橾| 有码免费观看| 人妻精品一区二区三区| 92福利社视频| 麻豆天美传媒毛片| 亚洲不卡不卡中文字幕不卡 | 国产在线76页| 欧美亚洲高清| 天堂国产AV| 无码天天操| 国产AV天美传媒一区二区三区 | 国内毛片婷婷六月色| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 校园春色 男人天堂| 美女诱惑一区| 日日AV加勒比| 日韩人妻中文视频| 91精品在线播放| 天天日少妇逼AV| 操国产逼| 精品一二三区女同| 日韩啪啪视频| www国产无码| 超碰在线97国产| 国模吧 一区二区三区| 欧美色图91| 综合久欧洲| 欧美性爱十八禁| 亚洲一区二区三区婷婷| 熟女人妻一区二区三区| 国产v片在线免费观看| 久热最新在线杭州| 天天在线91| 欧美人妻中出| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美综合站| 操逼日韩无码 | 日本中文字幕在线电影| 蜜臀99久久| 久久97超碰香蕉| 久久黄黄| 黄在线| 97免费视频在线观看| 色眯眯av| 99热色这里只有精品| 日本欧美一区二区三区免费| 一区二区视频在看| 国产青青美女玩逼视频| 激情综合五月婷婷| 国产一区二区三区视频在线看| 欧美伊人电影| 亚洲青色欧美| 欧美黑人猛交春色影视大全| 国产精品999zyz| 精品日韩| 亚洲做性| 日韩精品怡红院| 99热超碰| 国产精品久久久三级无码| 久久国产逼| 亚洲人妻爽爽爽| 五月开心久久AV官网| 91精品电影18| 天天色综合天天操| 尤物网址| 国产成人亚洲精品无| 久久超碰天天| 91路www| 91红杏| 欧美综合骚| 欧美精品99久久久| 国产午夜无码片在线观看影视| 激情小说日韩无码| 久久春色| 欧美丝袜中文字幕07在线| 欧美亚州色的图| 91久久18禁| 人妻密肉在线观看| 夜色五月天| 久久激情五月| 日韩不卡av一二三| 51一区二区三区| 免费αⅴ在线观看| 男女做爰猛烈动高潮A片免费应用| 不卡视频一区蜜桃视频| 超碰9 7女人| 啊啊啊久久久视频| 综合av影片| 高清肉丝中文无码| 热久久九九热| 97色欧州| 台湾大香蕉99热| 色诱avtt| 久久有码| 美美91成人国产精品欧美精品久久久久久久 | 亚洲天堂一二| 91精品在线播放| 亚洲欧美激情小说| 又黄又硬又粗又长国产视频| 1204人成网站色www| 国产天天噜一噜久久久| 九九久精品| www.av在线视频| 国产乱伦亚洲| 91精品久久久| www亚洲免费| A 在线网址| 脫衣舞一区二区三区| 99re国产精品视频| 中文字幕亚洲永久精品| 人妻一区视频| 成人性爱全视频观看| 人人做人人妻人人夜视频| 亚洲九月丁香| 五月天综合网| 美国美女AV在线| 成人网欧美风情| 亚洲情色一区二区三区|