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

分布式環(huán)境下如何保證 ID 的唯一性

開發(fā) 前端 分布式
首先說下我們?yōu)槭裁葱枰植际?ID,以及分布式 ID 是用來解決什么問題的。當(dāng)我們的項目還處于單體架構(gòu)的時候,我們使用數(shù)據(jù)庫的自增 ID 就可以解決很多數(shù)據(jù)標(biāo)識問題。

[[408786]]

本文轉(zhuǎn)載自微信公眾號「Java極客技術(shù)」,作者鴨血粉絲。轉(zhuǎn)載本文請聯(lián)系Java極客技術(shù)公眾號。

前言

首先說下我們?yōu)槭裁葱枰植际?ID,以及分布式 ID 是用來解決什么問題的。當(dāng)我們的項目還處于單體架構(gòu)的時候,我們使用數(shù)據(jù)庫的自增 ID 就可以解決很多數(shù)據(jù)標(biāo)識問題。但是隨著我們的業(yè)務(wù)發(fā)展我們的架構(gòu)就會逐漸演變成分布式架構(gòu),那么這個時候再使用數(shù)據(jù)的自增 ID 就不行了,因為一個業(yè)務(wù)的數(shù)據(jù)可能會放在好幾個數(shù)據(jù)庫里面,此時我們就需要一個分布式 ID 用來標(biāo)識一條數(shù)據(jù),因此我們需要一個分布式 ID 的生成服務(wù)。那么分布式 ID 的服務(wù)有什么要求和挑戰(zhàn)呢?

要求

全局唯一:既然是用來標(biāo)識數(shù)據(jù)唯一的,那么一個分布式 ID 肯定要是全局唯一的,在同一業(yè)務(wù)下的每個服務(wù)下面都是一致的,不會變的,這是一個基本的要求;

全局遞增:遞增這個也很好理解,我們要保證生成的 ID 是依次遞增的,因為很多時候 ID 是給人看的,如果說不具備遞增性,就缺乏了很多的可讀性;

信息安全:分布式 ID 的安全性也很重要,因為我們提到生成的 ID 是遞增的,這就有可能會給競爭對手知道我們的 ID 的生成頻率,這種在電商等場景會有很大的問題,但是這個往往跟全局遞增有點沖突;

高可用性:分布式 ID 的生成服務(wù)必須是高可用,畢竟一旦不能生成 ID,后續(xù)的所有服務(wù)都無法繼續(xù)使用;

常見的分布式 ID 實現(xiàn)

在當(dāng)下的互聯(lián)網(wǎng)當(dāng)中,根據(jù)業(yè)務(wù)場景以及需求的不同,對于分布式 ID 的實現(xiàn)有如下幾種實現(xiàn)方式:

  1. UUID;
  2. Redis;
  3. 變形的數(shù)據(jù)庫自增 ID;
  4. 推特雪花算法
  5. 美團的 Leaf——雪花算法的變形;

UUID

寫 Java 的朋友對 UUID 肯定不陌生,7dbb9f04-d15e-4c88-b74b-72a35e0d7580 這是一個標(biāo)準(zhǔn)的 UUID,雖然都說 UUID 是全球唯一,具備我們前面提到的要求中的第一點,但是很顯然不具備全局遞增,這種分布式 ID 可讀性很差,如果說只是用來記錄日志或者不需要人去理解的場景是可以用,但是不適合我們這里說的業(yè)務(wù)數(shù)據(jù)的唯一標(biāo)識。而且這種無序的 UUID 如果作為主鍵會很嚴(yán)重影響性能。

Redis

Redis 有個 incr 的命令,這個命令是能保證原子遞增的,在某種程度上也是可以生成全局 ID,不過使用 Redis 有兩個問題:

  1. 不美觀,雖然說我們需要的是一個全局 ID,但是 incr 命令是從 1 開始的整型,所以會導(dǎo)致全局 ID 的長度不一致,雖然說也可以用來標(biāo)識唯一業(yè)務(wù)數(shù)據(jù),但是某些場景也缺少可讀性,因為不攜帶日期信息;
  2. 依賴 Redis 的高可用,因為 Redis 是基于內(nèi)存的,為了保證 ID 的不丟失所以需要對 Redis 進(jìn)行持久化,但是關(guān)于 Redis 的兩種持久化的方式各有優(yōu)缺點,詳細(xì)的可以參考公眾號之前的文章 面試官:請說下 Redis 是如何保證在宕機后數(shù)據(jù)不丟失的;

