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

微服務(wù)架構(gòu)的數(shù)據(jù)庫(kù)為什么喜歡分庫(kù)分表?

開(kāi)發(fā) 前端
微服務(wù)架構(gòu)想必大家都是有所耳聞。

1.引入

微服務(wù)架構(gòu)想必大家都是有所耳聞。

簡(jiǎn)單來(lái)說(shuō),微服務(wù)架構(gòu)就是把傳統(tǒng)的一個(gè)單體應(yīng)用以一套"小服務(wù)"的方式進(jìn)行開(kāi)發(fā),這些"小服務(wù)"可以運(yùn)行在不同機(jī)器上,它們?cè)谧约旱倪M(jìn)程中運(yùn)行,"小服務(wù)"之間可以通過(guò)像是 HTTP API 這樣的輕量級(jí)的機(jī)制進(jìn)行通信,這些"小服務(wù)"緊緊圍繞項(xiàng)目的業(yè)務(wù)需求開(kāi)發(fā),同時(shí),它們是以業(yè)務(wù)邊界進(jìn)行劃分成獨(dú)立的微服務(wù)。這些微服務(wù)看似獨(dú)立又像是一個(gè)整體,構(gòu)成了一個(gè)業(yè)務(wù)集群。

2.為何分庫(kù)

微服務(wù)架構(gòu)從業(yè)務(wù)邏輯實(shí)現(xiàn)的角度上看系統(tǒng)的性能得到了優(yōu)化,可是對(duì)數(shù)據(jù)庫(kù)的負(fù)擔(dān)就加重了。假設(shè)一個(gè)分布式電子商務(wù)系統(tǒng),那么這個(gè)系統(tǒng)會(huì)包含會(huì)員信息、訂單信息、商品信息、商品庫(kù)存信息等等內(nèi)容,數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,要訪問(wèn)數(shù)據(jù),就要與數(shù)據(jù)庫(kù)建立連接,而數(shù)據(jù)庫(kù)的連接是有限的,況且在這樣的業(yè)務(wù)環(huán)境下,會(huì)出現(xiàn)較多的高并發(fā)場(chǎng)景,如果都同時(shí)向這個(gè)商城數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù),數(shù)據(jù)庫(kù)顯然是受不起這樣的折騰。如圖:

圖片

上文提到,微服務(wù)是以業(yè)務(wù)邊界進(jìn)行劃分的,那么這些服務(wù)就可以使用不同的編程語(yǔ)言書(shū)寫(xiě),以及不同數(shù)據(jù)存儲(chǔ)技術(shù),前提是保持最低限度的集中式管理。也就是說(shuō),各個(gè)微服務(wù)處理的數(shù)據(jù)可以達(dá)到自治。

因此,為了處理高并發(fā),設(shè)計(jì)數(shù)據(jù)庫(kù)就可以采取分庫(kù)的方式進(jìn)行,使得各個(gè)微服務(wù)擁有自己獨(dú)立的數(shù)據(jù)庫(kù),就好比訂單微服務(wù)自治訂單信息、支付流水信息、退款信息等等,當(dāng)訂單微服務(wù)需要會(huì)員微服務(wù)的會(huì)員數(shù)據(jù)時(shí),可以通過(guò)服務(wù)的通訊機(jī)制,比如feign,以此達(dá)到分擔(dān)傳統(tǒng)模式壓力的效果,如圖:

圖片

同時(shí),對(duì)于每一個(gè)劃分好的庫(kù)也可以再進(jìn)行分庫(kù)部署,劃分出的庫(kù)擁有相同的表,不同的只有存放的數(shù)據(jù)集。它可以有效的緩解單機(jī)單庫(kù)的性能瓶頸和壓力隨著需求的細(xì)化,項(xiàng)目的業(yè)務(wù)量是龐大的,這也導(dǎo)致項(xiàng)目的數(shù)據(jù)量是龐大的,數(shù)據(jù)庫(kù)分庫(kù)部署可以有效減輕磁盤(pán)負(fù)擔(dān)。如圖:

圖片

3.為何分表

微服務(wù)開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到大表的情況,所謂大表是指存儲(chǔ)了百萬(wàn)級(jí)乃至千萬(wàn)級(jí)條記錄的表,這樣的表數(shù)據(jù)過(guò)于龐大,導(dǎo)致數(shù)據(jù)庫(kù)在查詢和插入的時(shí)候耗時(shí)太長(zhǎng),就算使用索引,在大量的數(shù)據(jù)面前,查詢的效率也會(huì)有所降低,更何況是使用不到索引的情況,下邊列舉一些使用不到索引的情況:

