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

Spring Cloud Eureka 架構(gòu)原理及集群搭建,實(shí)戰(zhàn)講解!

開發(fā) 前端
雖然之后 Netflix 對(duì)其停止維護(hù)了,以至于 Spring Cloud 官方不建議大家在新的項(xiàng)目中優(yōu)先使用,但是 Eureka 作為初代的服務(wù)注冊(cè)中心,但是其基本思想和原理對(duì)于后來的服務(wù)注冊(cè)中心發(fā)展有著深遠(yuǎn)的影響。

一、背景介紹

在之前的文章中,我們介紹了 Spring Cloud 相關(guān)的技術(shù)體系,相信大家對(duì)微服務(wù)已經(jīng)有了初步的認(rèn)識(shí)。如果做過微服務(wù)架構(gòu)相關(guān)的項(xiàng)目,會(huì)發(fā)現(xiàn)服務(wù)注冊(cè)中心、服務(wù)負(fù)載均衡和服務(wù)遠(yuǎn)程調(diào)用這三個(gè)組件,可以說是核心中的核心,整個(gè)微服務(wù)之間的互調(diào)工作都必須通過這幾個(gè)組件來完成。

其中服務(wù)注冊(cè)中心,主要專注于對(duì)整個(gè)微服務(wù)系統(tǒng)的服務(wù)注冊(cè)、發(fā)現(xiàn)、負(fù)載、降級(jí)、以及對(duì)服務(wù)健康狀態(tài)的監(jiān)控和管理功能等。

今天通過這篇文章,我們一起來了解一下 Spring Cloud 技術(shù)體系中最核心的組件之一 Eureka。

Eureka 是 Netflix 開源的一款提供服務(wù)注冊(cè)和發(fā)現(xiàn)的框架,它允許服務(wù)實(shí)例進(jìn)行自我注冊(cè)和發(fā)現(xiàn),從而實(shí)現(xiàn)服務(wù)的負(fù)載均衡和故障轉(zhuǎn)移。

在 Spring Cloud 的服務(wù)治理下,開發(fā)者只需通過簡(jiǎn)單的注解配置,即可快速完成具有高可用的服務(wù)注冊(cè)中心。

盡管 Netflix 之后對(duì) Eureka 不再維護(hù)了,但是它基本思想和原理對(duì)于后來的服務(wù)注冊(cè)中心發(fā)展有著深遠(yuǎn)的影響,例如阿里開源的 Nacos,能隱約看到其身影。

二、架構(gòu)演變介紹

沒有服務(wù)注冊(cè)中心之前,當(dāng)一個(gè)項(xiàng)目調(diào)用另一個(gè)項(xiàng)目接口時(shí),通常調(diào)用流程類似于如下圖。

圖片圖片

當(dāng)有了服務(wù)注冊(cè)中心之后,任何一個(gè)項(xiàng)目都不能直接去調(diào)用,都需要通過服務(wù)中心來完成,調(diào)用流程會(huì)變成如下圖。

圖片圖片

可以看到,中間插入“服務(wù)中心”之后,雖然多了一個(gè)模塊,流程變得有些復(fù)雜,但是整個(gè)調(diào)用流程變得更加靈活了。尤其是在集群環(huán)境下,“服務(wù)中心”的優(yōu)勢(shì)非常明顯。

