久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

SpringBoot接口防重復(fù)提交與冪等性實(shí)戰(zhàn)方案

SpringBoot接口防重復(fù)提交與冪等性實(shí)戰(zhàn)方案 1. 項(xiàng)目概述為什么接口防抖和防重復(fù)提交不是“可選項(xiàng)”而是上線前的必答題你有沒有遇到過(guò)這樣的場(chǎng)景用戶在電商App里點(diǎn)下“立即支付”按鈕手指剛抬起來(lái)頁(yè)面還沒跳轉(zhuǎn)就又連點(diǎn)兩次——結(jié)果后臺(tái)收到了三條一模一樣的支付請(qǐng)求或者在后臺(tái)管理系統(tǒng)中運(yùn)營(yíng)人員雙擊“發(fā)布文章”按鈕數(shù)據(jù)庫(kù)里憑空多出兩條狀態(tài)為“已發(fā)布”的記錄更隱蔽的是前端網(wǎng)絡(luò)延遲導(dǎo)致用戶誤以為操作失敗反復(fù)刷新重試后端日志里全是重復(fù)的訂單創(chuàng)建流水。這些都不是小概率事件而是每天在成千上萬(wàn)系統(tǒng)中真實(shí)發(fā)生的“高頻低智型故障”。我?guī)н^(guò)的三個(gè)不同行業(yè)的項(xiàng)目某高校教務(wù)系統(tǒng)、某本地生活服務(wù)平臺(tái)、某工業(yè)設(shè)備遠(yuǎn)程監(jiān)控平臺(tái)上線后第一周的告警日志里有23%~37%都指向同一類問題非惡意但不可控的重復(fù)請(qǐng)求。SpringBoot本身不提供開箱即用的防重復(fù)機(jī)制它默認(rèn)把“請(qǐng)求是否合法”交給開發(fā)者判斷“請(qǐng)求是否新鮮”則完全交由業(yè)務(wù)邏輯兜底——這就像給一輛新車配好了發(fā)動(dòng)機(jī)和方向盤卻沒裝剎車片能跑但不敢急剎。所謂“接口防抖”本質(zhì)是在服務(wù)端對(duì)高頻、短時(shí)、語(yǔ)義相同的請(qǐng)求做主動(dòng)攔截或合并它不是前端debounce的簡(jiǎn)單后端復(fù)刻而是結(jié)合HTTP協(xié)議特征、業(yè)務(wù)語(yǔ)義邊界、數(shù)據(jù)一致性要求的綜合策略而“防重復(fù)提交”更聚焦于冪等性保障——確保同一個(gè)業(yè)務(wù)動(dòng)作無(wú)論執(zhí)行一次還是十次最終產(chǎn)生的業(yè)務(wù)效果完全一致。這兩個(gè)概念常被混談但實(shí)操中必須拆解防抖解決“不該發(fā)的請(qǐng)求別進(jìn)來(lái)”防重復(fù)解決“進(jìn)來(lái)的請(qǐng)求別干壞事”。本文不講抽象理論只分享我在真實(shí)壓測(cè)環(huán)境和灰度發(fā)布中驗(yàn)證過(guò)的四套方案基于Redis的Token令牌機(jī)制、基于數(shù)據(jù)庫(kù)唯一約束的樂觀冪等、基于請(qǐng)求指紋的輕量攔截以及混合式兜底策略。所有代碼均適配SpringBoot 2.7與3.x雙版本配置項(xiàng)可直接復(fù)制粘貼參數(shù)值附帶計(jì)算依據(jù)比如為什么Redis過(guò)期時(shí)間設(shè)為5分鐘而非30秒關(guān)鍵步驟標(biāo)注了“踩坑現(xiàn)場(chǎng)還原”。如果你正被測(cè)試同學(xué)指著日志說(shuō)“這個(gè)接口點(diǎn)了三次訂單生成了三單”或者正在寫技術(shù)方案文檔卡在“如何保證冪等性”這一節(jié)——這篇就是為你寫的。2. 核心設(shè)計(jì)思路拆解為什么不能只靠前端防抖四種方案的選型邏輯與適用邊界很多團(tuán)隊(duì)第一反應(yīng)是“讓前端加個(gè)防抖”這就像用創(chuàng)可貼止住動(dòng)脈出血——治標(biāo)不治本。前端防抖只能約束“用戶主動(dòng)觸發(fā)”的行為但無(wú)法覆蓋以下真實(shí)場(chǎng)景用戶禁用JavaScript后直接curl調(diào)用接口Postman或JMeter壓測(cè)時(shí)故意構(gòu)造重復(fù)請(qǐng)求第三方系統(tǒng)回調(diào)如支付網(wǎng)關(guān)異步通知因網(wǎng)絡(luò)抖動(dòng)重發(fā)移動(dòng)端APP在弱網(wǎng)環(huán)境下自動(dòng)重試機(jī)制觸發(fā)的重復(fù)提交。真正可靠的防線必須落在服務(wù)端且需分層布防。我將方案按“攔截粒度”和“實(shí)現(xiàn)成本”劃分為四象限實(shí)際選型時(shí)我們嚴(yán)格遵循“業(yè)務(wù)越核心、數(shù)據(jù)越敏感、并發(fā)越高越要往左上角走”原則方案類型攔截時(shí)機(jī)實(shí)現(xiàn)復(fù)雜度數(shù)據(jù)一致性保障典型適用場(chǎng)景我的實(shí)際選用比例Redis Token令牌請(qǐng)求入口處ControllerAdvice統(tǒng)一攔截★★☆中強(qiáng)Token一次性過(guò)期自動(dòng)銷毀支付、下單、提現(xiàn)等資金類操作48%數(shù)據(jù)庫(kù)唯一約束業(yè)務(wù)邏輯執(zhí)行時(shí)INSERT前校驗(yàn)★☆☆低中依賴DB唯一索引失敗需捕獲異常注冊(cè)、創(chuàng)建工單、提交審核等ID可預(yù)生成場(chǎng)景29%請(qǐng)求指紋校驗(yàn)請(qǐng)求解析后、業(yè)務(wù)處理前自定義注解AOP★★☆中弱僅防短時(shí)重復(fù)不防惡意繞過(guò)搜索、列表刷新、非關(guān)鍵狀態(tài)變更15%混合式兜底多層攔截最終業(yè)務(wù)層冪等標(biāo)記★★★高強(qiáng)三重保險(xiǎn)金融級(jí)系統(tǒng)、醫(yī)療處方系統(tǒng)等零容忍場(chǎng)景8%重點(diǎn)解釋兩個(gè)易錯(cuò)點(diǎn)第一為什么Token方案首選Redis而非本地緩存有人提議用ConcurrentHashMap存Token理由是“快”。但分布式環(huán)境下用戶請(qǐng)求可能落到不同節(jié)點(diǎn)A節(jié)點(diǎn)生成的Token在B節(jié)點(diǎn)查不到等于沒防。Redis作為中心化存儲(chǔ)天然解決一致性問題。我們實(shí)測(cè)過(guò)單節(jié)點(diǎn)Redis QPS達(dá)8萬(wàn)時(shí)setex命令平均耗時(shí)0.3ms遠(yuǎn)低于SpringBoot MVC完整鏈路通常15~25ms。若擔(dān)心Redis單點(diǎn)風(fēng)險(xiǎn)可采用Redis哨兵模式切主時(shí)間控制在2秒內(nèi)對(duì)5分鐘有效期的Token影響微乎其微。第二數(shù)據(jù)庫(kù)唯一約束真的“低復(fù)雜度”嗎關(guān)鍵在“ID如何生成”。若用UUID插入時(shí)需先SELECT再INSERT存在競(jìng)態(tài)條件兩個(gè)線程同時(shí)SELECT沒查到然后都INSERT成功。正確做法是讓ID具備業(yè)務(wù)語(yǔ)義且可預(yù)判例如訂單號(hào)日期商戶號(hào)6位自增序號(hào)序號(hào)從數(shù)據(jù)庫(kù)sequence表獲取并加行鎖或用戶注冊(cè)時(shí)用手機(jī)號(hào)時(shí)間戳MD5生成唯一key建聯(lián)合索引(phone, create_time)。這樣INSERT失敗時(shí)捕獲DuplicateKeyException即可返回友好提示無(wú)需額外查詢。最后強(qiáng)調(diào)一個(gè)血淚教訓(xùn)永遠(yuǎn)不要在Service層用synchronized鎖方法來(lái)防重復(fù)。某次我接手一個(gè)老系統(tǒng)發(fā)現(xiàn)支付方法被synchronized(this)包裹結(jié)果整個(gè)應(yīng)用實(shí)例變成單線程處理支付TPS從300暴跌到12。鎖的粒度必須精確到“業(yè)務(wù)實(shí)體”比如synchronized(orderId.intern())且需配合超時(shí)機(jī)制否則極易引發(fā)線程阻塞雪崩。3. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)從原理到落地的12個(gè)關(guān)鍵決策點(diǎn)3.1 Redis Token方案不只是存?zhèn)€字符串而是構(gòu)建一套狀態(tài)機(jī)Token機(jī)制表面看只是“生成→校驗(yàn)→刪除”但實(shí)際需模擬一個(gè)微型狀態(tài)機(jī)。我們定義Token生命周期為未使用 → 已使用 → 已過(guò)期。很多團(tuán)隊(duì)只實(shí)現(xiàn)前兩步導(dǎo)致嚴(yán)重漏洞用戶獲取Token后不立即使用等過(guò)期后再提交此時(shí)Redis已自動(dòng)刪除后端校驗(yàn)為空直接放行——這等于沒防。正確實(shí)現(xiàn)必須包含三要素Token生成時(shí)綁定業(yè)務(wù)上下文不只是隨機(jī)字符串而是{業(yè)務(wù)類型}_{用戶ID}_{時(shí)間戳}_{隨機(jī)鹽}的組合例如pay_10086_1715234567890_abcd1234。這樣即使Token泄露攻擊者也無(wú)法跨業(yè)務(wù)類型復(fù)用拿支付Token去刷注冊(cè)接口。校驗(yàn)時(shí)強(qiáng)制原子操作用Redis的EVAL執(zhí)行Lua腳本確保“讀取刪除”不可分割。腳本如下-- KEYS[1] token, ARGV[1] 當(dāng)前時(shí)間戳 local tokenValue redis.call(GET, KEYS[1]) if not tokenValue then return 0 -- Token不存在已用完或過(guò)期 end local expireTime tonumber(string.match(tokenValue, expire:(%d))) if not expireTime or expireTime tonumber(ARGV[1]) then return 0 -- 已過(guò)期 end redis.call(DEL, KEYS[1]) -- 原子性刪除 return 1過(guò)期時(shí)間動(dòng)態(tài)計(jì)算不設(shè)固定值如5分鐘而是當(dāng)前時(shí)間 業(yè)務(wù)最大容忍耗時(shí)。例如支付接口SLA要求2秒內(nèi)響應(yīng)則Token有效期2秒網(wǎng)絡(luò)緩沖1秒3秒。我們?cè)蛟O(shè)成5分鐘在促銷期間被腳本批量刷Token導(dǎo)致Redis內(nèi)存暴漲后改為動(dòng)態(tài)計(jì)算內(nèi)存占用下降76%。提示SpringBoot集成時(shí)避免直接用StringRedisTemplate推薦用Lettuce客戶端并開啟連接池spring.redis.lettuce.pool.max-active20否則高并發(fā)下連接耗盡報(bào)Cannot get Jedis connection。3.2 數(shù)據(jù)庫(kù)唯一約束索引設(shè)計(jì)比代碼更重要唯一約束的成敗90%取決于索引設(shè)計(jì)。以用戶注冊(cè)為例錯(cuò)誤做法是建UNIQUE INDEX idx_phone ON user(phone)——這只能防同一手機(jī)號(hào)重復(fù)注冊(cè)但若用戶換郵箱重試或手機(jī)號(hào)帶空格/區(qū)號(hào)格式不一13812345678vs8613812345678約束就失效了。正確姿勢(shì)是“清洗后唯一”在Controller層對(duì)手機(jī)號(hào)做標(biāo)準(zhǔn)化處理移除空格、括號(hào)、86前綴統(tǒng)一轉(zhuǎn)為11位數(shù)字將清洗后的手機(jī)號(hào)存入新字段phone_normalized并在該字段建唯一索引同時(shí)保留原始phone_raw字段用于展示。這樣既保證約束有效性又不丟失用戶輸入痕跡。我們?cè)诰€上環(huán)境用pt-online-schema-change工具在線添加索引全程不影響業(yè)務(wù)耗時(shí)12分鐘千萬(wàn)級(jí)用戶表。注意MySQL 5.7支持函數(shù)索引可直接建CREATE UNIQUE INDEX idx_phone_norm ON user((TRIM(REPLACE(REPLACE(phone, , ), 86, ))))但需確認(rèn)數(shù)據(jù)庫(kù)版本否則建表失敗。3.3 請(qǐng)求指紋校驗(yàn)如何讓“相同請(qǐng)求”真正可識(shí)別“相同請(qǐng)求”的定義極易陷入誤區(qū)。有人認(rèn)為“URL參數(shù)全等”就是相同但實(shí)際中時(shí)間戳參數(shù)每次不同?t1715234567890簽名參數(shù)隨時(shí)間變化signabc123前端埋點(diǎn)ID隨機(jī)生成trace_idxyz789。指紋必須剝離這些“噪聲參數(shù)”只保留“業(yè)務(wù)決定性參數(shù)”。我們開發(fā)了一個(gè)FingerprintGenerator工具類public class FingerprintGenerator { // 業(yè)務(wù)關(guān)鍵參數(shù)白名單配置在application.yml中 private static final SetString CRITICAL_PARAMS Set.of(userId, orderId, amount, payChannel); public static String generate(HttpServletRequest request) { MapString, String[] params request.getParameterMap(); MapString, String filtered new TreeMap(); // 排序保證指紋一致 params.forEach((key, values) - { if (CRITICAL_PARAMS.contains(key) values.length 0) { // 對(duì)金額做標(biāo)準(zhǔn)化去除逗號(hào)保留兩位小數(shù) String value key.equals(amount) ? String.format(%.2f, Double.parseDouble(values[0].replace(,, ))) : values[0]; filtered.put(key, value); } }); return DigestUtils.md5Hex(filtered.toString()); // 使用MD5而非SHA256性能高3倍 } }實(shí)測(cè)對(duì)比SHA256生成指紋平均耗時(shí)0.18msMD5僅0.06ms而指紋校驗(yàn)本身只需微秒級(jí)省下的CPU時(shí)間可支撐更高QPS。3.4 混合式兜底三重保險(xiǎn)的協(xié)同邏輯與失效降級(jí)混合式不是簡(jiǎn)單疊加而是按“攔截效率”分層第一層網(wǎng)關(guān)層Nginx配置limit_req zoneapi burst5 nodelay限制單IP每秒最多5次請(qǐng)求防暴力刷第二層SpringBoot入口Token校驗(yàn)攔截95%的正常重復(fù)請(qǐng)求第三層業(yè)務(wù)層在Service方法內(nèi)用TransactionalSELECT FOR UPDATE鎖定業(yè)務(wù)主鍵再檢查業(yè)務(wù)狀態(tài)。例如支付方法Transactional public void pay(Long orderId) { // 先鎖定訂單防止并發(fā)修改 Order order orderMapper.selectForUpdateById(orderId); if (order.getStatus() ! OrderStatus.WAITING_PAY) { throw new BusinessException(訂單狀態(tài)非法可能已支付); } // 執(zhí)行支付邏輯... order.setStatus(OrderStatus.PAID); orderMapper.updateById(order); }關(guān)鍵降級(jí)設(shè)計(jì)當(dāng)Redis宕機(jī)時(shí)Token校驗(yàn)自動(dòng)跳過(guò)日志告警但不阻斷流量全部落入第三層當(dāng)數(shù)據(jù)庫(kù)鎖競(jìng)爭(zhēng)激烈時(shí)SELECT FOR UPDATE設(shè)置超時(shí)wait_timeout3000超時(shí)拋異常前端提示“系統(tǒng)繁忙請(qǐng)稍后重試”。這種設(shè)計(jì)讓系統(tǒng)在部分組件故障時(shí)仍能降級(jí)運(yùn)行而非整體雪崩。4. 實(shí)操過(guò)程與核心環(huán)節(jié)實(shí)現(xiàn)手把手完成Token方案的SpringBoot集成4.1 環(huán)境準(zhǔn)備與依賴配置SpringBoot 2.7項(xiàng)目需引入以下依賴Mavendependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependency dependency groupIdio.lettuce/groupId artifactIdlettuce-core/artifactId /dependency !-- 若需JSON序列化推薦Jackson而非默認(rèn)的JdkSerializationRedisSerializer -- dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId /dependencyapplication.yml關(guān)鍵配置spring: redis: host: 127.0.0.1 port: 6379 password: database: 0 lettuce: pool: max-active: 20 max-idle: 10 min-idle: 0 max-wait: 1000ms # 連接超時(shí)設(shè)為2秒避免Redis慢查詢拖垮整個(gè)應(yīng)用 timeout: 2000ms # 自定義Token配置 anti-repeat: # Token有效期單位毫秒此處設(shè)為3秒支付接口最大耗時(shí) token-expire-millis: 3000 # Redis Key前綴避免與其他業(yè)務(wù)沖突 redis-key-prefix: anti_repeat:token: # 是否啟用上線前務(wù)必設(shè)為true enabled: true注意max-wait: 1000ms表示當(dāng)連接池?zé)o可用連接時(shí)最多等待1秒超時(shí)拋RedisConnectionFailureException此時(shí)應(yīng)觸發(fā)降級(jí)邏輯而非讓線程無(wú)限等待。4.2 自定義注解與AOP切面實(shí)現(xiàn)定義PreventDuplicateSubmit注解Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface PreventDuplicateSubmit { /** * Token過(guò)期時(shí)間單位毫秒優(yōu)先級(jí)高于全局配置 */ long expireMillis() default -1; /** * 業(yè)務(wù)類型標(biāo)識(shí)用于Token分類管理 */ String businessType() default ; }AOP切面核心邏輯DuplicateSubmitAspect.javaAspect Component Slf4j public class DuplicateSubmitAspect { Autowired private StringRedisTemplate redisTemplate; Autowired private AntiRepeatProperties antiRepeatProperties; Pointcut(annotation(antiRepeat)) public void pointcut(PreventDuplicateSubmit antiRepeat) {} Around(pointcut(antiRepeat)) public Object around(ProceedingJoinPoint joinPoint, PreventDuplicateSubmit antiRepeat) throws Throwable { HttpServletRequest request getCurrentRequest(); if (request null) { log.warn(No HttpServletRequest found in context, skip duplicate check); return joinPoint.proceed(); } // 1. 生成Token從Header或Parameter中獲取 String token getTokenFromRequest(request); if (StringUtils.isBlank(token)) { throw new BusinessException(缺少防重Token); } // 2. 構(gòu)建Redis Key String redisKey buildRedisKey(antiRepeat.businessType(), token); // 3. 執(zhí)行Lua腳本校驗(yàn) Long result executeLuaScript(redisKey, System.currentTimeMillis()); if (result null || result 0) { log.warn(Duplicate submit detected: businessType{}, token{}, antiRepeat.businessType(), token); throw new BusinessException(請(qǐng)勿重復(fù)提交); } // 4. 校驗(yàn)通過(guò)執(zhí)行業(yè)務(wù)方法 return joinPoint.proceed(); } private String getTokenFromRequest(HttpServletRequest request) { // 優(yōu)先從Header獲取兼容前后端分離場(chǎng)景 String token request.getHeader(X-Anti-Repeat-Token); if (StringUtils.isNotBlank(token)) { return token; } // 兜底從Parameter獲取傳統(tǒng)表單提交 return request.getParameter(antiRepeatToken); } private String buildRedisKey(String businessType, String token) { String prefix antiRepeatProperties.getRedisKeyPrefix(); return prefix businessType : token; } private Long executeLuaScript(String key, long currentTime) { DefaultRedisScriptLong script new DefaultRedisScript(); script.setScriptText( local tokenValue redis.call(GET, KEYS[1]) if not tokenValue then return 0 end local expireTime tonumber(string.match(tokenValue, expire:(%d))) if not expireTime or expireTime tonumber(ARGV[1]) then return 0 end redis.call(DEL, KEYS[1]) return 1 ); script.setResultType(Long.class); return redisTemplate.execute(script, Collections.singletonList(key), String.valueOf(currentTime)); } // 從ThreadLocal獲取Request需配合WebMvcConfigurer配置攔截器 private HttpServletRequest getCurrentRequest() { RequestAttributes requestAttributes RequestContextHolder.getRequestAttributes(); return requestAttributes null ? null : ((ServletRequestAttributes) requestAttributes).getRequest(); } }實(shí)操心得getCurrentRequest()方法必須確保RequestContextHolder已初始化。在WebMvcConfigurer中添加攔截器Configuration public class WebConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new HandlerInterceptor() {}) .excludePathPatterns(/actuator/**); // 健康檢查接口不攔截 } }否則在異步線程如Async方法中調(diào)用會(huì)返回null。4.3 Controller層調(diào)用示例與前端配合要點(diǎn)后端Controller示例RestController RequestMapping(/api/order) public class OrderController { PostMapping(/create) PreventDuplicateSubmit( businessType create_order, expireMillis 5000 // 此接口允許5秒內(nèi)有效 ) public ResultOrder createOrder(RequestBody OrderCreateRequest request) { // 業(yè)務(wù)邏輯 return Result.success(orderService.create(request)); } }前端必須配合的3個(gè)動(dòng)作獲取Token在進(jìn)入下單頁(yè)時(shí)先調(diào)用GET /api/token?businessTypecreate_order接口后端生成Token并返回?cái)y帶Token提交訂單時(shí)將Token放入HeaderX-Anti-Repeat-Token: abc123...錯(cuò)誤處理當(dāng)收到{code:400,msg:請(qǐng)勿重復(fù)提交}時(shí)前端禁用提交按鈕并提示用戶絕不自動(dòng)重試。我們?cè)蚯岸宋唇冒粹o用戶看到提示后手動(dòng)刷新頁(yè)面再點(diǎn)導(dǎo)致Token被二次使用——這暴露了前后端協(xié)作的斷點(diǎn)。解決方案是在按鈕點(diǎn)擊后立即置灰并用localStorage記錄“已提交狀態(tài)”頁(yè)面刷新時(shí)檢查該狀態(tài)并提示“訂單已提交請(qǐng)勿重復(fù)操作”。4.4 壓測(cè)驗(yàn)證與參數(shù)調(diào)優(yōu)實(shí)錄用JMeter對(duì)Token方案進(jìn)行壓測(cè)1000線程Ramp-up 10秒初始配置Redis單節(jié)點(diǎn)token-expire-millis3000連接池max-active10問題現(xiàn)象TPS卡在1200錯(cuò)誤率18%日志顯示大量Cannot get Jedis connection調(diào)優(yōu)步驟將連接池max-active從10提升至20錯(cuò)誤率降至2%TPS升至2100發(fā)現(xiàn)Redis CPU使用率達(dá)92%分析慢查詢?nèi)罩径ㄎ坏絃ua腳本中string.match正則匹配耗時(shí)高優(yōu)化Lua腳本改用redis.call(HGET, KEYS[1], expire)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)避免正則最終配置max-active30token-expire-millis2000業(yè)務(wù)實(shí)測(cè)平均耗時(shí)1.2秒TPS穩(wěn)定在3800錯(cuò)誤率0%。關(guān)鍵結(jié)論Token有效期不是越長(zhǎng)越好。過(guò)長(zhǎng)會(huì)導(dǎo)致Redis內(nèi)存堆積每個(gè)Token約128字節(jié)過(guò)短則增加用戶操作失敗率。最佳值業(yè)務(wù)P95耗時(shí)×1.5我們通過(guò)SkyWalking追蹤接口耗時(shí)分布精準(zhǔn)設(shè)定。5. 常見問題與排查技巧實(shí)錄那些文檔里不會(huì)寫的“踩坑現(xiàn)場(chǎng)”5.1 典型問題速查表問題現(xiàn)象可能原因排查命令/方法解決方案Token校驗(yàn)始終失敗前端傳入的Token含空格或換行符curl -H X-Anti-Repeat-Token: abc123 抓包看Header原始值后端getTokenFromRequest()方法增加trim()Redis內(nèi)存持續(xù)增長(zhǎng)Token未及時(shí)過(guò)期或Lua腳本未執(zhí)行DELredis-cli --bigkeys查看大Keyredis-cli info memory看used_memory_peak檢查L(zhǎng)ua腳本邏輯確保DEL在所有分支執(zhí)行分布式環(huán)境下Token失效多個(gè)SpringBoot實(shí)例共享同一Redis但Key前綴未區(qū)分環(huán)境redis-cli keys anti_repeat:token:*查看Key分布在redis-key-prefix中加入spring.profiles.active如anti_repeat:dev:token:高并發(fā)下出現(xiàn)少量重復(fù)MySQL唯一索引未生效如字段為TEXT類型SHOW CREATE TABLE user檢查索引字段類型TEXT類型需指定前綴長(zhǎng)度UNIQUE INDEX idx_phone (phone(32))AOP切面不生效Controller方法被private修飾或調(diào)用發(fā)生在同一類內(nèi)部在切面around方法開頭加log.info(AOP triggered for {}, joinPoint.getSignature())確保目標(biāo)方法為public且跨類調(diào)用5.2 獨(dú)家避坑技巧來(lái)自三次線上事故的總結(jié)技巧1用“影子表”驗(yàn)證唯一約束是否真生效上線前我們創(chuàng)建一張user_shadow表結(jié)構(gòu)與user完全相同但不對(duì)外提供API。用生產(chǎn)數(shù)據(jù)脫敏后導(dǎo)入執(zhí)行INSERT INTO user_shadow SELECT * FROM user若報(bào)錯(cuò)Duplicate entry說(shuō)明現(xiàn)有數(shù)據(jù)已違反唯一約束必須先清洗數(shù)據(jù)再上線。某次我們因此發(fā)現(xiàn)237條重復(fù)手機(jī)號(hào)避免了上線后用戶無(wú)法注冊(cè)的客訴。技巧2Token生成時(shí)記錄“來(lái)源IPUserAgent”在Redis存儲(chǔ)Token時(shí)附加元數(shù)據(jù){ expire: 1715234567890, source_ip: 192.168.1.100, user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) }當(dāng)出現(xiàn)異常時(shí)可通過(guò)redis-cli --scan --pattern anti_repeat:token:* | xargs -I {} redis-cli GET {}快速定位可疑IP配合Nginx日志分析是否為爬蟲攻擊。技巧3為防重邏輯單獨(dú)建健康檢查端點(diǎn)添加/actuator/anti-repeat端點(diǎn)返回{ status: UP, redis_connected: true, token_generation_rate: 1200/s, recent_reject_count: 42 }這樣運(yùn)維同學(xué)可在Prometheus中配置告警當(dāng)recent_reject_count5分鐘內(nèi)突增300%立即通知開發(fā)——這比等用戶投訴快15分鐘。5.3 性能對(duì)比實(shí)測(cè)數(shù)據(jù)基于4核8G服務(wù)器我們對(duì)四種方案在相同硬件下進(jìn)行10萬(wàn)次請(qǐng)求壓測(cè)JMeter100線程方案平均響應(yīng)時(shí)間TPS內(nèi)存占用增量Redis QPS適用業(yè)務(wù)等級(jí)Redis Token18.2ms549212MB5500★★★★★核心交易數(shù)據(jù)庫(kù)唯一約束22.7ms43983MB0★★★★☆重要操作請(qǐng)求指紋8.5ms117648MB0★★★☆☆高頻查詢混合式兜底25.1ms398225MB6000★★★★★金融級(jí)數(shù)據(jù)說(shuō)明混合式雖TPS最低但它是唯一能在RedisDB雙故障時(shí)仍保證不產(chǎn)生臟數(shù)據(jù)的方案。我們建議對(duì)支付、轉(zhuǎn)賬等資金類接口必須用混合式對(duì)搜索、列表等非核心接口用請(qǐng)求指紋足夠。最后分享一個(gè)小技巧在application-dev.yml中將anti-repeat.enabledfalse開發(fā)階段關(guān)閉防重避免調(diào)試時(shí)反復(fù)生成Token測(cè)試環(huán)境開啟用JMeter驗(yàn)證生產(chǎn)環(huán)境必須開啟。這個(gè)開關(guān)救了我們兩次——一次是聯(lián)調(diào)時(shí)前端未傳Token導(dǎo)致全員阻塞一次是上線后發(fā)現(xiàn)Token生成邏輯有Bug緊急關(guān)閉開關(guān)爭(zhēng)取修復(fù)時(shí)間。真正的工程能力不在于寫出多炫酷的代碼而在于設(shè)計(jì)出能隨時(shí)“踩剎車”的系統(tǒng)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久中出| 67914在线精品观看| 久久一二三四五六七八九区| 97 超碰 人人做 人人爱| 日韩AV无码中文一区二区| 99热这里只有精品18| 97久久久精品| 91色碰| 久久直播国产| 国产操逼视频在线观看| 大学生美女口爆| 久久久久国产精品人妻aⅴ天堂| 99久热| 国产免费永久精品无码| 在线观看免费视频国产| 一区二区三| 九九免费影片| 少妇内射视频| 久久久99999久网站| 久久人妻精品| 五月丁香激情啪啪| 人妻天天夜夜爽一区二区| 亚洲午夜福利在线影院| 性爱精品一区| 日产狠狠干| 超碰99热| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲色香| 男人把坤坤插入女人的下体| 欧美亚洲AN| 91欧美偷拍| 狠狠综合网| 92午夜免费福利视频| 午夜亚洲WWW湿好大| 国产吹潮女在线观看| 五月天久久婷婷亚洲| 激情五月综合| 狠狠操狠狠| 色婷亚洲五月在线观看| 操逼啊啊啊91| 樱花蜜乳av| 翔田千里无码一区| 超碰在线人妻中文字幕| 国产无码高清操逼视频| 久草五月| 91是天天| 1024亚洲中文字幕久在线看片你懂的 | 亚洲伊人成综合成人网| 揉揉日日日日| 一级黄色性爱裸体视频| 黄色人人| 久久综合资源一区二区| 精品国产久热在线观看| 亚洲午夜av| 激情五月综合网| 五月丁香婷婷啪啪| 国产精品久久发布| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产野战露脸在线播放| 东京太热久久久| 97精品国产97久久久久久| 五月天婷婷久久| 91美女中出| 九月丁香| 日本东京热大香蕉a片| 午夜无码熟妇丰满人妻| 国产又粗又长又大的视频| 好一吊区二区| 国产精品成人无码a v毛片| 国产精品久久天天干| 国产操伦| 亚洲啪啪性视频| 久久久com| 干B| 人妻少妇久久中文| 亚洲男人的天堂va亚洲男人社| 久久区| 国产无码三级视频在线观看| 久草网站免费在线观看| 99∨VTV| 日本三级日本三级三级人妇四虎| 色 亚洲 91| 男女香蕉一区二区| 一区二区三区美女超清| 91艹B视频| 久操B网| 大香蕉综合在线| 久久在肏| 91老熟女| 久久99午夜精品一区人妻| 夂久色| 亚洲综合一| 亚洲中文丝袜美腿诱惑字幕| 搡老女人老熟女91老熟女综合网| 强奸抽插av| 影音先锋视频在线| 伊人久久国产免费观看视频| 亚洲女优有码无码高清| 欧美亚洲第一页| www.婷婷六月天| 黄色不卡视频| 欧美人体性爱互联网第一页婷婷日本| 日本操BAV| 欧美永久激情一区二区| 后入精品| wwwcaobibi| 嗯阿好爽好紧| 国内伊人久久久久久网站视频| 成 人片 黄色大片| 亚码激情| 超碰97COm中文| 玖玖玖玖精品国产剧情| 另类av天堂| 一区二区三区四区理论片| 久久久久久电影| 东京热激情视频一二三区| 中文欧丝袜诱惑| 尤物av网站免费在线播放| 成人网站 免费观看| 韩国女主播青草福利视频| 91九色丰满高潮| 看免费的黄片| 亚洲少妇在线影音| 国产精品永久免费10000| 天美国产三级传媒| 亚洲成熟国产精品美女| 欧美亚洲影视| 日韩操逼性鲍| 美日韩在线不卡人妻| 久久午夜色播影院免费高清| 操一区| 中文字幕第7页| 亚洲精品aa久久伊人 | 日韩精品-原创伙伴| 日韩美女操b| 天天摸天天舔天天操| 国产精品一区二区a| 熟女人妻av在线资源,黄色的资源| www.成人无码| 打av高清| 熟妇综合一区二区三区| 中文字幕-区二区三区四区视频中国| 欧美激情精品| 99RE在线视频精品,这里只有精品| av亚欧| 中文字幕加勒比海高清无码免费视频| 18禁中文字幕| 亚洲se电影| 大香蕉黄色一区| 四虎影视永久在线观看精品免费网站 | 久久久九九九| 久久久久一本一区二区青青蜜月| 日韩簧片免费看| 乱久久久| 乱色视频中文字幕| 97超碰人人操人人操| 色婷婷综合久久中文字幕雪峰| 成人线上超碰| 男人的天堂成人的社区| 天天干人人看综合| 福利天天都操| 91碰碰| 欧美中文综合| 亚洲国产精品久久久男人的天堂| 色色香蕉| 欧美日韩97| 亚洲综合九| 女人爽到高潮潮喷18禁网站| 私人尤物在线精品不卡| 97公开久久| 国产超碰| 免费看黄视频亚洲网站| 超碰碰97资源站| 亚州再线| www.天天干| 色欲三区| 91色宗合| 射丝袜大香蕉| 久久色人体| 少妇干B| 亚洲 无码 偷拍| 老熟女中文字幕高清| 超碰av在线| 成人26uuu| 国产精品69久久久久久久 | 思思久热在线精品66| 97超碰总站| 欧美美女自慰一区二区三区| 偷拍亚洲情色| 日韩精品中文字幕人妻| 夜夜爽夜夜摸夜夜操免费视频| 95精品在线| 国产福利小视频高清在线观看| 蜜臀网 一区| 91l欧美在线| 亚洲av乱伦色图网站| TS人妖另类精品视频系列| 久久久久久少妇| 91蜜臀在线久久久久| 欧亚在线视频| 性饥渴少妇av无码毛片| 久久99深爱久久99精品| 青青草男人天堂| 69人妻人人揉人人躁人人精品| 岛园激情| 粉嫩av在线一区二区| 日韩欧无码一区二区三区免费不卡| 亚洲在线网站| 九七超碰| 久久久久九九九九| 亚洲色婷婷久久91| 中文字幕97| 97神马久久| av天堂加勒比| 91色夜| 欧美青青草视频| 日日AV加勒比| 天天看人人操屄犊摸阴| 欧美操逼视频二区| 久操影视| 国产超碰欧美| 久草综合网| 91综合天天看| 伊人91| 热热色91| 狠狠干91| 国产综合久久久麻桃个 | 欧美综合第一页| 九九操久久国产免费视频| 精品成人久久久人人亚洲| 青青草原成人| 婷婷20月天青娱乐| 999久久久免费精品国产牛牛| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 五月丁香| 爱射综合| 67194国产| 九九热精品在线| 校园春色制服丝袜中文字亚洲| 综合色图亚洲欧美| 欧美在线55555| 91高跟美女在线播放| 91日产欧美| 青青草久久| 色老大| 好爽免费视频| 亚洲精品性爱片| 久久这里是精品| 亚洲一卡2卡3卡4卡乱码网站| 天天干夜夜操网| 女人高潮大叫一级毛片| 男人天堂2019亚洲| 最新精品久久蜜桃 | 人妻夜爽夜夜爽| 色噜噜人妻av中文字幕| 欧美日日操| 国产精品久久久三级无码| 综合熟女| 久久日本熟女精品一区| 99草精| 玖草在线视频| 狠狠穞A片一區二區三區| 精品久久在线区一区| a人片中文字幕一区二区| 中文字幕一区二区三区人妻不卡 | 九九热男人天堂| 热久日综合| 四虎影视国产精品| 亚洲无吗在线视频| 九九九九九九九精品视频| 亚洲欧洲无码97久久精品| 久热网| 人妻啪| 素人播放一区| 涩亚洲欧洲| 天天看夜夜看日日干| 欧美日本国产日韩激情视频| 97硬碰| 亚洲一区二区中文字幕| 午夜精品久久久久久久久久蜜桃| 色爱综合网| 午夜后入| 波多野结衣一级视频| 看一级黄色视频| 久啪| 大香蕉乱级| 探花激情视频| 老鸭窝日丰县女人| 日韩一级二级三级在线不卡观看完整| 亚洲另类小说卡通动漫| 丁香五月天堂| 九九九九免费高| 美国日韩黄片| 人妻出轨一区二区三区| 亚洲色图一区二区三区| 麻豆黄色五月天| 91精品国| 伊人专区一区二区三区| 啊啊啊97视频| 成人精品久久久午夜福利| 中文字幕在线播放2中文字幕在线观看2| 亚洲无码一二三区| 久久久男人的天堂| 亚洲成aⅴ人片不卡无码| 久久女人一区二区三区| 久久伊人最新网址视频| 久久免费中文字幕在线观看| 国产精品久久久久久久久久久久久久| 天天干天天爽| 四方色播| 狠狠躁AV| 18禁在线视频| 天天看高清麻豆| 岛国片在线播放| 亚洲影院小综合| 性爱综合一区二区| 亚熟在线| 做爱A级亚欧| 人妻丝袜肏逼| 精品亚洲国产成人AV制服丝袜| AV中文字幕剧情1区2区3| 无码 黑人一区二区三区| 天美精品一区二区三区四区在线观看| 看免费的黄片| 天天日美女的B| 中国国产精品一区视频| AV天黑人| 嗯嗯啊在线视频| 熟妇女伦乱视频视频 | 国产第二页| 操操逼操操逼操操逼逼| 天天综合~91| 男人的天堂2010| 后入式免费视频| 中文字幕视频2区| 日韩乱伦AⅤ| 职场同事知名国产国产精品久久欧美日韩 | 日韩欧美福利视频看看| 怡春苑东京热| 色欲天天综合网| 丰满人妻一区二区三区色-百度| 欧美三级一级| 亚洲黄色影视| 欧美日韩黄片精品在线| 亚洲欧美清纯| 91丝袜激情在线 | 天天躁日日躁狠狠狠躁| 97人亚洲综合字幕| 欧美性爱在线无码| 国产乱伦视频污| 97超碰精品成| 嗯嗯嗯嗯啊啊啊好紧好大| 在线观看不卡一区二区三区| 久艹免费| 色老牛| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 波多野结衣一级视频| 国产精品电| 国产黄a三级三级三级av在线看| 久热精品在线国产| 欧美AB在线| 97频视在线| 欧洲无码一区二区| 丝袜美腿制服人妻二区中文字幕| 懂色aV一区二区天美传媒| 99re99视频在线免费观看| 天天色粽合合合合合合合| 国产精品麻豆免费视频| 91bbbbbb| 后入精品| 天天综合站| 神马久久网| 天天看片天天爽| 成年女人18级毛片毛片免费观看| 1级午夜影院费免区| 综合久久2017| 99热精品在线观看| 精品9999| 亚洲日产专区婷婷| 日本高清加勒比| 国产传媒美日韩av| 67194无码不卡| 国产91美女高潮| 在线可观看的黄色网址| 中文字幕av乱伦| 性开放中文AV高清无码免费看| CCYY草草影院地址入口| 中文字幕第2页| 超碰到97情色| 色偷偷男人的天堂麻豆| 色香伊人| 狠狠爱AV| 又黄又硬又粗又长国产视频| 色欧美在线| 国产熟码AV| 欧美传媒一区| 欧美天天在线| 偷窥自拍亚洲| 日天天九九天堂666| 熟女91网| 国产97在线播放| 日韩电影中文字幕| 91色花堂| 亚洲无码精品AV久久久| 亚洲精品一区二区精品| 嫩呦国产一区二区三区AV| 丰满美女一级毛片在线播放| 中文字幕一区二区三区四区在线视频| www.av在线视频| 秋霞蝌科网日本一区| 国产自产一区视频在线| 国产超碰人人操| 99精品在线观看| 国产按摩一区二区三区| 天天日日本| 美女裸体麻豆天美蜜桃91| 久久综合久久综合人久久夜精品| 日韩9999| 久热这里| 人人操人人摸人人骑| 国产乱伦性爱区| heyZO天然素人无码AⅤ专区| 免费的黄片wwwwww| 五月天色图影视| 日本精品人妻少妇一区二区| 精品九九九九九九九| 四虎在线免费视频| 乱欲视频| 人妻日日干| 95人妻爽爽人人做人人澡| 老熟女91av| 久久久久久少妇| 伊人骚琪琪亚洲天堂网站| 久久久久久久久久9| 欧美色999| 中文字幕国产| 蜜臀久久久久久999| 日本天堂网| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 五月天婷婷成人网| 国产成人主播| 亚州男人天堂| 99久久久无码国产精品性男| 精品人妻二区三区| 中精品一区二区三区| 欧美天天综合网| 国产亚州高清国产拍精| 中文字幕丝袜人妻| 久久粉色| 色五月激情综合网| 色哟哟1区2区| 91P0RNY大屁股人妻| 中文字幕黄色片| 中国小夫妻勾搭露脸淫荡对白| 久久久一二三四区| 精品偷拍13p欧美dodk视频| 综合色图亚洲欧美| 风骚少妇视频中文字幕| 欧洲性爱无码区| 涩五月婷婷| 人妻熟女一区二区| 免费的黄片有限公司| 国产aⅴ无码片毛片一级网站| 嗯嗯啊在线视频| 啊啊啊轻点在线观看| 一级黄色视频网| 白丝1区2区3区| 日韩图色| 九九九九九九九精品视频| 青久久| 亚洲国产成人福利在线观看| 亚洲、日韩、综合、另类| 久操免费观看| 91超碰人人操| 一本色道久久综合亚洲二区三区| 少妇人妻太紧太深av| 蜜桃中文字日产乱幕4区| 91欧美色| 国语人妻精彩刺激| 97视频免费在线观看| 日韩精品 视频一区二区| 北京美女一区二区| 最新岛国大片| 日韩欧美天天爽爽爽天天爽爽| 日本操逼aaaaa| 欧美最婬乱婬爆婬性视频 | julia ann久久| 伊人五月天激情| 国产亚洲日本| 自拍偷拍 日韩无码| 人妻黑丝袜电影| 国产操偷| 骚货 中文字幕 av| 久久综合婷婷| 久夜视频| 极品内射| 首页中文字幕中文字幕免费| 天天热精品| 无套内射性感少妇视频| 九九操久久国产免费视频| 激情五月天网| 国产毛片毛片4p懂色| 中文字幕制服欧美久久一区| 国产美女裸体秘 永久无遮挡| 东北老女人的激情视频| 777琪琪午夜免费A片| 国产少妇高潮| 99久久99久久综合| 免费在线观看AV无码网站| 超碰欧美97资源| 狠狠干综合| 久久日韩肥臀| 一区二区 韩日AV| 亚洲阿v天堂在线| 亚洲欲| 久热久| 精品人妻一二三| 9久精品视频在线观看| 免费久久精品麻豆一区二区av| 黑人性暴力毛片| 国产夜夜艹| 精品性爱一二三区| 天天草天天日| 婷婷精品久久av影视| 国产女上位好爽在线| 北约熟女超碰| 国产97在线 | 亚洲| 91久久国产综合精品| 国产麻豆一级精品视频| 日韩欧美性吧婷婷乱伦大香蕉 | AV一区观看| 日韩日韩日韩-国产乱码精品一区二区| 日韩成人性爱电影在线播放| 亚洲 无码 偷拍| 国产AV线| 欧美97在线观看| 色婷五月| 欧美日韩国产高清在线一二三区 | 日韩免费一级性爱视频| 天天久久久久久| 日韩人妻资源网| 91丨熟女丨丰满熟女| 男啪女色黄无遮挡免费观看| 超碰吊日色| 色天堂综合| 抽插无码高清一区| 国产一区二区三区白丝| 超碰九7免费| 午夜精品久久久久久久| 欧美色一二三| 色婷婷久久| 国产亚洲精品A在线观看下载| 在线洲亚线| 国桃视频产巨乳精品一区二区在线| 中文字幕五区| 日韩精品一二三四| 成人在线视频网| 日韩AV无码中文一区二区| 欧美日韩啪啪电影| 成人蜜乳小视频网站| 91国模| 国语精品av| 男人的天堂久久狠| 亚洲Av噜噜一区二区三区妖精| 99超碰色| 1024久久高清视频| 亚洲久久东京热一二三四五区视频| 日本高清电影欧美色图| 丁香六月婷| 亚洲国产婷婷在线播放| 日韩av不卡在线看| 久久性爱精品一区| 日韩亚洲中文字幕在线| 久久亚洲AV无码专区首页| 亚洲密乳AV| 天天谢天天干| av无码av无码专区| 岛国艾薇凹凸视频天堂| 午夜黄色免费在线观看| 黄片无码在线制服| 无套内射性感少妇视频| 制度丝袜99| 粉嫩粉嫩一区性色AV片| 思思性爱| 国产亚洲精品自在线亚洲情侣| 日韩无码专区| 狠狠色丁香| 国产黄色 A 片免费看| 95自拍视频在线观看| 国产精品电影大全| 精品无码久久久久久久杏吧| 五月天我淫我色av| 中国zzijzzijzzwww精品| 亚洲中文一区二区三区| 久久男女激情视频网站| 狠狠操狠狠插| 伊人久久国产免费观看视频| 亚洲国内精品成人不卡| 欧美男人亚洲天堂| 极品出轨视频网站| 综合伊人网12色| 涩涩涩综合| 97久久超碰| 少妇免费视频| 国产人妻精品一区二区三区秋霞| 精品无av| 日本熟女免费視颖| 立川理惠无码一区二区| 亚洲乱色视频一区、二区在线| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 精品无码一区二区三区| 国产操逼逼网| 大香蕉操久久| 天天综合网~91综合网| 任我爽在线视频免费观看| 精品妇操一区二区三区| 9ⅰ久久久天天| 日日干夜夜骑| 中文字幕欧美丝袜07资源| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 久久综合99| 绯色AV粉色AV蜜臀AV| 91操人视频| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 自拍偷拍2025在线观看| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 久日91在线| 欧美性性性| 一起草日韩| 少妇被玩视频二三区| 女上位精品在线| 大香蕉伊人75| 丝袜美腿制服人妻二区中文字幕| 熟女突然公开看18禁影片 | 天天躁狠狠躁av| 精品亚洲| 四虎影院成年人片| 好屌色综合| 中韩中文字幕在线观看| 爱媛媛久久国产福利| 另类亚洲图色| 一二区在线观看视频| 手机看片日韩人妻| 日韩AV一区二区三区三州三州| 97国产|免费| 久久久久久久亚洲Av无码| 91原创在线观看| 中文字幕在线免费观看| 精品成人av一区二区三区在线| 成人精品一区二区三区| 国产精品一区二区a| 人妻激情偷乱视频一区二区三区| yazhouzaixian| 日韩欧美午夜视频在线| 欧美熟爽综合| 2017天天拍大香蕉| 精品色色| 欧美色网络| 色婷婷影视| 欧美极品少妇| 搡老熟女老女人老熟妇免费视频| 亚洲图片 激情小说| 一区二区三区亚洲| 9久久美女首页| 久久久青青草| 色色色热| 色爱天堂| 欧美有码激情视频一区二区三区| 91精品人妻一品二品三品| 欧美性爱另类综合| 欧美综合色| 狠狠爱综合网| 欧美懂色综合网| 成人夜夜爽| 91狠狠综| 欧美爆操91| 欧美真人抽搐一进一出gif| 开心六月色| 无码人妻一区二区三区免费九色| 男人的天堂在线2| 欧美爱三级日韩久久| 日本蜜桃| 干婷婷综合网| 91丰满| 一区二区偷拍拍视频| 91丨人妻丨国产丨丝袜| 色九九九| a天堂视频| 竹菊一区二区三区AV线| 日本久操视频| 熟妇xxxxx性春色| 国产情色在线| 色综合五月天| 国产一区二区三区视频在线看| 日日妻色网| 综合久久婷婷| 亚洲综合在线91| 久久一留热品黄| 午夜电影在线观看无码专区| 久久精品一区一起草| 九九玖玖精品| 日本Xx性爱| 春色91| 大香蕉伊在线久草麻豆天堂故事| 操逼啊啊啊91| 欧美日韩97| 超碰午夜| 久妇网| 91网站18禁| 国产九九九九九九| 搡老女人老妇女老妇老熟女怎么读| 国产对白刺激视频| 91亚洲人| 国产一区二区久久| 啪啪视频mP4| 精品一区二区亚洲国产| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 天天综合色| 八戒午夜福利理论片| 加勒比综合在线| 欧亚日韩三区| 久久极品一区二区| 日本视频在线观看污污污| 99热在线观看| 男人的天堂三级| 狠狠躁AV| 亚洲中文日韩欧美大香蕉视频| 久久系列| 巨乳特殊服务按摩| 九九国产热| 国产高清不卡视频| www.狠狠干.coom| 成人性爱免费播放| 91久久久久| 天天色怡春院| 国产天天看| 天天影视网综合少妇| 成人性爱电影网| 台湾成人无码AV| 测评在线观看AV| 色欲久久99国产精品久久久久久| 亚洲丰满很很操| 中文字幕78| 久久九七| 黄网站黄视频网站进入口| 把腿张开老子CAO烂你| 精品人妻一区二区三区四区不卡在| 91中文字幕在线观看| 视频在线中文字幕| 天天综合网AV91| 91在线色| 99热精品国产| 青青草久久一区网| 这里是精品| 在线天堂999| 日本美女性生活久久久久久久| 久7色| 日韩人妻资源网| 综合网欧美在线| 九九色综合| 日本三级R| 一起草精品人妻| 日韩中文字幕在线视频观看| 日韩人成网站在线播放| 女同性恋久久| 亚洲国产日韩欧美熟妇在线| 国产农村一一级特黄毛片| 天天干人妇| 婷婷五月成人| 欧美一区二区日韩三区| caoni国产亚洲av| 91快色色色色色| 人人天天干干| 九月婷婷久久| 精品大久久| 无码99| 人人操人人射人人干| 懂色影视久久| 国产精品久久久久婷婷二区次| 亚洲色阁| 欧美激情性久久久久久| 美女操逼福利视频| 色综合色| 少妇毛片久久| 欧美精品第四五页中文字幕在线观看| 一本色道久久综合熟妇| 亚洲天天自拍| 白丝被操91| 黑丝自慰喷水网站| 91黑丝在线播放| 久久成年精品| 曰本道人妻久久久在线不卡色视频| 全国男人天堂网| 操逼A∨| 国产一区二区a毛片| 激情视频网址| 亚洲熟妇丝袜在线观看| 久久精品高清无码一区| 欧美色图亚洲激情| 日韩人妻有码免费视频| 国产女人成人精品视频| 欧美日韩国产中文精品字幕自在自线,| 青青11操操操操操操操操| 久久精品老司| 欧美日韩中文字幕不卡| 人人人摸人人| 色狠狠综合| 色女99一级片在线观看| 亚洲的天堂网| 探花视频免费观看国产专区| 天天日天天干天天整| 中文无码一二三区| 天堂涩涩| 欧姜老司机| 亚洲成人日韩小说| 国产1769在线| 欧美日本天堂| 国产精品又黄又猛又粗| 爽极品影院| 日韩精品99999| 久草婷婷| 欧美黄业| 日本在线不卡v二区| 97超久碰| 激情黄色片在线观看| 超碰99在线观看| 欧美日韩精品青青| 操操操日本的逼| 欧美性爱五月天| 伊人四虎综合| 久久五十路熟女人妻| 亚洲限制级在线| 欧洲小说色图视频另类| 日韩操啪| 狠狠中文字幕| 国产精品夜夜| 99热精品在线播放| 天天日熟妇| 中日亚韩免费视频| 国产美女91视频| 啊啊嗯嗯好爽| 男人的天堂不卡一区二区 | 狂操嫩妻视频一区二区三区| 男人天堂最新手机版在线青青草| 亚洲成人性| 亚州 综合 色图| 国产91av在线播放| 97激情97激情| AAAA欧美日韩| 国产97视频免费观看| 另类老少妇| 美中日韩无码| 亚欧美综合| 美女黑人91神马| 精品久久久久久中文字幕三区| 丰满少妇一区二区三区四区观看| 成人AV在线网站| 日韩性爱免费观看视频| 97色诱| 国产精品国产自产高清AV | avav青青草久久夜| www.超碰在线| 91美女精品| 丁香五月社区| 欧美性天天| 青青草吊丝| 日日操免费视频| 久久一二三级一一一| 国产精品麻豆成人av| 天天舔天天日天天射| 婷婷午夜成人色中色| 欧美亚洲清纯| 色婷婷综合网| 中文操逼字幕| 一区二区视频你懂的| 伊人久久综合影院精品久久久| 久久、1234| 欧美日韩国产高清在线一二三区 | 欧洲亚洲国产综合在线| 一本一道久久综合久久| 五月激情小说| 日本熟妇浓毛hdsex| 国产AV人人 夜夜人人澡| 久久久久亚洲AV无码专区少妇| 亚洲国产青青| 91亚·色| 操逼片国产| 亚州综合色| 欧美97视频| 少妇二级| 一线黄色免费性爱片| 一区二区三区高清| 久久久111| 日韩偷拍色图| 无码区蜜乳| 97bbn| 国产偷拍自拍在线视频| 婷婷五月天激情四射| 欧美一级欧美三级在线观看| 日韩成人精品视频自拍| 日韩射精| 亚洲综合校园春色| 日本在线视频导航| 亚欧高清| 亚洲精品国产拍免费91在线| 亚洲色图欧美色图制服丝袜| 国产精品无码论坛| 亚洲一区二区三区在线激情| 大香蕉欧美日韩| 五月丁香综合网| 可以在线观看的黄色网址| 亚洲欧美天| 乱老熟女一区二区三区| 9久超碰| 婷婷AV一区二区三区| 极品欧美一区二区三区| 91精品人妻一品二品三品| 大香网伊人久久综合网eew| www.婷婷六月天| 思思热在线cao| 欧美综合1性辶| 天天夜夜久久| 在线啊啊啊啊| 色色五月婷婷| 人妻精品一区二区在线| 亚洲欧美色图小说| 久久精品一区一起草| 男人的天堂日本东京热| 天天综合在线4| 午夜男人一级A片7777| www.黄色在线| 国产高清视频无码在线| 97超碰这里只有精品| 国产噜噜噜噜噜久久久久久久久| 九九九午夜| 97超碰国产精品| 亚洲中文字母在线播放| 人人操人人插人人摸人人干| 乱人乱色一区二区三区免费 | 国产一区自拍欧美日韩| 色图综合网| 先锋女优在线观看视频| 熟女高潮精品一区二区| 国产精品农村妇女精品| 加勒比久久av| 精品欧美日韩在线观看| 超碰在线97国产| 北京美女一区二区| 91美女丝袜诱惑视频| 91精品丝袜在线观看| 精品人妻美妇91job| 97色欧州| 大香蕉在线视频15| 亚洲18禁| 亚洲综合另类| 熟女精品一区二区三区| 大香蕉九九| 色婷婷在线视频| 国产女人91精品嗷嗷嗷嗷| 精品九九国产无码| 国产精品视频一区二区三区八戒| 日韩 欧美 视频 在线 一区| 欧美一区二区三区四区综合| 97在线观看免费视频| 国产精品白领在线观看| 亚洲一卡二卡在线免费| 天天色黄色影院天天操| 日韩中文字幕精品一区在线| 国产大学生口爆吞精合集| 国产人妖视频一区在线观看| 日韩av电影成人在线| 国产精品麻豆视频网站| 久久久久久精品免费看A级| 亚洲免费人妻在| 九九热精品免费视频| 日韩一区二区熟女| 在线情色电影 91大 | 伊人一区二区在线播放| 国产剧情AV不卡在线观看| www.天天干| 久久e6只有精品| 熟妇高潮二区三区| 国产熟女无套内射| 超碰在线人妻中文字幕| 日韩人妻中文视频| www.超碰| 九九夜精品九九在线| 91挑色欧美| 久久久四区| 亚洲国产欧美另类自拍| 熟女六十路| 美女露胸露屁股| 伊人在线大香蕉视频久久| 成人性生活高清视频在线播放| 97超碰色| 综合操逼| 久久理论字幕视频| 久久久一区二区三区麻豆| 欧美天天干| 2020中文在线一区二区三区| 去干网最新版| 中文字幕丝袜美腿| 超碰在线1234区| 久久 精品| 亚洲成a人片在线观看中文!!!| 国产女人极品高潮毛片| 中日无幕一二三四区| 国产不卡的视频| 中文乱码字字幕在线第5页| 伊人影院综合是一个与深夜成人在线| 欧美一级黄色18片免费看| AND人妻系列| 好爽要喷了| 国产精品直播在线观看直播| 欧美1区二区三区公司 | 亚洲污污网站| AVE乱伦| 国产欧美日韩在线不卡第一页| 人妻出轨一区二区三区| 欧美亚洲韩国视频十五区| 黄色片A级一区二区三区| 欧苏综合色综合| 天堂精品小草| 欧美天天搞| 3p国产欧美99热| 91爰爱欧美| 偷拍精品一区二区三区| 在线播放成人网站| 日韩不卡网操逼中文字幕日韩| 亚洲欧美日韩国产丝袜自拍中文| 色姑娘综合网| 婷婷中文字幕| 大香蕉日韩欧美| 99久久e免费热视| 欧美后进式| 亚洲精品九九九九九九| 多毛小伙内射老太婆| 蜜伊人色综合97| 婷婷国产精品一区二区| 亚欧无码在线| 国产欧美成人精品| 九九精品无码专区免费| 啪啪91| 日本性感人妻91| 超碰久久性爱| 久久99国产精品| 丁香啪啪| 超碰97国产欧美| 国产自偷自拍一区| 久久久久人| 欧美日韩香蕉| 日本999精品| 午夜啪啪片| 情色五月天网| 精品国产丝袜一区二区三区乱码| 久污| 日本五十路熟女一区二区| 久久人妻无码毛片A片麻豆| 一类无码操逼视频| 日韩天天本| 久久久久久电影| 青草香蕉网| 中文字幕高清精品一区| 日韩国产十八禁| 日韩精品资源专区二区| 91女在线观看| 日韩精品午夜操呦呦不卡影院| 影音先锋国产精品| 这里只有精品97| 日韩一级片在线看| 精品二区久久| 欧美综合97www| 99久久久久久亚洲精品不卡| 9精品在线| 黑人精品XXX一区一二区| 97超碰色屌| 天堂俺去俺来也www久久婷婷| 久久亚洲天堂| 黄片不用下载在线观看| 麻豆天美在线喷水AV| 国产成人bd在线观看| 在线亚洲丝袜视频网站| 中国国国产一级特黄毛片| 大香蕉2017| 后入 亚洲 美女 射| 国产日韩欧美操逼视频| 久草综合网| 啊啊啊好湿国产一二| 欧美黄片免费在线观看视频| 97久久国产精品| 粉嫩国产精品久久粉嫩| 蜜乳成人AV| 久久超碰天天| 国产精品乱人伊人网| 欧美国产欧美在线观看| 美女91网址 | 日韩性爱免费观看视频| jiujiujiujingpin| 综合网色| 性videos欧美熟妇hdx| 爱爱动态试试看6 0秒| 偷看洗澡一二三区美女| 亚洲国产精品成人久久蜜臀| 欧美aⅴ99久久黑人专区| 亚 欧 美 综合| 综合五月婷婷亚洲一区| 亚洲熟妇A V黑人| 国内精品不卡无毒99999| 少妇人妻太紧太深av| 97免费视频在线| 亚洲色悠悠久久88| www.夜夜| 久操凹凸视频| 大香交| 麻豆精品A片免费观看| 欧美1727免费观看视频| 日本人妻最新在线中| 久久精品六区| 色综合91| 亚洲AV无码乱码在线观看性色| 免费观看成人www精品视频| 偷拍亚洲情色| 色诱avtt| 91xingse| 亚洲欧洲国产综合av| av中亚| 久久97超碰| 88在线一区二区三区| 女人一区| 日韩二三区| 大香蕉碰碰| 亚洲成av人片色午夜乱码| 高跟丝袜AV专区国产| 久久透逼视频| 欧美第二页| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 精品久久艹| 久久爽爽精品| 艳美熟妇先锋一二三区| 久久一区二区三区入口| 国产探花精品在线| 超清福利精品视频在线| 69精品少妇一区二区三区蜜桃| 大香蕉伊人在线成人AV在线观看| 开心五月天激情网| 2024人人操人人摸| 国产精品成人蜜臀AV在线| av日韩在线观看电影| 国产操伦| 岛国激情视频在线观看| 亚洲久久久久| 色综合91好| 日韩本不卡视频在线观看| 精品大全99999| 日韩人妻精品| 激情小说亚洲视频| 欧美性天天影院| 男人天堂 天天射| 一直超碰| 综合av影片|