# 使用LIKE通配符置于字符串前面
mysql> SELECT * FROM test WHERE name LIKE '%小王';
# 函數(shù)運(yùn)算
mysql> SELECT * FROM test WHERE UPPER(name) = 'ZS';

分表是對(duì)表進(jìn)行分區(qū),最主要的目的就是減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān),提高數(shù)據(jù)庫(kù)的效率。表分區(qū)是根據(jù)一定的規(guī)則,把數(shù)據(jù)庫(kù)的一張表分解為多個(gè)更小的表,使用分區(qū)的表從邏輯上看還是一個(gè)表,但物理存儲(chǔ)分為了多份,表分區(qū)后的每個(gè)部分,都可以獨(dú)立的進(jìn)行數(shù)據(jù)處理,分區(qū)具有以下好處:

  • 存儲(chǔ)空間更大了
  • 查詢速度更快,只需要掃描需要的分區(qū)表,再將結(jié)果進(jìn)行合并。不會(huì)因?yàn)槿頀呙瑁速M(fèi)不必要的資源
  • 對(duì)于刪除數(shù)據(jù)來(lái)說(shuō),處理更方便了,只需要?jiǎng)h除對(duì)應(yīng)分區(qū)的數(shù)據(jù)即可
  • 跨越磁盤(pán)存儲(chǔ),充分利用磁盤(pán)讀取,提高吞吐量

分區(qū)是將數(shù)據(jù)分段劃分在多個(gè)位置存放,可以是同一塊磁盤(pán)也可以在不同的機(jī)器。表分區(qū)有很多的策略,根據(jù)不同的策略可以適應(yīng)多種業(yè)務(wù)場(chǎng)景,例如可以通過(guò)表內(nèi)屬性值的范圍進(jìn)行分表,如下圖,將商城支付流水表以流水時(shí)間進(jìn)行劃分:

圖片

表在分區(qū)后,表面上還是一張表,但數(shù)據(jù)散列到多個(gè)位置了。應(yīng)用程序讀寫(xiě)的時(shí)候操作的還是大表的表名,數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)去組織分區(qū)的數(shù)據(jù)。 使用分區(qū)需要注意:

MySQL 8.0版本前支持創(chuàng)建表分區(qū)的存儲(chǔ)引擎有InnoDB、Memory、MyISAM、MERGE,MySQL 8.0之后就只支持InnoDB存儲(chǔ)引擎了

分區(qū)表必須一致,即同一張表分區(qū)后,各個(gè)分區(qū)表必須使用一致的存儲(chǔ)引擎

3.1.表分區(qū)

表分區(qū)可在創(chuàng)建數(shù)據(jù)庫(kù)表的時(shí)候進(jìn)行指定,格式如下:

CREATE TABLE TABLE_NAME(
………
)
PARTITION BY RANGE|LIST|HASH(TABLE_COLUMN)(
PARTITION P0……
)

上文提到表分區(qū)有不同策略,也可以稱為不同類型:

  • RANGE分區(qū)
  • LIST分區(qū)
  • COLUMNS分區(qū)
  • HASH分區(qū)
  • KEY分區(qū)
  • 子分區(qū)

3.1.1.RANGE分區(qū)

RANGE分區(qū)是基于一個(gè)給定連續(xù)區(qū)間范圍,區(qū)間之間的不能互相重疊,數(shù)據(jù)會(huì)根據(jù)范圍,分配到不同的分區(qū),RANGE的分區(qū)鍵必須是單列的int類型,每個(gè)分區(qū)范圍必須按順序(后一個(gè)分區(qū)范圍值比前一個(gè)值大)。 假設(shè)指定一表為RANGE分區(qū),分4個(gè)區(qū),最后一個(gè)區(qū)為了防止數(shù)據(jù)定義問(wèn)題,將其設(shè)置為數(shù)值最大值“MAXVALUE”:

mysql> CREATE TABLE testrange(
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(10))
-> PARTITION BY RANGE(id)(
-> PARTITION p0 VALUES LESS THAN(50),
-> PARTITION p1 VALUES LESS THAN(100),
-> PARTITION p2 VALUES LESS THAN(150),
-> PARTITION p3 VALUES LESS THAN(MAXVALUE));

3.1.2.LIST分區(qū)

LIST分區(qū)的分區(qū)鍵的類型也只能是int類型,LIST分區(qū)是基于枚舉值列表進(jìn)行分區(qū),枚舉的范圍同樣不能有重復(fù)的值,如果插入數(shù)據(jù)不在枚舉范圍之內(nèi),則會(huì)報(bào)錯(cuò)。

