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

硬核 | 我一個(gè)人開發(fā)了“Dubbo”框架

開發(fā) 新聞
在開發(fā)這個(gè)RPC框架之前,我花費(fèi)了不少時(shí)間算是對Dubbo框架徹底研究透徹了。

大家好,我是冰河~~

沒錯(cuò),這次冰河又要搞事情了,這次準(zhǔn)備下手的是RPC框架項(xiàng)目。為什么要對RPC框架項(xiàng)目下手呢,因?yàn)樵谌缃穹植际健⑽⒎?wù)乃至云原生不斷發(fā)展的過程中,RPC作為底層必不可少的通信組件,被廣泛應(yīng)用在分布式、微服務(wù)和云原生項(xiàng)目中。

為啥要開發(fā)RPC框架?

事情是這樣的,在開發(fā)這個(gè)RPC框架之前,我花費(fèi)了不少時(shí)間算是對Dubbo框架徹底研究透徹了。

冰河在擼透了Dubbo2.x和Dubbo3.x的源碼之后,本來想給大家寫一個(gè)Dubbo源碼解析的專欄。為此,我其實(shí)私下準(zhǔn)備了一個(gè)多月:畫流程圖、分析源碼、寫測試Demo,自己在看Dubbo源碼時(shí),也為Dubbo源碼添加了非常詳細(xì)的注釋。這里,就包含Dubbo2.x和Dubbo3.x的源碼。

圖片

當(dāng)我就這么熬夜肝文一個(gè)多月后,突然發(fā)現(xiàn)一個(gè)問題:Dubbo經(jīng)過多年不斷的迭代開發(fā),它的源碼已經(jīng)非常多了,如果以文章的形式將Dubbo的源碼面面俱到的分析到位,那還不知道要寫到何年何月去了。當(dāng)我寫文章分析Dubbo的最新版本3.x時(shí),可能寫到專欄的中后期Dubbo已經(jīng)更新到4.x、5.x,設(shè)置有可能是6.x、7.x了。

與其這么費(fèi)勁吧咧的分析源碼,還不如從零開始帶著大家一起手?jǐn)]一個(gè)能夠在實(shí)際生產(chǎn)環(huán)境使用的、分布式、高性能、可擴(kuò)展的RPC框架。這樣,大家也能夠直觀的感受到一個(gè)能夠在實(shí)際場景使用的RPC框架是如何一步步開發(fā)出來的。

相信大家在學(xué)完《RPC手?jǐn)]專欄》后,自己再去看Dubbo源碼的話,就相對來說簡單多了。你說是不是這樣的呢?

你能學(xué)到什么??

既然是整個(gè)專欄的開篇嘛,肯定是要告訴你在這個(gè)專欄中能夠?qū)W習(xí)到哪些實(shí)用的技術(shù)的。這里,我就畫一張圖來直觀的告訴你在《RPC手?jǐn)]專欄》能夠?qū)W到哪些技術(shù)吧。

《RPC手?jǐn)]專欄》整體框架技術(shù)全貌如圖所示,加入星球后與冰河一起從零實(shí)現(xiàn)它,搞定它,當(dāng)你緊跟冰河節(jié)奏搞定這個(gè)RPC框架后,你會(huì)發(fā)現(xiàn):什么Dubbo、什么gRPC、什么BRPC、什么Hessian、什么Tars、什么Thrift、什么motan、什么hprose等等等等,市面上主流的RPC框架,對你來說就都不叫事兒了,跟緊冰河的節(jié)奏,你可以的。

圖片

相信小伙伴們看到《RPC手?jǐn)]專欄》涉及到的知識點(diǎn),應(yīng)該能夠了解到咱們這個(gè)從零開始的《RPC手?jǐn)]專欄》還是比較硬核的吧?

另外,咱這RPC項(xiàng)目支持同步調(diào)用、異步調(diào)用、回調(diào)和單向調(diào)用。

  • 同步調(diào)用

圖片

  • 異步調(diào)用

圖片

  • 回調(diào)

圖片

  • 單向調(diào)用

圖片

