成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

瀏覽:72日期:2023-08-04 10:41:58
1.1 簡(jiǎn)介 1.1.1 概述

  Netflix Eureka 是由 Netflix 開(kāi)源的一款基于 REST 的服務(wù)發(fā)現(xiàn)組件,包括 Eureka Server 及 Eureka Client。2012 年 9 月在 GitHub 上發(fā)布 1.1.2 版本,目前 Netflix 以宣布閉源,所以市面上還是以 1.x 版本為主。Eureka 提供基于 REST 的服務(wù),在集群中主要用于服務(wù)管理。Eureka 提供了基于 Java 語(yǔ)言的客戶(hù)端組件,客戶(hù)端組件實(shí)現(xiàn)了負(fù)載均衡的功能,為業(yè)務(wù)組件的集群部署創(chuàng)造了條件。使用該框架,可以將業(yè)務(wù)組件注冊(cè)到 Eureka 容器中,這些組件可進(jìn)行集群部署,Eureka 主要維護(hù)這些服務(wù)的列表并自動(dòng)檢查它們的狀態(tài)。Spring Cloud Netflix Eureka 是 Pivotal 公司為了將 Netflix Eureka 整合于 Spring Cloud 生態(tài)系統(tǒng)提供的版本。  Eureka 包含兩個(gè)組件:Eureka Server 和 Eureka Client, Eureka Server 提供服務(wù)注冊(cè)服務(wù)。各個(gè)微服務(wù)節(jié)點(diǎn)通過(guò)配置啟動(dòng)后,會(huì)在 EurekaServer 中進(jìn)行注冊(cè),這樣 EurekaServer 中的服務(wù)注冊(cè)表中將會(huì)存儲(chǔ)所有可用服務(wù)節(jié)點(diǎn)的信息,服務(wù)節(jié)點(diǎn)的信息可以在界面中直觀(guān)看到。EurekaClient 通過(guò)注冊(cè)中心進(jìn)行訪(fǎng)問(wèn)。它是一個(gè) Java 客戶(hù)端,用于簡(jiǎn)化 Eureka Server 的交互,客戶(hù)端同時(shí)也具備一個(gè)內(nèi)置的、使用輪詢(xún)(round-robin)負(fù)載算法的負(fù)載均衡器。在應(yīng)用啟動(dòng)后,將會(huì)向 Eureka Server 發(fā)送心跳(默認(rèn)周期為30秒)。如果 Eureka Server 在多個(gè)心跳周期內(nèi)沒(méi)有接收到某個(gè)節(jié)點(diǎn)的心跳,EurekaServer 將會(huì)從服務(wù)注冊(cè)表中把這個(gè)服務(wù)節(jié)點(diǎn)移除(默認(rèn)90秒)

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.1.2 原理圖

  一個(gè)簡(jiǎn)單的 Eureka 集群,需要一個(gè) Eureka 服務(wù)器、若干個(gè)服務(wù)提供者。我們可以將業(yè)務(wù)組件注冊(cè)到 Eureka 服務(wù)器中,其他客戶(hù)端組件可以向服務(wù)器獲取服務(wù)并且進(jìn)行遠(yuǎn)程調(diào)用。Eureka:就是服務(wù)注冊(cè)中心(可以是一個(gè)集群),對(duì)外暴露自己的地址;提供者:?jiǎn)?dòng)后向 Eureka 注冊(cè)自己信息(地址,提供什么服務(wù));消費(fèi)者:向 Eureka 訂閱服務(wù),Eureka 會(huì)將對(duì)應(yīng)服務(wù)的所有提供者地址列表發(fā)送給消費(fèi)者,并且定期更新;心跳(續(xù)約):提供者定期通過(guò) http 方式向 Eureka 刷新自己的狀態(tài)。

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.1.3 相關(guān)依賴(lài)

