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

自己手寫的60+工程的RPC框架成功整合了SpringCloud Alibaba

開發 前端
本章,我們更進一步將手寫的bhrpc框架整合到SpringCloud Alibaba項目。

大家好,我是冰河~~

目前,我們自己手寫的RPC框架已經完成了整體設計、服務提供者的實現、服務消費者的實現、注冊中心的實現、負載均衡的實現、SPI擴展序列化機制、SPI擴展動態代理機制、SPI擴展反射機制、SPI擴展負載均衡策略、SPI擴展增強型負載均衡策略、SPI擴展實現注冊中心、心跳機制、增強型心跳機制、重試機制、整合Spring、整合SpringBoot和整合Docker等篇章,共計80+篇文章。

本節,我們就基于《SpringCloud Alibaba》專欄的源碼整合自己手寫的bhrpc框架,替換掉原有項目中使用的Fegin框架。

1、新增shop-service-api工程

(1)新增shop-service-api工程

在父工程shop-springcloud-alibaba下新建shop-service-api子工程,并在shop-service-api子工程的pom.xml文件中添加如下配置。

<dependencies>
<dependency>
<groupId>io.binghe.shop</groupId>
<artifactId>shop-bean</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

shop-service-api子工程的作用就是將shop-user工程中的UserService接口和shop-product工程中的ProductService接口單獨分離出來,便于后續整合bhrpc框架。

(2)新增UserService接口

UserService接口的源碼詳見:shop-service-api工程下的io.binghe.shop.service.UserService,如下所示。

public interface UserService {
/**
* 根據id獲取用戶信息
*/
User getUserById(Long userId);
}

刪除shop-user工程下的io.binghe.shop.user.service.UserService接口,并修改shop-user工程中的報錯信息,將報錯類中原本依賴io.binghe.shop.user.service.UserService接口修改成依賴io.binghe.shop.service.UserService接口。

(3)新增ProductService接口

ProductService接口的源碼詳見:shop-service-api工程下的io.binghe.shop.service.ProductService,如下所示。

public interface ProductService {
/**
* 根據商品id獲取商品信息
*/
Product getProductById(Long pid);
/**
* 扣減商品庫存
*/
int updateProductStockById(Integer count, Long id);
}

刪除shop-product工程下的io.binghe.shop.product.service.ProductService接口,并修改shop-product工程中的報錯信息,將報錯類中原本依賴io.binghe.shop.product.service.ProductService接口修改成依賴io.binghe.shop.service.ProductService接口。

2、改造shop-user工程

shop-user工程對應bhrpc框架的服務提供者角色。

(1)添加pom.xml依賴

shop-user工程作為bhrpc框架的服務提供者,在pom.xml需要添加如下依賴。

<dependency>
<groupId>io.binghe.rpc</groupId>
<artifactId>bhrpc-spring-boot-starter-provider</artifactId>
<version>${bhrpc.version}</version>
</dependency>

<dependency>
<groupId>io.binghe.shop</groupId>
<artifactId>shop-service-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

(2)修改UserServiceImpl類

UserServiceImpl類的源碼詳見:shop-user工程下的io.binghe.shop.user.service.impl.UserServiceImpl,需要將UserServiceImpl類上標注的Spring中的@Service注解,替換成bhrpc框架中的@RpcService注解,修改后的源碼如下所示。

@RpcService(interfaceClass = UserService.class, version = "1.0.0", group = "binghe")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;

@Override
public User getUserById(Long userId) {
return userMapper.selectById(userId);
}
}

可以看到,在UserServiceImpl類上標注了bhrpc框架中的@RpcService注解,并且指定了interfaceClass、version和group屬性。

(3)修改UserStarter類

UserStarter類的源碼詳見:shop-user工程下的io.binghe.shop.UserStarter,主要是在UserStarter類上添加@ComponentScan注解,修改后的源碼如下所示。

@SpringBootApplication
@ComponentScan(basePackages = {"io.binghe.shop", "io.binghe.rpc"})
@EnableTransactionManagement(proxyTargetClass = true)
@MapperScan(value = { "io.binghe.shop.user.mapper" })
@EnableDiscoveryClient
@EnableAsync
public class UserStarter {
public static void main(String[] args){
SpringApplication.run(UserStarter.class, args);
}
}