# 指定為L(zhǎng)IST分區(qū),分2個(gè)區(qū)
mysql> CREATE TABLE testlist(
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(10))
-> PARTITION BY LIST(id)(
-> PARTITION p0 VALUES IN (1,2,3),
-> PARTITION p1 VALUES IN (4,6,9));

mysql> INSERT INTO testlist VALUES(null,'張三');
mysql> INSERT INTO testlist VALUES(2,'李四');

# 插入列限制數(shù)值不存在的數(shù),則會(huì)提示這張表沒(méi)有改值的分區(qū)
mysql> INSERT INTO testlist VALUES(5,'李三');
ERROR 1526 (HY000): Table has no partition for value 5

3.1.3.COLUMNS分區(qū)

COLUMNS分區(qū)區(qū)別于RANGE分區(qū)和LIST分區(qū)的最大特點(diǎn)是支持多列的分區(qū),COLUMNS分區(qū)有兩種形式,RANGE COLUMNS和LIST COLUMNS分區(qū)。兩種分區(qū)形式都支持整數(shù)類型,日期類型,字符類型,區(qū)別在于,如果COLUMNS分區(qū)的分區(qū)鍵有多個(gè),當(dāng)數(shù)據(jù)庫(kù)要進(jìn)行數(shù)據(jù)插入時(shí),會(huì)先考慮第一個(gè)鍵是否滿足,如果滿足條件就會(huì)進(jìn)行數(shù)據(jù)寫(xiě)入,如果不滿足條件就要對(duì)第二個(gè)鍵的條件進(jìn)行判斷,以此類推。

mysql> CREATE TABLE testrancol(
-> sid INT,cid INT,PRIMARY KEY(sid,cid))
-> PARTITION BY RANGE COLUMNS(sid,cid)(
-> PARTITION p0 VALUES LESS THAN(1,10),
-> PARTITION p1 VALUES LESS THAN(10,20));

3.1.4.HASH分區(qū)

HASH分區(qū)主要用于將一整個(gè)數(shù)據(jù),分散為若干個(gè)相等數(shù)量的分區(qū),HASH分區(qū)有兩種類型:

(1)常規(guī)HASH分區(qū),使用的是取模運(yùn)算。假設(shè)分區(qū)數(shù)為4,則有0,1,2,3四個(gè)值,對(duì)應(yīng)分區(qū)為四個(gè)。因?yàn)槭褂玫娜∧_\(yùn)算,所以分區(qū)鍵必須是整數(shù)類型的列或返回整數(shù)類型的表達(dá)式:

mysql> CREATE TABLE testhash1(
-> id INT PRIMARY KEY,num VARCHAR(10))
-> PARTITION BY HASH(id) PARTITIONS 4;
# 如果此時(shí)插入數(shù)據(jù)id為83,則模4取余得3,將數(shù)據(jù)放在第三個(gè)分區(qū)中

(2)線性HASH分區(qū),其語(yǔ)法書(shū)寫(xiě)不同于常規(guī)HASH分區(qū),需要加上LINEAR關(guān)鍵字。在數(shù)據(jù)分配的時(shí)候,使用的是2的冪運(yùn)算進(jìn)行分配數(shù)據(jù)的配分有兩步運(yùn)算:

mysql> CREATE TABLE testhash2(
-> id INT PRIMARY KEY,num VARCHAR(10))
-> PARTITION BY LINEAR HASH(id) PARTITIONS 4;
# 1、第一步,算出V的值
# 計(jì)算方式為:V=POWER(2,CEILING(LOG(2,分區(qū)數(shù))))
# 假設(shè)分區(qū)數(shù)為4,log()的值為2
# Ceiling()取最小整數(shù),依舊是2
# power返回2的2次方,最后V=4

# 2、第二步,對(duì)分區(qū)鍵和V-1進(jìn)行位與運(yùn)算
# 假設(shè)分區(qū)鍵值為8和10:
# 那么插入8與10和4-1的3進(jìn)行按位與運(yùn)算得出插入分區(qū)分別是0與2分區(qū)

3.1.5.KEY分區(qū)

KEY分區(qū)有與HASH分區(qū)類似,不同的地方有以下幾點(diǎn):

  • KEY分區(qū)不允許使用自定義表達(dá)式作為分區(qū)鍵
  • KEY分區(qū)如果不指定分區(qū)鍵,則會(huì)默認(rèn)使用表中主鍵。如果沒(méi)有主鍵,則使用非空唯一鍵。如果都沒(méi)有,那就必須手動(dòng)指定分區(qū)鍵
  • 可以使用非數(shù)值類型的列作為分區(qū)鍵 KEY分區(qū)也分為常規(guī)KEY分區(qū)和線性KEY分區(qū),其運(yùn)算規(guī)則與HASH分區(qū)一致,不多做贅述。