<!-- 需要確定 Spring Cloud 版本 --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>1.2 搭建 EurekaServer 1.2.1 相關(guān)依賴(lài)

  現(xiàn)在都是子父工程,我們將子模塊中都需要用的依賴(lài)放到父工程的 pom 文件中

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <modules> <module>eureka</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.10.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.software</groupId> <artifactId>spring-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-cloud</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR8</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 演示就不使用數(shù)據(jù)庫(kù)了 --><!--<dependency>--><!--<groupId>org.springframework.boot</groupId>--><!--<artifactId>spring-boot-starter-data-jpa</artifactId>--><!--</dependency>--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- H 版 Spring Cloud 將 server 與 client 分開(kāi)了,需要導(dǎo)入兩個(gè)坐標(biāo) --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>1.2.2 聲明為 Eureka Server

  在 eureka 服務(wù)的啟動(dòng)類(lèi)上使用 @EnableEurekaServer,聲明當(dāng)前應(yīng)用為 Eureka 服務(wù)。

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description Eureka 啟動(dòng)類(lèi) */@SpringBootApplication@EnableEurekaServerpublic class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); }}1.2.3 配置文件

server: port: 8081spring: application: name: eurekaServer # 應(yīng)用名稱(chēng),在 Eureka 中作為 id 標(biāo)識(shí)eureka: client: register-with-eureka: false # 不注冊(cè)自己 fetch-registry: false # 不拉取自己 service-url: defaultZone: http://127.0.0.1:8081/eureka/ # EurekaServer 的地址,如果是集群,需要加上其它 Server 的地址1.2.4 啟動(dòng)服務(wù)

  啟動(dòng)服務(wù)訪(fǎng)問(wèn)對(duì)應(yīng)的端口就可以看到以下界面,現(xiàn)在是一個(gè)服務(wù)都沒(méi)有注冊(cè)上來(lái)。可以把 register-with-eureka,fetch-registry 兩個(gè)配置取消就可以看到 eureka 自己了。

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.3 提供者1.3.1 聲明為 Eureka Client

  在服務(wù)提供者啟動(dòng)類(lèi)中使用 @EnableDiscoveryClient,讓 Eureka 能夠發(fā)現(xiàn),掃描到該服務(wù)。@EnableEurekaClient 注解也能實(shí)現(xiàn)但是該注解只支持 Eureka 作為注冊(cè)中心,@EnableDiscoveryClient 可以是其他注冊(cè)中心,建議使用 @EnableDiscoveryClient

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description 服務(wù)提供者啟動(dòng)類(lèi) */@SpringBootApplication@EnableDiscoveryClientpublic class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); }}1.3.2 配置文件

server: port: 8082spring: application: name: ProviderServer # 應(yīng)用名稱(chēng),在 Eureka 中作為 id 標(biāo)識(shí)eureka: client: service-url: defaultZone: http://127.0.0.1:8081/eurake/1.3.3 提供服務(wù)

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description */@RestController@RequestMapping('/provider')public class ProviderController { @GetMapping('/get') public Object get() { return '你已經(jīng)消費(fèi)了'; }}1.3.4 啟動(dòng)服務(wù)

  啟動(dòng)服務(wù)之后,會(huì)自動(dòng)將自己注冊(cè)到 Eureka 中

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.4 消費(fèi)者1.4.1 聲明為 Eureka Client

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description 消費(fèi)者啟動(dòng)類(lèi) */@SpringBootApplication@EnableDiscoveryClientpublic class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); }// 將 RestTemplate 交由容器管理 @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); }}1.4.2 配置文件

server: port: 8083spring: application: name: ConsumerServer # 應(yīng)用名稱(chēng),在 Eureka 中作為 id 標(biāo)識(shí)eureka: client: service-url: defaultZone: http://127.0.0.1:8081/eureka1.4.3 消費(fèi)服務(wù)

  我們之前使用 RestTemplate 需要自己寫(xiě) URI,這樣很不利于維護(hù),而且容易出錯(cuò),現(xiàn)在只需要確定應(yīng)用名稱(chēng),利用應(yīng)用名稱(chēng)從 Eureka 中就可以獲取到詳細(xì)信息。