對,沒錯(cuò),咱們《RPC手?jǐn)]專欄》最終實(shí)現(xiàn)的RPC框架的定位就是盡量可以在實(shí)際環(huán)境使用。通過這個(gè)專欄的學(xué)習(xí),讓大家深入了解到能夠在實(shí)際場景使用的RPC框架是如何一步步開發(fā)出來的。

代碼結(jié)構(gòu)?

我將這個(gè)bhrpc項(xiàng)目的定位為可在實(shí)際場景使用的、分布式、高性能、可擴(kuò)展的RPC框架,目前總體上已經(jīng)開發(fā)并完善的功能達(dá)到60+個(gè)子項(xiàng)目,大家看圖吧。

圖片

項(xiàng)目大量使用了對標(biāo)Dubbo的自定義SPI技術(shù)實(shí)現(xiàn)高度可擴(kuò)展性,各位小伙伴可以根據(jù)自己的需要,按照SPI的設(shè)計(jì)要求添加自己實(shí)現(xiàn)的自定義插件。

圖片

演示效果?

說了那么多,咱們一起來看看這個(gè)RPC框架的使用效果吧,因?yàn)樵蹅冞@個(gè)RPC框架支持的調(diào)用方式有:原生RPC調(diào)用、整合Spring(XML/注解)、整合SpringBoot、整合SpringCloud、整合SpringCloud Alibaba,整合Docker和整合K8S七種使用方式。

這里,咱們就以 整合Spring注解的方式 來給大家演示下這個(gè)RPC框架。

RPC核心注解說明

為了讓大家更好的了解這個(gè)RPC框架,我先給大家看下RPC框架的兩個(gè)核心注解,一個(gè)是RPC的服務(wù)提供者注解@RpcService?,一個(gè)是RPC的服務(wù)調(diào)用者注解@RpcReference。

(1)服務(wù)提供者注解@RpcService的核心源碼如下所示。

/**
* @author binghe
* @version 1.0.0
* @description bhrpc服務(wù)提供者注解
*/
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Component
public @interface RpcService {

/**
* 接口的Class
*/
Class<?> interfaceClass() default void.class;

/**
* 接口的ClassName
*/
String interfaceClassName() default "";

/**
* 版本號
*/
String version() default "1.0.0";

/**
* 服務(wù)分組,默認(rèn)為空
*/
String group() default "";

/**
* 延遲發(fā)布,預(yù)留
*/
int delay() default 0;

/**
* 是否導(dǎo)出rpc服務(wù),預(yù)留
*/
boolean export() default true;
}

(2)服務(wù)調(diào)用者注解@RpcReference的核心源碼如下所示。

/**
* @author binghe
* @version 1.0.0
* @description bhrpc服務(wù)消費(fèi)者
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Autowired
public @interface RpcReference {

/**
* 版本號
*/
String version() default "1.0.0";

/**
* 注冊中心類型, 目前的類型包含:zookeeper、nacos、etcd、consul
*/
String registryType() default "zookeeper";

/**
* 注冊地址
*/
String registryAddress() default "127.0.0.1:2181";

/**
* 負(fù)載均衡類型,默認(rèn)基于ZK的一致性Hash
*/
String loadBalanceType() default "zkconsistenthash";

/**
* 序列化類型,目前的類型包含:protostuff、kryo、json、jdk、hessian2、fst
*/
String serializationType() default "protostuff";

/**
* 超時(shí)時(shí)間,默認(rèn)5s
*/
long timeout() default 5000;

/**
* 是否異步執(zhí)行
*/
boolean async() default false;

/**
* 是否單向調(diào)用
*/
boolean oneway() default false;

/**
* 代理的類型,jdk:jdk代理, javassist: javassist代理, cglib: cglib代理
*/
String proxy() default "jdk";

/**
* 服務(wù)分組,默認(rèn)為空
*/
String group() default "";
}

這里,我只列出了服務(wù)提供者注解@RpcService和服務(wù)調(diào)用者注解@RpcReference的部分源碼,后續(xù)在RPC框架不斷完善的過程中,大家就可以慢慢看到源碼的全貌和其每個(gè)注解實(shí)現(xiàn)的功能。這里,我就不詳細(xì)介紹了。

