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

ShardingSphere-Proxy:從實際場景出發(fā),快速上手

數(shù)據(jù)庫 其他數(shù)據(jù)庫
在做了分庫分表或其他規(guī)則的情況下,數(shù)據(jù)會分散到多個數(shù)據(jù)庫實例上,在管理上難免會有一些不便;或者使用非 Java 語言的開發(fā)者,需要 ShardingSphere 所提供的能力…… 以上這些情況,正是 ShardingSphere-Proxy 力所能及之處。

本篇文章主要從項目中實際場景出發(fā),講解分庫分表等功能在日常運(yùn)維中遇到的問題,以及 ShardingSphere-Proxy 對應(yīng)的解決方案,版本號:v5.1.0。

如無特別聲明,以下示例中的數(shù)據(jù)庫指 MySQL。

一、這個項目做什么

ShardingSphere-Proxy,可以讓用戶像使用原生數(shù)據(jù)庫一樣使用 Apache ShardingSphere。

了解一項技術(shù)的開始,一般從官網(wǎng)開始。先來看一看官網(wǎng)對 ShardingSphere-Proxy 的定義是什么樣的:

定位為透明化的數(shù)據(jù)庫代理端,提供封裝了數(shù)據(jù)庫二進(jìn)制協(xié)議的服務(wù)端版本,用于完成對異構(gòu)語言的支持。 目前提供 MySQL 和 PostgreSQL(兼容 openGauss 等基于 PostgreSQL 的數(shù)據(jù)庫)版本,它可以使用任何兼容 MySQL/PostgreSQL 協(xié)議的訪問客戶端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作數(shù)據(jù),對 DBA 更加友好。

先明確一個概念,ShardingSphere-Proxy 是一個服務(wù)進(jìn)程。從客戶端程序連接來說,它和 MySQL 數(shù)據(jù)庫并沒有什么區(qū)別。

二、為什么要用 Proxy

在做了分庫分表或其他規(guī)則的情況下,數(shù)據(jù)會分散到多個數(shù)據(jù)庫實例上,在管理上難免會有一些不便;或者使用非 Java 語言的開發(fā)者,需要 ShardingSphere 所提供的能力…… 以上這些情況,正是 ShardingSphere-Proxy 力所能及之處。

1. Proxy 應(yīng)用場景

日常工作中,大家使用 ShardingSphere-JDBC 進(jìn)行分庫分表的場景是比較多的。假設(shè)你有一張用戶表,通過用戶 ID 以 Hash 的方式進(jìn)行了水平分庫,那么此時客戶端連接數(shù)據(jù)庫的方式是這樣:

我們舉例工作中真實存在的幾個場景:

  • 測試同學(xué)想看下用戶 ID 123456 的信息在數(shù)據(jù)庫表里情況,需要你提供下用戶在哪一張分表;
  • 公司領(lǐng)導(dǎo)需要技術(shù)提供一份 2022 年用戶的增長總量以及用戶信息;
  • 公司舉行 8 周年活動,需要技術(shù)提供一份注冊日期超過 8 周年的活躍老用戶名單。

因為數(shù)據(jù)分庫分表后,數(shù)據(jù)是散落在不同的庫表中,對于上述的場景實現(xiàn)并不容易;如果為了實現(xiàn)類似臨時需求,每次都需要開發(fā)代碼,顯得有些笨重。這個時候就需要文章主角 ShardingSphere-Proxy 登場了。

ShardingSphere-Proxy 隱藏了后端實際數(shù)據(jù)庫,對于客戶端來說就是在使用一個數(shù)據(jù)庫,不需要關(guān)心 ShardingSphere 如何協(xié)調(diào)背后的數(shù)據(jù)庫,對于使用非 Java 語言的開發(fā)者或 DBA 更友好。

