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

框架篇:分布式全局唯一ID

開發 架構 分布式
每一次HTTP請求,數據庫的事務的執行,我們追蹤代碼執行的過程中,需要一個唯一值和這些業務操作相關聯,對于單機的系統,可以用數據庫的自增ID或者時間戳加一個在本機遞增值,即可實現唯一值。

[[407823]]

本文轉載自微信公眾號「潛行前行」,作者cscw。轉載本文請聯系潛行前行公眾號。

前言

每一次HTTP請求,數據庫的事務的執行,我們追蹤代碼執行的過程中,需要一個唯一值和這些業務操作相關聯,對于單機的系統,可以用數據庫的自增ID或者時間戳加一個在本機遞增值,即可實現唯一值。但在分布式,又該如何實現唯一性的ID

  • 分布式ID的特性
  • 數據庫自增的ID
  • Redis分布式ID
  • Zookeeper分布式ID
  • 全局唯一UUID的優缺點
  • Twitter的雪花算法生成分布式ID

分布式ID的特性

  • 全局唯一性,必須性
  • 冪等性,如果是根據某些信息生成,則需要保障冪等性
  • 注意安全性,ID里隱藏一些信息,不能被猜出來,也不能被猜出來 ID 如何生成
  • 趨勢遞增性,在查詢比較時,可以判斷業務操作的時間順序

數據庫自增的ID

實現簡單,ID單調自增,數值類型查詢速度快,但是單點DB存在宕機風險,無法扛住高并發場景

  1. CREATE TABLE FLIGHT_ORDER ( 
  2.     id int(11) unsigned NOT NULL auto_increment, #自增ID 
  3.     PRIMARY KEY (id), 
  4. ) ENGINE=innodb; 

集群下如何保證數據庫ID的唯一性

  • 當隨著業務發展,服務拓展到多臺的大集群時,為了解決單點數據庫的壓力,數據庫也會相應的變成一個集群,那如何保證集群下數據庫ID的唯一性
  • 每一臺數據庫實例都設置一個起始值和增長步長

缺點:不利于后續擴容,如果后續需要擴容還需要人工介入修改 起始值和增長步長

Redis 分布式ID

假如系統有億萬的數據,依靠數據庫的自增ID在分表分庫之后,需要人工修改每臺數據庫實例,擴容性差,維護性不好