mysql> CREATE TABLE testhash1(
-> id INT PRIMARY KEY,num VARCHAR(10))
-> PARTITION BY [LINEAR] KEY(id) PARTITIONS 4;

3.1.6.子分區(qū)

子分區(qū)是對(duì)分區(qū)表的每個(gè)區(qū)分,進(jìn)行二次的分區(qū),使用RANGE和LIST對(duì)表進(jìn)行分區(qū),則可以使用HASH或KEY進(jìn)行子分區(qū),假設(shè)表有2個(gè)分區(qū),這2個(gè)分區(qū)又被進(jìn)一步的分為2個(gè)子分區(qū),總共有4個(gè)分區(qū),寫(xiě)法有兩種:

  • 隱式創(chuàng)建子分區(qū),子分區(qū)的名字是自動(dòng)創(chuàng)建且重名,但不會(huì)沖突,輸入小于1900的年份,會(huì)按HASH分區(qū)的規(guī)則(模2運(yùn)算),分別存放在兩個(gè)P0中:
mysql> CREATE TABLE testfh(
-> id INT,pur DATE)
-> PARTITION BY RANGE(YEAR(pur))
-> SUBPARTITION BY HASH(TO_DAYS(pur))
-> SUBPARTITIONS 2 (
-> PARTITION p0 VALUES LESS THAN(1900),
-> PARTITION p1 VALUES LESS THAN MAXVALUE);
  • 顯示創(chuàng)建子分區(qū),要求每個(gè)分區(qū)的子分區(qū)數(shù)量必須一致,且分區(qū)的創(chuàng)建必須一致,即全部子分區(qū)都使用隱式創(chuàng)建或顯式創(chuàng)建,不可混用,同時(shí)子分區(qū)的名字必須唯一
mysql> CREATE TABLE testfh(
-> id INT,pur DATE)
-> PARTITION BY RANGE(YEAR(pur))
-> SUBPARTITION BY HASH(TO_DAYS(pur))(
-> PARTITION p0 VALUES LESS THAN(1900)(
-> SUBPARTITION s0, SUBPARTITION s1),
-> PARTITION p1 VALUES LESS THAN MAXVALUE(
-> SUBPARTITION s2, SUBPARTITION s3));

3.2.表分區(qū)注意點(diǎn)

3.2.1.RANGE表分區(qū)注意點(diǎn)

使用RANGE策略進(jìn)行表分區(qū)的好處在于分區(qū)后數(shù)據(jù)的擴(kuò)容性好,不需要進(jìn)行數(shù)據(jù)遷移,如果插入的數(shù)據(jù)超過(guò)原先建立分區(qū)的范圍可以根據(jù)實(shí)際情況考慮在原有基礎(chǔ)上增加表分區(qū)或者水平部署一張相同的表進(jìn)行存放數(shù)據(jù),增加表分區(qū)可參考以下格式:

# RANGE分區(qū)中添加分區(qū),是在尾部進(jìn)行添加,所以如果RANGE已經(jīng)有包含最大值的分區(qū),那么新添加的分區(qū)就會(huì)報(bào)錯(cuò)
ALTER TABLE 表名 ADD PARTITION (PARTITION 分區(qū)名 VALES LESS THAN (范圍));

需要注意的是表在RANGE分區(qū)的時(shí)候指定的分區(qū)鍵需要考慮實(shí)際情況,如果使用不當(dāng)會(huì)造成個(gè)別分區(qū)數(shù)據(jù)過(guò)多的情況。

假設(shè)一個(gè)電子商務(wù)系統(tǒng)需要存放訂單的相關(guān)信息,用戶進(jìn)行商品購(gòu)買(mǎi)則產(chǎn)生訂單,訂單往往包含多個(gè)不同商品,可以設(shè)置訂單項(xiàng)表用于存放訂單的每個(gè)商品id、商品名、價(jià)格、數(shù)量等數(shù)據(jù),如果以商品id作為分區(qū)鍵則會(huì)產(chǎn)生"數(shù)據(jù)熱點(diǎn)"問(wèn)題,有些商品銷(xiāo)量好,那么分區(qū)的數(shù)據(jù)就多,一些商品銷(xiāo)量不好那么數(shù)據(jù)就會(huì)很少。

圖片

3.2.2.HASH表分區(qū)注意點(diǎn)

