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

別再用雪花算法生成ID了!試試這個吧!

開發(fā) 前端
我們最開始考慮的是雪花算法方案,使用的是經(jīng)典的 twitter開源的算法 snowflake。這個算法非常強大,生成的是 64bit 的數(shù)字id,天然支持分布式。

今天聊聊服務(wù)器中唯一ID生成。唯一ID生成中雪花算法大家都比較熟,那如果加一個要求呢:

盡量短的數(shù)字ID

背景

之前的項目有個需求:為用戶賬號生成賬號ID。最開始用的是UUID(長字符串ID),但是字符串賬號相對于數(shù)字賬號,存儲和傳輸性能都稍遜,也不利于記憶和傳播。

因此,生成一套業(yè)務(wù)內(nèi)的數(shù)字賬號,并且盡量簡短就是當(dāng)務(wù)之急。

初步版本

我們最開始考慮的是雪花算法方案,使用的是經(jīng)典的 twitter開源的算法 snowflake。這個算法非常強大,生成的是 64bit 的數(shù)字id,天然支持分布式。

雪花算法看起來無懈可擊,但是唯一的問題就是生成的64位 ID 太長了。賬號ID希望能控制的盡量短,個人理解有以下原因:

  • 賬號id一般顯示在個人設(shè)置里,會暴露給用戶,需要便于輸入 + 記憶,這樣客服查詢起來更方便;
  • 賬號id短并且有序能提高賬號庫的寫入性能;

于是著手改進。

改進版本

一個比較可行的方案是利用數(shù)據(jù)庫的自增 ID 特性。

為了便于理解,我們先來看一下業(yè)務(wù)里的賬號登錄流程:

  • 客戶端上傳第三方openid及token來登錄,登錄服拿到openid后需要查詢是否已經(jīng)注冊賬號
  • 如果能查到賬號ID,表明已經(jīng)注冊,再根據(jù)查到的數(shù)字賬號來做后續(xù)登錄邏輯
  • 如果查不到,則需要新注冊一個賬號到賬號表
  • 新建賬號首先需要生成一個數(shù)字的賬號ID,在目前的機制中,通過一張專門的ID生成表來做的。

OK,先來看我們?nèi)绾卧趍ysql中存儲賬號相關(guān)信息的:

賬號表,accid就是我們說的數(shù)字賬號。考慮到賬號數(shù)量級可能到千萬甚至上億,單表的性能肯定不理想,因此我們分了10張表。其表結(jié)構(gòu)為:

CREATETABLE`tbl_global_user_map_00` (

`account`varchar(32) NOTNULL,

`accid`bigint(20) NOTNULL,

`created_at` datetime DEFAULTNULL,

  PRIMARY KEY (`account`) USING BTREE

) ENGINE=InnoDBDEFAULTCHARSET=utf8

賬號ID生成表,其表結(jié)構(gòu)為:

CREATETABLE`tbl_accid` (

`id`bigint(20) NOTNULL AUTO_INCREMENT,

`stub`char(1) NOTNULLDEFAULT'',

  PRIMARY KEY (`id`) USING BTREE,

UNIQUEKEY`UQE_tbl_accid_stub` (`stub`) USING BTREE

) ENGINE=InnoDBDEFAULTCHARSET=utf8

數(shù)據(jù)為:

圖片圖片

整個表只有一行數(shù)據(jù),id列為自增列,它的值就是最新生成的賬號ID值。這個ID生成的原理是:

  • 設(shè)置id列為自增,這樣每插入一列id值就會自動遞增
  • 如果沒有其他限制,這張表的數(shù)據(jù)就會隨著insert的次數(shù)越來越多,假如賬號有幾千萬,這張表就有幾千萬行數(shù)據(jù)
  • 為此,我們增加了一列 stub,設(shè)置其為 unique key,并且每次insert其值都是一樣的(例如設(shè)置為 'a'),這樣就保證整個表只有一行數(shù)據(jù),而id會隨著每次insert自動遞增。
  • 如果直接用 insert into 語句來做插入,肯定每次都返回錯誤(除了第1次),因為 stub 為 ‘a(chǎn)’ 的記錄已經(jīng)存在了,每次插入都會失敗。
  • 我們改用 MySQL 擴展的 SQL 語句 replace into 來實現(xiàn)。replace 必須要配合唯一索引來使用。

于是 SQL 語句就是:

REPLACEINTO tbl_accid(`stub`) VALUES('a');