數(shù)據(jù)庫自增 ID

前面我們提到單個數(shù)據(jù)庫在分布式環(huán)境下已經(jīng)沒辦法使用自增 ID 了,因為每個 MySQL 的實例自增 ID 都是從 1 開始,并且步長都按照 1依次遞增,這種情況下我們很容易想到是不是可以考慮給每個數(shù)據(jù)庫設(shè)置不同的步長。如果我們設(shè)置了不同的步長,這樣就可以保證每個數(shù)據(jù)庫實例都可以生成 ID,并且不會重復(fù)。雖然簡單的系統(tǒng)可以這樣用,但是也有幾個問題:

依賴數(shù)據(jù)庫 DB,在分布式環(huán)境下,如果過多的依賴數(shù)據(jù)庫是有風(fēng)險的,無法支持高并發(fā)的情況,特別是對于一些電商交易的場景,每秒幾十萬的 QPS,數(shù)據(jù)庫是扛不住的;

不同數(shù)據(jù)庫實例的數(shù)據(jù)不能直接關(guān)聯(lián)上,需要額外的存儲,才能把數(shù)據(jù)串起來,增加業(yè)務(wù)復(fù)雜度;

推特的雪花算法—— snowflake

snowflake 算法是推特開源的分布式 ID 生成算法,這個算法提供了一個標(biāo)準(zhǔn)的思路,很多公司都參考這個算法做了自己的實現(xiàn),比較有名的是美團的 Leaf。這里我們就著重看下雪花算法是怎么實現(xiàn)的。

感興趣的可以去參考文章 https://tech.meituan.com/2017/04/21/mt-leaf.html 看下美團的 leaf 的實現(xiàn)原理。

雪花算法的思想是化整為零,將分布式 ID 的生成分散到每個機房和機器上,采用一個 64 位 long 類型的的結(jié)構(gòu)來表示一個 ID,64 的結(jié)構(gòu)如下所示,第一位符號位 0,然后是 41 位的時間戳,接下來的 10 位是機房加機器,最后的 12 位是序列號。

上面這個結(jié)構(gòu)是雪花算法的基本結(jié)構(gòu),不同公司根據(jù)自身的業(yè)務(wù)會進(jìn)行相應(yīng)的調(diào)整,有的可以采用 32 位或者其他位數(shù),而且時間戳的位數(shù)也可以根據(jù)實際情況進(jìn)行調(diào)整,10 位的 workerID 有機房的公司可以用機房加機器組成,沒有機房的公司可以直接用機器來組成,序列位也可以根據(jù)情況適當(dāng)調(diào)整。

我們可以簡單算一下,41 位的時間位是2 ^ 41 / (365 * 24 * 3600 * 1000) = 69 年,每個機器每毫秒可以生成 2 ^ 12 = 4096 個 ID。

那是不是說我們這個代碼只能運行 69 年呢?其實不是的,這里服務(wù)在啟動的時候會設(shè)置一個初始值,這里的時間戳是用機器的時間減去初始值的差值。那 SnowFlake 算法有什么優(yōu)缺點呢?

  1. 因為有時間戳,所以滿足自增的要求,同時也具備一定的可讀性;
  2. 化整為零每個服務(wù)在各自的機器上可以直接生成唯一 ID,只需要配置好機房和機器編號即可;
  3. 長度可以根據(jù)業(yè)務(wù)自行調(diào)整;
  4. 缺點是依賴機器的時鐘,如果說機器的時鐘有問題,會導(dǎo)致生成的 ID 可能會重復(fù),這個需要控制;