可以看到,在UserStarter類上標注了@ComponentScan注解,并指定了掃描的包路徑為io.binghe.shop和io.binghe.rpc,使其既能夠掃描到微服務項目中包下的類,也能夠掃描到bhrpc框架包下的類。

(4)添加配置

由于項目使用了Nacos作為配置中心,所以,需要在Nacos添加shop-user工程作為服務提供者的配置,登錄Nacos管理端,找到shop-user工程的配置,如下所示。

圖片

shop-user工程的配置

點擊編輯按鈕,在原有配置的基礎上,添加如下配置信息。

bhrpc:
binghe:
provider:
# rpc server
serverAddress: 127.0.0.1:20880
# serverRegistryAddress
serverRegistryAddress: 127.0.0.1:20880
# zookeeper server
registryAddress: 127.0.0.1:2181
# registry center type
registryType: zookeeper
#registry loadbalance type
registryLoadBalanceType: zkconsistenthash
# reflect type
reflectType: cglib
# heartbeatInterval
heartbeatInterval: 30000

可以看到,配置的內容都是bhrpc框架的服務提供者啟動時,需要讀取的一些參數信息。配置完成后,點擊發布按鈕進行發布。

至此,shop-user工程改造完成,是不是非常簡單呢?我們自己手寫的bhrpc框架整合SpringCloud Alibaba項目就是這么簡單。

3、改造shop-product工程

shop-product工程對應bhrpc框架的服務提供者角色。改造shop-product工程的步驟與改造shop-user工程的步驟基本相同。

(1)添加pom.xml依賴

shop-product工程同樣作為bhrpc框架的服務提供者,在pom.xml需要添加如下依賴。

<dependency>
<groupId>io.binghe.rpc</groupId>
<artifactId>bhrpc-spring-boot-starter-provider</artifactId>
<version>${bhrpc.version}</version>
</dependency>

<dependency>
<groupId>io.binghe.shop</groupId>
<artifactId>shop-service-api</artifactId>
<version>${project.version}</version>
</dependency>

(2)修改ProductServiceImpl類

ProductServiceImpl類的源碼詳見:shop-product工程下的io.binghe.shop.product.service.impl.ProductServiceImpl,需要將ProductServiceImpl類上標注的Spring中的@Service注解,替換成bhrpc框架中的@RpcService注解,修改后的源碼如下所示。

@RpcService(interfaceClass = ProductService.class, version = "1.0.0", group = "binghe")
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper;
@Override
public Product getProductById(Long pid) {
return productMapper.selectById(pid);
}

@Override
public int updateProductStockById(Integer count, Long id) {
return productMapper.updateProductStockById(count, id);
}
}

可以看到,在ProductServiceImpl類上標注了bhrpc框架中的@RpcService注解,并且指定了interfaceClass、version和group屬性。

(3)修改ProductStarter類

ProductStarter類的源碼詳見:shop-product工程下的io.binghe.shop.ProductStarter,主要是在ProductStarter類上添加@ComponentScan注解,修改后的源碼如下所示。

@SpringBootApplication
@ComponentScan(basePackages = {"io.binghe.shop", "io.binghe.rpc"})
@MapperScan(value = { "io.binghe.shop.product.mapper" })
@EnableTransactionManagement(proxyTargetClass = true)
@EnableDiscoveryClient
public class ProductStarter {
public static void main(String[] args){
SpringApplication.run(ProductStarter.class, args);
}
}

可以看到,在ProductStarter類上標注了@ComponentScan注解,并指定了掃描的包路徑為io.binghe.shop和io.binghe.rpc,使其既能夠掃描到微服務項目中包下的類,也能夠掃描到bhrpc框架包下的類。

(4)添加配置

由于項目使用了Nacos作為配置中心,所以,需要在Nacos添加shop-product工程作為服務提供者的配置,登錄Nacos管理端,找到shop-product工程的配置,如下所示。

圖片

shop-product工程的配置

點擊編輯按鈕,在原有配置的基礎上,添加如下配置信息。