當(dāng)然啦,在這個(gè)RPC框架實(shí)現(xiàn)的原生調(diào)用方式中,可以不用這些注解就能夠?qū)崿F(xiàn)遠(yuǎn)程調(diào)用。

效果演示

接口定義

定義兩個(gè)接口,分別為HelloService和HelloPersonService,源碼如下所示。

  • HelloService接口源碼
public interface HelloService {
String hello(String name);
String hello(Person person);
}
  • HelloPersonService接口源碼
public interface HelloPersonService {
List<Person> getTestPerson(String name,int num);
}

實(shí)現(xiàn)服務(wù)提供者demo

(1)創(chuàng)建HelloService接口和HelloPersonService接口的實(shí)現(xiàn)類HelloServiceImpl和HelloPersonServiceImpl,如下所示。

  • HelloServiceImpl類源碼
@RpcService(interfaceClass = HelloService.class, version = "1.0.0")
public class HelloServiceImpl implements HelloService {

@Override
public String hello(String name) {
return "Hello! " + name;
}

@Override
public String hello(Person person) {
return "Hello! " + person.getFirstName() + " " + person.getLastName();
}
}

可以看到,在HelloServiceImpl類上添加了RPC服務(wù)提供者注解??@RpcService??,表示將其發(fā)布為一個(gè)RPC服務(wù)。

  • HelloPersonServiceImpl類源碼
@RpcService(interfaceClass = HelloPersonService.class, version = "1.0.0")
public class HelloPersonServiceImpl implements HelloPersonService {
@Override
public List<Person> getTestPerson(String name, int num) {
List<Person> persons = new ArrayList<>(num);
for (int i = 0; i < num; ++i) {
persons.add(new Person(Integer.toString(i), name));
}
return persons;
}
}

可以看到,在HelloPersonServiceImpl類上添加了RPC服務(wù)提供者注解@RpcService,表示將其發(fā)布為一個(gè)RPC服務(wù)。

(2)創(chuàng)建服務(wù)提供者demo的配置類ServerConfig,在ServerConfig類中注入RegistryService注冊中心接口的實(shí)現(xiàn)類,以及RPC服務(wù)提供者的核心類RpcServer,如下所示。

/**
* @author binghe
* @version 1.0.0
* @description 基于注解的配置類
*/
@Configuration
@ComponentScan(value = {"io.binghe.rpc.demo"})
@PropertySource(value = {"classpath:rpc.properties"})
public class SpringAnnotationProviderConfig {

@Value("${registry.address}")
private String registryAddress;

@Value("${registry.type}")
private String registryType;

@Value("${registry.loadbalance.type}")
private String registryLoadbalanceType;

@Value("${server.address}")
private String serverAddress;

@Value("${reflect.type}")
private String reflectType;

@Bean
public RpcSpringServer rpcSpringServer(){
return new RpcSpringServer(serverAddress, registryAddress, registryType, registryLoadbalanceType, reflectType);
}
}

(3)創(chuàng)建服務(wù)提供者demo的啟動(dòng)類ServerTest,如下所示。

/**
* @author binghe
* @version 1.0.0
* @description RPC整合Spring注解,服務(wù)提供者demo啟動(dòng)類
*/
public class ServerTest {
public static void main(String[] args){
new AnnotationConfigApplicationContext(ServerConfig.class);
}
}

實(shí)現(xiàn)服務(wù)調(diào)用者demo

(1)創(chuàng)建測試服務(wù)調(diào)用者的TestService接口,如下所示。

public interface TestService {
void printResult();
}

(2)創(chuàng)建TestService接口的實(shí)現(xiàn)類TestServiceImpl,在TestServiceImpl類上標(biāo)注Spring的??@Service??注解,并在TestServiceImpl類中通過??@RpcReference??注解注入HelloService接口的實(shí)現(xiàn)類和HelloPersonService接口的實(shí)現(xiàn)類,并實(shí)現(xiàn)TestService接口的printResult()方法,源碼如下所示。