它的效果如下:

  • 如果 stub 為 'a' 的記錄不存在,則插入,類似 insert 操作
  • 如果 stub 為 'a' 的記錄已經(jīng)存在,則先 delete 該條記錄,再 insert 新記錄。由于刪除已有的記錄時,表的自增值不會變化,再新增記錄時 id 會在老的自增值基礎(chǔ)上繼續(xù)遞增

有同學(xué)可能要問了,為什么要搞一個單獨的ID生成表來生成自增id?將自增字段直接放到賬號表中不行么?

關(guān)鍵的問題在于業(yè)務(wù)要分表。假如賬號表分了10張,要合并自增id列的話,需要劃分好每張表的生成范圍。

例如我們設(shè)計每張表可以生成 100w 個id,那 10 張表的起始id 分別是 1, 1000001,2000001, ...

跨度非常大,和我們當(dāng)初的設(shè)計:簡短并盡量連續(xù)的要求違背。

因此,專門的賬號ID生成表是必要的。

問題暴露

上述方案完成之后,我就去吃火鍋唱歌去了。

然后,就出現(xiàn)了一個比較棘手的問題。某天晚上QA同事反饋壓力測試有報錯,登錄服會間歇性返回db錯誤,如下:

ERROR : Deadlock found when trying to get lock; try restarting transaction

登錄服收到該返回后打印了錯誤日志,提示客戶端服務(wù)器發(fā)生錯誤。很明顯,這個方案有死鎖問題。

google了一下 replace 在并發(fā)情況下的死鎖問題,大致和 replace 被分解成 delete + insert 有關(guān),而 innodb又是行鎖機制。詳細(xì)的原因非常復(fù)雜,有關(guān)資料為

很多博客也給出了建議:

通過幾個死鎖案例,我們強烈建議在生產(chǎn)環(huán)境中盡量避免使用REPLACE INTO和INSERT INTO ON DUPLICATE UPDATE語句,改用普通INSERT操作,并對INSER操作部分代碼加入異常加查,當(dāng)INSERT失敗時改為UPDATE操作。

為了再驗證一次死鎖的并非語言或者API的bug,我用了 mysql 自帶的壓測工具 mysqlslap 做了個簡單測試:

mysqlslap -uroot -p --create-schema="db_global_200" --cnotallow=2 --iteratinotallow=5 --number-of-queries=500 --query="replace_innodb.sql"

mysqlslap: Cannot run query REPLACE INTO tbl_yptest_innodb(`stub`) VALUES('a'); ERROR : Deadlock found when trying to get lock; try restarting transaction

結(jié)果顯示并發(fā)數(shù)為 2 時就出現(xiàn)了死鎖問題。然后我又嘗試將表引擎改為 myisam,再次壓測,雖然沒有出現(xiàn)死鎖問題,但是MYISAM引擎更新數(shù)據(jù)的效率比較低。因此我們不得不放棄了mysql自增ID的方案,再想其他方案。

其他方案1

繼續(xù)嘗試其他方案。其實,我們最新的ID生成方案參考了美團技術(shù)團隊的一篇文章,有興趣的可以查閱:https://tech.meituan.com/2017/04/21/mt-leaf.html

文中提到了一種Flickr團隊的改進方案:

圖片圖片

即:使用 N 個mysqlserver,來提高可用性,降低每個 mysqlserver的壓力和并發(fā)數(shù)。如果 replace into 不支持并發(fā),那就部署盡可能多的 mysqlserver,每次 replace into 時串行。

然而這種方式部署限制和消耗都太大,而且我們的登錄服是多開的,即使在單登錄服內(nèi)控制串行,多個進程也不好控制,因此這個初始的方案只能被pass。

回到開始的思路,能不能將自增id合并到 賬號表_xx 中,從而放棄 replace 呢?

我們可以將每個 tbl_global_user_map 分表類比成上圖中的 mysql-01, mysql-02, ...

然后自增時,采取 間隔步長N 的方式(默認(rèn)的自增步長是1,每次自增加1)

舉例:

  • tbl_global_user_map_00 表,起始id 20000,每次加10,其生成的 id 每次是 20000, 20010, 20020, 20030...
  • tbl_global_user_map_01 表,起始id 20001,也是每次加10,其生成的 id 每次是 20001, 20011, 20021, 20031...

這個id看起來間隔很小,看起來非常理想。

需要做的事情就是設(shè)置 auto_increment_increment 和 auto_increment_offset 兩個mysql中的變量。

然后很可惜,這兩個變量屬于 全局 或者 session(連接會話) 級別,沒有 table 級別的設(shè)置。