使用HASH策略的好處就在于解決數(shù)據(jù)熱點(diǎn)問(wèn)題,但是,HASH表分區(qū)的分區(qū)數(shù)量是固定的,如果數(shù)據(jù)過(guò)多達(dá)到了瓶頸,就要將分區(qū)數(shù)量進(jìn)行修改了,因此原先已經(jīng)存放的數(shù)據(jù)又要進(jìn)行取模運(yùn)算重新存放,需要進(jìn)行數(shù)據(jù)遷移,語(yǔ)法如下:

# 增加2個(gè)分區(qū)
ALTER TABLE 表名 PARTITION 2;
# 減少2個(gè)分區(qū)
ALTER TABLE 表名 COALESCE PARTITION 2;

3.2.3.MySQL表分區(qū)遇到NULL值

當(dāng)MySQL表分區(qū)遇到NULL值,MySQL不會(huì)禁止分區(qū)鍵有NULL值,但不同的分區(qū)類型會(huì)將NULL值當(dāng)成不同的數(shù)據(jù)對(duì)待,如:

在RANGE分區(qū)中,NULL值被當(dāng)成最小的數(shù)。

在LIST分區(qū)中,NULL被當(dāng)成字符串,如果NULL不在LIST的枚舉范圍中,還有出現(xiàn)報(bào)錯(cuò)

在HASH和KEY中,NULL值被當(dāng)成0 所以,在使用分區(qū)時(shí),要注意處理NULL值輸入,以免出現(xiàn)MySQL的誤判,將分區(qū)鍵設(shè)為NOT NULL或默認(rèn)值都可以好的對(duì)應(yīng)這種情況。

4.總結(jié)

本文介紹了為什么微服務(wù)架構(gòu)大多采用分庫(kù)分表的方式進(jìn)行設(shè)計(jì)數(shù)據(jù)庫(kù),當(dāng)然,分布式系統(tǒng)在設(shè)計(jì)過(guò)程中進(jìn)行分庫(kù)分表還需要注意一些問(wèn)題,比如,在我們創(chuàng)建數(shù)據(jù)庫(kù)表的時(shí)候是否可以先考慮表內(nèi)數(shù)據(jù)的特性,事先將一些不經(jīng)常需要更改的內(nèi)容抽離出來(lái),形成一張新的表,從某種程度上說(shuō),這種方式也是一種"分表"的操作。

同時(shí),在進(jìn)行分庫(kù)在涉及事務(wù)安全性的時(shí)候也需要注意,比如商城中用戶提交了訂單,那么系統(tǒng)就需要對(duì)所購(gòu)買(mǎi)商品的庫(kù)存進(jìn)行鎖定,如果出現(xiàn)用戶未支付訂單超時(shí)等問(wèn)題,就需要將已經(jīng)鎖定的庫(kù)存進(jìn)行數(shù)據(jù)回滾了,可是訂單和庫(kù)存在不同的數(shù)據(jù),要如何保證事務(wù)的原子性呢?如果都在本地部署,可以使用AOP對(duì)事務(wù)進(jìn)行代理,在不同機(jī)器部署的情況下也可以通過(guò)設(shè)置undo_log表并通過(guò)阿里的Seata進(jìn)行代理。但是在高并發(fā)情況下,這些方式容易造成"雪崩",這個(gè)時(shí)候還可以考慮消息隊(duì)列,通過(guò)延遲隊(duì)列來(lái)完成庫(kù)存的解鎖。

責(zé)任編輯:華軒 來(lái)源: GreatSQL社區(qū)
相關(guān)推薦

2022-06-15 07:32:24

數(shù)據(jù)庫(kù)分庫(kù)分表

2024-08-02 15:47:28

數(shù)據(jù)庫(kù)分庫(kù)分表

2021-01-26 05:37:08

分庫(kù)分表內(nèi)存

2019-01-16 14:00:54

數(shù)據(jù)庫(kù)分庫(kù)分表

2018-01-15 05:54:45

數(shù)據(jù)庫(kù)讀寫(xiě)分離互聯(lián)網(wǎng)

2018-01-09 18:46:44

數(shù)據(jù)庫(kù)架構(gòu)讀寫(xiě)分離

2022-12-05 07:51:24

數(shù)據(jù)庫(kù)分庫(kù)分表讀寫(xiě)分離

2018-06-01 14:00:00

數(shù)據(jù)庫(kù)MySQL分庫(kù)分表

2019-03-06 14:42:01

數(shù)據(jù)庫(kù)分庫(kù)分表

2021-04-01 05:40:53

分庫(kù)分表數(shù)據(jù)庫(kù)MySQL