bhrpc:
binghe:
provider:
# rpc server
serverAddress: 127.0.0.1:20881
# serverRegistryAddress
serverRegistryAddress: 127.0.0.1:20881
# zookeeper server
registryAddress: 127.0.0.1:2181
# registry center type
registryType: zookeeper
#registry loadbalance type
registryLoadBalanceType: zkconsistenthash
# reflect type
reflectType: cglib
# heartbeatInterval
heartbeatInterval: 30000

可以看到,配置的內容也都是bhrpc框架的服務提供者啟動時,需要讀取的一些參數信息。配置完成后,點擊發布按鈕進行發布。

至此,shop-product工程改造完成,也是非常簡單的。

4、改造shop-order工程

shop-order工程對應bhrpc框架的服務消費者角色。

(1)添加pom.xml依賴

shop-order工程作為bhrpc框架的服務消費者,在pom.xml需要添加如下依賴。

<dependency>
<groupId>io.binghe.rpc</groupId>
<artifactId>bhrpc-spring-boot-starter-consumer</artifactId>
<version>${bhrpc.version}</version>
</dependency>

<dependency>
<groupId>io.binghe.shop</groupId>
<artifactId>shop-service-api</artifactId>
<version>${project.version}</version>
</dependency>

(2)新增OrderServiceV9Impl類

為了不影響整體項目原有的邏輯,復制OrderServiceV8Impl類的代碼,新增成為OrderServiceV9Impl類,OrderServiceV9Impl類的源碼詳見:shop-order工程下的io.binghe.shop.order.service.impl.OrderServiceV9Impl,類框架代碼如下所示。

@Slf4j
@Service("orderServiceV9")
public class OrderServiceV9Impl implements OrderService {
}

(3)改造OrderServiceV9Impl類

將OrderServiceV9Impl類中,原本userService和productService成員變量上標注的Spring中的@Autowired注解替換成bhrpc框架中的@RpcReference注解,替換后的源碼如下所示。

@RpcReference(registryType = "zookeeper", registryAddress = "127.0.0.1:2181", loadBalanceType = "zkconsistenthash", version = "1.0.0", group = "binghe", serializationType = "protostuff", proxy = "cglib", timeout = 30000, async = false)
private UserService userService;

@RpcReference(registryType = "zookeeper", registryAddress = "127.0.0.1:2181", loadBalanceType = "zkconsistenthash", version = "1.0.0", group = "binghe", serializationType = "protostuff", proxy = "cglib", timeout = 30000, async = false)
private ProductService productService;

可以看到,userService和productService成員變量上標注了bhrpc框架中的@RpcReference注解,并且配置了服務消費者啟動時需要的一些參數信息。

注意:需要將OrderServiceV9Impl類中的UserService改成引用io.binghe.shop.service.UserService接口,將ProductService改成引用io.binghe.shop.service.ProductService接口,修改OrderServiceV9Impl類中的一些報錯信息。

(4)修改OrderStarter類

OrderStarter類的源碼詳見:shop-order工程下的io.binghe.shop.OrderStarter,主要是在OrderStarter類上添加@ComponentScan注解,修改后的源碼如下所示。

@SpringBootApplication
@ComponentScan(basePackages = {"io.binghe.shop", "io.binghe.rpc"})
@EnableTransactionManagement(proxyTargetClass = true)
@MapperScan(value = { "io.binghe.shop.order.mapper" })
@EnableDiscoveryClient
@EnableFeignClients
public class OrderStarter {
public static void main(String[] args){
SpringApplication.run(OrderStarter.class, args);
}
}

可以看到,在OrderStarter類上標注了@ComponentScan注解,并指定了掃描的包路徑為io.binghe.shop和io.binghe.rpc,使其既能夠掃描到微服務項目中包下的類,也能夠掃描到bhrpc框架包下的類。

(5)添加配置

由于項目使用了Nacos作為配置中心,所以,需要在Nacos添加shop-order工程作為服務消費者的配置,登錄Nacos管理端,找到shop-order工程的配置,如下所示。

圖片

shop-order工程的配置

點擊編輯按鈕,在原有配置的基礎上,添加如下配置信息。