如果我們設(shè)置了這兩個變量,很容易影響其他表,產(chǎn)生其他錯誤。

其他方案2

再想其他方案。

仔細(xì)整理一下我們的需求,就會發(fā)現(xiàn)我們的賬號表一般只有新增,沒有刪除和修改。能不能利用讀寫分離的思想,在插入新映射關(guān)系(同時生成自增賬號ID)時,只有一張表可寫,自增id可以每次只加1;

而查詢時,屬于讀,讀的數(shù)據(jù)可以分布在10張表中。我們要做的就是定期將可寫表中已有的一些數(shù)據(jù)遷移到只讀的這10張表中(根據(jù)賬號ID做shard),控制可寫表的數(shù)量級不能太大。

賬號ID在寫表中自增,相當(dāng)于自動分配賬號ID。

圖片圖片

這個機制有點類似于我們的日志滾動,當(dāng)前正在寫的日志文件不停被寫入(插入日志),當(dāng)超過一定大小或者日期切換時會滾動成只讀的文件。

這個方案理論上可行,但是有運維復(fù)雜性:需要配合運維來做數(shù)據(jù)遷移,維護成本比較高,因此組內(nèi)討論后我們決定pass掉。

其他方案3(最終方案)

我之前所在的成熟項目也用過上述【其他方案1】中類似美團的方案,即預(yù)申請一批ID的方式。

對比來看,我們之前申請ID都是一次自增1,而這種預(yù)申請一批的方式,是一次申請N個ID,自增N,可以減少請求量和并發(fā)。當(dāng)請求量明顯下降后,之前方案里擔(dān)憂的問題:ID生成表插入行數(shù)過多也就不存在了。

唯一的問題是:預(yù)申請的ID可能會被浪費。如果申請了一段區(qū)間的id,但是沒有用完,服務(wù)器停服再啟動后會再申請一段新的,原來未使用的ID就被浪費了。

因此我們著手優(yōu)化這種算法,目的很明顯:

減少浪費的ID,去除空洞號段,并自動兼容登錄服擴容與容災(zāi)的情況。

如果這個目的能達成,那就完美契合了我們當(dāng)初的需求。

短ID方案細(xì)節(jié)

設(shè)計發(fā)號表 tbl_account_freeid

圖片圖片

每個登陸服要申請一批賬號ID時,就來表中插入一行,規(guī)定每次申請1000個,由于segment自增,相當(dāng)于申請了 [(segment - 1) * 1000, segment * 1000) 這段區(qū)間,申請時候默認(rèn) left 是 0。

登錄服正常停服維護時將剩余未用完的數(shù)量寫入 left,防止浪費,下次啟動時候還可以再利用。

以下分析各種case:

a) 初始 tbl_account_freeid 沒有數(shù)據(jù),假如 loginsvr 開3個實例,實例編號分別是1,2,3。

服務(wù)器啟動時候需要做一次查找,要找對應(yīng) 實例編號的segment。如果找到了,且 left 不為 0,則說明該號段還可以用;如果找不到,或者left為0,則需要新申請(新插入一行記錄)。

于是第一次啟服后數(shù)據(jù)為:

圖片圖片

b) 如果loginsvr發(fā)現(xiàn)內(nèi)存中號段用完了,就不用再查找,直接申請,往數(shù)據(jù)庫插入一行數(shù)據(jù),假定實例編號 1 和 3 的 號段用完了,新申請。

然后各個登錄服正常停服,left 回寫。可能的數(shù)據(jù)情況如下:

圖片圖片

c) 再次起服時,查找到各個編號的實例都有號段可用。無需新插入數(shù)據(jù),但是對應(yīng)的 left 要改為0(相當(dāng)于申請了 left 個)。

圖片圖片

d) 如果此時 loginsvr 擴容,新增編號 4 - 10 的 svr,和初始情況類似,需要先查找,沒有則申請。此時數(shù)據(jù)可能為:

圖片圖片

這種方式的特點就是,登錄服服務(wù)過程中,對應(yīng)數(shù)據(jù)庫里的 left 為 0,如果停了,數(shù)據(jù)庫里 left 為號段內(nèi)剩余的可用數(shù)量。

如果登錄服宕機,則沒有回寫 left 的過程,則對應(yīng)號段內(nèi)沒有用完的(最多1000)會浪費。

責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2025-08-06 09:31:12

2020-07-17 07:15:38

數(shù)據(jù)庫ID代碼

2025-09-16 07:00:00