比如說 t_user 在數(shù)據(jù)庫層面拆分為若干真實表:t_user_0 到 t_user_9,在客戶端操作 ShardingSphere-Proxy 的過程中,只會知道有一張 t_user 邏輯表,路由至真實表的過程都在 ShardingSphere-Proxy 內(nèi)部執(zhí)行。

  • 邏輯表:相同結(jié)構(gòu)的水平拆分?jǐn)?shù)據(jù)庫(表)的邏輯名稱,是 SQL 中表的邏輯標(biāo)識。 例:用戶數(shù)據(jù)根據(jù)主鍵尾數(shù)拆分為 10 張表,分別是 t_user_0 到 t_user_9,他們的邏輯表名為 t_user。
  • 真實表:在水平拆分的數(shù)據(jù)庫中真實存在的物理表。 即上個示例中的 t_user_0 到 t_user_9。

2. JDBC 和 Proxy 的區(qū)別

看了上面的描述,怎么感覺 ShardingSphere-Proxy 和 ShardingSphere-JDBC 這么像,兩者有什么區(qū)別?


ShardingSphere-JDBC

ShardingSphere-Proxy

數(shù)據(jù)庫

任意

基于 MySQL / PostgreSQL 協(xié)議的數(shù)據(jù)庫

連接消耗數(shù)

異構(gòu)語言

支持 Java 等基于 JVM 語言

任意

性能

損耗低

損耗略高

無中心化

靜態(tài)入口

簡單總結(jié)下兩者的不同:

  • ShardingSphere-JDBC 是一個 Jar 包,底層通過重寫 JDBC 組件完成 SQL 解析、路由、改寫、執(zhí)行等流程;需要在項目中添加對應(yīng)功能的配置文件,對應(yīng)用有一定侵入性;
  • ShardingSphere-Proxy 是一個進(jìn)程服務(wù),大部分情況下定位為輔助開發(fā)運(yùn)維的效率工具。它將自己偽裝為數(shù)據(jù)庫,應(yīng)用對接后對代碼是無侵入的;對 SQL 的執(zhí)行邏輯同 ShardingSphere-JDBC 一致,兩者復(fù)用同一內(nèi)核。

ShardingSphere-Proxy 既然對應(yīng)用無侵入,而且兩者復(fù)用同一內(nèi)核,那為什么大家還要用 ShardingSphere-JDBC 呢?

應(yīng)用通過 ShardingSphere-JDBC 是直接操作數(shù)據(jù)庫,相當(dāng)于只有一次網(wǎng)絡(luò) IO;而應(yīng)用連接 ShardingSphere-Proxy 是一次網(wǎng)絡(luò) IO,ShardingSphere-Proxy 再操作數(shù)據(jù)庫,又會發(fā)生一次網(wǎng)絡(luò) IO;

應(yīng)用調(diào)用鏈路多了一層,容易形成流量瓶頸,對應(yīng)用增加了潛在的風(fēng)險;一般來說,應(yīng)用程序會搭配 ShardingSphere-JDBC 使用。

當(dāng)然,ShardingSphere-JDBC 和 ShardingSphere-Proxy 可以進(jìn)行混合部署,ShardingSphere-JDBC 適用于 Java 開發(fā)的高性能的輕量級 OLTP 應(yīng)用,ShardingSphere-Proxy 適用于 OLAP 應(yīng)用以及對分片數(shù)據(jù)庫進(jìn)行管理和運(yùn)維的場景。

三、如何開始

ShardingSphere-Proxy 的啟動方式有三種:二進(jìn)制包、Docker、Helm,并分為單機(jī)部署和集群部署。文章以單機(jī)二進(jìn)制包的方式啟動。

  • 通過 下載頁面[1] 獲取 ShardingSphere-Proxy 二進(jìn)制安裝包;
  • 解壓縮后修改 conf/server.yaml 和以 config- 前綴開頭的文件,進(jìn)行分片、讀寫分離等規(guī)則配置;
  • Linux 操作系統(tǒng)請運(yùn)行 bin/start.sh,Windows 操作系統(tǒng)請運(yùn)行 bin/start.bat 啟動 ShardingSphere-Proxy。

下載后的文件目錄如下:


├── LICENSE
├── NOTICE
├── README.txt
├── bin # 啟動停止腳本
├── conf # 服務(wù)配置,分庫分表、讀寫分離、數(shù)據(jù)加密等功能的配置文件
├── lib # Jar 包
└── licenses

1. 將 MySQL 的 JDBC 驅(qū)動復(fù)制到 ext-lib 包

下載驅(qū)動 mysql-connector-java-5.1.47.jar[2] 或者 mysql-connector-java-8.0.11.jar[3] 放入 ext-lib 包。因為初始目錄中并沒有 ext-lib,需要自行創(chuàng)建。

2. 修改 conf/server.yaml 配置文件

server.yaml 配置中默認(rèn)集群運(yùn)行模式,這里提供一份單機(jī)的運(yùn)行配置。

mode:
type: Standalone # 單機(jī)模式
repository:
type: File
props:
path: /Users/xxx/software/apache-shardingsphere-5.1.0-shardingsphere-proxy/file # 元數(shù)據(jù)配置等持久化文件路徑
overwrite: false # 是否覆蓋已存在的元數(shù)據(jù)

rules: # 認(rèn)證信息
- !AUTHORITY
users: # 初始化用戶
- root@%:root
- sharding@:sharding
provider:
type: ALL_PRIVILEGES_PERMITTED
- !TRANSACTION
defaultType: XA
providerType: Atomikos
- !SQL_PARSER
sqlCommentParseEnabled: true
sqlStatementCache:
initialCapacity: 2000
maximumSize: 65535
concurrencyLevel: 4
parseTreeCache:
initialCapacity: 128
maximumSize: 1024
concurrencyLevel: 4

props: # 公用配置
max-connections-size-per-query: 1
kernel-executor-size: 16 # Infinite by default.
proxy-frontend-flush-threshold: 128 # The default value is 128.
proxy-opentracing-enabled: false
proxy-hint-enabled: false
sql-show: false
check-table-metadata-enabled: false
show-process-list-enabled: false
# Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.
# The default value is -1, which means set the minimum value for different JDBC drivers.
proxy-backend-query-fetch-size: -1
check-duplicate-table-enabled: false
proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.
# Available options of proxy backend executor suitable: OLAP(default), OLTP. The OLTP option may reduce time cost of writing packets to client, but it may increase the latency of SQL execution
# and block other clients if client connections are more than `proxy-frontend-executor-size`, especially executing slow SQL.
proxy-backend-executor-suitable: OLAP
proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.
sql-federation-enabled: false
# Available proxy backend driver type: JDBC (default), ExperimentalVertx
proxy-backend-driver-type: JDBC

需要注意,如果啟動單機(jī) ShardingSphere-Proxy,后續(xù)需要 Proxy 配置變更,建議將 mode.overwrite 設(shè)置為 true,這樣 ShardingSphere-Proxy 在啟動時就會重新加載元數(shù)據(jù)。

3. 啟動 ShardingSphere-Proxy

執(zhí)行啟動命令:sh bin/start.sh。默認(rèn)啟動端口 3307,可以通過啟動腳本命令追加參數(shù)的方式替換端口:sh bin/start.sh 3308。

查看 ShardingSphere-Proxy 是否啟動成功,執(zhí)行查看日志命令:tail -100f logs/stdout.log。如最后一行出現(xiàn)下述信息,即為啟動成功:

[INFO ] xxx-xx-xx xx:xx:xx.xxx [main] o.a.s.p.frontend.ShardingSphereProxy - ShardingSphere-Proxy Standalone mode started successfully

四、場景實踐

本章節(jié)從實戰(zhàn)場景的前提出發(fā),通過 ShardingSphere-Proxy 完成上述需求。

1. 初始化數(shù)據(jù)庫表

# CREATE DATABASE
CREATE DATABASE user_sharding_0;

CREATE DATABASE user_sharding_1;

# CREATE TABLE
use user_sharding_0;