2021-10-21 09:10:34

微服務(wù)架構(gòu)數(shù)據(jù)

2024-12-04 13:02:34

數(shù)據(jù)庫(kù)分庫(kù)分表

2019-01-29 15:25:11

阿里巴巴數(shù)據(jù)庫(kù)分庫(kù)分表

2019-09-09 08:28:48

互聯(lián)網(wǎng)數(shù)據(jù)磁盤(pán)

2021-10-27 20:54:24

分庫(kù)分表高并發(fā)

2020-07-28 10:45:51

數(shù)據(jù)庫(kù)三范式MySQL

2023-11-03 14:50:14

2025-06-05 01:11:00

2019-08-16 10:19:01

NewSQL數(shù)據(jù)庫(kù)分庫(kù)分表

2018-05-29 08:39:26

DBA數(shù)據(jù)庫(kù)案例
點(diǎn)贊
收藏

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

亚洲国产99精品国自产| 欧美卡一卡二卡三| 国产在线观看成人| 在线看欧美视频| 久久av综合| 特黄视频在线观看| 精品三级国产| 91老师片黄在线观看| 中文字幕av资源一区| 成人av影院在线| 亚洲精品二三区| 亚洲一区二区三区精品视频| 五月天婷婷久久| 亚洲国产aⅴ精品一区二区| 久久久不卡网国产精品一区| 7m第一福利500精品视频| 日本中文字幕观看| 黄色美女网站在线观看| 欧美一区在线观看视频| 欧美日韩国产中文精品字幕自在自线 | 日韩毛片在线免费看| 亚洲精品国产av| 婷婷综合伊人| 欧美日韩一区二区三区不卡| 蜜桃狠狠色伊人亚洲综合网站| 久久精品99久久久久久| 日韩精品一区二区三区中文字幕 | 97视频久久久| 国产又粗又猛又黄| 91久久偷偷做嫩草影院电| 久久精品欧美一区二区三区不卡| 91高清免费在线观看| 一级特黄曰皮片视频| 在线女人免费视频| 99久免费精品视频在线观看| 日韩在线播放av| 五月激情婷婷在线| 在线最新版中文在线| 亚洲一区二区三区不卡国产欧美| 91沈先生播放一区二区| 免费看一级一片| 999国产精品| 欧美猛男超大videosgay| 日本不卡一二三区| 亚洲视频久久久| 综合国产精品| 日韩电影免费在线观看中文字幕 | 久草手机视频在线观看| 欧美日韩伦理一区二区| 国产精品成人午夜| 97在线中文字幕| 国产精品一区二区三区在线免费观看| 三级一区在线视频先锋 | 欧美日韩情趣电影| 最新视频 - x88av| 国产精品嫩草影院桃色| 日精品一区二区三区| 在线看国产精品| 91在线第一页| 97超碰免费在线| 久久久99久久精品欧美| 精品一区国产| 亚洲天堂网视频| 全国精品久久少妇| 欧美精品在线极品| 瑟瑟视频在线观看| 国产成人精品一区二区三区免费| 综合在线观看色| 韩国一区二区三区美女美女秀| 亚洲国产精品久久久久久6q| 懂色av噜噜一区二区三区av| 奇门遁甲1982国语版免费观看高清| 精品少妇一区二区三区免费观| 亚洲爱爱视频| 欧美日韩一区 二区 三区 久久精品 | www.av欧美| 亚洲欧美校园春色| 91麻豆精品91久久久久同性| 3d动漫一区二区三区| 91亚洲欧美| 不卡视频一二三| 久久精品五月婷婷| 国产视频在线免费观看| 久久电影一区| 久久久久久成人| 亚洲色图第四色| 99久久精品费精品国产风间由美| 久久亚洲成人精品| 亚洲码无人客一区二区三区| 成人午夜大片| 日韩精品极品在线观看播放免费视频 | 久久精品一二区| 综合亚洲视频| 91国产视频在线| 中文在线免费看视频| 一区二区三区福利| 久久av在线播放| 日韩少妇裸体做爰视频| 在线观看免费一区二区| 性欧美激情精品| 日韩在线中文字幕视频| 成人免费av| 亚洲欧美国产一本综合首页| 亚洲激情 欧美| 岛国精品一区| 91精品国产综合久久久久久久 | 五月天亚洲综合| 色呦呦中文字幕| 欧美激情一区二区三区不卡| 蜜桃久久精品乱码一区二区| 麻豆传媒在线免费| 国产精品久久久久影院| 亚洲欧洲精品一区| 高清美女视频一区| 国产欧美视频一区二区三区| 男人添女人下部视频免费| 免费网站看v片在线a| 亚洲午夜久久久久久久久久久 | www.av视频在线观看| 热久久国产精品| 欧美精品欧美精品| 你懂的视频在线播放| 久久人人爽人人爽| 欧美另类一区| 激情图片在线观看高清国产| 亚洲国产视频一区| 欧美成人三级在线视频| 91精品国产自产观看在线 | 色哟哟精品视频| 国产综合色在线观看| 精品成人免费观看| 男人网站在线观看| 日本一区福利在线| 亚洲精品视频在线播放| 精品国产成人亚洲午夜福利| 亚洲激情综合| 欧美在线观看网址综合| 日本va欧美va国产激情| 国产乱妇无码大片在线观看| 成人啪啪免费看| 国产 欧美 自拍| 26uuu亚洲| 久久视频这里有精品| 免费精品一区二区三区在线观看| 久久精品99久久久香蕉| 精品一区二区三区人妻| 国产一级久久| 国产一区二区视频在线观看| 欧美视频xxx| 国产午夜精品理论片a级大结局 | 日本伊人精品一区二区三区观看方式 | 久久成人免费观看| 五月天av在线| 亚洲国产免费av| 黄色片视频网站| 99热在这里有精品免费| 黄页免费在线观看视频| 欧美性生活一级片| 日本精品视频在线| 国产精品视频第一页| 国产精品久久久久久久第一福利 | 国产精品自拍第一页| 极品少妇xxxx精品少妇偷拍| 成人综合电影| 午夜视频在线免费观看| 亚洲高清不卡在线| 国产激情视频网站| 91超碰成人| 日本一区二区在线播放| 青青视频在线观| 亚洲婷婷国产精品电影人久久| 青娱乐自拍偷拍| 偷拍亚洲精品| 欧美日韩成人网| 成人黄色片在线观看| 成人国产精品免费观看视频| 国产综合中文字幕| 欧美禁忌电影网| 国产欧美日韩免费| 日中文字幕在线| 欧洲国内综合视频| 精品人妻一区二区三区日产乱码卜| 久久日文中文字幕乱码| 亚洲一区二区三区sesese| 成人高清免费在线播放| 天天亚洲美女在线视频| 9191在线视频| 精品一区二区三区中文字幕老牛 | 中文不卡1区2区3区| 国产亚洲视频在线观看| 国产精品美女毛片真酒店| 久久99国产精品免费网站| 欧美精品一区二区三区久久| 久久精品超碰| 久久久久久久久久久成人| 毛片网站在线| 日韩欧美精品在线视频| 一区视频免费观看| www.欧美.com| а 天堂 在线| 五月久久久综合一区二区小说| 成人资源视频网站免费| 国产综合色激情| 性色av一区二区三区红粉影视| www.亚洲免费| 亚洲国产成人精品女人久久久| 瑟瑟视频在线免费观看| 午夜影院在线观看欧美| 极品白嫩少妇无套内谢| 你懂的网址国产 欧美| 91啪国产在线| 国产黄色小视频在线| 欧美日韩另类国产亚洲欧美一级| 久热这里只有精品在线| 国产精品伦理在线| 大地资源二中文在线影视观看| 国产一二三精品| 日韩视频 中文字幕| 看亚洲a级一级毛片| 国产91色在线|免| 超免费在线视频| 另类少妇人与禽zozz0性伦| 国产中文字幕在线| 亚洲国产日韩欧美综合久久| 中文字幕在线视频免费| 色婷婷综合久久久中文字幕| 亚洲AV无码国产成人久久| 国产99久久久国产精品潘金网站| 大西瓜av在线| 三级小说欧洲区亚洲区| 成人av男人的天堂| 国产丝袜视频在线播放| 久久精品精品电影网| 国产www.大片在线| 国产亚洲一区二区精品| 青青草观看免费视频在线| 亚洲国产第一页| 成人午夜免费在线观看| 日韩午夜电影在线观看| 中文字幕在线观看免费视频| 亚洲最快最全在线视频| 91精品小视频| 成人毛片老司机大片| 欧美日韩一区二区区别是什么| 国产乱色国产精品免费视频| 男女污污视频网站| 精品亚洲成av人在线观看| 色呦色呦色精品| 精品一区二区三区久久| www.cao超碰| 国产在线一区二区| 人妻巨大乳一二三区| 国产伦精品一区二区三区在线观看| 国内自拍第二页| 国产麻豆午夜三级精品| 亚洲精品乱码久久久久久9色| 国产一区二区美女| xxxx国产视频| 成人国产电影网| 国产精品无码专区| 91丨九色丨国产丨porny| 加勒比一区二区| 国产色91在线| 永久免费看片直接| 夜色激情一区二区| 一区二区三区视频免费看| 欧美性感美女h网站在线观看免费| 99久久99久久精品国产| 91蝌蚪porny九色| 久久久久亚洲av无码专区桃色| 久久久精品蜜桃| 女性裸体视频网站| 91视频观看视频| 免费看污片网站| 国产精品理伦片| 性欧美videos| 欧美日韩国产丝袜另类| 国产情侣呻吟对白高潮| 欧美一区二区视频网站| 丰满岳乱妇国产精品一区| 亚洲精品一区二区三区婷婷月| 国产高清一级毛片在线不卡| 美女福利视频一区| 中文一区一区三区高中清不卡免费| 国产精品视频免费观看www| 超碰99在线| 九九久久综合网站| av中文在线资源库| 国产精品电影一区| 在线视频cao| 国产欧美一区二区三区在线| 大陆精大陆国产国语精品| 欧美污视频久久久| 欧美一区二区三区另类| 国产男女无遮挡| 国产日韩欧美| 91高清国产视频| 不卡一区中文字幕| 日本精品在线免费观看| 欧美性高潮在线| 精品国产av一区二区三区| 欧美一区日本一区韩国一区| 外国精品视频在线观看| 日韩精品综合一本久道在线视频| 美国一级片在线免费观看视频| 欧美成人午夜激情视频| 偷拍精品精品一区二区三区| 欧美一区深夜视频| 精品成人18| 日韩精品久久久免费观看| 精品国产一区二区三区| 女人色极品影院| 美女视频第一区二区三区免费观看网站| 日韩一级片播放| 亚洲欧美日本日韩| 两根大肉大捧一进一出好爽视频| 激情综合五月婷婷| 伊人网伊人影院| 亚洲国产日韩在线一区模特| 888奇米影视| 夜夜嗨av一区二区三区四区| 国产高清中文字幕在线| 91精品国自产在线观看| 色综合蜜月久久综合网| 91看片淫黄大片91| 国内精品久久久久久久影视麻豆 | 国产黄色免费在线观看| 8050国产精品久久久久久| 综合久久成人| 国内自拍中文字幕| 狠狠狠色丁香婷婷综合激情| 日本免费www| 欧美在线看片a免费观看| 中文在线观看av| 亚洲色图五月天| 日本不卡视频| 国产精品视频永久免费播放| 精品一区在线| 99精品免费在线观看| 奇米综合一区二区三区精品视频| 日本三级日本三级日本三级极| 一区二区三区欧美在线观看| 五月婷婷中文字幕| 亚洲娇小xxxx欧美娇小| 成人在线黄色电影| 国模精品一区二区三区| 色狮一区二区三区四区视频| 丁香婷婷激情网| 久久女同精品一区二区| 国产中文字幕视频| 日韩一区二区三区免费看| 黄色的网站在线观看| 97超视频免费观看| 久久99精品国产自在现线| 亚洲欧洲一区二区在线观看| 免费黄网站欧美| 黄色片网站在线播放| 欧美精品在线一区二区三区| 黄色av网站在线播放| 成人精品一二区| 亚洲激情成人| 老熟妇一区二区| 欧美久久久久久久久中文字幕| 97影院秋霞午夜在线观看| 国产成人aa精品一区在线播放| 精品成人18| 久艹视频在线免费观看| 91网站在线播放| 人人草在线观看| 亚洲第一av在线| 亚洲精品福利电影| 亚洲成人自拍| 国产一二精品视频| 国产欧美一区二区三区在线看蜜臂| 亚洲欧美日韩精品久久亚洲区| 国产福利亚洲| 精品一二三四五区| 91理论电影在线观看| 国产又粗又猛视频| 久久久日本电影| 亚洲精品黑牛一区二区三区| 欧美变态另类刺激| 国产精品久久影院| 人人妻人人玩人人澡人人爽| 日产日韩在线亚洲欧美| 亚洲精品在线观看91| 免费看黄色aaaaaa 片| 欧美日韩电影一区| av中文字幕电影在线看| 丝袜美腿玉足3d专区一区| 国产乱人伦偷精品视频免下载| 国产黄色免费观看| 久久在线免费视频| 在线成人动漫av| 男女视频在线观看网站| 色婷婷久久99综合精品jk白丝| 成人a在线视频免费观看| 蜜桃麻豆91| 丁香婷婷综合网| 夜夜嗨av禁果av粉嫩avhd|