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

SpringColud Eureka的服務注冊與發現

開發 前端
在傳統應用中,組件之間的調用,通過有規范的約束的接口來實現,從而實現不同模塊間良好的協作。但是被拆分成微服務后,每個微服務實例的網絡地址都可能動態變化,數量也會變化,使得原來硬編碼的地址失去了作用。

[[394471]]

一、Eureka簡介

本文中所有代碼都會上傳到git上,請放心瀏覽項目git地址:https://github.com/839022478/Spring-Cloud

在傳統應用中,組件之間的調用,通過有規范的約束的接口來實現,從而實現不同模塊間良好的協作。但是被拆分成微服務后,每個微服務實例的網絡地址都可能動態變化,數量也會變化,使得原來硬編碼的地址失去了作用。需要一個中心化的組件來進行服務的登記和管理,為了解決上面的問題,于是出現了服務治理,就是管理所有的服務信息和狀態,也就是我們所說的注冊中心

1.1 注冊中心

  • 比如我們去做火車或者汽車,需要去買票乘車,只看我們有沒有票(有沒有服務),有就去買票(獲取注冊列表),然后乘車(調用),不用關心到底有多少車在運行

流程圖:

使用注冊中心,我們不需要關心有多少提供方,只管去調用就可以了,那么注冊中心有哪些呢?

注冊中心:Eureka,Nacos,Consul,Zookeeper

本文中講解的是比較火熱的Spring Cloud微服務下的Eureka,Eureka是Netflix開發的服務發現框架,是一個RESTful風格的服務,是一個用于服務發現和注冊的基礎組件,是搭建Spring Cloud微服務的前提之一,它屏蔽了Server和client的交互細節,使得開發者將精力放到業務上。

服務注冊與發現主要包括兩個部分:服務端(EurekaServer)和客戶端(EurekaClient)

服務端(Eureka Server): 一個公共服務,為Client提供服務注冊和發現的功能,維護注冊到自身的Client的相關信息,同時提供接口給Client獲取注冊表中其他服務的信息,使得動態變化的Client能夠進行服務間的相互調用。

客戶端(Eureka Client): Client將自己的服務信息通過一定的方式登記到Server上,并在正常范圍內維護自己信息一致性,方便其他服務發現自己,同時可以通過Server獲取到自己依賴的其他服務信息,完成服務調用,還內置了負載均衡器,用來進行基本的負載均衡

Eureka GIt官網:https://github.com/Netflix/Eureka

1.2 服務注冊與發現

服務注冊與發現關系圖:


1.3 client功能和server功能

1.3.1 client功能

  1. 注冊:每個微服務啟動時,將自己的網絡地址等信息注冊到注冊中心,注冊中心會存儲(內存中)這些信息。
  2. 獲取服務注冊表:服務消費者從注冊中心,查詢服務提供者的網絡地址,并使用該地址調用服務提供者,為了避免每次都查注冊表信息,所以client會定時去server拉取注冊表信息到緩存到client本地。
  3. 心跳:各個微服務與注冊中心通過某種機制(心跳)通信,若注冊中心長時間和服務間沒有通信,就會注銷該實例。
  4. 調用:實際的服務調用,通過注冊表,解析服務名和具體地址的對應關系,找到具體服務的地址,進行實際調用。

1.3.2 server注冊中心功能

  1. 服務注冊表:記錄各個微服務信息,例如服務名稱,ip,端口等。注冊表提供 查詢API(查詢可用的微服務實例)和管理API(用于服務的注冊和注銷)。
  2. 服務注冊與發現:注冊:將微服務信息注冊到注冊中心。發現:查詢可用微服務列表及其網絡地址。
  3. 服務檢查:定時檢測已注冊的服務,如發現某實例長時間無法訪問,就從注冊表中移除。

二、Eureka單節點搭建

2.1 pom.xml

在有的教程中,會引入 spring-boot-starter-web,這個依賴其實不用,因為 spring-cloud-starter-netflix-eureka-server的依賴已經包含了它,在pom依賴進去,就可以了

  1. <dependency> 
  2.   <groupId>org.springframework.cloud</groupId> 
  3.   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 
  4. </dependency> 