CREATE TABLE `t_user_0` (
`id` bigint (20) NOT NULL,
`user_id` bigint (20) NOT NULL,
`create_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = latin1;

CREATE TABLE `t_user_1` (
`id` bigint (20) NOT NULL,
`user_id` bigint (20) NOT NULL,
`create_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = latin1;


use user_sharding_1;

CREATE TABLE `t_user_0` (
`id` bigint (20) NOT NULL,
`user_id` bigint (20) NOT NULL,
`create_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = latin1;


CREATE TABLE `t_user_1` (
`id` bigint (20) NOT NULL,
`user_id` bigint (20) NOT NULL,
`create_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = latin1;

2. 初始化 Proxy 分片配置

schemaName: sharding_db

dataSources:
ds_0:
url: jdbc:mysql://127.0.0.1:3306/user_sharding_0?serverTimezone=UTC&useSSL=false
username: root
password: root
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
ds_1:
url: jdbc:mysql://127.0.0.1:3306/user_sharding_1?serverTimezone=UTC&useSSL=false
username: root
password: root
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1

rules:
- !SHARDING
tables:
t_user:
actualDataNodes: ds_${0..1}.t_user_${0..1}
tableStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: t_user_inline
keyGenerateStrategy:
column: user_id
keyGeneratorName: snowflake
bindingTables:
- t_user
defaultDatabaseStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: database_inline
defaultTableStrategy:
none:

shardingAlgorithms:
database_inline:
type: INLINE
props:
algorithm-expression: ds_${user_id % 2}
t_user_inline:
type: INLINE
props:
algorithm-expression: t_user_${user_id % 2}

keyGenerators:
snowflake:
type: SNOWFLAKE

3. 分片測試

使用 MySQL 終端命令連接 ShardingSphere-Proxy 服務(wù)端。如果 Docker 部署的數(shù)據(jù)庫,需要加上 -h 本機(jī) ip。因為容器內(nèi)訪問 127.0.0.1 不通。

# 將 {xx} 替換為實際參數(shù)
mysql -h {ip} -u {username} -p{password} -P 3307
# 示例命令
mysql -h 127.0.0.1 -u root -proot -P 3307

ShardingSphere-Proxy 支持 Navicat MySQL、DataGrip、WorkBench、TablePlus 等數(shù)據(jù)庫管理工具連接。

連接成功后,查詢代理數(shù)據(jù)庫,與配置文件中一致。

mysql> show databases;
+-------------+
| schema_name |
+-------------+
| sharding_db |
+-------------+
1 row in set (0.02 sec)

執(zhí)行新增 t_user 語句,插入 6 條用戶數(shù)據(jù),創(chuàng)建時間 2021 年 3 條,2022 年 3 條。

mysql> use sharding_db;
mysql> INSERT INTO t_user (id, user_id, create_date) values(1, 1, '2021-01-01 00:00:00'), (2, 2, '2021-01-01 00:00:00'), (3, 3, '2021-01-01 00:00:00'), (4, 4, '2022-01-01 00:00:00'), (5, 5, '2022-02-01 00:00:00'), (6, 6, '2022-03-01 00:00:00');
Query OK, 6 rows affected (0.16 sec)

mysql> select * from t_user;
+----+---------+---------------------+
| id | user_id | create_date |
+----+---------+---------------------+
| 2 | 2 | 2021-01-01 00:00:00 |
| 4 | 4 | 2022-01-01 00:00:00 |
| 6 | 6 | 2022-03-01 00:00:00 |
| 1 | 1 | 2021-01-01 00:00:00 |
| 3 | 3 | 2021-01-01 00:00:00 |
| 5 | 5 | 2022-02-01 00:00:00 |
+----+---------+---------------------+

此時數(shù)據(jù)分別散落在 user_sharding_0 和 user_sharding_1 庫。

回到最初的問題,如何定位數(shù)據(jù)信息。因為 ShardingSphere-Proxy 已經(jīng)將表進(jìn)行了邏輯聚合,所以直接查詢就好。

mysql> select * from t_user where user_id = 1;
+----+---------+---------------------+
| id | user_id | create_date |
+----+---------+---------------------+
| 1 | 1 | 2021-01-01 00:00:00 |
+----+---------+---------------------+
1 row in set (0.01 sec)

第二個問題,查詢 2022 年用戶增長數(shù)量以及用戶情況。

mysql> select count(*) from t_user where create_date > '2022-00-00 00:00:00';
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.10 sec)

mysql> select * from t_user where create_date > '2022-00-00 00:00:00';
+----+---------+---------------------+
| id | user_id | create_date |
+----+---------+---------------------+
| 4 | 4 | 2022-01-01 00:00:00 |
| 6 | 6 | 2022-01-01 00:00:00 |
| 5 | 5 | 2022-01-01 00:00:00 |
+----+---------+---------------------+
3 rows in set (0.02 sec)

第三個問題同上。

五、最后總結(jié)

文章通過圖文并茂的方式幫助大家過了一遍 ShardingSphere-Proxy 的基本概念,引申出了分庫分表后產(chǎn)生的實際運(yùn)維場景,并演示了如何通過 ShardingSphere-Proxy 解決相關(guān)問題。

相信大家看完對 ShardingSphere-Proxy 有了更深入的認(rèn)識。首先要明白 ShardingSphere-Proxy 的定位是協(xié)助開發(fā)運(yùn)維的產(chǎn)品,掌握 ShardingSphere-JDBC 和 ShardingSphere-Proxy 有哪些區(qū)別,以及理解兩者的優(yōu)缺點(diǎn)和實現(xiàn)方式是怎么樣的。在這個基礎(chǔ)上去閱讀兩者的源碼,也就更容易理解了。

參考

[1]下載頁面: https://shardingsphere.apache.org/document/current/cn/downloads/

[2]mysql-connector-java-5.1.47.jar: https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar

[3]mysql-connector-java-8.0.11.jar: https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar

[4]Apache ShardingSphere 官網(wǎng): https://shardingsphere.apache.org/

[5]打造基于 PostgreSQL/openGauss 的分布式數(shù)據(jù)庫解決方案: https://community.sphere-ex.com/t/topic/497

責(zé)任編輯:武曉燕 來源: 龍臺的技術(shù)筆記
相關(guān)推薦

2024-08-26 08:44:54

2018-04-11 10:51:25

多線程進(jìn)程主線程

2023-09-19 09:21:20

2009-04-17 22:25:16

多核四核CPU

2009-03-12 10:11:00

綜合布線規(guī)劃網(wǎng)絡(luò)布局

2024-06-12 08:04:33

2018-01-12 10:25:48

Nginx信號集master

2009-01-08 09:52:00

2010-08-24 09:11:05

無線網(wǎng)絡(luò)故障

2021-07-19 15:12:21

Python編程語言

2011-07-26 13:58:17

LINQ

2017-08-25 17:40:31

2023-07-26 08:48:36

AForge庫.NET

2022-08-19 07:13:45

SQL方法編程

2021-12-10 08:13:02

MatplotlibpythonAPI

2013-11-19 12:53:33

OA信息化

2023-04-03 08:31:33

數(shù)據(jù)分片賬單生成

2022-08-21 07:17:16

LinkerdKubernetes服務(wù)網(wǎng)格

2019-07-25 18:45:12

等級保護(hù)制度等級保護(hù)2.0等保2.0

2010-05-18 10:17:11

點(diǎn)贊
收藏

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

国产精品人妖ts系列视频| 久久在线免费| 欧美视频专区一二在线观看| 欧美国产一区二区在线| 日批视频免费观看| 欧美激情五月| 精品性高朝久久久久久久| 日韩大片一区二区| 牛牛在线精品视频| 99re这里都是精品| 国产精品久久久久久久电影 | 亚洲色图综合久久| 污免费在线观看| 日本免费一区二区六区| 国产精品国产三级国产aⅴ入口| 国产经典一区二区三区| 亚洲av综合一区| 在线日韩电影| 久久视频中文字幕| 国内精品卡一卡二卡三| 99精品国产一区二区三区2021| 色系网站成人免费| 蜜臀精品一区二区| 岛国在线视频免费看| 顶级嫩模精品视频在线看| 国产美女91呻吟求| 天堂网av手机版| 欧美一区国产在线| 中文字幕在线观看亚洲| jlzzjizz在线播放观看| 欧美成人aaa| 91久久线看在观草草青青| 大荫蒂性生交片| 黄色国产网站在线播放| 国产欧美日韩卡一| 麻豆精品视频| 欧美视频在线观看一区二区三区| 免费精品99久久国产综合精品| 欧美一乱一性一交一视频| 九九精品在线观看视频| 亚洲九九视频| 色噜噜狠狠狠综合曰曰曰| www在线观看免费视频| 色婷婷av一区二区三区丝袜美腿| 精品免费日韩av| 亚洲精品视频三区| 欧美黄色成人| 日本精品视频一区二区| 国产精品免费观看久久| 日韩欧美一中文字暮专区| 亚洲午夜久久久久久久久电影院| 999久久欧美人妻一区二区| 国产原创在线观看| 亚洲你懂的在线视频| 伊人久久大香线蕉精品| 免费在线看黄网站| |精品福利一区二区三区| 正在播放国产精品| 欧美精品电影| 亚洲欧美激情一区二区| 在线视频一二三区| av黄在线观看| 亚洲香蕉伊在人在线观| 亚洲人成无码网站久久99热国产| 大黄网站在线观看| 亚洲国产日韩一级| 两根大肉大捧一进一出好爽视频| 欧美男男激情videos| 精品国产电影一区| 国产真实乱子伦| 户外露出一区二区三区| 精品视频一区三区九区| 欧美一级特黄a| 色噜噜成人av在线| 欧美一区二区免费视频| 国产成人精品一区二区在线小狼| 国内露脸中年夫妇交换精品| 亚洲精品一区二区网址| 大吊一区二区三区| 亚洲色图国产| 97激碰免费视频| 亚洲AV无码成人精品区东京热| 免费国产亚洲视频| 97netav| 午夜视频福利在线观看| 国产欧美中文在线| 影音先锋成人资源网站| 91九色porn在线资源| 在线观看欧美黄色| 日韩欧美中文在线视频| 日韩三级视频| xvideos国产精品| 国产午夜久久久| 视频一区视频二区中文| 91免费视频国产| 日韩一级在线播放| 国产精品久久久久7777按摩| av动漫在线播放| 欧美大胆成人| 精品剧情在线观看| 国产伦理片在线观看| 国产综合精品| 国产精品久久久久999| 午夜精品在线播放| 国产视频一区不卡| 91黄色在线看| 色综合视频一区二区三区日韩| 亚洲精品国产品国语在线| 国产成人免费在线观看视频| 亚洲理伦在线| 成人黄色大片在线免费观看| 视频午夜在线| 亚洲精品日韩专区silk| 国产一区二区在线免费播放| 国产精品18hdxxxⅹ在线| 中文综合在线观看| 日本黄色片视频| 国产精品亚洲人在线观看| 青青草原亚洲| 麻豆mv在线看| 欧美成人女星排名| 久久成人小视频| 久久性色av| 国产亚洲精品久久飘花| av片在线观看| 欧美日韩国产中文| 少妇久久久久久久久久| 亚洲精品影视| 国产精品v欧美精品v日韩| 一级毛片视频在线观看| 欧洲视频一区二区| 免费a级黄色片| 欧美久久九九| av资源站久久亚洲| 粗大黑人巨茎大战欧美成人| 欧美人妖巨大在线| 妖精视频在线观看免费| 日日摸夜夜添夜夜添国产精品 | 中文字幕精品影院| 国内揄拍国内精品| 亚洲精品久久久久久无码色欲四季| 中文字幕一区二区三区色视频 | 国产无码精品一区二区| 国产九色精品成人porny| 一区二区三区观看| 欧美成人毛片| 日韩亚洲成人av在线| 精品乱码一区内射人妻无码| 国产亚洲短视频| www.xxx亚洲| 国产精品免费大片| 国产精品女人久久久久久| 国产在线一在线二| 在线免费观看不卡av| 黄免费在线观看| 美国毛片一区二区三区| 在线一区亚洲| 日本一区精品视频| 97精品免费视频| 婷婷综合激情网| 日韩欧美成人精品| 国产精品久久久久久久av| 免费在线观看视频一区| 中文字幕成人一区| 欧美经典一区| 国内精品伊人久久| 日韩偷拍自拍| 色偷偷88欧美精品久久久| 性猛交娇小69hd| 国产一区二区三区国产| 欧美乱做爰xxxⅹ久久久| 九色丨蝌蚪丨成人| 国产精品27p| 久草资源在线| 亚洲成人中文字幕| jizz国产在线| 亚洲日本青草视频在线怡红院| 极品白嫩的小少妇| 久久人人精品| 黄频视频在线观看| 高清日韩欧美| 国产91免费看片| 国产精品实拍| 亚洲精品久久7777777| 蜜臀99久久精品久久久久小说| 国产精品久久久久久妇女6080 | 久久爱www.| 欧美性视频精品| 91在线播放网站| 精品国产一区二区国模嫣然| 国产情侣免费视频| 亚洲精品视频观看| 97人妻精品一区二区免费| 国产中文字幕一区| 2022亚洲天堂| 91精品国产乱码久久久久久| 精品伦精品一区二区三区视频| 成人国产一区| 97精品久久久| 成人免费在线| 亚洲三级免费看| 亚洲精品.www| 欧美日韩国产在线观看| 日韩女优在线观看| 亚洲欧洲av一区二区三区久久| 野花社区视频在线观看| 精品写真视频在线观看| 夫妻免费无码v看片| 香蕉精品视频在线观看| 免费99视频| 一区二区三区视频播放| 国产精品免费一区| а√天堂8资源在线| 久久亚洲国产精品| 国产精品一区二区婷婷| 亚洲第一天堂av| 999av视频| 欧美日韩精品一区二区三区四区| 欧美啪啪小视频| 亚洲精品ww久久久久久p站| 欧美一区二区三区粗大| 91农村精品一区二区在线| 色婷婷狠狠18禁久久| 久久精品国产精品亚洲红杏| 欧美私人情侣网站| 99精品视频免费观看视频| 无码毛片aaa在线| 日韩欧美三级| 日本在线一区| 亚洲区小说区图片区qvod| 成人区精品一区二区| 成人精品在线| 国产精品视频导航| 中文字幕系列一区| 热99精品里视频精品| 国产欧洲在线| 欧美激情手机在线视频 | 久久悠悠精品综合网| 97人摸人人澡人人人超一碰| 日本久久一区| 成人免费看吃奶视频网站| 国产精品99| 国产精品一区二区女厕厕| 国产一区二区三区影视| 国产精品久久久久久久午夜| 向日葵视频成人app网址| 日本三级久久久| 成人亚洲欧美| 日韩美女视频免费看| 国产免费不卡| 国产精品xxxxx| 国产经典一区| 成人高h视频在线| 国产va免费精品观看精品| 92国产精品久久久久首页| 成人在线日韩| 粉嫩av四季av绯色av第一区| 爱高潮www亚洲精品| 精品伦理一区二区三区| 制服丝袜日韩| 亚洲国产另类久久久精品极度| 91视频一区| 大桥未久一区二区| 亚洲夜间福利| 97超碰青青草| 日韩av午夜在线观看| 日韩爱爱小视频| 国产乱妇无码大片在线观看| 丰满少妇xbxb毛片日本| 91网站视频在线观看| 亚洲毛片亚洲毛片亚洲毛片| 亚洲人成在线观看一区二区| 久久无码精品丰满人妻| 精品久久久久久久久久久| 69xxxx国产| 制服.丝袜.亚洲.另类.中文| 免费观看国产精品| 亚洲开心激情网| 日本蜜桃在线观看| 色与欲影视天天看综合网| 在线天堂资源www在线污| 国产欧美日韩综合精品| 欧美9999| 美国av一区二区三区| 国产精品精品| 日本韩国欧美在线观看| 日本sm残虐另类| 久久久无码人妻精品无码| 久久亚洲一级片| 老熟妻内射精品一区| 欧美午夜女人视频在线| 国产精品久久无码一三区| 亚洲国产精品国自产拍av秋霞| 国产一级在线| 欧美激情第三页| 成人日韩在线| 国产亚洲精品久久飘花| 欧美激情偷拍自拍| 日本韩国欧美在线观看| 精油按摩中文字幕久久| av无码av天天av天天爽| 18欧美亚洲精品| 日本三级小视频| 日韩一级视频免费观看在线| 日本不卡免费播放| 欧美日韩爱爱视频| 国产经典一区| 精品一区久久久| 91精品在线观看国产| 91蝌蚪视频在线观看| 成人h精品动漫一区二区三区| 羞羞在线观看视频| 岛国av在线不卡| 国产高潮流白浆喷水视频| 国产一区二区三区18| 嗯~啊~轻一点视频日本在线观看| 成人国产精品免费视频| 精品日韩毛片| 国产超级av在线| 成人久久视频在线观看| 澳门黄色一级片| 欧美人与禽zozo性伦| 国产三级电影在线| 欧美亚洲另类激情另类| 1769国产精品视频| 波多野结衣激情| 久久福利视频一区二区| 国产黄色大片免费看| 色婷婷综合久久久中文一区二区| 日韩一级片免费观看| 久久久噜噜噜久久久| 99这里只有精品视频| 玖玖精品在线视频| 国产一区二区三区四| 国产一区第一页| 欧美三级三级三级爽爽爽| 国产一区电影| 国产精品久久久久av| 国产一区二区三区四区五区传媒| 日本a级片免费观看| 99精品一区二区三区| 日产精品久久久久| 精品国产免费人成电影在线观看四季| 国产网友自拍视频导航网站在线观看 | 久久国产精品黑丝| 18成人免费观看网站下载| 亚洲成人最新网站| 亚洲精品久久久久久| 亚洲嫩草精品久久| 亚洲精品国产一区二| 欧美疯狂做受xxxx高潮| 成人免费在线电影网| 成人一区二区免费视频| 97精品视频在线观看自产线路二| 国产又爽又黄的视频| 亚洲精选一区二区| 欧美7777| 一区二区三区av| 国产福利精品一区二区| 久久久久亚洲av成人片| 亚洲成人网av| 欧美电影h版| 视频一区二区在线| 激情综合色综合久久综合| 东方av正在进入| 精品动漫一区二区三区在线观看| av日韩国产| 欧美专区一二三| 蜜臀av性久久久久蜜臀aⅴ| 黑鬼狂亚洲人videos| 日韩精品一区二区三区中文精品| h片精品在线观看| 日本精品二区| 激情久久五月天| 69精品久久久| 亚洲人成网站999久久久综合| 欧美成人福利| 欧美又粗又长又爽做受| 久久久久国色av免费看影院| 一区二区 亚洲| 久久久久免费视频| 最新亚洲精品| 婷婷激情小说网| 午夜精品福利在线| 成人在线免费电影| 91网免费观看| 爽好多水快深点欧美视频| 一区二区三区影视| 亚洲精品久久久久久久久久久久久 | 中文字幕伦av一区二区邻居| 超碰超碰在线观看| 亚洲一区二区在线视频| 成人亚洲综合天堂| 99精彩视频| 日本免费新一区视频| 久久精品人妻一区二区三区| 在线a欧美视频| 久久精品亚洲成在人线av网址| 亚洲精品视频导航| 激情成人中文字幕|