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

ARTICLE DETAIL

資訊詳情

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

Spring多數(shù)據(jù)源路由實戰(zhàn):三層可控切換與分庫分表落地

Spring多數(shù)據(jù)源路由實戰(zhàn):三層可控切換與分庫分表落地 簡介本資源是一份面向Java后端開發(fā)者與數(shù)據(jù)庫架構初學者的分庫分表實戰(zhàn)教學包聚焦企業(yè)級大數(shù)據(jù)量場景下的數(shù)據(jù)庫水平擴展難題以Sharding-JDBC為核心框架實現(xiàn)多數(shù)據(jù)源動態(tài)切換與透明化分片。資源共73個文件涵蓋18個Java業(yè)務與配置類、21個編譯后class文件、18個XML配置與映射文件含MyBatis映射及Sharding規(guī)則定義以及SQL建表腳本、Maven項目配置pom.xml、Eclipse工程元數(shù)據(jù).project/.classpath等關鍵開發(fā)資產整體僅66KB輕量易導入。已有2068人學習下載適合快速搭建SSMDemo環(huán)境并理解分片路由、數(shù)據(jù)源初始化、YAML分片規(guī)則配置等核心實踐環(huán)節(jié)。讀者可直接復用項目結構掌握從多數(shù)據(jù)源聲明、分庫分表策略配置到跨庫CRUD調用的完整鏈路尤其適用于SpringMyBatisSharding-JDBC技術棧的中小規(guī)模分片落地參考。1. 分庫分表多數(shù)據(jù)源的切換不是加個注解就完事而是讓每個DAO層調用都清楚自己該連哪張表、哪個庫你剛接手一個日增300萬訂單的電商后臺MySQL單表已超2800萬行慢查詢從“偶發(fā)”變成“每分鐘必報”DBA甩來一句“上分庫分表吧?!薄Y果你興沖沖引入ShardingSphere配置好邏輯表、分片鍵、分片算法一跑測試發(fā)現(xiàn)用戶中心查user_info正常但訂單服務里一個帶JOIN的報表SQL直接報錯“無法路由到具體數(shù)據(jù)源”更玄學的是同一個Service方法里前半段insert走的是ds0后半段update卻連到了ds1事務根本沒法提交。這不是配置沒生效而是分庫分表的本質從來不是“自動拆分”而是“顯式聲明精準控制”。這個項目就是一套可落地、可調試、可驗證的多數(shù)據(jù)源切換實戰(zhàn)方案它不依賴黑匣子中間件的自動路由而是用Spring原生AbstractRoutingDataSource 自定義ThreadLocal上下文 顯式數(shù)據(jù)源標記把“哪個線程該用哪個庫”這件事從配置文件里拽出來寫進代碼里、打在日志里、壓測時能一眼看穿。適合正在被跨庫JOIN、讀寫分離、歷史庫歸檔、灰度發(fā)布數(shù)據(jù)隔離等問題卡住的后端開發(fā)者尤其適合那些已經(jīng)踩過ShardingSphere規(guī)則配置陷阱、想回歸可控性的團隊。2. 架構設計與核心模塊拆解三層路由機制讓數(shù)據(jù)源選擇不再靠猜這個項目不是簡單封裝了一個DynamicDataSource而是構建了上下文驅動 規(guī)則匹配 手動覆蓋的三級路由體系。它把“用哪個庫”這件事拆成三個可獨立驗證、可組合使用的環(huán)節(jié)最外層是業(yè)務語義標記比如TargetDataSource(write)中間層是分片鍵自動識別比如方法參數(shù)含userId且當前策略為user_id分片最內層是線程級強制綁定比如開啟事務時鎖定主庫。三者優(yōu)先級從高到低沖突時以手動標記為準。這種設計避免了“全局默認庫”帶來的隱式耦合也繞開了中間件對SQL語法的強約束——你寫原生MyBatis XML它照樣能路由你用JdbcTemplate手寫復雜UNION它也能按需切庫。整個結構輕量無額外jar依賴、透明所有路由決策可打日志、可測試Mock ThreadLocal即可覆蓋全部分支。2.1 核心路由引擎AbstractRoutingDataSource的深度定制Spring原生的AbstractRoutingDataSource只提供一個determineCurrentLookupKey()抽象方法返回String類型的key。但本項目在此基礎上做了三處關鍵增強key不再是簡單字符串而是自定義的DataSourceKey類包含type(READ/WRITE)、shardId(如shard_01)、sourceId(如ds_master_v2)三個維度determineCurrentLookupKey()內部不直接返回key而是委托給RouterChain執(zhí)行鏈式判斷每次key生成后自動記錄到MDC中供日志追蹤如[ds_keyWRITE:shard_01:ds_master_v2]。public class DynamicRoutingDataSource extends AbstractRoutingDataSource { Override protected Object determineCurrentLookupKey() { // 1. 檢查線程局部變量是否已強制綁定 DataSourceKey forcedKey DataSourceContextHolder.getForcedKey(); if (forcedKey ! null) { log.debug(Route forced: {}, forcedKey); return forcedKey; } // 2. 嘗試從方法參數(shù)/注解提取分片上下文 DataSourceKey contextKey ContextRouter.routeByContext(); if (contextKey ! null) { log.debug(Route by context: {}, contextKey); return contextKey; } // 3. 回退到默認策略如讀寫分離下的READ DataSourceKey defaultKey DefaultRouter.routeByDefault(); log.debug(Route by default: {}, defaultKey); return defaultKey; } }提示DataSourceKey必須實現(xiàn)equals()和hashCode()否則Spring緩存的targetDataSource Map會失效——這是血淚經(jīng)驗曾因忘記重寫導致同一key反復創(chuàng)建新連接池DB連接數(shù)暴增。2.2 上下文管理器ThreadLocal MDC雙保險DataSourceContextHolder是整個路由的“開關中樞”。它不只存一個String而是維護三個ThreadLocal變量forcedKey: 用于Transactional或TargetDataSource注解觸發(fā)的強制綁定shardContext: 存儲當前請求的分片標識如userId12345 → shardIdshard_03routeTrace: 布爾值開啟后自動記錄每次路由決策路徑用于排查“為什么沒走預期庫”。public class DataSourceContextHolder { private static final ThreadLocalDataSourceKey FORCED_KEY_HOLDER new NamedThreadLocal(forcedDataSourceKey); private static final ThreadLocalShardContext SHARD_CONTEXT_HOLDER new NamedThreadLocal(shardContext); private static final ThreadLocalBoolean ROUTE_TRACE_HOLDER ThreadLocal.withInitial(() - false); public static void setForcedKey(DataSourceKey key) { FORCED_KEY_HOLDER.set(key); // 同步寫入MDC確保日志可追溯 MDC.put(ds_key, key.toString()); } public static void setShardContext(ShardContext context) { SHARD_CONTEXT_HOLDER.set(context); MDC.put(shard_id, context.getShardId()); MDC.put(shard_key, context.getShardKey()); } public static void enableRouteTrace() { ROUTE_TRACE_HOLDER.set(true); MDC.put(route_trace, enabled); } }NamedThreadLocal是自定義類繼承ThreadLocal并重寫toString()方便在Arthas或jstack線程dump中快速識別該ThreadLocal用途——這點在生產環(huán)境排查“某個線程死鎖在數(shù)據(jù)庫連接上”時極其關鍵。2.3 分片上下文注入從Controller到Mapper的全鏈路透傳分片鍵如userId、orderId通常來自HTTP請求參數(shù)或RPC上下文不能靠DAO層自己猜。本項目采用“入口攔截顯式傳遞”模式Web層ShardParam(userId)注解標注Controller方法參數(shù)由ShardArgumentResolver解析并注入ShardContextRPC層Dubbo Filter或gRPC Interceptor從Attachment或Metadata中提取分片信息內部調用Service方法簽名強制要求傳入ShardContext杜絕“隱式上下文”。RestController public class OrderController { GetMapping(/order/{orderId}) public OrderVO getOrder( PathVariable Long orderId, ShardParam(userId) Long userId) { // ← 此注解觸發(fā)ShardContext注入 return orderService.getOrder(orderId, userId); } } Service public class OrderServiceImpl implements OrderService { Override public OrderVO getOrder(Long orderId, Long userId) { // 1. 主動構造ShardContext確保下游能路由 ShardContext context ShardContext.builder() .shardKey(userId) .shardValue(userId) .shardId(ShardAlgorithm.calculateShardId(userId)) // 如 userId % 4 → shard_02 .build(); DataSourceContextHolder.setShardContext(context); // 2. 執(zhí)行實際查詢此時DynamicRoutingDataSource已能獲取shardId return orderMapper.selectById(orderId); } }注意ShardAlgorithm.calculateShardId()必須是純函數(shù)無狀態(tài)、無外部依賴否則在多線程下可能產生不一致分片結果——這是分庫分表最隱蔽的翻車點之一。3. 數(shù)據(jù)源配置與初始化YAML驅動 運行時熱加載支持項目摒棄了XML硬編碼數(shù)據(jù)源的方式采用Spring Boot原生ConfigurationProperties綁定YAML配置同時預留了運行時刷新接口如POST /actuator/datasource/refresh無需重啟即可更新數(shù)據(jù)源連接池參數(shù)。配置結構清晰分層頂層定義邏輯組如master-slave-group中層定義物理實例如ds_master_v2底層定義JDBC屬性。這種結構天然支持灰度發(fā)布場景——你可以先將新庫ds_master_v3加入配置但不啟用待壓測通過后再修改group.default-write-source: ds_master_v3。3.1 application.yml核心配置片段# 多數(shù)據(jù)源基礎配置 spring: datasource: dynamic: primary: master # 默認寫庫 strict: false # 非嚴格模式未匹配到數(shù)據(jù)源時回退到primary datasource: # 主庫寫 master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://db-master:3306/order_db_v2?useSSLfalseserverTimezoneAsia/Shanghai username: app_rw password: ${DB_MASTER_PWD} hikari: maximum-pool-size: 20 minimum-idle: 5 # 從庫集群讀 slave-01: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://db-slave-01:3306/order_db_v2?useSSLfalseserverTimezoneAsia/Shanghai username: app_ro password: ${DB_SLAVE_PWD} hikari: maximum-pool-size: 15 slave-02: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://db-slave-02:3306/order_db_v2?useSSLfalseserverTimezoneAsia/Shanghai username: app_ro password: ${DB_SLAVE_PWD} hikari: maximum-pool-size: 15 # 分片庫歷史訂單 shard-01: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://db-shard-01:3306/order_history_shard_01?useSSLfalseserverTimezoneAsia/Shanghai username: app_hist password: ${DB_HIST_PWD} shard-02: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://db-shard-02:3306/order_history_shard_02?useSSLfalseserverTimezoneAsia/Shanghai username: app_hist password: ${DB_HIST_PWD}3.2 動態(tài)數(shù)據(jù)源工廠支持運行時新增/刪除數(shù)據(jù)源DynamicDataSourceFactory負責將YAML配置轉化為MapObject, DataSource并注冊到DynamicRoutingDataSource中。關鍵點在于使用ConcurrentHashMap存儲targetDataSources保證put/remove線程安全每次refresh時先關閉舊數(shù)據(jù)源調用HikariDataSource.close()再注入新實例提供getDataSource(String key)方法供其他組件如Druid監(jiān)控按需獲取特定數(shù)據(jù)源。Component public class DynamicDataSourceFactory { private final MapObject, DataSource targetDataSources new ConcurrentHashMap(); PostConstruct public void init() { loadFromConfig(); // 從YAML加載初始數(shù)據(jù)源 } public void refresh(MapString, DataSourceProperties newConfigs) { // 1. 關閉所有舊數(shù)據(jù)源 targetDataSources.values().forEach(this::closeDataSource); targetDataSources.clear(); // 2. 創(chuàng)建新數(shù)據(jù)源并注入 newConfigs.forEach((key, props) - { HikariDataSource ds createHikariDataSource(props); targetDataSources.put(key, ds); }); // 3. 通知DynamicRoutingDataSource更新 dynamicRoutingDataSource.afterPropertiesSet(); } private void closeDataSource(DataSource ds) { if (ds instanceof HikariDataSource) { ((HikariDataSource) ds).close(); } } }注意dynamicRoutingDataSource.afterPropertiesSet()必須顯式調用否則Spring不會重新初始化resolvedDataSources緩存——這是熱加載失敗最常見的原因。3.3 分片策略配置YAML定義規(guī)則Java實現(xiàn)算法分片邏輯不寫死在代碼里而是通過YAML聲明規(guī)則再由Java類按需加載。例如shard: rules: - table: order_info key: user_id algorithm: mod4 sources: [shard-01, shard-02, shard-03, shard-04] - table: order_detail key: order_id algorithm: hash16 sources: [shard-01, shard-02, shard-03, shard-04]對應Java端ShardRuleLoader解析YAML后生成ShardRule對象存入內存并由ShardAlgorithmFactory根據(jù)algorithm字段返回具體實現(xiàn)public interface ShardAlgorithm { String calculateShardId(Object shardValue); } Component public class Mod4ShardAlgorithm implements ShardAlgorithm { Override public String calculateShardId(Object shardValue) { if (!(shardValue instanceof Number)) { throw new IllegalArgumentException(Mod4 requires numeric shard value); } long value ((Number) shardValue).longValue(); int shardIndex (int) (Math.abs(value) % 4); // 避免負數(shù)取模問題 return shard- String.format(%02d, shardIndex 1); // shard-01 ~ shard-04 } }這種解耦讓DBA可獨立修改分片規(guī)則改YAML而開發(fā)只需維護算法實現(xiàn)雙方無需協(xié)同發(fā)布。4. 避坑指南5個真實踩過的坑省下你三天排查時間分庫分表不是配置完就能跑通的銀彈而是處處埋雷的精細活。以下是我在某高校實驗室模擬項目X中連續(xù)兩周壓測時踩出的5個典型問題每一條都附帶復現(xiàn)條件、根因分析和可立即驗證的修復方案。4.1 現(xiàn)象事務內跨庫操作不報錯但部分SQL實際執(zhí)行在錯誤庫上原因Transactional默認傳播行為是REQUIRED當方法A調用方法B時若B未聲明事務其數(shù)據(jù)源路由會脫離A的事務上下文導致B的SQL走默認庫而非事務綁定庫。解決在Transactional方法內所有子調用必須顯式聲明Transactional(propagation Propagation.REQUIRED)或統(tǒng)一使用TransactionTemplate手動控制。更徹底的方案是在DataSourceInterceptor中檢測當前是否在事務中若在則強制將forcedKey設為事務起始時的key。4.2 現(xiàn)象MyBatis二級緩存命中但返回的數(shù)據(jù)卻是舊庫里的臟數(shù)據(jù)原因MyBatis的CachingExecutor在查詢前會先查緩存而緩存key未包含數(shù)據(jù)源標識如ds_key導致從shard-01查到的數(shù)據(jù)被緩存后續(xù)請求即使路由到shard-02也會命中該緩存。解決自定義CacheKey在org.apache.ibatis.cache.CacheKey.update()中加入DataSourceContextHolder.getForcedKey()的哈希值?;蛘摺扑]的做法——禁用跨庫場景的二級緩存在Mapper XML中添加cache evictionFIFO flushInterval60000 size1000 readOnlytrue blockingfalse/并設置useCachefalse。4.3 現(xiàn)象Druid監(jiān)控頁面顯示連接池活躍數(shù)為0但應用日志瘋狂打印“getConnection timeout”原因DynamicRoutingDataSource的determineCurrentLookupKey()方法拋出異常如NullPointerException導致Spring fallback到defaultTargetDataSource而該項目未配置defaultTargetDataSource最終返回nullDruid拿到null后靜默失敗。解決在DynamicRoutingDataSource構造時強制設置setDefaultTargetDataSource(defaultDs)并在determineCurrentLookupKey()最外層加try-catch捕獲所有異常并返回默認key同時記錄ERROR日志“Failed to determine data source key, fallback to default”。4.4 現(xiàn)象單元測試中Test方法能正確路由但集成測試SpringBootTest總是走默認庫原因Spring Boot Test默認使用Mockito代理而DataSourceContextHolder的ThreadLocal在線程切換如Async、CompletableFuture時未做透傳導致異步線程丟失上下文。解決在測試配置中注入TaskExecutorBean并重寫execute()方法在提交任務前拷貝ThreadLocalBean public TaskExecutor taskExecutor() { ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setBeanName(testTaskExecutor); executor.setTaskDecorator(runnable - () - { // 拷貝主線程的DataSource上下文 DataSourceKey key DataSourceContextHolder.getForcedKey(); if (key ! null) { DataSourceContextHolder.setForcedKey(key); } try { runnable.run(); } finally { DataSourceContextHolder.reset(); } }); return executor; }4.5 現(xiàn)象分庫后SELECT COUNT(*) FROM order_info返回結果比單庫少一半原因該SQL未帶WHERE條件ShardAlgorithm無法提取分片鍵路由引擎按默認策略如READ隨機選一個庫執(zhí)行而非廣播到所有分片庫。解決對這類全量聚合SQL必須顯式使用TargetDataSource(broadcast)注解并在BroadcastRouter中實現(xiàn)遍歷所有匹配分片庫分別執(zhí)行SQL再合并結果集。注意COUNT(*)需用SUM()聚合GROUP BY需用UNION ALL去重。5. 運行與驗證從啟動到壓測五步確認路由完全受控光跑通不算成功必須驗證每條SQL都落在預期庫上。本項目提供了一套開箱即用的驗證流水線不依賴外部工具全部基于Spring Boot Actuator和自研Endpoint實現(xiàn)。5.1 啟動檢查確認數(shù)據(jù)源已正確加載啟動應用后訪問GET /actuator/datasource/info返回應包含所有配置的數(shù)據(jù)源及其狀態(tài){ status: UP, details: { master: {status:UP,active:0,idle:5}, slave-01: {status:UP,active:0,idle:3}, shard-01: {status:UP,active:0,idle:2}, shard-02: {status:UP,active:0,idle:2} } }若某個數(shù)據(jù)源狀態(tài)為DOWN檢查日志中是否有HikariPool-1 - Failed to validate connection常見原因是密碼錯誤或網(wǎng)絡不通。5.2 路由追蹤開啟MDC日志實時觀察key生成過程在logback-spring.xml中配置pattern確保輸出%X{ds_key}和%X{shard_id}appender nameCONSOLE classch.qos.logback.core.ConsoleAppender encoder pattern%d{HH:mm:ss.SSS} [%thread] %-5level [%X{ds_key}|%X{shard_id}] %logger{36} - %msg%n/pattern /encoder /appender發(fā)起一次請求日志應類似14:22:05.123 [http-nio-8080-exec-1] DEBUG [WRITE:shard_03:ds_master_v2|shard_03] c.e.o.s.OrderServiceImpl - getOrder called with orderId1001, userId12345 14:22:05.125 [http-nio-8080-exec-1] DEBUG [WRITE:shard_03:ds_master_v2|shard_03] c.e.o.m.OrderMapper.selectById - Preparing: SELECT * FROM order_info WHERE id ?若ds_key為空或與預期不符說明DataSourceContextHolder.setForcedKey()未被調用。5.3 SQL攔截驗證確認MyBatis執(zhí)行的確實是目標庫啟用MyBatis日志logging.level.org.apache.ibatisDEBUG觀察JDBC Connection日志Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession7a8b9c0d] was not registered for synchronization because synchronization is not active JDBC Connection [HikariProxyConnection123456789 wrapping com.mysql.cj.jdbc.ConnectionImpl987654321] will not be managed by Spring Preparing: SELECT * FROM order_info WHERE id ?關鍵看wrapping com.mysql.cj.jdbc.ConnectionImplxxxxx后的hashcode對比/actuator/datasource/pools返回的各數(shù)據(jù)源連接池中活躍連接的hashcode——必須一致才證明路由正確。5.4 壓測驗證用JMeter模擬混合流量觀測分片傾斜度編寫JMeter腳本按比例發(fā)送請求70%請求userId在1~100000區(qū)間應均勻分布到4個shard20%請求userId固定為12345應100%落到shard_0310%請求無userId參數(shù)應走默認master庫。壓測10分鐘后執(zhí)行-- 查看各分片庫的order_info表行數(shù) SELECT COUNT(*) FROM order_info; -- 在shard-01庫執(zhí)行 SELECT COUNT(*) FROM order_info; -- 在shard-02庫執(zhí)行 ...理想結果shard-01 ~ shard-04行數(shù)比值接近70%:70%:70%:70%而非出現(xiàn)shard-01: 10w, shard-02: 500的嚴重傾斜。5.5 故障注入測試模擬單庫宕機驗證降級能力手動停掉shard-02數(shù)據(jù)庫容器然后發(fā)送原本應路由到shard-02的請求如userId20001。預期行為若配置spring.datasource.dynamic.strictfalse應自動fallback到primary庫master并記錄WARN日志“Shard shard-02 unavailable, fallback to primary”若配置stricttrue應拋出DataSourceUnavailableException由上層業(yè)務捕獲并返回友好提示。此測試驗證了系統(tǒng)在部分分片不可用時的容錯能力而非直接雪崩。6. 二次開發(fā)與擴展如何安全地接入新業(yè)務、新分片規(guī)則、新數(shù)據(jù)源類型這個項目的設計初衷就是“可演進”而不是一次性交付。我把它用在模擬項目X的三個迭代周期中每次新增需求都只改3個類以內從未動過核心路由引擎。以下是我沉淀下來的四條改造鐵律以及對應的具體操作模板。6.1 接入新業(yè)務表三步完成分片配置假設要為新表user_behavior_log添加分庫分表分片鍵為user_id按mod8分到8個歷史庫Step 1擴展YAML配置在application-prod.yml中追加shard: rules: - table: user_behavior_log key: user_id algorithm: mod8 sources: [shard-log-01, shard-log-02, ..., shard-log-08] spring: datasource: dynamic: datasource: shard-log-01: url: jdbc:mysql://db-log-01:3306/log_db_01?... # ... 共8個數(shù)據(jù)源定義Step 2實現(xiàn)新分片算法Component public class Mod8ShardAlgorithm implements ShardAlgorithm { Override public String calculateShardId(Object shardValue) { long value Math.abs(((Number) shardValue).longValue()); int index (int) (value % 8); return shard-log- String.format(%02d, index 1); } }Step 3在Mapper接口上聲明分片意圖Mapper public interface UserBehaviorLogMapper { Insert(INSERT INTO user_behavior_log (...) VALUES (...)) TargetDataSource(shard-log) // ← 告訴路由引擎此Mapper只走shard-log系列庫 void insert(UserBehaviorLog record); }注意TargetDataSource(shard-log)中的值必須與YAML中sources列表的前綴一致路由引擎會自動匹配shard-log-01等具體實例。6.2 支持新數(shù)據(jù)源類型無縫接入PostgreSQL分片庫項目當前只支持MySQL但某模塊需對接PostgreSQL歷史庫。無需修改DynamicRoutingDataSource只需新增PostgreSqlDataSourceFactory繼承AbstractDataSourceFactory重寫createDataSource()方法在DynamicDataSourceFactory.refresh()中根據(jù)driver-class-name自動選擇工廠類PostgreSQL分片算法與MySQL完全復用Mod8ShardAlgorithm不依賴數(shù)據(jù)庫特性。public class PostgreSqlDataSourceFactory extends AbstractDataSourceFactory { Override protected DataSource createDataSource(DataSourceProperties props) { HikariConfig config new HikariConfig(); config.setJdbcUrl(props.getUrl()); config.setUsername(props.getUsername()); config.setPassword(props.getPassword()); config.setDriverClassName(org.postgresql.Driver); // PostgreSQL特有參數(shù) config.addDataSourceProperty(reWriteBatchedInserts, true); return new HikariDataSource(config); } }6.3 審計增強記錄每次路由決策的完整證據(jù)鏈生產環(huán)境需要審計“某次訂單查詢?yōu)楹巫吡藄hard-03”項目預留了RouteTrace擴展點。啟用方式// 在Controller中 GetMapping(/order/{id}) public OrderVO getOrder(PathVariable Long id) { DataSourceContextHolder.enableRouteTrace(); // ← 開啟追蹤 return orderService.getOrder(id); }啟用后日志自動追加route_path字段[ds_keyREAD:shard_03:slave-01|shard_idshard_03|route_pathANNOTATION→CONTEXT→DEFAULT]其中ANNOTATION→CONTEXT→DEFAULT表示先檢查了TargetDataSource注解未找到再嘗試從參數(shù)提取shardContext成功最后未觸發(fā)默認策略。6.4 灰度發(fā)布支持按用戶ID范圍動態(tài)切流上線新分片庫shard-05時希望先讓userId在1000000~1000010之間的用戶走新庫其余走老庫。只需擴展ShardAlgorithmComponent public class GrayShardAlgorithm implements ShardAlgorithm { Override public String calculateShardId(Object shardValue) { long userId ((Number) shardValue).longValue(); if (userId 1_000_000 userId 1_000_010) { return shard-05; // 灰度庫 } // 兜底走原有mod4算法 return new Mod4ShardAlgorithm().calculateShardId(shardValue); } }然后在YAML中將user_id表的algorithm改為gray即可?;叶冉Y束后刪掉這段if邏輯全程無需改SQL、不發(fā)版。從那以后我每次接入新業(yè)務表都強制走一遍這四步模板配YAML → 寫算法 → 打注解 → 壓測驗證。哪怕凌晨三點上線只要日志里看到[ds_keyWRITE:shard_05:ds_master_v3]心里就踏實。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
综合久久欧美| A 在线网址| 熟妇xxxxx性春色| 国产女同视频在线播放| 欧美亚洲激情小说| 91欧洲入口| 乱论91| 啪啪视频mP4| 午夜亚洲| 色色99| 在线小说视频一区| 免费看黄视频亚洲网站| 久久最新免费视频23| 中文字幕伊人| 亚洲蜜乳av| 91在线|亚| 欧美色图91| 久操不卡视频| 日本黄色精品| 伊人综合色网| 91激情| 在线 制服丝袜中出 人妻| 人妻天天爽夜夜爽2| 97国产人人| 国产67194| 208天天久久九九九| 人人做天天爱| 欧美精品激情| 久久色激情一区二区三区| 亚洲色棕合| 免费精品人妻一区二区三| 亚洲瓯美色图| 51国产午夜精品视频| 欧美日韩人人早| 欧美性爱18观看| 91粉嫩萝控精品福利网站_精品影音先锋国| 精品小视频在线| 波多野结衣先锋影音| 欧美一级专区免费大片 | 国产成人网站在线观看| 久久在肏| 亚洲色欲一区二区三区| 九九九九九九亚洲| 97在线视频观看| 男人的天堂不卡一区二区| 肥臀熟女福利视频一区二区| 亚欧成人综合影院| 97AV在线观看| 97资源欧美| 免费簧片在线观看| 欧日韩一二三f区| 99久久久99久久91熟女| 日本一区二区三区免费观看| 操死我了啊啊啊| 中文字幕亚洲在线一区| 野狼福利社区| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 免费操逼91| 97人人爱人人做人人乐| 肉嘟嘟www视频在线观看高清| 精品二区三四区五电影 | 国产精品一区二区麻豆| 欧美.亚洲.另类.丝袜.制服.诱惑| 中文字幕99999| 在线97在线| 国产性感骚丝袜在线| 天天干天天操天天拍| 2024年最新色情网站在线观看| 国产成自自拍在线观看| 欧美做爰无码A片视频| 青青草一区二区高清无码视频 | 亚洲中文字幕妇伦久久| 欧美精品日韩一区二区| 国产精品自在自拍视频| 国产精品视频| 超碰色男人操熟女| 欧美综合综合| 少妇与黑人高潮在线| 亚州操逼图| 羞涩视频| 人妻少妇精品无码专区二区密桃| 秋霞曰韩R级| 麻豆亚洲AV成人无码久久精品| 野狼激情网| 中文字幕国产| 久久无码一区二区二三区性色| 精久久久| 欧美国产一区二区三区麻豆传媒| 美日韩成人| 日韩操啪| 国产99999| 少妇精品久久久| 久久久国产亚洲精品系列| 特色a在线上| 日本黄色天堂| 97超碰中文字幕| 亚洲精品一二三四区| 婷婷久久网| 欧美日韩日产免费网站看| 天堂综合| 97色涩| 国产福利第一视频| 丁香六月东京热| 日天天九九天堂666| 九九热超碰97亚洲最新香蕉| 久久黄黄| 秋霞一级视频在线观看免费| 日韩欧美中文日韩欧美色| 97香蕉网| 精品999999| 999久久久国产精品| 国产精品午夜福利| 妇女乱色二区| 另类欧美色| 91老妇女| 99热精品在线观看| 丰满熟女一区二区三区在线播放| 东京热毛片177b2viP| 老熟乱一区二区三区四区| 色偷偷男人的天堂麻豆| 久久有码视频| 啊啊啊免费视频| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 人人弄人人摸| 亚洲色婷婷久久91| 国产精品无套内谢| 久久9视频| 中文字幕在线日亚洲9| 强奸乱伦动态污图免费| 99久热精品99re6热| 水多多映视AV| 亚洲av青草久久一区二区| 少妇无码999| 国产成人在线观看网址| 欧亚无码视频| 欧洲在线性爱视频| 亚洲国产一区二区入口| 五月天激情四射| 蜜臀av一区二区三区免费观看| 十八禁啪啦拍视频无遮挡| 91大学精品激情戏| 成人女人国产| 久操视频免费在线观看| 四季av一区二区凹凸精品小说| 蜜乳中文字幕a在线| 美女诱惑一区| 日韩精品一区二区日韩| 欧亚综合一卡二卡中文字幕| 91老司机在线视频免费观看| 欧美亚州色的图| 四虎影视国产精品| 久久精品人人做人人看| 日本三级R| 开心五月激情网| 抽插爽| 精品女同一区| 亚洲图片欧美色| 思思视频免费看网站| 青草青草久热| 久久久亚洲精品电影免费看| 欧美色交| 国产毛片片精品天天看视频| 51一区二区三区| 婷婷色在线| 69精品人人人人| 插B在线观看| 国产 日韩,欧美 自拍| 熟女精品va中文字幕| 日韩精品区二区三区不卡| 亚洲黄a三级三级三级看三级| 2019亚洲男人天堂| 国产精品一区av在线| 国产高清无码一区二区三区四区皇冠| 亚洲欧美综合色| 91色欧美| 国产又大又硬又长又粗| 人妻素股| 黄片国产精品一区二区| 婷婷五月天基地| 日韩成年人性爱视频| 人人操,人人插| 中日韩欧美精品无码AⅤ一区二区| 九久9热| 蜜桃臀一区二区aV| 国产毛片久久久久久久| 丝袜美腿诱惑亚洲欧美视频在线观看 | 91精品人妻一区二区三区蜜臀| 国产精品久久久久久久无码AV| 亚洲色综合| 91麻豆一二三区| 人妻二区| 热热色色综合| 人人摸人人干人人拍97| 97国产天堂岛| 色婷婷六月丁香七月婷婷| 亚洲少妇喷视频看| 97天天摸天天爽| 国产超碰| KK色在线影院| 色色五月丁香| www欧美91| 91被操| 夜夜夜久久| 欧美激情精品| 天天色综合图片| 国产激情在线| 99色色网| 亚洲精品97| 欧美综合骚| 一本大道综合伊人精品热热| 亚洲久久久久| 欧美中文字幕精品人妻| 天天肏夜夜肏| 花花AV导航| 日韩啪啪网| 九九九九亚洲| 亚洲九九夜夜| 久久久久久九九九九| 久久曰曰| 天美传媒AV在线播放| 久热久一区二区三区| 欧美天天综合网| 乱伦av国产| 国产精品对白自产拍| 亚洲免费人妻在| 一本久久久精品| 色婷网| 美女91网| 99999精品视频| 久久久久九九九九| 91色图片| 久久久久久AⅤ无码免费肉站| 亚洲少妇视频| 中文字幕片| 国产女同视频在线播放| 精人妻无码一区二区三区伊人直播| 97人人操人人摸人人爱| 婷婷午夜清品久久久久久久性色视频观| 视频分类 国内精品| 久久加勒比| 九九国产| 3P乱轮视频| 精品国产乱码久久久久久蜜臀| 偷拍 亚洲| 欧美日韩国产一区二区小黄片大全| 色超碰综合| 熟女六十路| 啊啊啊免费| 欧美亚洲国产自久久| 一本久久精品中文字| jizzjizz欧美| 强乱老妇中文字幕| 嗯嗯啊啊好疼| 久久综合99| 国产一级舔足在线观看| 亚洲脚交| 免费的av网| 精品久久无码午夜福利| 国语精品对白| 桃色人妻在线视频| 97天天搞在线| 老司机深夜影院18未满| 久久久久久九九九| 亚洲天堂少妇| 97 九色| 九月丁香| 岛国大片在线观看网站入口| 国产强奸无码乱伦| 国产一区二区精品在线视频| 日韩精品区二区三区不卡| 国产精品黑人一区二区三区| 粉嫩av一区二区三区天美传媒 | 午夜男人的天堂| 久久一区无码| 天天综合色| 99久久久无码精品国产人| 97鸡把在线视频| 国产精品久久久久久久久久久久久久久 | 日韩特一级久久| 97高清啪啪| 九月丁香综合网| 搡老女人911熟妇老熟女| 欧美第五页| 媚薬在线视频麻豆| 欧亚久久偷拍视频| 久久久久久亚洲精品中文字幕人妻| 久久一区无码| 欧美色图在线视频少妇| 久草毛片电影怡| 在线观看AV不卡| 国产67194| 91爆操视频| 精品九九国产无码| 高清成年美女黄网站免费大全| 美女诱惑久久| 亚洲欧美97| 天天欧美| 性色AV网站| 日韩精品午夜操呦呦不卡影院| 欧美熟女丝袜| 伊人 俄罗斯 a v| 四季AV一区二区凹凸精品小说| 国产有码一区| 自拍盗摄一区| 日本精品性生活久久久| 高跟伊人julia ann| 91欧美长吊| 欧洲Au麻豆| 久久久精品国产亚洲伊人| 91色艳| 国产久久一区二区午夜| WWW4虎| 好看的91视频| 丁香婷婷激情五月天无毒不卡| 操b网站亚洲无码| 国产伦精品免编号公布| 色妹子A V| 97色诱| 色婷婷综合久久中文字幕雪峰| 嗯嗯啊啊操死我| 亚洲精品一二三四区| 肉丝网站91| 中文字幕91综合| 一区中文字幕二区日韩| 无码九九| 丝袜AV一区二区三区| 亚州欧美在线| 岛国毛片在线观看免费| 国产不卡免费在线视频| 思思热在线| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产精品无码论坛| 亚州精品一区二区三区香中文字幕在线| 麻豆国产尤物AV| 欧美精品999| 色婷婷综合久久中文字幕雪峰| 国产不卡中文字幕免费avi| 英伦大奶子熟妇吊带| 久久久久网站-538在线视频-欧美永久乱码 | 不卡av在线中文字幕| 看一级特黄a大一片| 激情五月综合| 男人天堂综合| julia国产在线| 日本精品一区二区不卡| 久久精品福利影院| 不卡免费av在线播放| 精品视频123区小说区| 亚洲欧美日产国产91毛片| 夜夜嗨老熟女AV一区二区三区| 久久青青草在线视频| 少妇一区二区三区精选| 激情AV| 欧美综合制服在线| 人人色97| 成人AV素股で擦久久| 伊人精品国产| 日本媚薬中文字幕在线| 激情小说成人日本无码一| 夜夜嗨一区二区| 91原创在线观看| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 人看人人摸人人操| av操操不卡| 精品综合久久久久久97| 欧美人人曰人人操人人射射| 大香蕉97久久| 国语精品对白| 岛国片在线观看视频亚洲| 午夜性| 国产老女人久久毛| www.99视频| 色综合20p| 国产成人99久久亚洲综合| 国产欧美日韩在线不卡第一页| 久久国产对白激情浪潮 | 神马午夜久久久| 中文字幕乱妇免费视频| 91精品国产高清久久久久久,亚洲成人 | 天天干天天燥| 啊好大好舒服| 欧洲视频在线| 大香蕉宗合网在线| 热99re69精品8在线播放| 中文字幕jul-617人妻熟女| 人妻社区男人天堂| 亚洲无码超碰免费| 青青草视频爽一爽| 乱伦熟女论坛| 99久久综合| 天天做天天爱夜夜爽毛片试看| 中国国国产一级特黄毛片| 欧美大片天天看| 免费国产电影一区二区| 久草婷婷| 欧美gv在线观看| 青青网三级视频| 97欧美日韩综合| 天天干天天狼在线视频| 天天操熟妇| 在线视频日韩欧美国产| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 无码最新| 好舒服视频| av在线观看不卡网站| 九一综合精品视品av| 亚洲伊人久久综合97| 殴美,日韩国产伦精品| 精品九九九九| yiren97| 色欲三区| 91网站在线播放| 一区三区啪啪| 天天综合-91入口| 人妻精品视频一区二区| 国产精品一区二区校花| 一二视频神马久久传媒| 国产一区二区啪啪视频| juliaann丝袜| 一区二区三区日韩欧美| 成人一级性爱| 国产有码一区| 日韩在线观看字幕精品| 国产亚洲深夜激情| 中国的操老妇女| 91干熟女| 国产91 丝袜在线播放00-百度| 亚洲熟妇丝袜在线观看| 亚洲图片婷婷五月天| 少好三P| 日韩无码专区| 中文字幕蜜乳av| 天天操天天日天天干| 国产精品熟女一区二区三区| 日本免费一区二| 国产成年女人免费视频播放a| 久草资源在线视频官方总站日韩丝袜美腿| 翔田千里AⅤHD无码| 欧美与日韩97| 亚洲性爱高潮影院| 国产成人综合在线播放| 一级AAA片一区二区三区| 91精品久久久久久综合五月天| 中文一区二区三区影院| 色偷偷超碰亚洲| 男女打扑克高清网站| 国产a片操逼| 中文字幕天天操| 69XX一中文字幕人妻91| 天天干夜夜| 97色色色综合网站| 天天日夜夜爽| 澳门人妻久久| aV中文麻| 屌妞视频久久久久久久久久久久| 五月婷婷色| 综合av社区| 久久久久99精品成人片蜜臀| 蜜桃一区二区三区| 精品中文字幕一区二区l - 百度| 丁香色狠狠色综合久久小说| 亚洲区小说| 久操在97| 久久欧洲| 中文字幕少妇色| av大香蕉| 日亚韩精品视频二区三| 操逼逼中文字幕| 无码一区免费在线不卡| 日本欧美不卡| 九九免费影片| 久草线上视频免费看| 一区中文字幕二区日韩| 麻豆人妻精品一区二区| 精品色色| 99久re热视频精品98| 欧美极度丰满熟妇hd| 国产第12页| 中文字幕久久婷婷丁香五月天| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 国产传媒午夜理伦精品| JuliaAnn丝袜熟女系列| 中文子幕一二三| 婷婷五月天无码 | 高清无码一区二区三区| 啊啊啊久久久视频| 欧美综合站| 亚洲四虎熟女精品| www久久99| 91在线精品| 性爱乱伦网址| 欧美亚洲日本激情在线| 97碰在线视频| 国产精品视频精品一二| 国产精点久久久成人| 国产亚洲色婷婷久久99精品91葵花宝典 | 大香网伊人久久综合网eew| 久久超碰亚洲人| 97在线国产精品| 91亚·色| 天美一二三在线观看Av| 97超碰无码网| 骚人妻少妇视频| 亚洲资源网| 亚洲资源吧| 欧美色综合网| 秋霞色色影院| 日韩黄片视频试看| 97欧美性爱| 六月丁香啪啪| 久久国产精品一级二级三级| 日韩国产品视频中文字| 大香蕉欧美日韩| 九九av| 亚洲天堂男| 国产 日韩,欧美 自拍| 五月丁香六月综合缴清无码| 日产成人久久| 人人干人人操人人..com| 熟女人妇一区二区三区| 丁香九月激情啪| 蜜桃臀av在线观看| 天天舔九色婷婷| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 干B| 久久爽爽精品| 九九九久久久久| 职场同事知名国产国产精品久久欧美日韩 | 在线岛国新天堂8| 国产精品视频白浆免费| 欧美夜夜狠| 日韩精品操少妇| 日本中文字幕熟妇| yiqicaoav| 午夜福利精品| 色综合尤物| 欧美色图片91| 日韩人人精品| 在线观看一级α片刺激高潮视频| 午夜寂寞欧美| 超碰97男人| 中文字幕精品三级久久久| 极品白嫩美少妇在地板上位骑射淫水泛滥| www亚洲免费| 久热这里| 老女人91| 视频国产欧美在线播放| 久久香蕉国产线看观看猫咪av| 超碰亚洲欧美日韩无| 久久精品无码不卡| 亚洲一区在线观看欧洲| 日产狠狠干| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 精品一二三区女同| 色吧91| 亚洲色图欧美视频| 97热视频在线观看| 乱伦一二三区| 97视频观看| 久久精品国产97欧美精品亚洲| 欧美夜夜狠| 2017天天透天天通天天擦| 亚洲加勒比| 婷婷亚洲综合| 日本精品九九九| 国产一区二区三三视频| 性色一线| 97超碰中文在线| 9久久精品| 一二三四视频在线社区中文字幕| 18禁无码永久免费无限制| caorenqi shipin| 一二区在线观看视频| 人人操人人插人人摸人人干| 啊啊啊啊啊啊啊好爽不要| 国产高清自拍| 91女网站| av亚欧| 久久最新免费视频23| 夜夜性| 久久人妻视频网| 极品少妇久久久| 久久久久国产无av| 超碰97日韩| 免费A V在线| 人妻熟妇一区二区三区| www.色操逼| 中文字幕二区| 亚洲AV永久无码一区仙野| 欧亚日韩综合精品国产| 操操逼操操逼操操逼逼| 精品国产久久乱码| 天天弄天天操| 日韩成人人妻网站| 成人AV在线电影| 欧美亚洲天天| 嗯啊免费视频| 国产粉嫩蜜臀av一区二区三区 | 亚洲精品国产熟女| 国产精品密臀网在线观看| 亚洲国产婷婷在线播放| 长久操视频| 久久人人爽人人爽人人片Ⅴ| 欧美情色亚洲| 九九热九九热| 久久久一区二区三区三州| 亚州色图欧美| 成人三级片无码| 久久九九97| 二区熟妇韩日| 青青操综合网| 欧美天堂在线| 丁香五月天婷婷姐| 国产不卡免费在线视频| 九七超碰人人乐| 人妻在线臀日韩| 中文人妻av高清一区| 久欲AV| 亚洲天堂男人在线| Av手机版天堂网| 日日干夜夜欢| 97色碰| 自拍偷拍第26| 欧亚日本情色| 蜜臀亚洲中文| 人、人、摸,人、人、草| 东京热毛片177b2viP| 射欧美综合| 粉嫩绯色AV一区二区在线| 亚洲国产精品无石码久久| 欧美韩国你懂得在线| 国产一级αv免费看片| 91这里只有精品| 东北操逼| 粉嫩国产精品久久久| 综合久久六月久久婷婷| 国产白丝网站| 97爱b| 成片免费播放| 强奸国产精品视频| 一区二区三区四区理论片| 中文字幕文字幕无码一区二区三区电影99| jk白丝没脱就开始啪啪| 国产毛片毛片4p懂色| 中文字幕一区二区无码成人| 欧美亚州综合图片| 亚洲丝袜二区| 日韩乱插| 一级aaaaa欧美中文字幕录像片| 国产97亚洲| 加勒比东京热五月天天堂网| 粉嫩在线一区二区懂色| 超碰无码加勒比| 天天综合网~91| 超碰社区97| 熟妇高潮一区二| 亚洲国产剧情少妇激情| 色五月综合网| 黄片不用下载在线观看| 欧美亚洲一级在线观看| juliaann丝袜| 91色欧美| 少妇久久久免费| 国产亚洲精品美女| 91新在线欧美| 中文字幕丝袜人妻| 久久久久密| 96AV精品| 床上啊啊啊一区二区三区| 日韩视频啪啪| 国产 热久久久久国产精品| 国产无码精品高清| 国产精品久久久吖| 中文一区二区三区影院| AV女优男人的天堂| 欧美九九九| 偷拍新久久| 啊啊啊啊,啊啊好多水| 蜜臀无码一区二区| 精品中文一区二区| 学生妹天天看| 怡红院亚洲怡春院av| 亚洲91网站| 97超碰总站| 天天舔天天日天天射| 亚洲成人色情五月天丁香花| 亚洲码和欧洲精品激情系列| 宗合情欲网| 67914在线精品观看| 精品美女在线视频| 日han少妇无码| 大香蕉在线视频重口味毛片在线| 麻豆人妻少妇在线免费观看| 亚洲色图国产另类| 午夜后入| 无码人妻丰满熟妇区毛片| 久久久久久久久国产| 黄站在线免费观看| 天天搞欧美| 少妇高潮一区二区三区在线| 天天操妹子| 日韩中文字墓| 欧美日韩另类在线播放| 综合免费无码中文| 久操精品网| 国产92麻豆天美精品色欲5| 在线无码操| 国产 三级自拍| 超碰免费人人| 91黑丝在线播放| 欧美性爱97超碰| 中文字暮97| 亚洲另类色图片| 亚洲综合码| 99在线啪| 97亚洲自在精品在线观看| 亚洲色图欧美激情| 中文字幕乱码人妻二区三区| 免费看欧美美女黄色大片| 欧美一区二区观看在线| AV色图| 超碰人妻久久人妻中文97| 强奸少妇AV导航网| 中文字幕乱码在线| 蜜乳性色无码专日粉嫩骚逼AV| 色哟哟1区2区| 亚洲精品三| 白丝av| 小明看看网址| 一起草AV| 日本性爱欧美性爱| 久久有码视频| 亚洲AV不卡在线观看尤物| 欧美成人一级免费电影| 亚洲一区日韩精品| 久久少妇人妻| 欧美色棕合| 亚洲精品三区在线观看| 一本色道熟妇| 性性欧美| 99热综合在线| 精品国产人成在线| 91社区伊人| 激情久久日韩精品中文字幕麻豆| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 最近2019中文字幕国语免费版| 91精品久久久久| 丁香五月影院| 亚洲无吗在线视频| 中文字幕在线免费观看 | 亚洲欧美国产va在线| 亚洲欧美校园另类春色| 国产精品久久久久亚洲av| 日本精品五区| 国产三级中文字幕粉嫩 | 人妻无一区二区三区| 久久久久久久久9| 九九热精彩视频| 天美国产精品| 99在线观看| 亚洲欧洲精品视频发布| 黄色免费网| 色爱天堂| 亚洲人精品久久久| 天天操人人操骚逼网站| 亚洲天堂另类小说男人| 成人丁香五月| 国产精品极品美女视频| 国产成久久综合片| 久久少妇| 99re黄| 99国内熟女露脸视频| 国产免费永久精品无码| 久操凹凸视频| www久久国产精品| 日日爱99| 外国免费性情大片| 密臀在线视频| 在线小说视频一区| 大香蕉92| 国桃视频产巨乳精品一区二区在线| 91久久久视| 啊好大好舒服| 不卡超碰护士AV在线免费播放| 久草视频分类在线| 天天日天天干天天整| 奇米四色影视777久久久| 高清在线不卡一区二区 视频| 国产97视频| 国产精品久久蜜乳av| 人人贴人人摸| 欧美大香蕉久| 亚洲97成人在线观看| 亚洲影院365| 粉嫩av在线| 一二三区操逼国产91| 丰满熟女一区二区三区在线播放| 操熟女91| 亚州性色| 国产激情视频一区区三区| 国产精品一区二区后入| 国产99999久久精品| 亚洲AV资源| 欧美日韩人人早| 西西美女视频网| 日日AV加勒比| 亚洲色图 综合| 少妇第一页| 亚洲天堂久| 一区二区不卡免费| 夜夜高潮夜夜爽夜夜爱爱一区| 日本免费二区三区| 国产精品伦理| 欧美在线天堂| 欧美人黑A片无码免视费| 美女裸体无遮挡永久免费观看网站| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 91黑丝在线| 久久久久九九九| 国产精品白丝在线播放| 大香蕉视频一二三区| 熟女五十路一区二区三| 91人妻中文| www.色综合| www.婷婷六月天| 英伦大奶子熟妇吊带| 久久亚洲不卡一区二区三区| 亚洲色图 图片| 久久后入制服| 97欧美在线| 性爱网站一区二区| 欧美人妻一区| 99精品网| 国产精品午夜成人福利| 情色五月天久久久| 久久噜| 久 久无码人妻AV| 国语对白露脸XXXXXX| 欧美成人A天堂片在线观看| 强奸乱伦麻豆| 欧美亚州手机在线| 久久最新视频免费观看| 国产中午字一暮区| 久久超碰网| 青娱乐亚洲自拍| 综合网色| 欧美白嫩在线放| 色哟哟av| а√天堂资源官网在线资源| 丝袜亚洲综合| 欧美久久人人网| 国产在线76页| 日韩天天本| 中欧人妻丝袜中文字幕| 亚洲欧美日韩免费电影| 大香蕉手机视频| 五月天色电影| 国产精品久久久亚洲第一牛牛_在线观看| 在线亚洲欧美| 操高情无码| 丰满欧美少妇| 久久亚洲日韩国产欧| 亚洲色图91| 欧美啪啪女女| 日韩激情视频| 综合欧美亚洲| 国产黄色av大片网站| 日韩三四五区| 蜜汁欧美| 日韩性爱1级片视频| 九九九九九九九精品视频| 亚洲精品欧洲精品| 搡老女人老熟女91老熟女综合网| 久久精品日韩| 91女人的网站| www.成人无码| 综合久久久久久久综合网| av天天在线观看| 大屁股熟女一区二区三区| 国产精品com| 亚洲精品视频在线| 麻豆天美在线喷水AV| 国产偷人伦激情在线观看| www.超碰在线| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 久久综合精品一区二区三区| 日本媚薬中文字幕在线| 熟女字幕| 天操老女人| 日韩九九九| 成人黑料社久久| 日韩八十路老熟女| 亚欧毛片基地国产毛片基地| 97精品人妻一二三四| 人妻少妇久久中文字幕一区二区 麻豆| 亚洲日韩成人性爱视频| surenchaopeng| 国产无码三级视频在线观看| 一区二区偷拍拍视频| 91色射| 国产精品麻豆视频网站| 人妻无码后入| 久久夜夜| 日韩女优中文字幕| 国产深喉视频一区二区| 99re在线观看| 夜夜春夜夜操| 四虎影院成年人片| 色男人色天堂东京热| 秋霞网—男女啪啪亚洲免费体验区 | 国产无码精品久久久久久| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 久久手机视直播| 亚州性色| 成人电影一区| 国产午夜精品一区二区三区牛牛| 第四色奇米影视777| 免费人人搞97| 一级二级三级黑人无码| 久久人人爽爽爽人久久久| 日韩电影在线观看网址| 亚洲美乱| 九九综合九九综合| 偷窥自拍亚洲色图| 欧美性爽xyxOOOO| 国产精品 午夜福利| 国产家庭乱伦表演| 欧美熟女妇同| 午夜视频好爽啊| 精品视频久久区| 天堂69亚洲精品中文字| 夜夜操av亚洲一区二区| 秋霞 色色| 91伊人影视综合| 熟妇xxxxx性春色| 亚洲图片 激情小说| 狠狠色狠狠色狠狠五月| 亚洲鸥美色图| 7777欧美成是人在线观看| 中文字幕在线第二页| 成片免费播放| 老熟女91视频| 女同性恋一区二区三区精品视频| 五十路六十路七十路熟婆| 你草精品在线视频| 国产熟女免费观看久久| 熟女91网| 男人的天堂亚洲| 国产女大学生AV| 97日视频| 九九综合久久| 亚州性色| 夜夜騷av、一區二區| 亚洲乱伦图片视频| 人妻娇喘 激情视频| 亚洲精品丝袜-不卡成人免费……| 日韩性爱小视频| 久久草视频污视频| 全球成人中文在线| 97欧美精品| 少妇500双飞99| 日本高清一区二区在线| 久9爱经典视频| 亚洲图片 91| 乱伦图av| 嗯嗯啊啊啊好爽| 欧亚久久偷拍视频| 91精品无码人妻系列| 久久久久久久| 美女AV一区二区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 日韩国产乱子伦App| 日韩天天综合| 欧美婷婷久久| 亚洲福利中文字幕在线| 天久久久噜噜噜久久国产精品爽爽 | 夜夜骑操视频| 99爱在线视频| 国模无码人体一区二区三| 久久精品99久久久久久| 另类图片五月| 郑州宾馆老熟女露脸啪啪| 精品人妻一区二区三区不卡断| 97 超碰 人人做 人人爱| 久久99午夜精品一区人妻| 欧美第一页| 色妇91| 吻戏激情性巴克| 99精品视频在线观看免费| 美女诱惑久久| 四虎免费视频| www.婷婷六月天| 国产AV久久野战精品| 欧美日韩1234| 亚洲中亚日激情视频| 青青草吊丝| 久久曰曰| 欧美极品性爱天天射| 国产精品白领在线观看 | 亚洲男人的天堂va亚洲男人社| 欧美熟女妇同| 爱射综合| 五月丁香色情| 密乳无码| 超碰精品国产无码| 在线视频资源| 欧美性五月| 一本久久精品中文字| 美女尤物福利视频| 人妻人人操| 芊芊操逼视频无码| 欧美日韩插逼视频| 国产精品扒开腿做爽爽爽视频| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 超碰日韩美妻| 色噜噜婷婷| ?亚洲伊人伊成久久人综合网| 91东京热男人的天堂| 清纯唯美亚洲综合| 97亚洲色图| 激情人妻另类| 成人A片男人的天堂| 97色插| 啪啪啪大香蕉| 日本黄 R色 成 人网站| 操逼片中文| www亚洲免费| 综合av社区| 高颜值美女口爆高潮浪叫| 国产第二页| 欧美 日韩 婷婷 五月| 夫妻四区五区六区| 亚洲 图片 综合91| 日本精品一区三区| 噜噜噜狠狠色综合| 99久久婷婷| 另类小色呦| 久久精视频美日韩在线视频| 中文字幕一区二区韩| 日韩av免费一级电影| 色呦呦国产精品免费看| 97色欧洲| 日韩精品一区二区人人人| 亚州黄站| 久久久999国产| 亚洲狠狠入| 传媒在线观看一区二区三区| 另类老少妇| www.人人摸在线视频| 另类老少妇| 青女偷拍网| 亚洲男人天堂网站| 97资源亚洲| 啊v在线观看视频| 国产强奸乱伦第1页| 国产精品白丝| 日韩性爱啪啪视频| 欧美AB在线| 9久热| a网站免费观看| 国产 日韩 欧美 人妻 熟女 中文| 国产 码在线成人网站| 蜜桃久久一区二区三区| 亚洲少妇色| 99精品丰满人妻无| 欧美日韩资源在线| 熟妇精品juliaannAV| 欧美 综合 亚洲| 亚洲区小说| 久一区久久蜜桃| 三久久久四久久久久| 欧美亚洲自拍另类人妻| 日韩av免费一级电影| 做爱A级亚欧| 久操不卡视频| 婷婷色在线| 亚洲男人天堂网久久| 欧美 熟女 日韩| 国产乱青青草久久| 天美麻豆一区二区三区| 97亚洲精品| 91精品国产日韩欧美综合| 99久久精品国产高潮| 色综合五月天| 青青草原综合久久大伊人精品| 97天天弄| 久久青娱乐| 国产精品视频内谢女人| 中文字幕后石码四区五区| 中文字幕第9页萱萱影音先锋| 啪啪AV导航| 五月婷婷久久综合| 日韩精品三区四区| 91精品免费| 美女性91| 国产又黄又粗的视频| 亚洲欧美日韩夜夜| 亚洲AV无码天美传媒一区| 91在线/欧洲| www欧美91| 国产v片在线免费观看| 日本一级二级三级网站| 久久久18| 欧美视频第二页| 夜夜高潮夜夜爽夜夜爱爱一区| 日本欧美中文字幕| 肉嘟嘟www视频在线观看高清| 日本大片日本一区二区免费高清| 青青色综合| a啊啊啊啊啊啊啊啊一区二区| 亚洲黄色视频在线观看视频| 亚洲少妇中文字幕网址| 色婷婷aV一区二区三区麻豆综合| www被窝色com| 91爱啪| 亚洲色 国产 欧美 日韩| 亚洲日本加勒比在线| 日韩欧美偷拍美女视频| 夜夜精品视频| 久操视频资源站公开| 激情自拍 校园春色| 嫩草 我啊~嗯~在线| 一区二区乱码福利| 26uuu国产免费观看| 欧美激情 日韩精品| 99热销国产这里有精品| 欧美一级美片在线观看免费| 国产67194| 色香伊人| 成人毛片免费| 国产成人综合网| 超碰97导航| 操逼免费视频无码国产| 婷婷五月天影院| 乱操9999| 久操com| 久久啊哟| 美女性91| 日本亚洲熟女视频| 中文字幕超碰CAO| 精品日韩人妻视频| 在线 制服丝袜中出 人妻| 中文字幕日韩精品一区二区三区| 精品人妻中文字幕4399| 国产成人在线观看综合| baiduhicn.com。| 欧差乱伦二三| 国产欧美岛国精品一区| 亚洲乱色视频一区、二区在线| 俞拍久久国应视频| 自拍偷拍亚洲熟女妇人精品| 丝袜六区| 亚洲黄色电影| 国产精品无码论坛| 精品人妻一区二区乱码一区二区| 污色区网站| 人人乐大香蕉| 男女啊啊啊| 99超级碰免费视频| 自拍啪啪视频|