2.2 application.yml

  1. server: 
  2.   port: 8500 
  3. eureka: 
  4.   client: 
  5.     #是否將自己注冊到Eureka Server,默認為true,由于當前就是server,故而設置成false,表明該服務不會向eureka注冊自己的信息 
  6.     register-with-eureka: false 
  7.     #是否從eureka server獲取注冊信息,由于單節點,不需要同步其他節點數據,用false 
  8.     fetch-registry: false 
  9.     #設置服務注冊中心的URL,用于client和server端交流 
  10.     service-url: 
  11.       defaultZone: http://localhost:8080/eureka/ 

2.3 服務端啟動類

啟動類上添加此注解標識該服務為配置中心@EnableEurekaServer

  1. import org.springframework.boot.SpringApplication; 
  2. import org.springframework.boot.autoconfigure.SpringBootApplication; 
  3. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 
  4.  
  5. @EnableEurekaServer 
  6. @SpringBootApplication 
  7. public class EurekaServerApplication { 
  8.  
  9.     public static void main(String[] args) { 
  10.         SpringApplication.run(EurekaServerApplication.class, args); 
  11.     } 

2.4 啟動

我們啟動 EurekaDemoApplication,然后在瀏覽器中輸入地址 http://localhost:8500/,就可以啟動我們的 Eureka 了,我們來看下效果,出現了這個畫面,就說明我們已經成功啟動~,只是此時我們的服務中是還沒有客戶端進行注冊

三、服務注冊

注意:在客戶端pom里面我們需要加上 spring-boot-starter-web,否則服務是無法正常啟動的

3.1 pom.xml

  1. <dependency> 
  2.      <groupId>org.springframework.boot</groupId> 
  3.      <artifactId>spring-boot-starter-web</artifactId> 
  4.  </dependency> 
  5.  <dependency> 
  6.      <groupId>org.springframework.cloud</groupId> 
  7.      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
  8.  </dependency>    

3.2 application.yml

  1. #注冊中心 
  2. eureka: 
  3.   client: 
  4.     #設置服務注冊中心的URL 
  5.     service-url: 
  6.       defaultZone: http://localhost:8500/eureka/ 
  7.   #服務名 
  8.   instance: 
  9.     appname: mxn 

3.3 客戶端啟動類

在客戶端啟動類中我們需要加上 @EnableDiscoveryClient

  1. import org.springframework.boot.SpringApplication; 
  2. import org.springframework.boot.autoconfigure.SpringBootApplication; 
  3. import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 
  4.  
  5. @EnableDiscoveryClient 
  6. @SpringBootApplication 
  7. public class EurekaClientApplication { 
  8.  
  9.     public static void main(String[] args) { 
  10.         SpringApplication.run(EurekaClientApplication.class, args); 
  11.     } 

3.4 查看效果

工程啟動后,刷新 http://localhost:8500/頁面,我們可以發現服務注冊成功了

并且我們可以在idea日志打印中看到

  1. DiscoveryClient_MXN/DESKTOP-5BQ3UK8-registration status:204 

說明就是注冊成功了 Eureka Server與Eureka Client之間的聯系主要通過心跳的方式實現。心跳(Heartbeat)即Eureka Client定時向Eureka Server匯報本服務實例當前的狀態,維護本服務實例在注冊表中租約的有效性。

Eureka Client將定時從Eureka Server中拉取注冊表中的信息,并將這些信息緩存到本地,用于服務發現

四、Eureka 端點

官網地址:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations

Eureka服務器還提供了一個端點 (eureka/apps/{applicaitonName})可以查看所注冊的服務詳細信息 。applicaitonName就是微服務的名稱,比如這里我們訪問 http://localhost:8500/eureka/apps/mxn

五、Eureka 原理

5.1 本質

存儲了每個客戶端的注冊信息。EurekaClient從EurekaServer同步獲取服務注冊列表。通過一定的規則選擇一個服務進行調用

5.2 Eureka架構圖


  • 服務提供者: 是一個eureka client,向Eureka Server注冊和更新自己的信息,同時能從Eureka Server注冊表中獲取到其他服務的信息。
  • 服務注冊中心: 提供服務注冊和發現的功能。每個Eureka Cient向Eureka Server注冊自己的信息,也可以通過Eureka Server獲取到其他服務的信息達到發現和調用其他服務的目的。
  • 服務消費者: 是一個eureka client,通過Eureka Server獲取注冊到其上其他服務的信息,從而根據信息找到所需的服務發起遠程調用。
  • 同步復制: Eureka Server之間注冊表信息的同步復制,使Eureka Server集群中不同注冊表中服務實例信息保持一致。
  • 遠程調用: 服務客戶端之間的遠程調用。
  • 注冊: Client端向Server端注冊自身的元數據以供服務發現。
  • 續約: 通過發送心跳到Server以維持和更新注冊表中服務實例元數據的有效性。當在一定時長內,Server沒有收到Client的心跳信息,將默認服務下線,會把服務實例的信息從注冊表中刪除。
  • 下線: Client在關閉時主動向Server注銷服務實例元數據,這時Client的服務實例數據將從Server的注冊表中刪除。
  • 獲取注冊表: Client向Server請求注冊表信息,用于服務發現,從而發起服務間遠程調用。

5.3 Eureka自我保護

有時候我們會看到這樣的提示信息:

  1. 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 Server在一定時間內,沒有接收到某個微服務心跳,會將某個微服務注銷(90S)。但是當網絡故障時,微服務與Server之間無法正常通信,上述行為就非常危險,因為微服務正常,不應該注銷,它的指導思想就是 寧可保留健康的和不健康的,也不盲目注銷任何健康的服務我們也可以通過命令去關閉自我保護的功能:

  1. eureka: 
  2.   server:  
  3.     enable-self-preservation: false 

那么自我保護是如何觸發的呢?

  1. 自我保護機制的觸發條件是: 
  2. 當每分鐘心跳次數( renewsLastMin) 小于 numberOfRenewsPerMinThreshold時, 
  3. 并且開啟自動保護模式開關( eureka.server.enable-self-preservation=true) 時 
  4. 觸發自我保護機制,不再自動過期租約 上面我們所有的小于 numberOfRenewsPerMinThreshold,到底是怎么計算的呢, 
  5. 我們在eureka源碼中可以得知: 
  6. numberOfRenewsPerMinThreshold = expectedNumberOfRenewsPerMin * 續租百分比(默認為0.85) 
  7. expectedNumberOfRenewsPerMin  = 當前注冊的應用實例數 x 2 
  8. 當前注冊的應用實例數 x 2 是因為,在默認情況下,注冊的應用實例每半分鐘續租一次,那么一分鐘心跳兩次,因此 x 2 

例如:我們有10個服務,期望每分鐘續約數:10 * 2=20,期望閾值:20*0.85=17,當少于17時,就會觸發自我保護機制

5.4 健康檢查

由于server和client通過心跳保持 服務狀態,而只有狀態為UP的服務才能被訪問。看eureka界面中的status。

比如心跳一直正常,服務一直UP,但是此服務DB(數據庫)連不上了,無法正常提供服務。

此時,我們需要將 微服務的健康狀態也同步到server。只需要啟動eureka的健康檢查就行。這樣微服務就會將自己的健康狀態同步到eureka。配置如下即可。

在client端配置:將自己的健康狀態傳播到server。

  1. eureka: 
  2.   client: 
  3.     healthcheck: 
  4.       enabled: true 

5.5 Eureka監聽事件

  1. import com.netflix.appinfo.InstanceInfo; 
  2. import org.springframework.cloud.netflix.eureka.server.event.*; 
  3. import org.springframework.context.event.EventListener; 
  4. import org.springframework.stereotype.Component; 
  5.  
  6. import java.time.LocalDateTime; 
  7.  
  8. @Component 
  9. public class CustomEvent { 
  10.  
  11.     @EventListener 
  12.     public void listen(EurekaInstanceCanceledEvent event ) { 
  13.         System.out.println(LocalDateTime.now()+"服務下線事件:"+event.getAppName()+"---"+event.getServerId()); 
  14. //發釘釘 
  15.     } 
  16.  
  17.     @EventListener 
  18.     public void listen(EurekaInstanceRegisteredEvent event) { 
  19.         InstanceInfo instanceInfo = event.getInstanceInfo(); 
  20.         System.out.println(LocalDateTime.now()+"服務上線事件:"+instanceInfo.getAppName()+"---"+instanceInfo.getInstanceId()); 
  21.     } 
  22.  
  23.     @EventListener 
  24.     public void listen(EurekaInstanceRenewedEvent event) { 
  25.         System.out.println(LocalDateTime.now()+"服務續約/心跳上報事件:"+event.getAppName()+"---"+event.getServerId()); 
  26.  
  27.     } 
  28.  
  29.     @EventListener 
  30.     public void listen(EurekaRegistryAvailableEvent event) { 
  31.         System.out.println(LocalDateTime.now()+"注冊中心可用事件"); 
  32.     } 
  33.  
  34.     @EventListener 
  35.     public void listen(EurekaServerStartedEvent event) { 
  36.         System.out.println(LocalDateTime.now()+"注冊中心啟動事件"); 
  37.  
  38.     } 

5.6 Renew: 服務續約

Eureka Client 會每隔 30 秒發送一次心跳來續約。通過續約來告知 Eureka Server 該 Eureka Client 運行正常,沒有出現問題。默認情況下,如果 Eureka Server 在 90 秒內沒有收到 Eureka Client 的續約,Server 端會將實例從其注冊表中刪除,此時間可配置,一般情況不建議更改。

5.6 服務剔除

如果Eureka Client在注冊后,既沒有續約,也沒有下線(服務崩潰或者網絡異常等原因),那么服務的狀態就處于不可知的狀態,不能保證能夠從該服務實例中獲取到回饋,所以需要服務剔除此方法定時清理這些不穩定的服務,該方法會批量將注冊表中所有過期租約剔除,剔除是定時任務,默認60秒執行一次。延時60秒,間隔60秒

剔除的限制:1.自我保護期間不清除。2.分批次清除。

六、Eureka缺陷

由于集群間的同步復制是通過HTTP的方式進行,基于網絡的不可靠性,集群中的Eureka Server間的注冊表信息難免存在不同步的時間節點,不滿足CAP中的C(數據一致性)

七、總結

中間我們講解了eureka的節點搭建,以及原理,對于現在很火熱的微服務,我們對Eureka是非常有必要進行了解的。

 

責任編輯:姜華 來源: 牧小農
相關推薦

2017-06-25 13:33:25

Spring Clou微服務架構

2020-11-23 14:56:36

Eureka

2015-12-25 11:00:52

Zookeeper的Python

2023-11-27 00:55:43

Eureka服務

2022-04-26 05:36:42

服務治理模式

2023-11-29 16:21:30

Kubernetes服務注冊

2022-01-16 23:10:40

語言服務注冊

2025-03-31 08:35:00

Eureka微服務架構

2025-01-20 00:10:00

Go語言Kratos

2022-02-09 07:03:01

SpringNacos服務注冊

2022-02-07 07:10:32

服務注冊功能

2025-01-09 08:32:50

2019-08-23 10:34:05

微服務Eureka架構

2017-07-03 08:29:42

Spring Clou服務詳解

2020-06-29 07:58:18

ZooKeeperConsul 注冊中心

2022-06-17 12:05:25

微服務注冊

2021-04-18 07:33:20

項目Springboot Nacos

2022-03-07 17:43:30

注冊微服務架構

2022-07-17 06:54:51

Eureka架構

2023-05-26 07:25:46

微服務架構Dubbo
點贊
收藏

51CTO技術棧公眾號

久久免费在线观看视频| 日韩久久久久久久久久久| 天堂资源最新在线| 首页欧美精品中文字幕| 中文字幕欧美日韩在线| 国产又粗又长又爽又黄的视频| 一本色道久久综合熟妇| 亚州av乱码久久精品蜜桃| 欧美一区二区三区免费视频| 高清无码一区二区在线观看吞精| 国产精品suv一区| 欧美偷拍综合| 日韩欧美不卡一区| 精品99在线视频| 成年人视频在线观看免费| 国产一区二区在线电影| 91精品国产高清久久久久久| 91精品国自产在线| 99久久香蕉| 欧洲一区二区三区免费视频| 91精品国产毛片武则天| 暖暖视频在线免费观看| 国产一区二区福利| 国产成人精品综合久久久| 加勒比婷婷色综合久久| 神马久久一区二区三区| 日韩欧美国产不卡| 日本美女高潮视频| a'aaa级片在线观看| 国产精品免费视频一区| 久久精品综合一区| 亚洲AV无码精品国产| 日韩av成人高清| 欧美高清电影在线看| 人成免费在线视频| 青青草这里只有精品| 欧美一区二区三区日韩视频| 女人另类性混交zo| av漫画网站在线观看| 成人免费一区二区三区视频 | 亚洲成人免费视| 日韩精品久久久免费观看| 亚洲美女综合网| 蜜桃视频在线一区| 国产ts人妖一区二区三区| 国产真人真事毛片| 99久久久久久中文字幕一区| 亚洲美女视频网站| 色哟哟无码精品一区二区三区| 91老司机福利在线| 亚洲欧美国产高清| 亚洲一区综合| jizz日韩| 欧美国产一区在线| 日韩欧美手机在线| 黄色在线网站| 久久久午夜精品理论片中文字幕| 日韩美女写真福利在线观看| 久久精品国产亚洲av麻豆色欲| 欧美在线导航| 亚洲成人av片| 国模大尺度视频| 激情综合五月| 日韩西西人体444www| 青青草原播放器| 亚洲精品伊人| 91 com成人网| 中文字幕第三区| 婷婷视频一区二区三区| 欧美成人一区二区三区片免费| 日韩在线视频在线观看| 涩涩视频在线| 日韩欧美在线网址 | 性欧美欧美巨大69| 久久精品国产一区二区电影| 午夜三级在线观看| 我不卡影院28| 欧美成人免费视频| 精品处破女学生| 欧美日韩日本国产亚洲在线 | 成人一二三区| 一区二区三区四区视频| 欧美一区二区三区观看| 亚洲精品一区二区在线看| www.日韩视频| 欧美国产日韩综合| 亚洲经典自拍| 国产精品爱久久久久久久| 性色av一区二区三区四区| 精品一区二区三区在线播放| 91免费版黄色| 污视频在线免费观看| 久久久久青草大香线综合精品| 91福利入口| 欧洲精品久久一区二区| 久久久久久久久久久电影| 在线视频不卡一区二区| 国产又色又爽又黄刺激在线视频| 亚洲欧洲三级电影| 菠萝蜜视频在线观看入口| 久草在线资源站手机版| 欧美日韩你懂的| 成人一区二区三区仙踪林| 日韩在线影视| 久久五月情影视| 日产精品久久久久| 卡一卡二国产精品 | 久久99精品久久久久婷婷| 成人av片网址| 国产三级视频在线看| 亚洲精品第一国产综合野| 精品一区二区中文字幕| 亚洲精品伦理| 日韩黄在线观看| 91免费公开视频| 99视频+国产日韩欧美| 国产精品美腿一区在线看| 黑人乱码一区二区三区av| 国产日韩欧美一区二区三区乱码| 久久天天狠狠| а√天堂官网中文在线| 欧美日韩国产专区| 人妻换人妻仑乱| 欧美一级淫片| 5252色成人免费视频| av免费在线观看不卡| 国产丝袜欧美中文另类| 成人黄色大片网站| 亚洲影视资源| 亚洲色图15p| 天天操天天射天天爽| 久久se精品一区精品二区| 欧美日产一区二区三区在线观看| 久久久久久久影视| 一区二区三区在线看| 国产 porn| 日韩成人一级| 欧美激情国内偷拍| 一道本无吗一区| 中文字幕va一区二区三区| 精品国产免费av| 国产在线播放精品| 欧美黑人性生活视频| 99热这里只有精品在线| 国产精品水嫩水嫩| 99免费视频观看| 任你弄精品视频免费观看| 欧美激情奇米色| 精品国产av一区二区| 1024成人网| 日本美女视频一区| 日韩国产专区| 国产精品电影网| 国产在线观看黄| 色婷婷久久综合| 中文字幕一区二区三区人妻电影| 日韩欧美一区免费| 国产精品高清免费在线观看| 久久伊伊香蕉| 在线观看欧美日本| 97在线观看免费视频| 日韩专区中文字幕一区二区| 欧美一区二区三区四区在线观看地址 | 26uuu久久噜噜噜噜| 国产小视频免费观看| 一区二区欧美在线观看| 97人人模人人爽人人澡| 欧美在线观看天堂一区二区三区| 91国语精品自产拍在线观看性色 | 色婷婷国产精品综合在线观看| 欧美成人黄色网址| 欧美精选一区二区三区| 国产精品国产三级国产aⅴ浪潮| 精品国产九九九| 一卡二卡欧美日韩| 日韩无码精品一区二区| 亚久久调教视频| 午夜午夜精品一区二区三区文| 成人影院在线播放| 亚洲精品久久久久| 波多野结衣视频在线观看| 中文字幕+乱码+中文字幕一区| 成年人看的毛片| 香蕉久久夜色精品国产使用方法 | 亚洲精品动态| 国产精品成人免费电影| 麻豆网站在线看| 亚洲成人xxx| 波多野结衣av无码| 最新不卡av在线| 天堂www中文在线资源| 久久福利一区| 中文字幕一区二区三区5566| 成人中文字幕视频| 国产精品黄色av| 一二三四区在线观看| 日韩成人黄色av| 亚洲天堂视频网| 一区二区免费在线播放| 国产免费看av| 国产一区二区三区不卡在线观看| 亚洲国产精品久久久久久女王| 超碰在线中文字幕| 亚洲香蕉伊综合在人在线视看| 国产福利拍拍拍| 国产精品二区一区二区aⅴ污介绍| 激情网站五月天| 欧美激情91| 欧美日韩成人一区二区三区 | 欧美精品生活片| 色婷婷av一区二区三区之e本道| 亚洲最新视频在线播放| 色一情一交一乱一区二区三区| 亚洲美女少妇无套啪啪呻吟| 日本午夜精品一区二区三区| 视频二区欧美毛片免费观看| 国产成人av网| 毛片大全在线观看| 中文字幕免费精品一区| 日韩一级在线播放| 欧美日韩国产美| 日韩不卡视频在线| 亚洲综合在线免费观看| 992在线观看| 久久蜜桃av一区二区天堂 | 免费av成人在线| av网站手机在线观看| 国产精品成人av| 色噜噜狠狠一区二区三区| 久久丝袜视频| 99中文视频在线| 日韩国产大片| 国产精品91在线| av中文在线资源库| 欧美猛交ⅹxxx乱大交视频| av影片在线看| 亚洲色图综合久久| 日韩私人影院| 亚洲精品国精品久久99热一| 亚洲精品久久久久久无码色欲四季| 亚洲综合视频网| av在线免费播放网址| 久久久噜噜噜久久中文字幕色伊伊| 日本久久久久久久久久久久| 亚洲在线视频| ww国产内射精品后入国产| 午夜国产欧美理论在线播放 | 亚洲日产av中文字幕| 动漫一区二区在线| 日韩欧美中文字幕在线视频| 成人国产精品久久久久久亚洲| 中文字幕有码在线视频| 久久精品男人天堂| 日本中文字幕电影在线免费观看| 91精品国产色综合久久ai换脸 | 中文字幕第一页在线视频| 久久中文字幕一区二区三区| 欧美 日韩精品| 亚洲一区国产一区| 99精品在线免费视频| 国产一级久久| 欧美视频第三页| 久久综合九色| 国产九九热视频| 久久99精品国产麻豆婷婷洗澡| 国产精彩视频一区二区| 夜夜嗨av一区二区三区网站四季av| 少妇精品久久久久久久久久| 亚洲区小说区| 视频一区视频二区视频| 不卡日本视频| 一级黄色免费在线观看| 欧美1区2区视频| 亚洲 自拍 另类小说综合图区| 欧美a级片视频| 香蕉视频免费版| 在线不卡亚洲| 久久久999视频| 男女男精品视频| 一区二区在线免费观看视频| 国产成人精品免费| 最新中文字幕视频| 亚洲欧洲色图综合| 日本特黄特色aaa大片免费| 色综合久久中文综合久久牛| 怡春院在线视频| 日韩视频永久免费| 国产又爽又黄网站亚洲视频123| 欧美videossexotv100| 天天干天天爱天天操| 一本色道久久88精品综合| caopon在线免费视频| 欧美亚洲国产视频小说| 巨大黑人极品videos精品| 丁香五月网久久综合| 竹菊久久久久久久| 欧美大片免费播放| 久久久久久自在自线| 色噜噜狠狠一区二区三区狼国成人| 日韩va欧美va亚洲va久久| 中文字幕资源在线观看| 99精品视频一区二区| 一级二级黄色片| 亚洲国产精品久久久久秋霞影院 | 一区二区三区不卡在线观看| √资源天堂中文在线| 3d动漫精品啪啪| 日本天堂在线| 欧美精品一区二区免费| 欧美黑人巨大xxxxx| 91超碰在线免费观看| 国产欧美高清视频在线| 天天做天天躁天天躁| 青青草原综合久久大伊人精品优势| 国产肥臀一区二区福利视频| 精品亚洲免费视频| 性欧美成人播放77777| 亚洲天堂福利av| 少妇久久久久久久| 欧美精品一区二区三区一线天视频| 嫩草影院一区二区| 少妇久久久久久| 在线中文字幕播放| 不卡一区二区三区视频| 欧美jizz| 麻豆传传媒久久久爱| fc2成人免费人成在线观看播放| 国产伦精品一区二区免费| 日韩久久一区二区| 国产精品成人久久久| 亚洲欧美激情一区| 国内激情视频在线观看| 亚洲伊人第一页| 欧洲杯足球赛直播| 日韩一级在线免费观看| caoporm超碰国产精品| 国产女片a归国片aa| 欧美日韩国产高清一区二区三区 | 黄色国产在线视频| 中文字幕亚洲不卡| 亚洲成人av网址| 亚洲美女www午夜| 人狥杂交一区欧美二区| 国产精品毛片va一区二区三区| 欧美大胆视频| 毛片av在线播放| 国产成人综合亚洲91猫咪| 日本 欧美 国产| 欧美高清精品3d| 日本网站在线免费观看视频| 国产精品亚洲激情| 日韩一区二区中文| 在线观看免费污视频| 中文在线一区二区 | 欧美一区二区三区黄片| 久国内精品在线| 伊人精品综合| 欧美日韩福利在线| 成a人片国产精品| 97免费在线观看视频| 亚洲国产高潮在线观看| 国产免费拔擦拔擦8x在线播放| 亚洲精品电影网站| 国产在线综合网| 欧美mv日韩mv亚洲| 国产盗摄一区二区| 国产精品区二区三区日本| 韩国在线视频一区| wwwxx日本| 亚洲国产一区二区视频| 亚洲精选一区二区三区| 久久久噜噜噜久久久| 欧美综合自拍| 亚洲精品一二三四五区| 国产精品第一页第二页第三页| 久久伊人成人网| 亚洲福利影片在线| a日韩av网址| 日韩在线三区| 国内外成人在线视频| 国产一级免费av| 日韩激情片免费| 成人国产精品入口免费视频| 最新精品视频| 国产成人免费视| 日本黄色片视频| 中文国产亚洲喷潮| 免费观看亚洲天堂| 香港三级韩国三级日本三级| 国产欧美日本一区视频| 国产精品人妻一区二区三区| 色综合久久88| 国产99久久| 亚洲精品免费一区亚洲精品免费精品一区 | 国产精品久久av| 忘忧草精品久久久久久久高清| 国产a级一级片| 欧美国产乱子伦| 精品人妻久久久久一区二区三区| 一区二区三区视频免费|