/** * Created with IntelliJ IDEA. * * @author gaohu9712@163.com * @date 2020/10/29 * @description */@RestController@RequestMapping('/consumer')public class ConsumerController { @Autowired private DiscoveryClient discoveryClient; @GetMapping('/go') public void go() { List<ServiceInstance> providerServer = discoveryClient.getInstances('ProviderServer'); if (0 == providerServer.size()) { return; } ServiceInstance serviceInstance = providerServer.get(0); String host = serviceInstance.getHost(); int port = serviceInstance.getPort(); URI uri = serviceInstance.getUri(); System.out.println('主機(jī):' + host); System.out.println('端口:' + port); System.out.println('uri:' + uri); RestTemplate restTemplate = new RestTemplate(); String str = restTemplate.getForObject(uri + '/provider/get', String.class); System.out.println(str); }}1.4.4 啟動(dòng)服務(wù)

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.4.5 請(qǐng)求服務(wù)

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.4.6 執(zhí)行流程

 ♞ 先啟動(dòng) eureka 注冊(cè)中心 ♞ 啟動(dòng)服務(wù)提供者 provider ♞ 服務(wù)提供者啟動(dòng)后會(huì)把自身信息(比如服務(wù)地址以別名方式注冊(cè)進(jìn) eureka) ♞ 消費(fèi)者 consumer 服務(wù)在需要調(diào)用接口時(shí),使用服務(wù)別名去注冊(cè)中心獲取實(shí)際的 RPC 遠(yuǎn)程調(diào)用地址 ♞ 消費(fèi)者獲得調(diào)用地址后,底層實(shí)際是利用 HttpClient 技術(shù)實(shí)現(xiàn)遠(yuǎn)程調(diào)用 ♞ 消費(fèi)者獲得服務(wù)地址后會(huì)緩存在本地 jvm 內(nèi)存中,默認(rèn)每間隔 30 秒更新一次服務(wù)調(diào)用地址

1.5 補(bǔ)充配置1.5.1 actuator 信息完善

  我們現(xiàn)在的服務(wù)注冊(cè)到 Eureka 上面是沒(méi)有 ip 地址的,以后等服務(wù)搭建集群是很不方便的,所以我們需要讓他顯示自己的 ip 地址;第二個(gè)就是服務(wù)名稱(chēng)為主機(jī) + 服務(wù)名 + 端口,這樣就暴露了主機(jī)名,我們可以指定顯示的名稱(chēng)。

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

在配置文件中添加如下配置,通過(guò)健康檢查(http://ip:port/actuator/health)查看是否修改成功。

eureka: instance: # 實(shí)例名稱(chēng) instance-id: consumer-01 # 地址中顯示 ip prefer-ip-address: true

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.5.2 自我保護(hù)機(jī)制 ☞ 概述

  我們可以看到 Eureka 上有一行紅色的英文 EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.它代表了 Eureka 保護(hù)模式的開(kāi)啟。一旦進(jìn)入保護(hù)模式,Eureka Server 將會(huì)嘗試保護(hù)其服務(wù)注冊(cè)表中的信息,不再刪除服務(wù)注冊(cè)表中的數(shù)據(jù),也就是不會(huì)注銷(xiāo)任何微服務(wù)。  默認(rèn)情況下,如果 Eureka Server 在一定時(shí)間內(nèi)沒(méi)有接收到某個(gè)微服務(wù)實(shí)例的心跳,Eureka Server 將會(huì)注銷(xiāo)該實(shí)例(默認(rèn)90秒)。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生(延時(shí)、卡頓、擁擠)時(shí),微服務(wù)與 Eureka Server 之間無(wú)法正常通信,以上行為可能變得非常危險(xiǎn)了——因?yàn)槲⒎?wù)本身其實(shí)是健康的,此時(shí)本不應(yīng)該注銷(xiāo)這個(gè)微服務(wù)。為了防止 Eureka Client 可以正常運(yùn)行,但是與 Eureka Server 網(wǎng)絡(luò)不通情況下,Eureka Server 不會(huì)立刻將 Eureka Client 服務(wù)剔除。