bhrpc:
binghe:
consumer:
# zookeeper server
registryAddress: 127.0.0.1:2181
# registry center type
registryType: zookeeper
# registry loadbalance type
loadBalanceType: zkconsistenthash
# proxy type
proxy: cglib
# version
version: 1.0.0
# group
group: binghe
# zkconsistenthash
serializationType: zkconsistenthash
# timeout
timeout: 30000
# async
async: false
# oneway
oneway: false
# heartbeatInterval
heartbeatInterval: 15000
# retryInterval
retryInterval: 1000
# retryTimes
retryTimes: 3

可以看到,配置的內容都是bhrpc框架的服務消費者啟動時,需要讀取的一些參數信息。配置完成后,點擊發布按鈕進行發布。

(6)修改OrderController類

OrderController類的源碼詳見:shop-order工程下的io.binghe.shop.order.controller.OrderController,主要是將OrderController類中使用@Qualifier注解標識的orderServiceV8修改成orderServiceV9,如下所示。

@Autowired
@Qualifier(value = "orderServiceV9")
private OrderService orderService;

至此,shop-order工程改造完成,也是非常簡單的。

目前,在SpringCloud Alibaba項目中整合我們自己手寫的RPC框架就完成了,是不是非常簡單呢?沒錯,我們自己手寫的bhrpc框架整合SpringCloud Alibaba項目就是這么簡單!

5、測試?

整合完不測試下怎么行?

(1)、啟動服務

分別啟動Nacos、RocketMQ、Sentinel、ZipKin、Seata和Zookeeper服務,對應服務的版本在源碼的README.md文件中有說明。

(2)、啟動工程

按順序分別啟動shop-user工程、shop-product工程、shop-order工程和shop-gateway工程。

  • 啟動shop-user工程

輸出如下信息,沒有報錯,說明bhrpc框架監聽的是20880端口,表示啟動成功。

i.b.r.p.common.server.base.BaseServer    : Server started on port 20880
  • shop-product工程

輸出如下信息,沒有報錯,說明bhrpc框架監聽的是20881端口,表示啟動成功。

i.b.r.p.common.server.base.BaseServer    : Server started on port 20881
  • shop-order工程

輸出如下信息,沒有報錯,說明啟動成功。

o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path '/order'
  • shop-gateway工程

輸出如下信息,沒有報錯,說明啟動成功。

io.binghe.shop.GatewayStarter            : Started GatewayStarter in 9.604 seconds (JVM running for 10.964)

(3)、查詢數據表數據

(1)打開cmd終端,進入MySQL命令行,并進入shop商城數據庫,如下所示。

C:\Users\binghe>mysql -uroot -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use shop;
Database changed

(2)查看商品數據表,如下所示。

mysql> select * from t_product;
+------+------------+-------------+-------------+
| id | t_pro_name | t_pro_price | t_pro_stock |
+------+------------+-------------+-------------+
| 1001 | 華為 | 2399.00 | 100 |
| 1002 | 小米 | 1999.00 | 100 |
| 1003 | iphone | 4999.00 | 100 |
+------+------------+-------------+-------------+
3 rows in set (0.00 sec)

這里,我們以id為1001的商品為例,此時發現商品的庫存為100。

(3)查詢訂單數據表,如下所示。

mysql> select * from t_order;
Empty set (0.00 sec)

可以發現訂單數據表為空。

(4)查詢訂單條目數據表,如下所示。

mysql> select * from t_order_item;
Empty set (0.00 sec)

可以看到,訂單條目數據表為空。

(4)、訪問項目

打開瀏覽器訪問http://localhost:10002/server-order/order/submit_order?userId=1001&productId=1001&count=1,如下所示。

圖片

訪問結果

可以看到,項目返回的結果為success,表示項目執行成功。

5、再次查看數據表數據

(1)查看商品數據表,如下所示。

mysql> select * from t_product;
+------+------------+-------------+-------------+
| id | t_pro_name | t_pro_price | t_pro_stock |
+------+------------+-------------+-------------+
| 1001 | 華為 | 2399.00 | 99 |
| 1002 | 小米 | 1999.00 | 100 |
| 1003 | iphone | 4999.00 | 100 |
+------+------------+-------------+-------------+
3 rows in set (0.00 sec)