結(jié)合上面的原理,我們可以通過 Java 代碼來具體實現(xiàn),代碼如下:

  1. public class SnowFlakeUtil { 
  2.  
  3.     //初始時間戳 
  4.     private final static long START_TIMESTAMP = 1624796691000L; 
  5.     //數(shù)據(jù)中心占用的位數(shù) 
  6.     private final static long DATA_CENTER_BIT = 5; 
  7.     //機器標(biāo)識占用的位數(shù) 
  8.     private final static long MACHINE_BIT = 5; 
  9.     //序列號占用的位數(shù) 
  10.     private final static long SEQUENCE_BIT = 12; 
  11.  
  12.  
  13.     /** 
  14.      * 每一部分的最大值 
  15.      */ 
  16.     private final static long MAX_SEQUENCE = ~(-1L << SEQUENCE_BIT); 
  17.     private final static long MAX_MACHINE_NUM = ~(-1L << MACHINE_BIT); 
  18.     private final static long MAX_DATA_CENTER_NUM = ~(-1L << DATA_CENTER_BIT); 
  19.  
  20.     /** 
  21.      * 每一部分向左的位移 
  22.      */ 
  23.     private final static long MACHINE_LEFT = SEQUENCE_BIT; 
  24.     private final static long DATA_CENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT; 
  25.     private final static long TIMESTAMP_LEFT = DATA_CENTER_LEFT + DATA_CENTER_BIT; 
  26.  
  27.     private final long idc; 
  28.     private final long serverId; 
  29.     private long sequence = 0L; 
  30.     private long lastTimeStamp = -1L; 
  31.  
  32.     private long getNextMill() { 
  33.         long mill = System.currentTimeMillis(); 
  34.         while (mill <= lastTimeStamp) { 
  35.             mill = System.currentTimeMillis(); 
  36.         } 
  37.         return mill; 
  38.     } 
  39.  
  40.     /** 
  41.      * 根據(jù)指定的數(shù)據(jù)中心ID和機器標(biāo)志ID生成指定的序列號 
  42.      * 
  43.      * @param idc      數(shù)據(jù)中心ID 
  44.      * @param serverId 機器標(biāo)志ID 
  45.      */ 
  46.     public SnowFlakeUtil(long idc, long serverId) { 
  47.         if (idc > MAX_DATA_CENTER_NUM || idc < 0) { 
  48.             throw new IllegalArgumentException("IDC 數(shù)據(jù)中心編號非法!"); 
  49.         } 
  50.         if (serverId > MAX_MACHINE_NUM || serverId < 0) { 
  51.             throw new IllegalArgumentException("serverId 機器編號非法!"); 
  52.         } 
  53.         this.idc = idc; 
  54.         this.serverId = serverId; 
  55.     } 
  56.  
  57.     /** 
  58.      * 生成下一個 ID 
  59.      * 
  60.      * @return 
  61.      */ 
  62.     public synchronized long genNextId() { 
  63.         long currTimeStamp = System.currentTimeMillis(); 
  64.         if (currTimeStamp < lastTimeStamp) { 
  65.             throw new RuntimeException("Clock moved backwards.  Refusing to generate id"); 
  66.         } 
  67.         if (currTimeStamp == lastTimeStamp) { 
  68.             //相同毫秒內(nèi),序列號自增 
  69.             sequence = (sequence + 1) & MAX_SEQUENCE; 
  70.             //同一毫秒的序列數(shù)已經(jīng)達(dá)到最大 
  71.             if (sequence == 0L) { 
  72.                 currTimeStamp = getNextMill(); 
  73.             } 
  74.         } else { 
  75.             //不同毫秒內(nèi),序列號置為0 
  76.             sequence = 0L; 
  77.         } 
  78.         lastTimeStamp = currTimeStamp; 
  79.         return (currTimeStamp - START_TIMESTAMP) << TIMESTAMP_LEFT | idc << DATA_CENTER_LEFT | serverId << MACHINE_LEFT | sequence
  80.     } 
  81.  
  82.     public static void main(String[] args) { 
  83.         SnowFlakeUtil snowFlake = new SnowFlakeUtil(4, 3); 
  84.         for (int i = 0; i < 100; i++) { 
  85.             System.out.println(snowFlake.genNextId()); 
  86.         } 
  87.     } 

參考

知乎·一口氣說出9種分布式ID生成方式,面試官有點懵了 

Leaf——美團點評分布式ID生成系統(tǒng)

 

責(zé)任編輯:武曉燕 來源: Java極客技術(shù)
相關(guān)推薦

2024-05-24 09:29:28

2023-10-26 07:32:42

2020-07-21 11:35:21

開發(fā)技能代碼

2021-06-28 14:45:07

分布式框架操作

2022-02-23 07:09:30

分布式ID雪花算法

2021-06-05 07:33:09

ID分布式架構(gòu)

2022-09-28 07:58:06

MongoDB分布式ID

2023-01-12 17:46:37

分庫分表id如何生成

2021-11-08 19:25:37

Go生成系統(tǒng)

2023-12-13 09:35:52

算法分布式

2022-12-08 08:13:11

分布式數(shù)據(jù)庫CAP

2023-09-03 22:14:23

分布式ID

2017-04-12 09:29:02

HiveMapReduceSpark

2019-09-03 09:22:08

數(shù)據(jù)庫Redis算法

2024-02-02 10:57:12

Java分布式算法

2025-11-11 02:11:00

微服務(wù)分布式事務(wù)

2024-09-05 16:55:41

2021-11-22 16:30:30

分布式一致性分布式系統(tǒng)

2024-10-07 08:52:59

分布式系統(tǒng)分布式 IDID
點贊
收藏

51CTO技術(shù)棧公眾號

a级片在线观看| 久久久久久久免费视频| 69视频免费看| 99久久精品费精品国产风间由美| 69p69国产精品| 无码粉嫩虎白一线天在线观看 | 天堂电影一区| 国产欧美一区二区三区在线看蜜臀 | 久久久久久久久久久97| 色天天色综合| 欧美高清www午色夜在线视频| 岛国大片在线播放| 亚洲天天影视| 成+人+亚洲+综合天堂| 国产精品久久久久久久天堂| 久草视频中文在线| 欧美久久综合网| 亚洲第一精品电影| 中文字幕精品一区二区三区在线| av日韩中文| 亚洲人妖av一区二区| 欧美日韩一区在线播放| 高潮一区二区三区乱码| 美女视频黄久久| 欧美在线国产精品| 麻豆一区二区三区精品视频| 色婷婷热久久| 亚洲图片欧美午夜| 国产又黄又粗又猛又爽的视频| 亚洲精品第一| 欧美视频一区二区三区在线观看 | 萌白酱视频在线| 国产精品主播在线观看| 欧美一区二区视频在线观看 | 日韩欧美三级在线观看| 一区二区三区午夜视频| 色视频www在线播放国产成人| 波多野结衣福利| 国产精品男女| 精品成人私密视频| www.久久com| 在线日韩三级| 91麻豆精品国产91久久久使用方法 | 激情伊人五月天久久综合| 国产精品99蜜臀久久不卡二区| 天天操天天干视频| 亚洲人体偷拍| 97色在线视频观看| 久久久精品视频免费| 午夜国产欧美理论在线播放| xxxx性欧美| 国产人妻精品一区二区三区不卡| 日韩精品永久网址| 精品国产欧美一区二区三区成人 | 四川一级毛毛片| 疯狂欧洲av久久成人av电影| 欧美午夜电影网| 国产精品久久久毛片| www.成人在线视频| 欧美三级中文字幕| 第一区免费在线观看| 少妇精品视频在线观看| 制服.丝袜.亚洲.另类.中文| 特级西西444www| 日韩成人在线观看视频| 精品国产亚洲一区二区三区在线观看 | 日韩精品123区| 性欧美69xoxoxoxo| 欧美人交a欧美精品| 久久高清免费视频| 美女久久网站| 国产精品大片wwwwww| 亚洲最新av网站| 国产精品中文字幕日韩精品| 懂色中文一区二区三区在线视频| 好男人www在线视频| 91麻豆精品视频| 亚洲春色在线视频| а√天堂官网中文在线| 亚洲一区二区三区不卡国产欧美 | 女同久久另类69精品国产| 久久久久国产| 91av在线免费观看视频| 中文字幕人妻互换av久久| 精品亚洲成a人在线观看| 亚洲一区二区自拍| 天堂视频中文在线| 国产精品视频免费| 国产又粗又猛又爽又黄的网站| 美女扒开腿让男人桶爽久久软| 91黄色免费看| 曰本三级日本三级日本三级| 奇米影视777在线欧美电影观看| 亚洲午夜未满十八勿入免费观看全集| 国产视频精品免费| 亚洲免费播放| 国产一区香蕉久久| 天天干,天天操,天天射| 国产精品美女久久久久av爽李琼| 欧美黄网在线观看| 欧美日韩美女| 欧美电影免费提供在线观看| 免费在线观看污| 欧美.www| 国产精品久久久久免费a∨大胸 | 国产手机视频精品| 国产1区2区3区4区| 久久免费黄色| 国产精成人品localhost| 成年人在线看| 五月天精品一区二区三区| 中文字幕av专区| 欧美变态网站| 九九热这里只有精品6| 成人午夜精品视频| 北岛玲一区二区三区四区| 亚洲视频在线观看日本a| 久久影院午夜精品| 日韩欧美国产麻豆| 亚洲精品一区二区三区在线播放| 亚洲视频www| 97人人模人人爽视频一区二区| 二区三区在线| 欧美日韩在线看| 日本精品一二三区| 9191国语精品高清在线| 国产精品白丝jk喷水视频一区| 亚洲黄色小说网| 日韩一区中文字幕| 麻豆三级在线观看| 亚洲精品中文字幕99999| 午夜精品久久久久久99热| jizz国产视频| 亚洲欧美国产三级| 亚洲精品mv在线观看| 日产精品一区二区| 国产精品黄色av| 国产午夜精品一区理论片| 黑人精品xxx一区一二区| 一级少妇精品久久久久久久| 综合天天久久| 亚洲尤物视频网| 成人免费视屏| 日韩一卡二卡三卡四卡| 手机av在线看| 国产一区91精品张津瑜| 亚洲激情图片| 亚洲aⅴ网站| 久久天天躁狠狠躁老女人| 一级黄色短视频| 成人免费在线视频| 在线免费观看av网| 欧美freesex交免费视频| 91精品国产一区二区三区动漫| 九七久久人人| 日韩午夜在线观看| 青青草原免费观看| 成人精品免费网站| 男女啪啪免费视频网站| 亚洲精品白浆高清| 国产精国产精品| 2021av在线| 3d动漫精品啪啪一区二区竹菊| 国产精品国产三级国产传播| 国产美女精品人人做人人爽| 欧美美女黄色网| 狼人天天伊人久久| 日本视频久久久| 香港伦理在线| 日韩免费高清av| 91精品国产乱码在线观看| 久久精品人人做人人爽人人| 高清av免费看| 欧美日韩免费| 久久婷婷人人澡人人喊人人爽| 欧美黑人疯狂性受xxxxx野外| 中文字幕精品一区二区精品| 国产精品丝袜黑色高跟鞋| 亚洲在线免费播放| 精品成人av一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 日本老太婆做爰视频| 老汉色老汉首页av亚洲| 国产精品日韩欧美| 精品日韩av| 亚洲天堂免费观看| a毛片在线免费观看| 午夜国产精品影院在线观看| 亚洲v国产v欧美v久久久久久| 国产在线视频91| 中文字幕黄色网址| 国产麻豆一精品一av一免费 | 精品91久久久久| 欧美亚洲国产免费| 99国内精品久久久久| 国内自拍欧美激情| av男人的天堂在线| 精品成人佐山爱一区二区| 探花国产精品一区二区| 一区二区三区日韩精品视频| a级片在线观看| 国产成人福利片| 日本免费观看网站| 亚洲人成免费| 成人手机在线播放| 精品日韩在线| 国内视频一区二区| 国产精品日本一区二区三区在线| 7777精品视频| 日韩av官网| 色老头一区二区三区在线观看| 熟妇高潮一区二区三区| 91精品久久久久久久91蜜桃| 日韩在线播放中文字幕| 亚洲国产精品久久不卡毛片 | 国产中文一区| 麻豆中文字幕在线观看| 最新精品国偷自产在线| 岛国视频一区免费观看| www久久久| 国产精品免费观看在线| 在线手机中文字幕| 国内精品一区二区三区| 中文字幕在线播放网址| www日韩欧美| youjizz在线播放| 亚洲网站视频福利| 水中色av综合| 日韩av在线网页| 日本激情一区二区| 精品国产乱子伦一区| 国产99视频在线| 宅男在线国产精品| 97人妻精品一区二区三区软件| 91官网在线观看| 老熟妇仑乱一区二区av| 精品久久久久久久久久久久久久| 日本一级淫片免费放| 亚洲午夜视频在线观看| 九九视频在线免费观看| 亚洲欧美成人一区二区三区| 国产午夜精品理论片| 中文字幕一区二区三区蜜月| 蜜桃av乱码一区二区三区| 久久久国产精华| 蜜桃久久精品成人无码av| 久久久99精品免费观看| 伊人网在线视频观看| 久久日一线二线三线suv| 人妻体内射精一区二区| 久久这里只有精品视频网| xxx在线播放| 国产欧美一区二区三区网站 | 亚洲色欲色欲www| 成人在线观看免费完整| 亚洲精品成人天堂一二三| 久操视频免费在线观看| 亚洲一区二区三区不卡国产欧美| 五月天婷婷丁香| 色哟哟国产精品| 正在播放木下凛凛xv99| 欧美精品vⅰdeose4hd| 99国产在线播放| 正在播放木下凛凛xv99| 91麻豆精品国产| 亚洲乱码在线观看| 亚洲护士老师的毛茸茸最新章节| 日韩二区三区| 三级精品视频久久久久| 国产美女在线观看| 午夜精品久久久久久久久久久久久 | 91大神福利视频在线| 电影网一区二区| 成人福利网站在线观看11| 99re8这里有精品热视频免费 | 日本不卡电影| 看全色黄大色大片| 亚洲中午字幕| 色一情一区二区| 成人亚洲一区二区一| av在线网站观看| 亚洲色图都市小说| 欧美a∨亚洲欧美亚洲| 欧美三级欧美一级| 好吊视频一二三区| 在线国产精品视频| 欧美videosex性极品hd| 欧美在线影院在线视频| 欧美一级网址| 精品欧美国产一区二区三区不卡| 欧美一区电影| 你真棒插曲来救救我在线观看| 日韩国产精品久久| 亚洲女则毛耸耸bbw| 国产亚洲欧美色| 久久精品视频日本| 欧美视频精品在线观看| 殴美一级特黄aaaaaa| 色哟哟网站入口亚洲精品| 国内小视频在线看| 国产欧美一区二区三区四区| 精品国产影院| 26uuu成人| 狂野欧美一区| 国产一线在线观看| 国产精品盗摄一区二区三区| 日韩黄色在线播放| 精品成a人在线观看| 337p日本欧洲亚洲大胆鲁鲁| 2024亚洲男人天堂| 66精品视频在线观看| 亚洲日本一区二区三区在线不卡| 日韩天天综合| 国产成人精品综合久久久久99 | 欧美性猛交xxxxx少妇| 欧美色老头old∨ideo| 无码精品在线观看| 欧美高清在线播放| 在线日韩三级| 亚洲欧洲精品一区| 日韩成人精品视频| 免费a级黄色片| 亚洲成av人片在www色猫咪| 99久久一区二区| 在线观看亚洲区| 日韩精品免费观看视频| 久久99精品久久久久久三级| 欧美特黄a级高清免费大片a级| 可以看污的网站| 国产精品国产成人国产三级| 中文字幕免费视频观看| 亚洲开心激情网| 自拍偷拍亚洲视频| 久久国产精品高清| 亚洲精品日本| 这里只有精品在线观看视频 | 免费在线黄网站| 国产一区二区不卡在线 | 婷婷亚洲最大| 天堂av2020| 亚洲视频免费看| 精品欧美一区二区精品少妇| 久久精品小视频| 国产精品一区二区精品视频观看| 一区二区三区的久久的视频| 久久er精品视频| 日韩av手机在线免费观看| 欧美理论电影在线| 蜜桃视频在线观看免费视频网站www| 国产美女精品视频| 久久久久久久久丰满| 99热这里只有精品2| 一区二区三区在线不卡| 亚洲精品无amm毛片| 国内成人精品一区| 日韩欧美黄色| 成年人在线观看视频免费| 亚洲国产电影在线观看| 91国在线视频| 九九热精品视频国产| 国产劲爆久久| 丰满人妻中伦妇伦精品app| 国产日韩欧美精品综合| 日韩精选在线观看| 久久午夜a级毛片| 伊人久久噜噜噜躁狠狠躁| 男女激情无遮挡| 国产日韩精品一区二区三区| 一个人看的www日本高清视频| 日韩专区在线观看| 都市激情亚洲欧美| 日本一区二区黄色| 国产精品久久久久久福利一牛影视 | 欧美草逼视频| 免费日韩电影在线观看| 欧美aⅴ一区二区三区视频| 天天看片中文字幕| 国产婷婷成人久久av免费高清 | 精品国偷自产国产一区| 男人天堂视频在线观看| 亚洲精品不卡| 成人综合在线网站| 国产裸体美女永久免费无遮挡| 久久视频国产精品免费视频在线| 国产精品久久久久av蜜臀| 成人亚洲视频在线观看| 亚洲精品视频在线观看网站| 神马午夜一区二区| 91精品中文在线| 亚洲欧美大片| 美女福利视频在线观看| 精品视频久久久久久久| 欧美激情三区| 国产中文字幕在线免费观看| 中文字幕在线一区免费| 凸凹人妻人人澡人人添| 成人网中文字幕| 麻豆亚洲精品| 日本一区二区不卡在线| 中文字幕av一区二区三区谷原希美|