在單體架構(gòu)環(huán)境下,項(xiàng)目 A 遠(yuǎn)程調(diào)用項(xiàng)目 B 的接口,通常的做法是將接口地址 (例如http://192.168.1.1:8080/a) 寫在配置文件中,當(dāng)項(xiàng)目 B 換了服務(wù)器或者端口發(fā)生了變化,就需要手動(dòng)同步更新配置文件,十分麻煩。更重要的是,對(duì)于要求高可用的項(xiàng)目來說,通常都是集群部署,項(xiàng)目 B 會(huì)部署在多臺(tái)服務(wù)器上,需要人工進(jìn)行配置的工作量巨大。

在微服務(wù)架構(gòu)環(huán)境下,項(xiàng)目 A 和項(xiàng)目 B 在服務(wù)啟動(dòng)后,會(huì)主動(dòng)將服務(wù)實(shí)例里面的接口地址、主機(jī) IP 和端口等信息推送到“服務(wù)中心”,這個(gè)過程我們稱之為服務(wù)注冊(cè);當(dāng)項(xiàng)目 A 準(zhǔn)備向項(xiàng)目 B 發(fā)起遠(yuǎn)程調(diào)用時(shí),會(huì)先從“服務(wù)中心”拉取相關(guān)注冊(cè)表信息,這個(gè)過程可以稱之為服務(wù)發(fā)現(xiàn);如果找到有效的目標(biāo)地址,最后再發(fā)起遠(yuǎn)程調(diào)用。

整個(gè)過程,項(xiàng)目 A 無需關(guān)心項(xiàng)目 B 所在的主機(jī) IP 和端口信息,也不需要寫死在配置文件中,當(dāng)項(xiàng)目 B 部署在多臺(tái)服務(wù)器上,項(xiàng)目 A 在發(fā)起調(diào)用之前,只需要抽取其中一個(gè)有效的服務(wù)發(fā)起遠(yuǎn)程調(diào)用即可,無需人工干預(yù),極大的減輕了運(yùn)維的工作量。

可以看得出,“服務(wù)中心”的引入,相比單體架構(gòu)而已,雖然交互變得復(fù)雜了一點(diǎn),但是帶來的好處也是明顯的,開發(fā)者只需通過較少的運(yùn)維工作,就可以實(shí)現(xiàn)服務(wù)高可用的效果。

下面我們一起來看看,如何利用 Eureka 搭建一套高可用的服務(wù)注冊(cè)中心。

三、方案實(shí)踐

在 Spring Cloud 生態(tài)中,Eureka 采用了 C-S 的架構(gòu)設(shè)計(jì),由 Eureka server 和 Eureka client 兩個(gè)組件組成。Eureka  server,通常用來做服務(wù)中心,提供服務(wù)的注冊(cè)與發(fā)現(xiàn)功能;Eureka  client,用于與服務(wù)中心進(jìn)行交互,同時(shí)作為輪詢負(fù)載均衡器,并提供服務(wù)的故障切換支持。

它們之間的關(guān)系嗎,可以用如下圖來描述。

圖片圖片

在應(yīng)用啟動(dòng)后,Eureka  client 每隔一個(gè)時(shí)間段會(huì)向 Eureka server 發(fā)送心跳(默認(rèn) 30s),如果 Eureka server 在多個(gè)心跳周期沒有接受到某個(gè)節(jié)點(diǎn)的心跳,Eureka server 認(rèn)為這個(gè)節(jié)點(diǎn)已經(jīng)掛掉,會(huì)將其從服務(wù)注冊(cè)表中將這個(gè)服務(wù)節(jié)點(diǎn)移除掉。

從上圖可以看到,在 Eureka 架構(gòu)中,有 3 個(gè)重要的角色,分別是:

  • Eureka Server:服務(wù)注冊(cè)中心,負(fù)責(zé)提供服務(wù)注冊(cè)和發(fā)現(xiàn)功能
  • Service Provider:服務(wù)提供方,會(huì)將自身服務(wù)注冊(cè)到 Eureka,以便服務(wù)消費(fèi)方能夠找到
  • Service Consumer:服務(wù)消費(fèi)方,會(huì)從 Eureka 服務(wù)中心獲取服務(wù)注冊(cè)列表,以便能夠消費(fèi)服務(wù)

下面我們通過一個(gè)簡(jiǎn)單的項(xiàng)目案例,來體驗(yàn)一下這三個(gè)角色的關(guān)系。

3.1、創(chuàng)建服務(wù)注冊(cè)中心

首先,創(chuàng)建一個(gè) Spring Boot 工程,命名為eureka-server,并在pom.xml中引入相關(guān)的依賴內(nèi)容,示例如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

接著,創(chuàng)建一個(gè)服務(wù)啟動(dòng)類并添加@EnableEurekaServer注解,表示當(dāng)前是一個(gè) Eureka 服務(wù)注冊(cè)中心。

@EnableEurekaServer
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

默認(rèn)情況下,服務(wù)注冊(cè)中心也會(huì)將自己作為客戶端來注冊(cè)它自己,因此我們需要禁用它的客戶端注冊(cè)行為。

只需要在application.properties配置文件中,添加如下信息即可。

spring.application.name=eureka-server
server.port=8001

# 表示當(dāng)前 eureka 實(shí)例主機(jī)名稱,不配置的話默認(rèn)為當(dāng)前電腦名稱
eureka.instance.hostname=localhost
# 表示是否將自己注冊(cè)到Eureka Server,默認(rèn)為true
eureka.client.register-with-eureka=false
# 表示是否從Eureka Server獲取注冊(cè)信息,默認(rèn)為true
eureka.client.fetch-registry=false

啟動(dòng)服務(wù)之后,訪問http://localhost:8001/,可以看到下面的頁面,沒有發(fā)現(xiàn)任何服務(wù),這是因?yàn)檫€沒有客戶端注冊(cè)。

圖片圖片

3.2、創(chuàng)建服務(wù)提供方

與上文類似,首先創(chuàng)建一個(gè) Spring Boot 工程,命名為eureka-provider,并在pom.xml中引入相關(guān)的依賴內(nèi)容,示例如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

接著,創(chuàng)建一個(gè)服務(wù)啟動(dòng)類并添加@EnableDiscoveryClient注解,表示當(dāng)前是一個(gè) Eureka 客戶端服務(wù)。

@EnableEurekaServer
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

然后,創(chuàng)建一個(gè) web 接口,以便等會(huì)發(fā)起 RPC 調(diào)用測(cè)試,可以通過DiscoveryClient接口從服務(wù)中心查詢所有注冊(cè)的服務(wù)實(shí)例。

@RestController
publicclass HelloController {

    @Autowired
    private DiscoveryClient discoveryClient;


    /**
     * 從服務(wù)中心查詢注冊(cè)的服務(wù)
     * @return
     */
    @GetMapping("/dc")
    public String dc() {
        String services = "Services: " + discoveryClient.getServices();
        System.out.println(services);
        return services;
    }

    @GetMapping("/hello")
    public String index() {
        System.out.println("收到客戶端發(fā)起的rpc請(qǐng)求!");
        return"hello,我是服務(wù)提供方";
    }
}

最后,還需要在application.properties配置文件中,添加服務(wù)注冊(cè)中心地址,示例如下:

spring.application.name=eureka-provider
server.port=9001

# 設(shè)置與Eureka Server交互的地址,多個(gè)地址可使用【,】分隔
eureka.client.serviceUrl.defaultZnotallow=http://localhost:8001/eureka/

啟動(dòng)服務(wù)之后,再次訪問http://localhost:8001/,可以看到下面的頁面,eureka-provider成功注冊(cè)到服務(wù)中心。

圖片圖片

其次,也可以直接訪問http://localhost:9001/dc,查詢當(dāng)前服務(wù)中心注冊(cè)的服務(wù),可以得到類似于如下內(nèi)容。

Services: [eureka-provider]

3.3、創(chuàng)建服務(wù)消費(fèi)方

同理,創(chuàng)建一個(gè) Spring Boot 工程,命名為eureka-consumer。由于服務(wù)提供方和服務(wù)消費(fèi)方,都屬于 Eureka 客戶端服務(wù),其pom.xml所需要的依賴內(nèi)容和服務(wù)啟動(dòng)配置完全一致,在此就不重復(fù)粘貼了。

接著,編寫一個(gè)配置類,因?yàn)樾枰l(fā)起遠(yuǎn)程調(diào)用,我們可以利用RestTemplate工具發(fā)起 HTTP 請(qǐng)求。