雪花算法IDPython

2025-05-19 04:00:00

2025-08-13 03:00:00

2025-11-03 04:00:00

2025-07-17 12:37:21

2025-10-09 07:10:00

ID代碼生成JavaScript

2020-12-04 10:05:00

Pythonprint代碼

2020-12-02 11:18:50

print調(diào)試代碼Python

2021-06-09 06:41:11

OFFSETLIMIT分頁

2020-02-05 16:37:06

方括號Python方法

2020-02-05 14:17:48

Python數(shù)據(jù)結(jié)構(gòu)JavaScript

2019-09-05 13:06:08

雪花算法分布式ID

2022-03-08 13:46:22

httpClientHTTP前端

2020-12-07 06:05:34

apidocyapiknife4j

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2023-10-26 16:33:59

float 布局前段CSS

2021-01-29 11:05:50

PrintPython代碼

2020-12-15 08:06:45

waitnotifyCondition
點贊
收藏

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

欧美性xxxx图片| 国产老熟妇精品观看| 99国产揄拍国产精品| 国产精品99免费看| 日韩精品在线观看一区| 国产精品人人妻人人爽人人牛| 日本视频不卡| 成人综合在线观看| 国产精品久久久久久久7电影| 亚洲图片第一页| 国产成人高清精品免费5388| 欧美综合亚洲图片综合区| 亚洲精品天堂成人片av在线播放| 神马精品久久| 国产伦精品一区二区三区在线观看 | 国内老熟妇对白xxxxhd| 先锋影音国产一区| 色综合久久精品亚洲国产| 熟女俱乐部一区二区视频在线| 国产成年精品| 91国内精品野花午夜精品 | 免费在线日韩av| 欧美成人午夜免费视在线看片| 亚洲精品视频久久久| 91综合久久爱com| 欧美精品日韩一本| 日本成人黄色网| av免费不卡| 国产精品福利av| 欧美高清视频一区| www.97av.com| 国产一区激情在线| 91精品久久久久久久久久| 天天爱天天做天天爽| 91久久亚洲| 欧美成人精品xxx| 999精品久久久| 国产一区二区三区天码| 亚洲成人黄色在线| 韩国av中国字幕| 精品精品视频| 91精品国产免费| 视频二区在线播放| 亚洲日本在线观看视频| 欧美性猛交xxxx富婆| 欧美爱爱视频免费看| www555久久| 夜夜亚洲天天久久| www.欧美黄色| 欧美激情成人动漫| 亚洲午夜电影网| 奇米777四色影视在线看| 国产黄大片在线观看画质优化| 国产精品久久久久久久久免费樱桃| 欧美日韩一区在线观看视频| 欧美孕妇孕交xxⅹ孕妇交| 91美女精品福利| 欧美亚洲另类在线一区二区三区| 日色在线视频| 国产日韩欧美精品在线| 日韩欧美视频一区二区三区四区| 国产黄色在线播放| 中文字幕亚洲成人| 在线观看18视频网站| 亚洲丝袜一区| 性欧美疯狂xxxxbbbb| ww国产内射精品后入国产| 国产精品粉嫩| 在线观看日韩电影| 免费精品99久久国产综合精品应用| 一区二区三区| 精品欧美久久久| 中文字幕第3页| 国产精品三级| www.日韩av.com| 国产性70yerg老太| 一区二区三区四区五区在线 | 久久亚洲欧美日韩精品专区| 欧美成人一二三区| 国产视频一区三区| 国产精品天天狠天天看| 精品国产999久久久免费| 99re热这里只有精品免费视频| 日本高清一区| 91麻豆免费在线视频| 精品国产老师黑色丝袜高跟鞋| 任你操这里只有精品| 成人短视频软件网站大全app| 精品国产免费一区二区三区四区 | 性生交大片免费看女人按摩| 91视视频在线观看入口直接观看www | 日本三级视频在线观看| 亚洲一区二区三区免费视频| 成年人视频在线免费| 国产一区二区三区黄网站| 亚洲精品白浆高清久久久久久| 国产激情av在线| 好看的日韩av电影| 国产精品欧美久久久| 黄色片一区二区| 国产精品色哟哟网站| av在线观看地址| 精品久久福利| 日韩av网站导航| 日本高清不卡免费| 久久久久久自在自线| av一区二区三区在线观看| 国产精品久久久久久久龚玥菲| 亚洲综合av网| www.cao超碰| 美女久久久久| 韩日欧美一区二区| 国产内射老熟女aaaa∵| 久久久午夜精品| 青青青在线视频播放| 在线免费成人| 亚洲天堂av图片| 国产精品久久久久久久妇| 国产一区二区三区精品欧美日韩一区二区三区 | 久久激情电影| 青青草成人在线| 欧日韩在线视频| 亚洲欧美一区二区三区极速播放 | 国产精品网曝门| 日韩av三级在线| av成人资源| 久久视频在线直播| 正在播放亚洲精品| 久久久久久久综合| 日韩中文字幕三区| 国产精品午夜av| 欧美巨乳美女视频| 99精品在线视频观看| 国产精品免费av| 特级丰满少妇一级| 欧美综合一区| 国产精品第10页| 激情小视频在线| 色欲综合视频天天天| 激情综合丁香五月| 国产精品普通话对白| 国产视色精品亚洲一区二区| 丁香花电影在线观看完整版| 欧美成人一区二区三区片免费| 26uuu成人网| 狠狠色综合色综合网络| 欧洲视频一区二区三区| 在线成人av观看| 亚洲精品在线看| 黄色片视频免费| 米奇777四色精品人人爽| 欧美成人国产| 91在线高清视频| 国产在线观看免费麻豆| 91精品国产欧美日韩| 农村黄色一级片| 福利电影一区二区三区| 日韩视频在线视频| 天堂99x99es久久精品免费| 欧美亚洲视频在线看网址| 美国成人毛片| 欧美日韩一区 二区 三区 久久精品| 丁香激情五月少妇| 九色综合国产一区二区三区| 成人性做爰片免费视频| 91久久偷偷做嫩草影院电| 97精品国产aⅴ7777| 男同在线观看| 欧美日韩日日摸| 在线看的片片片免费| 成人高清视频免费观看| 免费高清在线观看免费| 成人系列视频| 91在线免费看片| 成全电影大全在线观看| 亚洲免费av电影| 亚洲一区二区天堂| 夜夜夜精品看看| 美女久久久久久久久久| 日韩中文字幕不卡| 女女百合国产免费网站| 开心激情综合| 国产在线日韩在线| 操喷在线视频| 中文字幕在线看视频国产欧美| 国产视频手机在线观看| 欧美日韩国产在线看| 成人无码精品1区2区3区免费看| 国产999精品久久久久久绿帽| www黄色av| 午夜精品久久久久久久四虎美女版| 国产精品日韩一区二区免费视频| 欧洲亚洲两性| 欧美精品videossex88| 黄色av免费在线观看| 日韩一区二区电影| 无码人妻精品一区二区蜜桃色欲 | 韩国成人在线视频| 免费无码毛片一区二三区| 日本久久精品| 国产在线一区二区三区欧美| 久久精品国产福利| 97在线观看视频| 黄色免费在线观看网站| 精品中文字幕久久久久久| 97免费观看视频| 欧美午夜宅男影院在线观看| 日韩成人毛片视频| 国产无遮挡一区二区三区毛片日本| 99热这里只有精品2| 日本亚洲天堂网| 久久久久久久久久久99| 欧美ab在线视频| 日韩资源av在线| 久久狠狠久久| 亚洲999一在线观看www| 国产韩日精品| 青青草精品毛片| 黄色18在线观看| 欧美成人一区二区三区电影| av在线首页| 亚洲久久久久久久久久久| 亚洲国产精彩视频| 91精品国产综合久久久久久 | 日本精品一区二区三区高清 久久| 无人区乱码一区二区三区| 国产免费观看久久黄| 88xx成人永久免费观看| 57pao国产精品一区| 黄色美女视频在线观看| 久久成人国产精品| 黄色在线观看网站| 日韩亚洲精品视频| 69久久精品| 中文字幕久久久av一区| 久久这里精品| 亚洲片在线资源| 日本黄在线观看| 亚洲精品自拍第一页| 无码h黄肉3d动漫在线观看| 亚洲第一中文字幕在线观看| 精品人妻无码一区二区| 日韩午夜在线影院| 精品国产亚洲av麻豆| 日韩欧美国产综合一区| 成人1区2区3区| 精品乱人伦小说| 亚洲精品第五页| 亚洲电影av在线| 天堂中文在线视频| 亚洲天堂成人在线视频| 蜜桃视频在线播放| 国产亚洲精品成人av久久ww| 国产黄色在线| 久久久精品一区二区三区| 成人免费看片| 欧美精品在线看| 国产网红女主播精品视频| 韩国日本不卡在线| 亚洲电影观看| 国产精品 欧美在线| 国产日本久久| 亚洲已满18点击进入在线看片| 亚洲国产欧美在线观看| 国产免费一区二区| 亚洲精品亚洲人成在线| 视频一区视频二区视频| 亚洲电影影音先锋| 免费看毛片的网址| 乱人伦精品视频在线观看| 麻豆一区二区三区视频| 狠狠色综合日日| 插我舔内射18免费视频| 国产日韩欧美精品在线| 在线免费观看亚洲视频| 午夜成人在线视频| 波多野结衣在线观看视频| 6080日韩午夜伦伦午夜伦| 亚洲乱码在线观看| 亚洲免费视频一区二区| 麻豆网站在线观看| 久久久久久国产免费| 日本欧美日韩| 亚洲综合小说区| 偷拍精品福利视频导航| 在线国产伦理一区| 在线播放日韩| 午夜久久久精品| 成人短视频下载| 国产精品酒店视频| 亚洲成人动漫av| 中文字幕免费在线看| 亚洲成人精品视频| 91精品大全| 亚洲97在线观看| 91国产精品| 美女精品国产| 欧美日韩亚洲国产精品| 亚洲综合在线网站| 成人免费观看视频| 欧美美女性生活视频| 狠狠爱在线视频一区| 国产露脸国语对白在线| 亚洲人成在线观看网站高清| 怡红院在线播放| 国产精品入口日韩视频大尺度| 国产厕拍一区| 懂色av粉嫩av蜜臀av| 丝袜亚洲精品中文字幕一区| 老熟女高潮一区二区三区| 国产精品久久久久久妇女6080 | 欧美综合二区| 一级黄色大片免费看| 中文字幕日本不卡| 波多野结衣大片| 亚洲娇小xxxx欧美娇小| 亚洲性图自拍| 91久久精品美女| 日本电影一区二区| 一区二区三区国产免费| 91丨porny丨最新| 日韩伦理在线视频| 日韩欧美成人午夜| 国产精品实拍| 91精品国产综合久久男男| 精品国产欧美日韩| 北条麻妃在线观看| www.爱久久.com| 久久精品国产亚洲av高清色欲| 717成人午夜免费福利电影| 国产福利免费在线观看| 国产成人高潮免费观看精品| 全国精品免费看| 国产视频九色蝌蚪| 99精品视频在线免费观看| 久一区二区三区| 精品日产卡一卡二卡麻豆| 亚洲精品白浆| 99在线视频免费观看| 欧美日韩亚洲一区二区三区在线| 美女日批在线观看| 一区二区三区国产豹纹内裤在线| 精品久久久久中文慕人妻| 九九精品视频在线| 亚洲91网站| 久青草视频在线播放| 懂色一区二区三区免费观看| a级片在线观看免费| 精品国产制服丝袜高跟| 久久五月精品中文字幕| 国产精品久久久久久久小唯西川| 精品二区久久| xxxxxx黄色| 欧美性xxxxx极品| 福利在线视频导航| 成人精品福利视频| 你懂的亚洲视频| 成人在线视频免费播放| 欧美视频裸体精品| 草碰在线视频| 91系列在线播放| 亚洲国产一区二区三区高清| 喷水视频在线观看| 在线免费不卡电影| 九色porny丨首页在线| 成人在线免费观看一区| 99av国产精品欲麻豆| 自拍偷拍视频亚洲| 欧美丰满少妇xxxxx高潮对白| 性欧美ⅴideo另类hd| 精品久久一区二区三区蜜桃| 丝袜美腿高跟呻吟高潮一区| 久久一级免费视频| 亚洲白虎美女被爆操| 免费成人美女女| 在线观看成人免费| 99re亚洲国产精品| 国产精品视频在线观看免费| 久久久久久一区二区三区| 欧美美女在线观看| 亚洲av无日韩毛片久久| 无码av中文一区二区三区桃花岛| 国产高清视频在线| yellow视频在线观看一区二区| 亚洲欧美日韩专区| 麻豆明星ai换脸视频| 日韩精品在线第一页| 国产精品日本一区二区三区在线| 久久精品国产sm调教网站演员| 欧美激情综合网| 六月丁香色婷婷| 成人xxxxx| 亚洲综合电影一区二区三区| 免费在线观看a级片| 日韩黄在线观看| 精品亚洲a∨一区二区三区18| 干日本少妇首页| 亚洲黄色小说网站| 成年人视频免费在线观看| 国产乱码精品一区二区三区卡 |