基于Redis INCR 命令生成分布式全局唯一ID

  • 服務向redis獲取Id,ID則和數據庫解耦,可以解決ID和分表分庫的問題,而且redis比數據庫性能更快,可以支撐集群服務并發獲取ID的需求
  • redis的INCR命令具備了 INCR AND GET 的原子操作;redis是單進程單線程架構,INCR 命令不會出現 ID 重復
  1. @Autowired 
  2. private StringRedisTemplate stringRedisTemplate; 
  3. private static final String ID_KEY = "id_good_order"
  4. public Long incrementId() { 
  5.     return stringRedisTemplate.opsForValue().increment(ID_KEY); 

HINCRBY 命令

  • 實際上,為了存儲序列號的更多相關信息,可以使用了 Redis 的 Hash 數據結構,Redis 同樣為 Hash 提供 HINCRBY 命令來實現 “INCR AND GET” 原子操作
  1. //KEY_NAME 是 hash結構對應的Key,FIELD_NAME 是hash結構的字段,INCR_BY_NUMBER是增量值 
  2. redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER  

宕機序列號恢復問題

  • redis是內存數據庫,在沒有開啟RDB或AOF持久化的情況下,一旦宕機ID數據將會有丟失。即便開啟了RDB持久化,由于最近一次快照時間和最新一條 HINCRBY 命令的時間有可能存在時間差,宕機后通過RDB快照恢復數據集會發生ID取值重復的情況
  • redis宕機序列號恢復方案
    • 利用關系型數據庫來記錄一個短時內 最大可取序列號 MAX_ID,從redis獲取ID時只能取小于 MAX_ID 的序列號
    • 為了計算最大值,需要一個定時任務定期計算ID消費速度RATE,存于redis。當客戶端取得 CUR_ID、RATE 和 MAX_ID,則根據 ID 消費速度 RATE 計算 CUR_ID 是否逼近MAX_ID,如果是則更新數據庫的MAX_ID

Zookeeper 分布式ID

  • 利用zookeeper的持久性有序節點,可以實現自增的分布式ID,而且zookeeper是個高可用的集群服務,提交成功的消息具有持久性,因此不怕機器宕機問題,或者單機問題
  1. <dependency> 
  2.     <groupId>org.apache.curator</groupId> 
  3.     <artifactId>curator-framework</artifactId> 
  4.     <version>4.2.0</version> 
  5. </dependency> 
  6. <dependency> 
  7.     <groupId>org.apache.curator</groupId> 
  8.     <artifactId>curator-recipes</artifactId> 
  9.     <version>4.2.0</version> 
  10. </dependency> 

 

  • 示例
  1. RetryPolicy retryPolicy = new ExponentialBackoffRetry(500, 3); 
  2. CuratorFramework client = CuratorFrameworkFactory.builder() 
  3.       .connectString("localhost:2181"
  4.       .connectionTimeoutMs(5000) 
  5.       .sessionTimeoutMs(5000) 
  6.       .retryPolicy(retryPolicy) 
  7.       .build(); 
  8. client.start();   
  9. String sequenceName = "root/sequence/distributedId"
  10. DistributedAtomicLong  distAtomicLong = new DistributedAtomicLong(client, sequenceName, retryPolicy); 
  11. //使用DistributedAtomicLong生成自增序列 
  12. public Long sequence() throws Exception { 
  13.     AtomicValue<Long> sequence = this.distAtomicLong.increment(); 
  14.     if (sequence.succeeded()) { 
  15.         return sequence.postValue(); 
  16.     } else { 
  17.         return null
  18.     } 

UUID的優缺點

  • 基于數據庫,redis,zookeeper的分布式ID都高度依賴一個外部服務,對于某些場景,假如不存在這些外部服務又該怎么生成分布式的ID
  • JDK里自帶一個唯一性的ID的生成器,具有全球唯一性,這就是UUID,不過它是串無意義的字符串,存儲性能差,查詢也很耗時,對于訂單系統,不適合作為唯一ID,常見優化方案為「轉化為兩個uint64整數存儲」或者 「折半存儲」(折半后不能保證唯一性)
  • 但對于日志系統,或只是為了作為數據里可以唯一識別序列號的關聯屬性時,可以用UUID
  1. String uuid = UUID.randomUUID().toString().replaceAll("-",""); 

Twitter 的雪花算法生成分布式ID

  • 和UUID一樣,雪花算法并不依賴外部服務
  • 雪花算法是 Twitter 公司內部分布式項目采用的ID生成算法,廣受國內公司好評。不依賴第三方服務,效率高

Snowflake ID組成結構:正數位(占1比特)+ 時間戳(占41比特)+ 機器ID(占5比特)+ 數據中心(占5比特)+ 自增值(占12比特),總共64比特組成的一個Long類型。

1:第一個bit位(1bit):Java中long的最高位是符號位代表正負,正數是0,負數是1,一般生成ID都為正數,所以默認為0。

2:時間戳部分(41bit):毫秒級的時間,不建議存當前時間戳,而是用(當前時間戳 - 固定開始時間戳)的差值,可以使產生的ID從更小的值開始

3:工作機器id(10bit):也被叫做workId,這個可以靈活配置,機房或者機器號組合都可以。

4:序列號部分(12bit),自增值支持同一毫秒內同一個節點可以生成4096個ID

  1. //Twitter的SnowFlake算法,使用SnowFlake算法生成一個整數 
  2. public class SnowFlakeShortUrl { 
  3.     //起始的時間戳 
  4.     static long START_TIMESTAMP = 1624698370256L; 
  5.     //每一部分占用的位數 
  6.     static long SEQUENCE_BIT = 12;   //序列號占用的位數 
  7.     static long MACHINE_BIT = 5;     //機器標識占用的位數 
  8.     static long DATA_CENTER_BIT = 5; //數據中心占用的位數 
  9.     //每一部分的最大值 
  10.     static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT); 
  11.     static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT); 
  12.     static long MAX_DATA_CENTER_NUM = -1L ^ (-1L << DATA_CENTER_BIT); 
  13.     //每一部分向左的位移 
  14.     static long MACHINE_LEFT = SEQUENCE_BIT; 
  15.     static long DATA_CENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT; 
  16.     static long TIMESTAMP_LEFT = DATA_CENTER_LEFT + DATA_CENTER_BIT; 
  17.     //dataCenterId + machineId 等于10bit工作機器ID 
  18.     private long dataCenterId;  //數據中心 
  19.     private long machineId;     //機器標識 
  20.     private volatile long sequence = 0L; //序列號 
  21.     private volatile long lastTimeStamp = -1L;  //上一次時間戳 
  22.     private volatile long l currTimeStamp = -1L; //當前時間戳 
  23.      
  24.     private long getNextMill() { 
  25.         long mill = System.currentTimeMillis(); 
  26.         while (mill <= lastTimeStamp) mill = System.currentTimeMillis(); 
  27.         return mill; 
  28.     } 
  29.     //根據指定的數據中心ID和機器標志ID生成指定的序列號 
  30.     public SnowFlakeShortUrl(long dataCenterId, long machineId) { 
  31.         Assert.isTrue(dataCenterId >=0 && dataCenterId <= MAX_DATA_CENTER_NUM,"dataCenterId is illegal!"); 
  32.         Assert.isTrue(machineId >= 0 || machineId <= MAX_MACHINE_NUM,"machineId is illegal!"); 
  33.         this.dataCenterId = dataCenterId; 
  34.         this.machineId = machineId; 
  35.     } 
  36.     //生成下一個ID 
  37.     public synchronized long nextId() { 
  38.         currTimeStamp = System.currentTimeMillis(); 
  39.         Assert.isTrue(currTimeStamp >= lastTimeStamp,"Clock moved backwards"); 
  40.         if (currTimeStamp == lastTimeStamp) { 
  41.             //相同毫秒內,序列號自增 
  42.             sequence = (sequence + 1) & MAX_SEQUENCE; 
  43.             if (sequence == 0L) { //同一毫秒的序列數已經達到最大,獲取下一個毫秒 
  44.                 currTimeStamp = getNextMill(); 
  45.             } 
  46.         } else {  
  47.             sequence = 0L; //不同毫秒內,序列號置為0 
  48.         } 
  49.         lastTimeStamp = currTimeStamp; 
  50.         return (currTimeStamp - START_TIMESTAMP) << TIMESTAMP_LEFT //時間戳部分 
  51.                 | dataCenterId << DATA_CENTER_LEFT       //數據中心部分 
  52.                 | machineId << MACHINE_LEFT             //機器標識部分 
  53.                 | sequence;                             //序列號部分 
  54.     } 
  55.      
  56.     public static void main(String[] args) { 
  57.         SnowFlakeShortUrl snowFlake = new SnowFlakeShortUrl(10, 4); 
  58.         for (int i = 0; i < (1 << 12); i++) { 
  59.             //10進制 
  60.             System.out.println(snowFlake.nextId()); 
  61.         } 
  62.     } 

Reference

[1]github地址:https://github.com/cscsss/learnHome

[2]常見分布式全局唯一ID生成策略及算法的對比:

https://blog.csdn.net/u010398771/article/details/79765836

[3]基于 Redis 的序列號服務(分布式id)的設計:

https://blog.csdn.net/carryxu123456/article/details/82630029

[4]9種 分布式ID生成方案,讓你一次學個夠:

https://segmentfault.com/a/1190000022717820

 

責任編輯:武曉燕 來源: 潛行前行
相關推薦

2021-06-05 07:33:09

ID分布式架構

2022-02-23 07:09:30

分布式ID雪花算法

2023-12-13 09:35:52

算法分布式

2021-07-07 07:14:48

分布式ID分布式系統

2021-06-02 22:16:56

框架CAPBASE

2021-11-08 19:25:37

Go生成系統

2017-04-12 09:29:02

HiveMapReduceSpark

2021-07-02 06:54:43

分布式環境ID

2020-07-21 11:35:21

開發技能代碼

2023-09-03 22:14:23

分布式ID

2024-02-02 10:57:12

Java分布式算法

2019-09-03 09:22:08

數據庫Redis算法

2022-09-28 07:58:06

MongoDB分布式ID

2021-06-06 12:45:41

分布式CAPBASE

2024-10-31 13:51:58

2017-07-01 16:02:39

分布式ID生成器

2023-01-12 17:46:37

分庫分表id如何生成

2009-06-12 11:42:28

EJB分布式

2021-08-04 10:38:51

分布式 ID策略

2024-03-28 10:01:38

點贊
收藏

51CTO技術棧公眾號

日本熟妇成熟毛茸茸| 日本55丰满熟妇厨房伦| sese一区| 久88久久88久久久| 久久久久国产精品免费网站| 亚洲激情视频小说| 免费观看在线一区二区三区| 亚洲电影第三页| 色婷婷精品国产一区二区三区| 国产又粗又黄又爽视频| 亚洲第一黄网| 中文字幕视频在线免费欧美日韩综合在线看 | 亚洲国产成人精品女人| 欧美精品一区视频| 久久黄色片网站| 日韩影院在线| 亚洲色欲色欲www在线观看| 精品日本一区二区| 99久久久无码国产精品免费| 久久av最新网址| 欧美国产日韩一区二区在线观看| 亚洲色图日韩精品| 日韩av字幕| 日韩视频一区在线观看| 国产精品igao| 亚洲女同志freevdieo| 亚洲女女做受ⅹxx高潮| 亚洲一区二区精品在线观看| 欧洲毛片在线| 不卡视频在线观看| 亚洲aaaaaa| 亚洲一区二区天堂| 模特精品在线| 91po在线观看91精品国产性色| 国产波霸爆乳一区二区| 国产精品99在线观看| 国产亚洲人成a一在线v站| 欧美无人区码suv| 玖玖玖视频精品| 欧美年轻男男videosbes| 色婷婷综合久久久久中文字幕 | 一本一道波多野结衣一区二区| 300部国产真实乱| 黄色精品在线观看| 国产精品久久久99| 亚洲综合欧美日韩| av每日在线更新| 日本一区二区三区在线不卡| 青青草国产精品| 久久久久久久久亚洲精品| 91香蕉视频污| 欧美精品亚洲| 国产一区精品| 国产亚洲精品bt天堂精选| 欧美一区二区三区四区五区六区 | 国产欧美一区二区精品性色超碰 | 国产精品日韩电影| www.亚洲激情| 麻豆国产精品一区二区三区| 国产精品免费电影| 国产精品一区二区免费视频| 久久99最新地址| 92看片淫黄大片看国产片| 99国产在线播放| 成人在线视频一区| 99精彩视频| 天天干,夜夜爽| 99国产精品久久久久久久久久| 精品欧美国产| www免费网站在线观看| 成人欧美一区二区三区小说 | 91麻豆精品国产91久久久| 1314成人网| 成人av激情人伦小说| 亚洲精品ady| 亚洲av无码一区二区三区人| 成人毛片免费看| 久久成人在线视频| 中文字幕一区二区三区手机版| 亚洲在线电影| 国产精品视频yy9099| 国产有码在线观看| 成人动漫一区二区三区| 日本一区二区三区免费看| 日韩精品黄色| 亚洲成人www| 中文久久久久久| 视频精品国内| 亚洲天堂一区二区三区| 波多野结衣在线网址| 亚洲精选国产| 国产精品入口夜色视频大尺度| 国产黄色片免费| 久久久午夜精品理论片中文字幕| 中文字幕欧美日韩一区二区三区 | 66视频精品| 97精品一区二区视频在线观看| 嫩草影院一区二区三区| 国产成人亚洲综合a∨猫咪| 九九九久久久| 国产视频在线播放| 一本大道久久a久久精二百| 樱花草www在线| 偷拍一区二区| 欧美国产精品人人做人人爱| 三级网站在线播放| 粉嫩一区二区三区性色av| 欧美精品在线一区二区| 欧美理论片在线| 热99这里只有精品| 日韩一区二区三免费高清在线观看| 日韩欧美色综合| 精品无人区无码乱码毛片国产| 欧美一区二区三区免费看| 国产成人在线视频| 蜜桃在线一区二区| 亚洲欧美日本韩国| 999精品视频在线| 日韩电影不卡一区| 久久99久久99精品中文字幕| 波多野结衣黄色| 91亚洲精品乱码久久久久久蜜桃| 91免费视频黄| 日日狠狠久久| 伊人久久精品视频| 久久精品五月天| 99re成人在线| 黄页网站在线观看视频| 日韩精品成人| 久久九九免费视频| 一区二区三区在线免费观看视频 | 国产精品一二| 国产成人女人毛片视频在线| 黄视频在线观看网站| 在线免费观看不卡av| 30一40一50老女人毛片| 一区二区三区四区五区在线| 国产精品裸体一区二区三区| free性欧美hd另类精品| 欧美日本在线观看| 日本精品久久久久中文| 日韩电影免费在线看| 日本一区二区免费看| 韩国主播福利视频一区二区三区| 日韩毛片在线看| 日本在线播放视频| 国产亚洲精品超碰| 性生交免费视频| 欧美丝袜激情| 国产精品视频公开费视频| 国产精品一区二区婷婷| 富二代精品短视频| 91精品人妻一区二区三区蜜桃欧美| 亚洲毛片播放| 久久青青草综合| 欧洲亚洲两性| 中文国产成人精品| 一级α片免费看刺激高潮视频| 国产精品女主播在线观看| 欧美伦理片在线观看| 色无极亚洲影院| 91丨九色丨国产在线| 欧美理论片在线播放| 精品国产一区二区在线观看| 日本中文字幕免费| 2023国产精品自拍| 色哟哟精品视频| 亚洲精品91| 国产亚洲二区| 性感美女一区二区在线观看| 日韩中文在线中文网三级| 国产免费一区二区三区最新不卡| 一片黄亚洲嫩模| 欧美 日本 国产| 美国三级日本三级久久99| 国产在线xxxx| 清纯唯美亚洲经典中文字幕| 国产精品av电影| www在线视频| 亚洲精品影视在线观看| 一级做a爱片久久毛片| 亚洲午夜久久久久久久久电影网| 亚洲AV无码国产精品| 久久精品99国产精品| 国产 欧美 日本| 偷拍精品福利视频导航| 成人在线一区二区| 蜜桃视频在线观看播放| 色婷婷久久av| 无码精品黑人一区二区三区| 欧美日韩aaaaa| 日本一级黄色录像| 国产精品久久三| 国产精品福利导航| 精品一区二区三区蜜桃| 人妻av中文系列| 97精品国产福利一区二区三区| 成人欧美一区二区三区在线观看 | 国产精品theporn| 日韩欧美视频第二区| 99精品在免费线中文字幕网站一区| 青青a在线精品免费观看| 黄色一级片在线观看| 亚洲精选一区二区| 精品人妻一区二区三区含羞草 | 97成人超碰免| 福利在线视频网站| 国产午夜精品一区理论片飘花| xxxx国产精品| 欧美日韩夫妻久久| 91丝袜一区二区三区| 亚洲一区二区三区小说| 999精品在线视频| 久久精品一级爱片| 捆绑凌虐一区二区三区| 国内精品久久久久影院一蜜桃| 男人天堂成人在线| 国产日本精品| 美女扒开大腿让男人桶| 真实国产乱子伦精品一区二区三区| 欧美日韩国产精品一卡| 国产成人福利av| 亚洲尤物视频网| 久久麻豆视频| 国产精品日日摸夜夜添夜夜av| 亚洲小少妇裸体bbw| 久久久久久国产免费| 国产三区视频在线观看| 日韩在线视频网| 91在线品视觉盛宴免费| 国产午夜精品免费一区二区三区 | 国产成人一二三区| 欧美第十八页| 亚洲 国产 日韩 综合一区| 精品中文一区| 日本一区二区免费看| 亚洲人成网www| 久久av二区| 欧美**vk| 日韩在线观看电影完整版高清免费| 亚洲国产合集| 日本不卡一区| 精品国产乱码久久久久久果冻传媒 | 国产日韩欧美a| 色一情一交一乱一区二区三区| 久久蜜桃av一区精品变态类天堂| 97香蕉碰碰人妻国产欧美| 99久久精品国产精品久久| 国产清纯白嫩初高中在线观看性色| 国产麻豆精品视频| 亚洲v在线观看| 不卡视频免费播放| a毛片毛片av永久免费| 国产女人18毛片水真多成人如厕| 久久久久久国产精品无码| 国产网站一区二区三区| 中文字幕 自拍| 国产精品视频观看| 国产精品视频一区二区三| 伊人夜夜躁av伊人久久| 国产无套粉嫩白浆内谢| 精品久久久精品| 免费的毛片视频| 欧美日韩一区二区三区四区五区 | 免费又黄又爽又色的视频| 亚洲一区在线观看免费| 男女啊啊啊视频| 欧洲一区在线观看| 99久久精品国产色欲| 欧美xxxxxxxx| 加勒比一区二区三区在线| 中文字幕精品久久| 男男gaygays亚洲| 国产成人精彩在线视频九色| 999精品视频在线观看| 国产精品日本一区二区| 精品少妇av| 国产日韩第一页| 9国产精品视频| 亚洲一级片网站| 国产91精品在线观看| 精品无码一区二区三区| 亚洲色图在线播放| 日韩乱码一区二区| 欧美另类videos死尸| 全部免费毛片在线播放一个| 中文字幕亚洲字幕| а√在线天堂官网| 成人激情视频小说免费下载| 国产日韩三级| 在线天堂一区av电影| 一本一本久久| 人妻体体内射精一区二区| 久久―日本道色综合久久 | 好吊成人免视频| 国产又粗又猛又爽又黄视频| 亚洲福利在线观看| 91精彩视频在线观看| 高清一区二区三区四区五区| 国产一区高清| 麻豆av一区二区| 午夜电影亚洲| 国产九九热视频| 91婷婷韩国欧美一区二区| 久久精品色妇熟妇丰满人妻| 五月婷婷另类国产| 国产特级黄色片| 国产亚洲精品va在线观看| 国产蜜臀在线| 91最新在线免费观看| 欧美在线观看视频一区| 成 年 人 黄 色 大 片大 全| 国模少妇一区二区三区| 亚洲精品国产精品国自产网站| 亚洲v日本v欧美v久久精品| 国产精品久久久久久无人区| 亚洲日本欧美日韩高观看| 99thz桃花论族在线播放| 91视频网页| 午夜精品一区二区三区国产 | 国产福利一区二区| 91免费在线看片| 欧美影视一区在线| 九色视频在线播放| 欧美性一区二区三区| 极品尤物一区| 国产一线二线三线女| 国产成人免费视频网站| 天天综合天天做| 91麻豆精品国产91久久久久久久久| 91caoporm在线视频| 国产精品jizz在线观看麻豆| 欧美人与物videos另类xxxxx| 久久无码高潮喷水| 波多野结衣中文字幕一区二区三区| 久久久久久久极品内射| 精品日韩欧美在线| 男女羞羞视频在线观看| 国产精品国色综合久久| 黑人一区二区| a级一a一级在线观看| 五月天亚洲婷婷| 先锋av资源站| 青草热久免费精品视频| 国产99精品| 欧美性猛交xxx乱久交| 日本一区二区高清| 91好色先生tv| 久久天天躁狠狠躁夜夜爽蜜月| а天堂中文最新一区二区三区| 手机在线视频你懂的| 国产一区二区精品在线观看| 日本黄色小说视频| 精品国产91久久久久久久妲己| free性欧美16hd| 麻豆91蜜桃| 美女视频黄免费的久久 | 无码成人精品区在线观看| 午夜精品久久久久久久久久久 | 看片的网站亚洲| 国产精品xxxx| 欧美区日韩区| 国产成人av无码精品| 欧美性20hd另类| 成人在线播放视频| 成人国产精品免费视频 | 日韩av中文字幕第一页| www.成人在线| 日韩精品一区二区亚洲av观看| 最新日韩中文字幕| 秋霞一区二区| 男女高潮又爽又黄又无遮挡| 国产区在线观看成人精品| 一区二区三区精彩视频| 久久久久久国产免费| 国产伦精品一区二区三区千人斩| 一起操在线视频| 亚洲成人高清在线| 国产女主播在线直播| 91久久极品少妇xxxxⅹ软件| 一区二区毛片| 网站永久看片免费| 亚洲精品一区二区三区福利| 精品免费av在线| 国产日产欧美一区二区| 91视频你懂的| 国产裸体永久免费无遮挡| 国外成人在线视频| 水蜜桃精品av一区二区| 偷偷色噜狠狠狠狠的777米奇| 欧美午夜一区二区三区免费大片| av在线导航| 日本精品二区| 成人美女视频在线看| 瑟瑟视频在线免费观看| 久久久久久中文| 日韩大片在线观看| 国产精品探花一区二区在线观看| 欧美日韩国产高清一区| 亚洲一区站长工具|