@Configuration
public class WebConfig {

    /**
     * 初始化一個(gè) RestTemplate 工具
     * @return
     */
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

在 Spring Cloud Commons 中提供了大量的與服務(wù)治理相關(guān)的抽象接口,例如上文介紹的DiscoveryClient,還有下文要使用的LoadBalancerClient。

LoadBalancerClient是一個(gè)負(fù)載均衡客戶端接口,我們可以利用它從服務(wù)注冊(cè)中心獲取有效的服務(wù)實(shí)例,然后發(fā)起遠(yuǎn)程調(diào)用,示例如下:

@RestController
publicclass HelloController {

    @Autowired
    private DiscoveryClient discoveryClient;

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @Autowired
    private RestTemplate restTemplate;


    /**
     * 從服務(wù)中心查詢注冊(cè)的服務(wù)
     * @return
     */
    @GetMapping("/dc")
    public String dc() {
        String services = "Services: " + discoveryClient.getServices();
        System.out.println(services);
        return services;
    }

    /**
     * 發(fā)起遠(yuǎn)程調(diào)用測(cè)試
     * @return
     */
    @GetMapping("/rpc")
    public String rpc() {
        // 從服務(wù)提供方中選擇一個(gè)有效的服務(wù)實(shí)例
        ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-provider");
        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/hello";
        System.out.println("遠(yuǎn)程調(diào)用地址:" + url);
        // 通過 http 方式發(fā)起遠(yuǎn)程調(diào)用
        String result = restTemplate.getForObject(url, String.class);
        return"發(fā)起遠(yuǎn)程調(diào)用,收到返回的信息:" +  result;
    }
}

最后,在application.properties配置文件中添加相關(guān)的配置信息。

spring.application.name=eureka-consumer
server.port=9002

eureka.client.serviceUrl.defaultZnotallow=http://localhost:8001/eureka/

將服務(wù)注冊(cè)中心、服務(wù)提供方、服務(wù)消費(fèi)方依次啟動(dòng)起來,然后訪問http://localhost:9002/rpc,可以得到類似于如下內(nèi)容。

發(fā)起遠(yuǎn)程調(diào)用,收到返回的信息:hello,我是服務(wù)提供方

可以清晰的看到,服務(wù)消費(fèi)方成功的遠(yuǎn)程調(diào)用了服務(wù)提供方的接口,并收到返回結(jié)果。

四、集群配置

服務(wù)注冊(cè)中心是一個(gè)特別關(guān)鍵的服務(wù),如果是單節(jié)點(diǎn),一旦掛了,整個(gè)微服務(wù)就無法使用了。對(duì)于生產(chǎn)環(huán)境,通常都是通過集群方式來完成部署。

實(shí)際上,Eureka 可以通過互相注冊(cè)的方式來實(shí)現(xiàn)高可用的部署,因此我們只需要將 Eureke Server 配置其他可用的 serviceUrl 就能實(shí)現(xiàn)高可用部署。

對(duì)于雙節(jié)點(diǎn)服務(wù)注冊(cè)中心,可實(shí)現(xiàn)的思路如下!

4.1、雙節(jié)點(diǎn)服務(wù)注冊(cè)中心配置

1)創(chuàng)建application-eureka1.properties配置文件,作為eureka1服務(wù)中心的配置,并將serviceUrl指向eureka2,內(nèi)容如下:

spring.application.name=eureka-server
server.port=8001

eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZnotallow=http://eureka2:8002/eureka/

2)創(chuàng)建application-eureka2.properties配置文件,作為eureka2服務(wù)中心的配置,并將serviceUrl指向eureka1,內(nèi)容如下:

spring.application.name=eureka-server
server.port=8002

eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZnotallow=http://eureka1:8001/eureka/

3)在本地 hosts 文件做了一個(gè)假域名映射,用來配置區(qū)分不同的 Eureka Server 地址。

127.0.0.1 eureka1
127.0.0.1 eureka2

4)將服務(wù)注冊(cè)到 eureka 集群

spring.application.name=eureka-consumer
server.port=9002

eureka.client.serviceUrl.defaultZnotallow=http://eureka1:8001/eureka/,http://eureka2:8002/eureka/

5)將服務(wù)進(jìn)行打包,然后啟動(dòng)

#打包
mvn clean package

# 分別以 eureka1 和 eureka2 配置信息啟動(dòng) eureka
java -jar eureka-server.jar --spring.profiles.active=eureka1
java -jar eureka-server.jar --spring.profiles.active=eureka2

依次啟動(dòng)服務(wù)后,訪問http://localhost:8001/,可以得到類似于如下內(nèi)容。

圖片圖片