☞ 關(guān)閉自我保護(hù)機(jī)制

  我們之前的 Eureka 截圖中可以看到 DESKTOP-GL7GS52:ConsumerServer:8083,consumer-01 兩個(gè)同時(shí)存在,這明明是一個(gè)服務(wù),修改完配置之后前面的沒(méi)有剔除,這就是因?yàn)樽晕冶Wo(hù)機(jī)制打開(kāi)了。

# Eureka Server 配置eureka: server: # 關(guān)閉自我保護(hù)模式, 默認(rèn)為打開(kāi) enable-self-preservation: false # 續(xù)期時(shí)間,即掃描失效服務(wù)的間隔時(shí)間 eviction-interval-timer-in-ms: 5000 # Eureka Client 配置eureka: instance: # Eureka Client 給 Eureka Server 發(fā)送心跳的時(shí)間間隔,默認(rèn) 30 單位是 s lease-renewal-interval-in-seconds: 1 # Eureka Server 最后一次收到心跳的等待上限,超時(shí)剔除服務(wù),默認(rèn) 90 單位是 s lease-expiration-duration-in-seconds: 21.6 Eureka 高可用1.6.1 Eureka 集群搭建

  在之前的單體中我們的端口是隨意的,但是搭建集群我們需要對(duì)端口進(jìn)行規(guī)劃,例如將 808X 端口作為 Eureka 集群的端口。先來(lái)看下配置有什么區(qū)別,起初我們是將自己注冊(cè)到自己上,現(xiàn)在我們需要將自己注冊(cè)到其他 Eureka 上,有多個(gè)則用 , 隔開(kāi)。

server: port: 8081spring: application: name: eurekaServereureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://127.0.0.1:8082/eureka server: enable-self-preservation: false eviction-interval-timer-in-ms: 5000

server: port: 8082spring: application: name: eurekaServer_backeureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://127.0.0.1:8081/eureka server: enable-self-preservation: false eviction-interval-timer-in-ms: 5000

Spring Cloud 系列之注冊(cè)中心 Eureka詳解Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.6.2 Privoder 集群

  服務(wù)提供者的集群配置了多個(gè) Eureka 地址,會(huì)將自己同時(shí)注冊(cè)到多個(gè) Eureka 上,除了配置文件以外其他的服務(wù)代碼完全一致,也可以加以區(qū)分是哪個(gè)提供的服務(wù)。需要注意的是 Eureka 集群的應(yīng)用名稱(chēng)可以不一致甚至不寫(xiě),但是服務(wù)提供者的應(yīng)用名稱(chēng)必須保持一致,否則會(huì)被認(rèn)為不是一個(gè)服務(wù)。

server: port: 8091spring: application: name: ProviderServer # 應(yīng)用名稱(chēng),在 Eureka 中作為 id 標(biāo)識(shí)eureka: client: service-url: defaultZone: http://127.0.0.1:8081/eureka, http://127.0.0.1:8082/eureka instance: instance-id: provider-prim prefer-ip-address: true lease-renewal-interval-in-seconds: 1 lease-expiration-duration-in-seconds: 2

server: port: 8092spring: application: name: ProviderServereureka: client: service-url: defaultZone: http://127.0.0.1:8081/eureka, http://127.0.0.1:8082/eureka instance: instance-id: provider-back prefer-ip-address: true lease-renewal-interval-in-seconds: 1 lease-expiration-duration-in-seconds: 2

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