/**
* @author binghe
* @version 1.0.0
* @description 測試RPC服務(wù)調(diào)用者
*/
@Service
public class TestServiceImpl implements TestService {

@RpcReference(version = "1.0.0", timeout = 3000, proxy = "javassist", isAsync = true)
private HelloService helloService;

@RpcReference(proxy = "cglib")
private HelloPersonService helloPersonService;

@Override
public void printResult() {
String result = helloService.hello("binghe");
System.out.println(result);
result = helloService.hello(new Person("binghe001", "binghe002"));
System.out.println(result);
System.out.println("=================================");
List<Person> personList = helloPersonService.getTestPerson("binghe", 2);
personList.stream().forEach(System.out::println);
}
}

通過TestServiceImpl類的源碼我們可以看到,遠(yuǎn)程調(diào)用HelloService接口的方法時(shí)使用的是javassist動(dòng)態(tài)代理,遠(yuǎn)程調(diào)用HelloPersonService接口時(shí),使用的是cglib動(dòng)態(tài)代理。

(3)創(chuàng)建服務(wù)調(diào)用者demo的配置類ClientConfig,如下所示。

@Configuration
@ComponentScan(value = {"io.binghe.rpc.*"})
@PropertySource(value = {"classpath:rpc.properties"})
public class ClientConfig {
}

(4)創(chuàng)建服務(wù)調(diào)用者demo的啟動(dòng)類ClientTest,如下所示。

public class ClientTest {

public static void main(String[] args){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ClientConfig.class);
TestService testService = context.getBean(TestService.class);
testService.printResult();
context.close();
}
}

啟動(dòng)服務(wù)測試

(1)啟動(dòng)Zookeeper,這里,為了演示簡單,就直接在我本機(jī)啟動(dòng)單機(jī)Zookeeper好了,啟動(dòng)后的效果如下圖所示。

圖片

(2)啟動(dòng)服務(wù)提供者ServerTest類,啟動(dòng)后輸出的日志信息如下所示。

13:43:36,876  INFO ConnectionStateManager:228 - State change: CONNECTED
13:43:36,905 INFO RpcClient:79 - use cglib dynamic proxy...
13:43:36,942 INFO CuratorFrameworkImpl:235 - Starting
13:43:36,943 INFO ZooKeeper:868 - Initiating client connection, cnotallow=127.0.0.1:2181

可以看到,服務(wù)提供者已經(jīng)將發(fā)布的服務(wù)注冊到了Zookeeper中。

(3)登錄Zookeeper客戶端查看Zookeeper中注冊的服務(wù),如下所示。

  • 查看HelloService接口發(fā)布的服務(wù)信息
[zk: localhost:2181(CONNECTED) 5] get /binghe_rpc/io.binghe.rpc.test.client.HelloService#1.0.0/65eb0d7f-4bf7-4a0a-bafc-1b7e0e030353

{"name":"io.binghe.rpc.test.client.HelloService#1.0.0","id":"65eb0d7f-4bf7-4a0a-bafc-1b7e0e030353","address":"127.0.0.1","port":18866,"sslPort":null,"payload":{"@class":"io.binghe.rpc.center.meta.ServiceMeta","serviceName":"io.binghe.rpc.test.client.HelloService","serviceVersion":"1.0.0","serviceAddr":"127.0.0.1","servicePort":18866},"registrationTimeUTC":1656135817627,"serviceType":"DYNAMIC","uriSpec":null,"enabled":true}
  • 查看HelloPersonService接口發(fā)布的服務(wù)信息
[zk: localhost:2181(CONNECTED) 7] get /binghe_rpc/io.binghe.rpc.test.client.HelloPersonService#1.0.0/882a5cdb-f581-4a83-8d56-800a8f14e831

{"name":"io.binghe.rpc.test.client.HelloPersonService#1.0.0","id":"882a5cdb-f581-4a83-8d56-800a8f14e831","address":"127.0.0.1","port":18866,"sslPort":null,"payload":{"@class":"io.binghe.rpc.center.meta.ServiceMeta","serviceName":"io.binghe.rpc.test.client.HelloPersonService","serviceVersion":"1.0.0","serviceAddr":"127.0.0.1","servicePort":18866},"registrationTimeUTC":1656135817274,"serviceType":"DYNAMIC","uriSpec":null,"enabled":true}