其中eureka2表示備用節(jié)點(diǎn),將其中一個(gè)節(jié)點(diǎn)停掉,服務(wù)依然可以正常運(yùn)行。

4.2、eureka 集群配置

在生產(chǎn)環(huán)境,通常會(huì)配置三臺(tái)及以上的服務(wù)注冊(cè)中心,以此來保證服務(wù)的穩(wěn)定性,配置原理也類似,將當(dāng)前服務(wù)注冊(cè)中心分別指向其它的服務(wù)注冊(cè)中心。

配置文件案例如下:

# 第一個(gè)配置文件
spring.application.name=eureka-server
server.port=8001
eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZnotallow=http://eureka2:8002/eureka/,http://eureka3:8003/eureka/

# 第二個(gè)配置文件
spring.application.name=eureka-server
server.port=8002
eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZnotallow=http://eureka1:8001/eureka/,http://eureka3:8003/eureka/

# 第三個(gè)配置文件
spring.application.name=eureka-server
server.port=8003
eureka.instance.hostname=eureka3
eureka.client.serviceUrl.defaultZnotallow=http://eureka1:8001/eureka/,http://eureka2:8002/eureka/

五、小結(jié)

最后總結(jié)一下,Eureka 是 Spring Cloud 體系中最重要的組件之一,主要用于服務(wù)的注冊(cè)和發(fā)現(xiàn)管理。

雖然之后 Netflix 對(duì)其停止維護(hù)了,以至于 Spring Cloud 官方不建議大家在新的項(xiàng)目中優(yōu)先使用,但是 Eureka 作為初代的服務(wù)注冊(cè)中心,但是其基本思想和原理對(duì)于后來的服務(wù)注冊(cè)中心發(fā)展有著深遠(yuǎn)的影響。

對(duì)于了解和學(xué)習(xí)  Spring Cloud 技術(shù)體系,Eureka 依然是必不可少的一站。

六、參考

1.http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html

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

2025-03-07 08:57:46

HTTP客戶端框架

2020-04-21 22:59:50

Redis搭建選舉

2017-06-25 13:33:25

Spring Clou微服務(wù)架構(gòu)

2018-07-13 09:55:35

Eureka閉源Spring Clou

2024-07-10 10:51:39

SpringEureka數(shù)據(jù)中心

2017-07-03 08:29:42

Spring Clou服務(wù)詳解

2024-01-09 11:38:12

2025-03-13 00:55:00

微服務(wù)架構(gòu)系統(tǒng)

2017-08-18 15:14:04

Spring Clou服務(wù)消費(fèi)者

2017-07-11 14:48:33

Spring Clou服務(wù)提供者

2018-10-30 09:38:55

Redis集群實(shí)現(xiàn)

2025-10-30 07:45:06

2021-04-19 08:52:58

Hadoop集群搭建Python

2018-05-17 16:45:29

Java購物車京東

2024-04-03 08:08:15

謂詞網(wǎng)關(guān)開發(fā)

2018-03-13 16:42:26

分布式服務(wù)跟蹤

2019-09-16 16:05:13

Redis集群模式

2018-04-16 14:56:56

微服務(wù)架構(gòu)分布式服務(wù)

2023-02-20 10:13:00

灰度發(fā)布實(shí)現(xiàn)

2025-06-09 01:01:00

點(diǎn)贊
收藏

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