1.6.3 遠(yuǎn)程調(diào)用

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/29 * @description */@RestController@RequestMapping('/consumer')public class ConsumerController { @Autowired private DiscoveryClient discoveryClient; @GetMapping('/go') public void go() { List<ServiceInstance> providerServer = discoveryClient.getInstances('ProviderServer'); if (0 == providerServer.size()) { return; } RestTemplate restTemplate = new RestTemplate(); for (ServiceInstance instance : providerServer) { System.out.print(instance.getUri() + '---'); String url = instance.getUri() + '/provider/get'; System.out.println(restTemplate.getForObject(url, String.class)); } }}

Spring Cloud 系列之注冊(cè)中心 Eureka詳解

  咱們可以使用服務(wù)發(fā)現(xiàn) DiscoveryClient 來(lái)獲取服務(wù)信息,但是無(wú)法自動(dòng)選擇使用那個(gè)服務(wù),這里就涉及到 Ribbon 負(fù)載均衡了。我們可以將 RestTemplate 交由 Ioc 管理,在注入時(shí)使用 @LoadBalanced 注解進(jìn)行負(fù)載均衡。

☞ 源碼

到此這篇關(guān)于Spring Cloud 系列之注冊(cè)中心 Eureka的文章就介紹到這了,更多相關(guān)Spring Cloud 注冊(cè)中心Eureka內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
制服丝袜亚洲播放| 欧美激情自拍偷拍| 国产精品久久久久久久久图文区 | 国产精品区一区| 国产精品天干天干在线综合| 成人黄色一级视频| 欧美一卡在线观看| 韩国毛片一区二区三区| 一本一本久久| 国产精品你懂的| 成人激情动漫在线观看| 91精品国产综合久久福利软件| 日本亚洲视频在线| 久久激情婷婷| 日韩电影免费在线| 麻豆精品传媒视频| 午夜精品久久久久影视| 影音先锋在线一区| 中文字幕五月欧美| 一区在线视频观看| 日韩一区在线免费观看| 在线成人国产| 亚洲精品五月天| 99在线精品免费视频九九视| 亚洲视频免费在线观看| 亚洲精品乱码| 亚洲一区二区三区四区五区中文| 一本色道久久综合亚洲精品婷婷| 亚洲乱码精品一二三四区日韩在线| 亚洲国内在线| 亚洲综合另类小说| 麻豆91精品| 亚洲国产精品久久艾草纯爱| 亚洲一区国产| 日本在线观看不卡视频| 在线影院国内精品| 精品一区二区三区在线视频| 欧美三级在线播放| 国产一区二区三区四区在线观看 | 日本韩国视频一区二区| 午夜精品免费在线观看| 日本韩国一区二区三区视频| 精品一区二区三区香蕉蜜桃| 欧美一区二区视频在线观看2022| av午夜精品一区二区三区| 精品国产乱子伦一区| 亚洲欧美在线网| 亚洲精品视频在线观看网站| 久久精品网址| 久久国产精品99精品国产 | 国产乱一区二区| 日韩欧美一卡二卡| 欧美a级片网站| 一区二区三区四区不卡视频| 久久久久久色| 激情综合五月天| 久久久久久电影| 国产综合精品| 亚洲国产成人va在线观看天堂| 欧美色倩网站大全免费| 成人免费毛片a| 日本一区二区三区免费乱视频| 影院欧美亚洲| 五月激情综合色| 欧美一区三区二区| 国产精品成人观看视频免费| 亚洲成人自拍偷拍| 69堂国产成人免费视频| 欧美在线高清| 一二三四区精品视频| 欧美伊人精品成人久久综合97| 成人涩涩免费视频| 亚洲国产精品v| 久久免费一区| 成人永久免费视频| 一区二区中文字幕在线| 色婷婷精品久久二区二区蜜臀av| 国产成人免费9x9x人网站视频| 国产欧美日韩视频一区二区| 国产日韩欧美三区| 国精产品一区一区三区mba桃花 | 日韩经典一区二区| 欧美一级黄色大片| 亚洲国产免费看| 精油按摩中文字幕久久| 日本一区二区三区高清不卡| 久久视频一区| av一本久道久久综合久久鬼色| 一区二区三区欧美视频| 91精品国产一区二区| 精品不卡一区| 久久成人av少妇免费| 国产清纯白嫩初高生在线观看91 | 欧美午夜不卡| 老司机午夜精品99久久| 久久网站热最新地址| 亚洲一区二区三区四区五区午夜| 国产成人欧美日韩在线电影 | 久久国产成人午夜av影院| 国产欧美精品一区二区色综合朱莉| 在线亚洲伦理| 成人综合婷婷国产精品久久 | 亚洲制服丝袜在线| 欧美不卡一区二区三区| 亚洲一区二区三区免费在线观看| 国产成人精品亚洲777人妖| 亚洲精品视频自拍| 欧美一区二区福利视频| 一本综合精品| 成人av电影观看| 午夜精彩视频在线观看不卡| 国产亚洲精久久久久久| 色婷婷国产精品综合在线观看| 91麻豆精品视频| 蜜桃91丨九色丨蝌蚪91桃色| 国产亚洲精久久久久久| 91成人国产精品| 亚洲午夜激情在线| 成人综合婷婷国产精品久久 | 欧美亚洲一区二区在线观看| 欧美日韩亚洲一区在线观看| 久久精品99国产精品日本| 国产精品电影一区二区| 7777精品伊人久久久大香线蕉| 国产亚洲欧美一区二区| 91在线国产福利| 久久国内精品自在自线400部| 自拍偷自拍亚洲精品播放| 欧美一级二级在线观看| 美女视频一区免费观看| 国产精品videossex久久发布| 国产精品91一区二区| 同产精品九九九| 国产精品国产精品国产专区不蜜| 91精品国产手机| 在线观看一区日韩| 亚洲欧洲精品一区二区三区波多野1战4| 国产成人精品三级麻豆| 日产国产高清一区二区三区 | 欧美性猛交xxxx黑人交| 亚洲福利久久| 波多野结衣亚洲| 国内一区二区视频| 五月天亚洲婷婷| 亚洲免费在线电影| 久久久美女毛片| 7777精品伊人久久久大香线蕉的| 新狼窝色av性久久久久久| 欧美日韩精品免费观看 | 中文字幕一区二区三区乱码在线| 日韩一区二区电影网| 在线亚洲免费视频| 99精品欧美一区二区三区| 欧美日韩一区二区视频在线| av在线不卡电影| 国产成人综合在线| 久久国产精品99精品国产| 视频一区在线视频| 亚洲自拍偷拍欧美| 最新欧美精品一区二区三区| 国产日韩欧美不卡在线| 精品国产露脸精彩对白| 51午夜精品国产| 欧美丝袜丝nylons| 日本黄色一区二区| 久久久蜜桃一区二区人| 国产日韩亚洲欧美精品| 激情综合亚洲| 国产在线一区二区三区四区 | 国产精品啊啊啊| 91在线观看高清| 成人黄色在线视频| 丰满白嫩尤物一区二区| 国产一区二区日韩精品| 精品一区二区三区免费| 日本少妇一区二区| 丝瓜av网站精品一区二区 | 国产午夜精品一区二区三区欧美| 国语精品中文字幕| 国产中文一区| 亚洲视频一区| 黄色亚洲免费| 影音先锋日韩资源| 最新亚洲一区| 国产精品久久一区二区三区| 国产日韩在线一区二区三区| 国产欧美综合一区二区三区| 一区二区三区免费看| 国产精品日韩久久久| 国产一区成人| 美日韩精品免费| 一本大道久久a久久精二百| 色中色一区二区| 欧美在线观看视频一区二区三区| 欧洲一区二区av| 欧美区一区二区三区| 欧美一区二区三区的| 这里是久久伊人| 日韩欧美电影在线| 久久午夜电影网|