這里,id為1001的商品庫存為99,說明庫存已經減少了1。

(2)查詢訂單數據表,如下所示。

mysql> select * from t_order;
+-------------------+-----------+-------------+-------------+-----------+---------------+
| id | t_user_id | t_user_name | t_phone | t_address | t_total_price |
+-------------------+-----------+-------------+-------------+-----------+---------------+
| 96829539832958976 | 1001 | binghe | 13212345678 | 北京 | 2399.00 |
+-------------------+-----------+-------------+-------------+-----------+---------------+
1 row in set (0.00 sec)

可以看到,在t_order表中新增了一張訂單數據表,訂單的總金額為2399.00元。

(3)查詢訂單條目數據表,如下所示。

mysql> select * from t_order_item;
+-------------------+-------------------+----------+------------+-------------+----------+
| id | t_order_id | t_pro_id | t_pro_name | t_pro_price | t_number |
+-------------------+-------------------+----------+------------+-------------+----------+
| 96829541082861568 | 96829539832958976 | 1001 | 華為 | 2399.00 | 1 |
+-------------------+-------------------+----------+------------+-------------+----------+
1 row in set (0.00 sec)

可以看到,訂單條目數據表中條了一條訂單條目數據,商品的id為1001,商品名稱為華為,商品的價格為2399.00,下單的商品數量為1。

根據測試結果可以看出,我們已經正確在SpringCloud Alibaba項目中整合了我們自己手寫的bhrpc框架。

6、總結?

實現了功能不總結下怎么行?

在完成整合Spring的篇章后,我們又開啟了整合SpringBoot的篇章,首先,我們完成了服務提供者整合SpringBoot的功能,并基于SpringBoot接入了服務提供者。同時,實現了服務消費者整合SpringBoot的功能,并且基于SpringBoot接入了服務消費者。

在整合Docker章節,我們實現了基于Docker接入了服務提供者和基于Docker接入了服務消費者。

本章,我們更進一步將手寫的bhrpc框架整合到SpringCloud Alibaba項目。

總之,我們寫的RPC框架正在一步步實現它該有的功能。

最后,我想說的是:學習《RPC手擼專欄》一定要塌下心來,一步一個腳印,動手實踐,認真思考,遇到不懂的問題,可以直接到星球發布主題進行提問。一定要記?。杭埳系脕斫K覺淺,絕知此事要躬行的道理。否則,一味的CP,或者光看不練,不僅失去了學習的意義,到頭來更是一無所獲。

責任編輯:姜華 來源: 冰河技術
相關推薦

2020-11-02 08:19:18

RPC框架Java

2015-04-07 13:48:53

框架編程語言7種理由

2012-10-10 09:14:50

PHPRPCPHP框架

2021-04-21 08:01:31

Googleprotobuf嵌入式系統

2025-05-20 15:36:54

人工智能AI大模型

2025-05-07 00:35:00

2022-09-14 14:41:21

RPC框架RPC協議

2021-02-20 09:45:02

RPC框架Java

2023-05-06 13:56:02

工具函數庫業務

2022-05-29 21:38:11

限流熔斷流量

2024-11-14 09:40:06

RPC框架NettyJava

2021-03-26 06:01:45

日志MongoDB存儲

2009-08-06 09:55:09

Mono2.0

2023-11-08 07:45:47

Spring微服務

2023-06-06 19:18:17

數據工程軟件工程

2011-04-28 08:59:20

項目框架

2022-01-07 06:12:08

RPC框架限流

2025-08-15 09:07:09

2009-05-08 16:41:47

LinuxUbuntu秘訣
點贊
收藏

51CTO技術棧公眾號