欧美极度另类| 韩国av免费在线| 91精品啪在线观看国产18| 欧美美女一区二区| 8x8ⅹ国产精品一区二区二区| 亚洲欧美激情在线观看| 亚洲欧美日韩精品一区二区| 一区二区亚洲精品国产| 久久无码人妻一区二区三区| 国产精选在线| 中文字幕高清一区| 国产成人成网站在线播放青青| 日韩精品乱码久久久久久| 精品盗摄女厕tp美女嘘嘘| 69成人精品免费视频| 波多野结衣之无限发射| 亚洲麻豆精品| av影院午夜一区| 国产欧美精品日韩| 日韩精品在线不卡| 婷婷综合在线| 亚洲性生活视频| 香蕉视频污视频| 国产亚洲欧美日韩精品一区二区三区 | 中文字幕av一区二区三区高| 不卡视频一区二区| 伊人久久成人网| 亚洲美女黄色| 久久伊人色综合| 中文字幕有码在线播放| 国产精品22p| 3d成人h动漫网站入口| 日韩有码免费视频| av中文字幕在线观看第一页| 亚洲私人黄色宅男| 午夜欧美一区二区三区免费观看| 人妻丰满熟妇av无码区hd| 久久激五月天综合精品| 亲爱的老师9免费观看全集电视剧| 私库av在线播放| 欧美日韩一区二区三区视频播放| 亚洲精品黄网在线观看| 精品久久久久久无码人妻| 欧美亚洲人成在线| 欧美在线观看视频一区二区| 欧美国产亚洲一区| segui88久久综合| 一区二区三区毛片| 一区二区三区四区五区视频| 国产黄色片在线观看| 99精品欧美一区二区三区小说| 3d动漫啪啪精品一区二区免费| 在线播放一级片| 日本aⅴ免费视频一区二区三区 | 电影一区电影二区| 91精品办公室少妇高潮对白| 成人观看免费完整观看| 中文字幕资源网在线观看免费| 第一福利永久视频精品 | 黄色漫画在线免费看| 亚洲国产综合色| 久久这里只有精品18| 欧美videossex| 亚洲一区二区三区美女| 免费高清一区二区三区| av中文字幕在线看| 精品美女永久免费视频| 日韩欧美国产免费| 欧美大胆性生话| 欧美性高清videossexo| 色乱码一区二区三区在线| 未满十八勿进黄网站一区不卡| 欧美四级电影网| 在线观看免费不卡av| 自拍偷拍亚洲| 精品国产一区二区三区不卡| 蜜臀av粉嫩av懂色av| 亚洲桃色综合影院| 中文字幕视频一区二区在线有码| 香蕉成人在线视频| 欧美日韩国产亚洲一区| 国语自产精品视频在线看抢先版图片| 欧美一级视频免费观看| 久久精品1区| 国产美女主播一区| 亚洲国产精品二区| 久久色.com| 中文字幕av日韩精品| 人妖欧美1区| 一本大道综合伊人精品热热| 在线观看免费av网址| 日韩精品一级| 亚洲精品中文字幕有码专区| 国产视频精品免费| 狠狠爱成人网| 国产v综合ⅴ日韩v欧美大片 | 天天操天天操天天操天天操天天操| 欧美久色视频| 国产精品白嫩美女在线观看 | 亚洲欧美国内爽妇网| 美国美女黄色片| 国产精品xvideos88| 国产mv免费观看入口亚洲| 国产精品一级二级| 26uuu国产在线精品一区二区| 一区二区三区视频在线播放| 国产一线二线在线观看| 欧洲精品视频在线观看| 男人添女人荫蒂国产| 欧美精品色图| 性欧美在线看片a免费观看| 中文字幕日韩经典| 9l国产精品久久久久麻豆| 亚洲欧洲一区二区在线观看| 8x8ⅹ拨牐拨牐拨牐在线观看| 欧美日韩一区三区| 人妻无码中文久久久久专区| 三上悠亚在线一区二区| 久久久久这里只有精品| 欧美三级韩国三级日本三斤在线观看 | 久久久久国产一区二区| 欧美中文在线字幕| 国产精品无码在线播放| 国产亚洲精品中文字幕| 青草视频在线观看视频| 999精品嫩草久久久久久99| 亚洲精选在线观看| 国产一级片免费看| 久久精品国产一区二区| 免费亚洲精品视频| а_天堂中文在线| 欧美一区二区三区系列电影| 女人十八毛片嫩草av| 国产毛片久久| 国产精品成人观看视频免费| 黄网站免费在线播放| 欧洲国内综合视频| www在线观看免费视频| 亚洲电影成人| 91福利视频导航| 成人在线免费看黄| 欧美久久久久久久久中文字幕| 亚洲区免费视频| 亚洲欧美视频| 久久青青草综合| 深夜福利视频一区二区| 欧美成人一区二区三区片免费 | 国产99视频精品免视看7| 亚洲av成人无码久久精品老人| 亚洲午夜久久久久中文字幕久| 亚洲精品mv在线观看| 99久久精品网| 成人免费视频网| 美女av在线播放| 91精品国产91久久久久久最新毛片| 亚洲AV成人无码网站天堂久久| 麻豆精品国产91久久久久久| 亚洲欧美丝袜| 综合久久av| 欧美精品一本久久男人的天堂| 国产熟女一区二区丰满| 亚洲精品你懂的| 欧美xxxxxbbbbb| 欧美91视频| 国产精品有限公司| 国产理论在线| 亚洲欧美日韩图片| 亚洲欧美日韩一区二区三区四区| 欧美激情一区二区在线| 在线免费观看av的网站| 91欧美在线| 99精彩视频在线观看免费| 国产美女情趣调教h一区二区| 亚洲电影在线观看| 日韩欧美成人一区二区三区| 久久久.com| 日韩成人av免费| 激情综合在线| 欧美日韩综合网| 9999精品免费视频| 久久久久国产精品免费| 手机看片一区二区三区| 91成人在线精品| 三级黄色录像视频| 成人性生交大合| 日本男人操女人| 一区二区三区网站| 狠狠色综合一区二区| 欧美三区四区| 久久国产精品免费视频| 日本xxxxxwwwww| 欧美视频你懂的| 久久机热这里只有精品| 久久精品在线观看| 四虎国产精品永久免费观看视频| 亚洲激情黄色| 亚洲欧美日韩不卡一区二区三区| 成人三级毛片| 国产精品亚洲片夜色在线| 欧美男男video| 中文字幕日韩高清| 少妇荡乳情欲办公室456视频| 欧美亚一区二区| 不卡的免费av| 亚洲欧洲日韩在线| 亚洲欧美日本一区| 久久66热偷产精品| av天堂永久资源网| 欧美黄免费看| 亚洲精品中文综合第一页| 国产劲爆久久| 成人亚洲激情网| 亚洲一区二区三区四区| 欧美激情xxxx性bbbb| 超碰免费在线| 亚洲精品国产综合久久| 国产视频一区二区三| 欧美综合在线视频| 日韩精品乱码久久久久久| 亚洲欧美色一区| 亚洲毛片亚洲毛片亚洲毛片| 9i在线看片成人免费| 欧美国产在线一区| 蜜臀精品一区二区三区在线观看 | 欧美黄色一区二区三区| 国产欧美精品一区| 99久久国产精| 北条麻妃一区二区三区| 亚欧精品在线视频| 精品夜夜嗨av一区二区三区| 麻豆传传媒久久久爱| 最新亚洲一区| 日本黄色片一级片| 最新国产精品久久久| 亚洲制服中文| 成人系列视频| 亚洲国内在线| 91久久夜色精品国产按摩| 日韩三级电影| 精品国产中文字幕第一页| 国产综合18久久久久久| 51精品国产| 粉嫩精品一区二区三区在线观看 | 国产高清中文字幕在线| 欧美国产日韩在线| 深夜国产在线播放| 久久99国产综合精品女同| 成人av福利| 欧美乱大交做爰xxxⅹ性3| 国产在线高清视频| 操人视频在线观看欧美| a天堂中文在线官网在线| 日韩视频亚洲视频| 国产网站在线免费观看| 久久久av一区| 日本天码aⅴ片在线电影网站| 久久电影一区二区| www免费视频观看在线| 大胆人体色综合| 里番在线播放| 98精品在线视频| 制服丝袜专区在线| 国产成人极品视频| 99蜜月精品久久91| 国产在线视频一区| 麻豆视频久久| 国产日韩精品推荐| 在线观看欧美理论a影院| 日韩国产在线一区| 偷偷www综合久久久久久久| 老司机激情视频| 一区二区三区成人精品| 国产精品免费观看久久| 日韩电影在线观看一区| 小泽玛利亚视频在线观看| 国产一区三区三区| 私密视频在线观看| 欧美国产亚洲另类动漫| 91精品少妇一区二区三区蜜桃臀| 一区二区在线观看av| 青青国产在线观看| 色婷婷一区二区| 国产老女人乱淫免费| 精品国精品自拍自在线| 男女视频在线观看免费| 中文字幕成人在线| 影音先锋男人在线资源| 97欧美精品一区二区三区| 亚洲精品.com| 亚洲最大福利视频| 偷拍亚洲精品| 中文字幕在线亚洲精品| 在线成人www免费观看视频| 国产一区视频免费观看| 理论片日本一区| 污污污www精品国产网站| 国产欧美一区二区三区网站| 青青操视频在线播放| 色婷婷狠狠综合| 99精品免费观看| 亚洲欧美在线看| 污片在线免费观看| 国产成人久久久| 51精品国产| 一区二区三区四区五区精品| 亚洲综合不卡| wwwww在线观看| 欧美国产一区二区| 日韩成人高清视频| 欧美一区二区日韩| 国产大片在线免费观看| 久久久久中文字幕| 精品一级视频| 亚洲日本一区二区三区在线不卡 | 97人人爽人人喊人人模波多| 福利精品一区| 免费av在线一区二区| 中文字幕人成人乱码| 美女黄色片视频| 成人av在线网站| 九九热最新地址| 欧美揉bbbbb揉bbbbb| 亚洲欧美丝袜中文综合| 欧美另类69精品久久久久9999| 欧美日一区二区三区| 精品在线不卡| 在线观看一区视频| 人妻换人妻仑乱| 亚洲日本青草视频在线怡红院| 亚洲永久精品一区| 日韩精品免费一线在线观看| 青青在线视频| av一区观看| 欧美成人亚洲| 被黑人猛躁10次高潮视频| 国产精品女主播在线观看| 高潮毛片又色又爽免费| 亚洲精品ady| www.超碰在线| 国内精品久久国产| 999在线观看精品免费不卡网站| 95视频在线观看| 亚洲在线视频一区| 精品人妻无码一区二区| 欧美成人第一页| 精品久久国产一区| 国产一区一区三区| 国产在线观看免费一区| 黄色录像二级片| 欧美一区二区三区小说| 最爽无遮挡行房视频在线| 91视频国产高清| 欧美成人首页| 污网站免费观看| 欧美日韩国产黄| 色视频在线观看| 国产第一区电影| 日韩av久操| 久久精品视频在线观看免费| 亚洲视频在线一区| 国产欧美日韩成人| 欧美放荡办公室videos4k| 亚洲一区二区三区在线免费| 大西瓜av在线| 91免费观看在线| 久久这里只有精品9| 色小说视频一区| 国产精品白丝久久av网站| 国产一级大片免费看| 成人avav影音| 日韩免费av网站| 久久精品国产一区二区三区| 免费一级欧美在线大片| av免费观看大全| 国产日韩欧美综合在线| 一本色道久久综合精品婷婷| 美女国内精品自产拍在线播放| 国产精品毛片av| 国产精品亚洲二区在线观看| 国产精品久久777777| 亚洲第一成年人网站| 青青在线视频一区二区三区| 97久久视频| 成人区人妻精品一区二| 一本大道av伊人久久综合| 午夜视频在线免费观看| 国产98在线|日韩| 视频一区视频二区在线观看| 精品国产视频在线观看| 亚洲激情第一页| 亚洲精品777| 国产精品裸体瑜伽视频| 国产日韩精品视频一区| 国产av无码专区亚洲av| 欧美在线激情网| 亚洲影视一区二区三区| ass精品国模裸体欣赏pics| 欧美久久一二区| 老司机成人影院| 欧美一级中文字幕|