通過Zookeeper客戶端可以看出,HelloService接口和HelloPersonService接口發(fā)布的服務(wù)都已經(jīng)被注冊到Zookeeper了。

(4)啟動(dòng)服務(wù)提供者ClientTest類,實(shí)現(xiàn)RPC調(diào)用,輸出的日志信息如下所示。

13:56:47,391  INFO ConnectionStateManager:228 - State change: CONNECTED
13:56:47,488 INFO RpcClient:76 - use javassist dynamic proxy...
13:56:47,518 INFO ConnectionStateManager:228 - State change: CONNECTED
13:56:47,545 INFO RpcClient:79 - use cglib dynamic proxy...
13:56:48,253 INFO RpcConsumer:85 - connect rpc server 127.0.0.1 on port 18866 success.
Hello! binghe
Hello! binghe001 binghe002
=================================
0 binghe
1 binghe

可以看到,在ClientTest類的命令行輸出了遠(yuǎn)程調(diào)用的結(jié)果信息。并輸出了調(diào)用HelloService接口的遠(yuǎn)程方法使用的是javassist動(dòng)態(tài)代理。調(diào)用HelloPersonService接口的遠(yuǎn)程方法使用的是cglib動(dòng)態(tài)代理。

咱們一起手?jǐn)]的RPC框架其實(shí)還有很多非常強(qiáng)大的功能,這里,就不一一演示了,后面咱們都會(huì)一起手?jǐn)]來實(shí)現(xiàn)它。

一點(diǎn)點(diǎn)建議?

咱們這個(gè)專欄屬于實(shí)戰(zhàn)類型比較強(qiáng)的專欄,加上咱們一起從零開始手?jǐn)]的RPC框架會(huì)涉及眾多的知識點(diǎn)。正所謂紙上得來終覺淺,絕知此事要躬行。冰河希望大家在學(xué)習(xí)這個(gè)專欄的時(shí)候勤動(dòng)手,跟著專欄一起實(shí)現(xiàn)代碼。期間要多動(dòng)腦,多總結(jié),這樣才能夠加深對各項(xiàng)知識點(diǎn)的理解。切忌眼高手低,學(xué)了半天卻最終啥也沒學(xué)會(huì)。

責(zé)任編輯:張燕妮 來源: 冰河技術(shù)
相關(guān)推薦

2013-08-14 10:23:22

創(chuàng)業(yè)個(gè)人創(chuàng)業(yè)互聯(lián)網(wǎng)創(chuàng)業(yè)

2013-03-08 02:52:03

個(gè)人開發(fā)項(xiàng)目糾錯(cuò)

2017-07-13 12:33:15

戴爾

2013-06-07 10:42:53

2023-02-13 00:18:22

前端庫框架集合

2015-06-12 15:29:06

一個(gè)人的爆品

2011-06-16 14:21:43

習(xí)慣管理

2025-03-07 09:18:10

2014-05-29 10:43:29

斯諾登棱鏡監(jiān)聽

2015-08-18 09:57:42

UDK獨(dú)立游戲虛擬引擎

2009-09-27 16:04:49

CCIE資格

2009-02-26 10:19:56

2012-05-29 09:22:50

游戲設(shè)計(jì)開發(fā)

2012-12-28 16:23:50

2021-02-06 23:26:25

聊天室開發(fā)WebSocket

2009-03-20 09:12:56

阿里巴巴衛(wèi)哲馬云

2019-12-17 18:25:35

物聯(lián)網(wǎng)電腦互聯(lián)網(wǎng)

2015-09-07 13:38:41

數(shù)據(jù)分析

2015-09-24 14:12:34

醫(yī)療大數(shù)據(jù)數(shù)據(jù)化

2012-04-17 08:55:48

個(gè)人開發(fā)者開發(fā)心得
點(diǎn)贊
收藏

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