欧美日韩在线播放一区二区| 久久精品亚洲一区| 久久手机在线视频| 日韩一级免费毛片| 久久国产精品久久w女人spa| 亚洲国产日韩欧美在线图片| 欧美v在线观看| 可以在线观看的av网站| 麻豆国产精品官网| 久精品免费视频| 一女三黑人理论片在线| 偷拍精品精品一区二区三区| 国产精品久久久久久户外露出| 成人在线中文字幕| 天海翼一区二区| 国产一区二区电影在线观看| 在线播放国产精品二区一二区四区 | 国产伦精品一区二区三区在线 | 成人羞羞网站| 日韩午夜在线观看| 久久精品99国产| www久久日com| 久久久久久久久久电影| 91成人免费观看| 最近免费中文字幕大全免费版视频| 久久香蕉国产| 日韩av网站电影| 亚洲欧美手机在线| 345成人影院| 亚洲激情图片一区| 日日夜夜精品网站| 日韩一卡二卡在线| 国产尤物一区二区在线| 日韩美女视频在线观看| 国产亚洲精品久久777777| 精品国内自产拍在线观看视频| 欧美大片在线观看一区二区| 欧美大尺度做爰床戏| av剧情在线观看| 中文字幕一区二区三区在线观看| 精品久久sese| 国产免费黄色网址| 蜜臀av国产精品久久久久| 26uuu亚洲国产精品| 全程偷拍露脸中年夫妇| 欧美日韩精品在线一区| 日韩精品在线播放| 久久精品无码一区二区三区毛片 | 亚洲影院天堂中文av色| 欧美成人猛片aaaaaaa| 9l视频白拍9色9l视频| 亚洲黄色免费av| 亚洲一线二线三线视频| 国产香蕉一区二区三区| 亚洲免费视频一区二区三区| 久久久不卡影院| 久久久久久久久四区三区| 丰满人妻一区二区三区无码av| 韩国成人在线视频| 国产日本欧美视频| 中文av免费观看| 久久三级视频| 欧洲亚洲免费视频| 久久久久亚洲av成人毛片韩| 99精品福利视频| 久久久人成影片一区二区三区| 综合五月激情网| 亚州av乱码久久精品蜜桃| 国产一区二区三区在线免费观看| 日韩人妻无码一区二区三区| 久草精品视频| 亚洲精品国产精品国自产在线 | av不卡在线观看| 都市激情久久久久久久久久久| 精品人妻一区二区三区换脸明星 | 69亚洲精品久久久蜜桃小说| 久久综合导航| 国产精品盗摄久久久| 免费精品一区二区| 麻豆精品一区二区综合av| 国产精品视频精品| 国产精品久久久久久69| 国产一区二区三区免费在线观看| 91亚洲精品久久久久久久久久久久| 国产一区二区在线视频聊天 | 欧美日韩理论片| 成年永久一区二区三区免费视频| 91精品久久久久久久久99蜜臂| 中文字幕avav| 久久成人福利| 亚洲人av在线影院| 久草手机视频在线观看| 亚洲欧美综合| 91高清免费在线观看| 无码人妻精品一区二区三区不卡 | 五月天婷婷影视| 日本在线成人| 亚洲精品黄网在线观看| 天天躁夜夜躁狠狠是什么心态| 久久亚洲精品中文字幕蜜潮电影| 久热99视频在线观看| 国产一级片视频| 亚洲尤物在线| 国产美女搞久久| 午夜精品久久久久久久爽| 99re成人精品视频| 亚洲国产婷婷香蕉久久久久久99| 直接在线观看的三级网址| 欧美日韩国内自拍| 中日韩av在线播放| 精品三级av| 在线亚洲国产精品网| 免费在线一级片| 日韩成人伦理电影在线观看| 96国产粉嫩美女| 日韩有码电影| 国产精品久久久久婷婷| 久操网在线观看| 狠狠久久伊人中文字幕| 亚洲精品在线观| 国产18无套直看片| 夜夜夜久久久| 91色琪琪电影亚洲精品久久| 免费福利在线观看| 亚洲三级在线免费观看| 成人免费视频久久| 北条麻妃一区二区三区在线观看| 中文字幕国产精品久久| 伊人365影院| 激情综合色丁香一区二区| 久久精品日韩精品| 欧美xxxbbb| 欧美日本韩国一区| 久久久久亚洲av成人无码电影| 欧美日韩亚洲一区| 成人亚洲综合色就1024| 高清国产福利在线观看| 激情成人中文字幕| 亚洲欧洲国产视频| 91精品观看| 国产精品久久久久久网站| 午夜av免费在线观看| 一区二区三区鲁丝不卡| 特级丰满少妇一级| 一级片免费网站| 99re66热这里只有精品3直播| 一区二区视频在线播放| 欧美电影免费看| 亚洲成人网av| 欧美日韩偷拍视频| 精品一区二区在线视频| 亚洲国产一区在线| 一呦二呦三呦精品国产| 国产丝袜高跟一区| 日本三级视频在线| 成人午夜免费视频| 91黄色在线看| 日日夜夜精品视频| 欧美国产精品va在线观看| 国产人妖在线播放| 中文字幕视频一区| 欧美成人小视频| 午夜免费福利小电影| 亚洲va欧美va人人爽成人影院| 中文字幕亚洲无线码在线一区| 免费观看日批视频| 国产欧美日韩综合| 亚洲 欧美 日韩系列| 国产亚洲一区二区三区不卡| 国产va免费精品高清在线观看| 艳母动漫在线看| 欧美日韩精品二区| 女人被狂躁c到高潮| 亚洲影院免费| 明星裸体视频一区二区| 日韩一区二区三区免费| 亚洲欧洲美洲在线综合| 国产寡妇亲子伦一区二区三区四区| 91蜜桃在线免费视频| 亚洲乱码国产一区三区| 精品国产一区二区三区四区| 国产精品永久在线| 九七电影韩国女主播在线观看| 5858s免费视频成人| 欧美黑人精品一区二区不卡| 国产91精品精华液一区二区三区| 91九色丨porny丨国产jk| 天天躁日日躁狠狠躁欧美巨大小说 | 91av在线免费播放| 日韩欧美高清在线播放| 91丝袜美腿美女视频网站| 尤物视频在线看| 亚洲国产91色在线| 无码人妻精品一区二| 日韩毛片精品高清免费| 最新国产精品自拍| 天堂在线亚洲视频| 异国色恋浪漫潭| 白嫩白嫩国产精品| 国产精品免费久久久久影院| 91麻豆免费在线视频| 日韩电影中文 亚洲精品乱码| 在线免费一区二区| 亚洲欧美一区二区不卡| 青青草成人免费视频| 麻豆精品在线观看| 日韩网站在线免费观看| 欧美色就是色| 成人欧美一区二区三区视频xxx| 中文字幕资源网在线观看免费 | 欧美在线1区| 99久久国产免费免费| 在线观看特色大片免费视频| 色偷偷亚洲男人天堂| 韩国av免费在线观看| 欧洲国内综合视频| 国产精品美女毛片真酒店| 欧美国产日本韩| 白嫩情侣偷拍呻吟刺激| 麻豆一区二区三区| 国产综合av在线| 7777久久香蕉成人影院| 精品卡一卡二| 91麻豆精品国产综合久久久| 欧美怡红院视频一区二区三区| 黄色小网站在线观看| 亚洲欧美国产另类| a级片在线视频| 一本大道综合伊人精品热热 | 亚洲欧洲日产国码av系列天堂| www.天堂在线| 欧美三级韩国三级日本三斤| 97超碰人人干| 亚洲免费av在线| 精品人体无码一区二区三区| 99久久精品国产观看| 特级黄色片视频| 奇米综合一区二区三区精品视频| 男的插女的下面视频| 亚洲午夜精品一区 二区 三区| 日本一区网站| 在线观看欧美理论a影院| 国产91一区二区三区| 国产一区二区三区免费观看在线| 国产精品99久久久久久白浆小说| 97人澡人人添人人爽欧美| 欧美成人一二三| 免费av不卡| 中文字幕精品久久| 草草影院在线观看| 亚洲欧美日韩一区二区三区在线| 日本精品一二区| 精品电影一区二区三区| www黄色在线观看| 在线播放日韩导航| 国产手机视频在线| 欧美一区二区三级| 99久久久久成人国产免费| 欧美日韩免费视频| 中文字幕久久久久| 欧美日韩一区不卡| 亚洲国产无线乱码在线观看| 在线免费观看日本一区| 波多野结衣视频观看| 91福利国产精品| 久草视频在线免费| 欧美午夜精品久久久久久孕妇| 天天干,天天干| 欧美综合在线视频| 一级黄色片在线看| 欧美一卡2卡三卡4卡5免费| 国产aⅴ爽av久久久久成人| 精品91自产拍在线观看一区| 日韩黄色片在线| 国产精品久久久久久久免费观看 | 99久久免费精品国产72精品九九| 91在线观看免费高清完整版在线观看| 日本黄色成人| 91欧美激情另类亚洲| 国产专区精品| 操一操视频一区| 成人av婷婷| 精品亚洲第一| 一本色道久久综合精品婷婷| 亚洲一区二区网站| 欧美极品欧美精品欧美图片| 日韩成人av影视| 亚洲女人在线观看| 播五月开心婷婷综合| 精品人妻一区二区三区香蕉| 欧美国产精品一区| 日本精品人妻无码77777| 亚洲一卡二卡三卡四卡| 99热只有这里有精品| 欧美系列在线观看| www.亚洲天堂.com| 亚洲欧美一区二区三区四区 | 在线观看国产精品网站| 国产伦理一区二区| 亚洲缚视频在线观看| 国产黄色免费在线观看| 大胆欧美人体视频| 在线观看网站免费入口在线观看国内| 国产精品男人爽免费视频1| 久久久久久久久久久久电影| 精品在线视频一区二区| 日韩综合精品| 国产69精品久久久久999小说| 日日嗨av一区二区三区四区| 美女被艹视频网站| 国产亚洲精品超碰| 久久久久久久久久综合| 91黄色免费网站| 国产高清视频免费观看| 亚洲人成网站色ww在线| 欧美色图天堂| 国产成人精品优优av| 国产精品中文| 麻豆传媒一区| 狠狠爱www人成狠狠爱综合网 | 青青草97国产精品免费观看| 99免费观看视频| 国产人久久人人人人爽| 国产真实乱在线更新| 亚洲成av人片在www色猫咪| 中文字幕 日韩有码| 精品国产乱码久久久久久久 | 久久久久www| 色综合一本到久久亚洲91| 成人在线观看91| 欧美电影免费| 日韩久久一级片| 国产99精品国产| 91香蕉视频在线播放| 色噜噜狠狠一区二区三区果冻| 国精品人妻无码一区二区三区喝尿| 神马国产精品影院av| 国产精品av一区二区三区| 国产91精品入口17c| 99久久久久| 一区二区xxx| 久久精品人人做人人综合| 日韩免费观看一区二区| 欧美一区二区福利视频| a√资源在线| 国产成人免费av| 亚洲桃色综合影院| 久久亚洲中文字幕无码| 国产91精品一区二区麻豆网站| 国产一区二区三区在线视频观看| 欧洲色大大久久| 国产片在线观看| 欧美重口另类videos人妖| 国产另类在线| 男人天堂手机在线视频| 国产成人在线视频网址| 久久精品黄色片| 欧美一区二区三区在| 日本高清视频在线观看| 国产精品久久久久秋霞鲁丝| 国产欧美一区| 国产自偷自偷免费一区| 国产拍揄自揄精品视频麻豆| 免费看毛片网站| 亚洲欧洲偷拍精品| 欧美极品免费| 日韩高清国产精品| 日本最新不卡在线| 免费黄色激情视频| 91 com成人网| 日本不卡在线| 亚洲一区二区三区视频播放| 亚洲成人三区| 中文字幕无码毛片免费看| 一区2区3区在线看| 日本加勒比一区| 538国产精品一区二区在线| 自拍自偷一区二区三区| 久久久精品三级| 国产精品欧美一级免费| 国产熟女精品视频| 97精品久久久| 亚洲国产合集| 亚洲不卡视频在线| 亚洲美女在线国产| 欧美熟妇交换久久久久久分类| 国语自产精品视频在线看抢先版图片| 欧美日韩一区二区三区四区不卡| 亚洲国产精品久久久久爰色欲| 国产亚洲精久久久久久| 一级黄色片网站| 久久99国产精品自在自在app| 免费成人三级| 99视频在线视频| 亚洲欧美另类久久久精品| 色婷婷av一区二区三区之e本道| 日韩av手机在线观看| 99久久激情| 50一60岁老妇女毛片| 欧美亚洲尤物久久|