永久免费看片在线播放| 国产美女三级视频| 在线视频欧美亚洲| 911精品美国片911久久久| 91精品国产aⅴ一区二区| 2021狠狠干| 蜜桃av噜噜一区二区三区麻豆| 永久亚洲成a人片777777| 精品伦理精品一区| 成人免费毛片网| 成人在线免费电影| 久久精品日韩欧美| 在线日韩中文字幕| 97免费公开视频| av中文在线资源库| 欧美激情一区二区在线| 国产精品久久91| 玖玖爱这里只有精品| 国内露脸中年夫妇交换精品| 欧美性欧美巨大黑白大战| 国产麻豆电影在线观看| 亚洲欧美高清视频| 日韩成人一级大片| 久久99热精品| 青娱乐国产视频| 国产精品亚洲综合在线观看| 精品久久久久久久久久久久| 亚洲精品一区二区三区四区五区 | 偷拍盗摄高潮叫床对白清晰| 国产又粗又猛视频免费| 欧美激情五月| 中文字幕一区二区三区电影| theav精尽人亡av| 99国产精品免费网站| 欧美精品久久天天躁| 欧美激情精品久久久久久小说| free性护士videos欧美| 一区二区三区中文在线观看| 亚洲永久激情精品| av大片在线观看| 久久久久国产一区二区三区四区 | 一路向西2在线观看| 天堂在线中文网官网| 亚洲一区二区三区美女| 国产又粗又猛又爽又黄的网站 | 亚洲视频在线观看三级| 丝袜足脚交91精品| 成年人免费在线视频| 久久日一线二线三线suv| 免费看成人av| 久久精品国产亚洲a∨麻豆| www久久久久| 久久国产手机看片| 亚洲日本国产精品| 91丨porny丨户外露出| 九色综合日本| 桃花色综合影院| 久久久久久久久岛国免费| 日韩av一区二区三区美女毛片| 毛片在线播放网站| 中文在线资源观看网站视频免费不卡| 色就是色欧美| 免费av在线播放| 亚洲激情在线播放| 日本wwwcom| 亚洲国产福利| 欧美在线一二三四区| 黄色免费网址大全| 91国产一区| 精品久久久久久久久久久院品网| 欧美日韩人妻精品一区在线| 偷拍一区二区| 一二美女精品欧洲| 懂色av懂色av粉嫩av| 在线看片一区| 国产mv免费观看入口亚洲| 正在播放亚洲精品| 国产精品18久久久久久vr| 国产精品日韩欧美一区二区三区| 香港一级纯黄大片| 中文字幕欧美日本乱码一线二线| 在线成人av电影| 青草在线视频在线观看| 色婷婷亚洲婷婷| 国产三级生活片| www.亚洲一二| 一区二区三区高清国产| 国内偷拍精品视频| 久久久久久网| 99热最新在线| 国产午夜精品一区理论片| 亚洲精品五月天| 99精品视频播放| 精品伊人久久| 亚洲欧美另类自拍| 91成人福利视频| 日韩av一区二区三区| 97在线电影| 国产精品影院在线| 亚洲一区二区精品3399| 99热手机在线| 国产一区二区三区亚洲| 久久精品夜夜夜夜夜久久| 国产黄色片视频| 美女久久久精品| 久久99国产精品| dj大片免费在线观看| 欧美日韩亚洲一区二区| 一级片免费在线观看视频| 亚洲婷婷影院| 欧美极品在线视频| 亚洲视频在线观看免费视频| 99热99精品| 欧美日韩dvd| 国语自产精品视频在线看抢先版结局| 精品国产髙清在线看国产毛片| 一区二区三区在线播放视频| 国产亚洲精品v| www.成人三级视频| 里番在线观看网站| 在线视频欧美精品| 黄色录像a级片| 欧美日韩hd| 91精品视频在线| jizzjizz在线观看| 在线亚洲高清视频| 亚洲一区二区观看| 亚洲深夜激情| 国产精品国产三级国产专区53| 免费网站看v片在线a| 欧美亚洲禁片免费| 在线免费看黄视频| 亚洲一区欧美二区| 国产精品有限公司| 丁香花在线观看完整版电影| 制服丝袜国产精品| 成人欧美一区二区三区黑人一| 爽好多水快深点欧美视频| 国产传媒欧美日韩| 欧美野外wwwxxx| 欧美变态口味重另类| 久久久久香蕉视频| 国产91精品入口| 2022中文字幕| 日韩区一区二| 欧美高清视频免费观看| 国产suv精品一区二区69| 中文字幕日韩欧美一区二区三区| 亚洲 激情 在线| 久久精品国产亚洲夜色av网站 | 最近免费中文字幕大全免费版视频| 成人不卡免费av| 日本十八禁视频无遮挡| 欧美一性一交| 日本欧美一二三区| 成人av毛片| 欧美日韩在线播| 蜜桃av免费在线观看| 久久超碰97中文字幕| 中文字幕久久一区| 午夜免费欧美电影| 97在线观看免费| 可以在线观看的av| 欧美视频你懂的| 久草视频手机在线| 国产白丝精品91爽爽久久| h无码动漫在线观看| 国产精品18hdxxxⅹ在线| 97av在线影院| 国产免费av在线| 欧美视频三区在线播放| 侵犯稚嫩小箩莉h文系列小说| 国产一区二区三区精品欧美日韩一区二区三区 | 91传媒视频在线观看| 日本h片在线| 日韩精品在线观看网站| 日韩av免费播放| 亚洲欧洲综合另类在线| 中国xxxx性xxxx产国| 日韩电影网1区2区| 青青草综合在线| 影视先锋久久| 成人网中文字幕| 成人三级高清视频在线看| 亚洲女人天堂网| 国产乱码精品一区二三区蜜臂 | 久久精品91久久久久久再现| 成人福利小视频| 日韩欧美国产成人| 九九精品视频免费| 不卡欧美aaaaa| 亚洲 欧美 日韩系列| 欧美特黄视频| 日本一区二区三区www| 一区二区三区四区高清视频| 国产成人精品av在线| www视频在线看| 精品中文字幕久久久久久| 国产美女永久免费| 日本精品视频一区二区| 欧美黄色一区二区三区| 久久精品网站免费观看| 岛国精品一区二区三区| 蜜臀久久99精品久久久久久9| 草草视频在线免费观看| 97精品国产一区二区三区| 精品一区二区三区免费毛片| 91成人在线网站| 国产精品扒开腿做| 成人bbav| 欧美激情视频网| 婷婷在线视频观看| 亚洲午夜久久久影院| 国模人体一区二区| 欧美一区二区三级| 怡红院成永久免费人全部视频| 午夜精品久久久久久久久| 中文乱码字幕高清一区二区| 久久久久久久久99精品| 欧美肉大捧一进一出免费视频| 激情综合色综合久久| 久久人妻精品白浆国产| 99riav1国产精品视频| 国风产精品一区二区| 99精品在线| 亚洲二区三区四区| 国产一区网站| 久久本道综合色狠狠五月| 6080成人| www.成人av| 视频精品国内| 亚洲自拍小视频| 亚洲成人高清| 国产在线视频2019最新视频| 国产精品原创视频| 国产精品免费久久久| 欧美舌奴丨vk视频| 欧洲s码亚洲m码精品一区| 欧美aa在线| 91精品国产免费久久久久久| 男人天堂视频在线观看| 2024亚洲男人天堂| 黑人巨大精品欧美一区二区桃花岛| 97高清免费视频| h片在线观看视频免费| 2019亚洲男人天堂| 一级毛片久久久| 日本久久91av| 国产精品亲子伦av一区二区三区| 国产男人精品视频| 一区二区三区无毛| 亚洲www永久成人夜色| 精品国模一区二区三区欧美| 96pao国产成视频永久免费| 91精品亚洲一区在线观看| 91在线高清视频| 91成人噜噜噜在线播放| 国产精品三区www17con| 菁菁伊人国产精品| 久久久久久久久四区三区| 免费av一区| 五月天亚洲综合情| 五月天综合网站| 国产成人一区二区三区别| 亚洲午夜91| 人妻有码中文字幕| 免费成人性网站| 色欲欲www成人网站| 99久久国产免费看| 极品人妻videosss人妻| 亚洲视频一区二区在线| 国产精品成人免费一区二区视频| 天涯成人国产亚洲精品一区av| 特级西西444www大精品视频免费看 | 综合一区中文字幕| 激情久久一区| 青青草精品视频在线观看| 国产一区二区三区蝌蚪| 精品无码在线视频| 国产精品青草久久| 亚洲欧美一区二区三区四区五区| 婷婷开心激情综合| 五月婷婷激情五月| 欧美成人精品福利| 久久手机免费观看| 中文字幕日韩av电影| 在线观看男女av免费网址| 91成人福利在线| 亚洲人体在线| 免费日韩av电影| 亚洲蜜桃视频| 久久久久久久久久久免费视频| 精品亚洲成a人在线观看| 国产伦精品一区三区精东| 中文字幕av一区二区三区免费看| 国产一级片免费看| 欧美日韩久久一区| 日日夜夜精品免费| 久久影院模特热| 久久电影tv| 成人av免费在线看| 久久精品国产www456c0m| 日韩中文字幕在线视频观看| 久久99精品久久久久久| 狠狠人妻久久久久久综合蜜桃| 亚洲欧美在线视频观看| 日本天堂网在线| 精品毛片乱码1区2区3区| 日本天堂在线观看| 欧美洲成人男女午夜视频| 97品白浆高清久久久久久| 亚洲视频在线观看日本a| 亚洲欧美日韩在线观看a三区 | 精品人妻一区二区三区潮喷在线| 日韩欧美久久久| 日本蜜桃在线观看| 国产成人91久久精品| 久久久伦理片| 大伊香蕉精品视频在线| 国产精品自拍毛片| ass极品国模人体欣赏| 色综合天天天天做夜夜夜夜做| 精品国产av鲁一鲁一区| 久久精品国产精品| 国精品产品一区| 亚洲国产高清国产精品| 日韩激情在线观看| 成年人免费观看视频网站| 福利视频一区二区| 神宫寺奈绪一区二区三区| 欧美激情亚洲一区| 亚洲精品在线国产| 成人手机在线播放| 国产美女一区二区| 日韩成人毛片视频| 欧美一区二区久久| av在线看片| 99www免费人成精品| 欧美日本一区二区视频在线观看 | 国产精选久久久| 精品国产美女在线| 伊人久久一区| 7777在线视频| 国产精品888| 九九九国产视频| 亚洲精品国产福利| 欧美久久天堂| 日本一区高清不卡| 奇米在线7777在线精品| 国产免费无遮挡吸奶头视频| 色噜噜狠狠成人中文综合| 黄色av免费在线观看| 国产精品亚洲网站| 999久久久精品国产| 亚洲欧美日韩网站| 亚洲影院免费观看| 亚洲av成人无码久久精品老人| 欧美在线精品免播放器视频| 九九热爱视频精品视频| 少妇性l交大片| 中文字幕一区av| а√中文在线资源库| 97激碰免费视频| 精品视频黄色| 亚洲欧美日韩一二三区| 亚洲午夜影视影院在线观看| 四虎影视精品成人| 国产精品第二页| 91成人网在线观看| 麻豆精品国产传媒av| 一本色道a无线码一区v| 免费av网站在线观看| 国产伦精品一区二区三毛| 老鸭窝91久久精品色噜噜导演| 91精品久久久久久久久久久久| 91麻豆精品国产91久久久久| 51漫画成人app入口| 视频一区二区在线观看| 国产成a人亚洲| 男人天堂视频网| 欧美大胆在线视频| 久久99国产精品视频| 三年中文在线观看免费大全中国| 亚洲大片在线观看| 在线观看麻豆| 国产精品一区二区三区免费观看 | 重囗味另类老妇506070| 玖玖爱在线精品视频| 欧美性感一类影片在线播放| 日本孕妇大胆孕交无码| 欧美日韩在线不卡一区| 国产资源在线一区| 五月激情六月丁香| 久久天天躁狠狠躁夜夜av| 偷拍亚洲色图| 亚洲911精品成人18网站| 在线亚洲欧美专区二区| cao在线视频| 玖玖精品在线视频| 国产欧美一二三区|