日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【源码系列】Eureka源码分析

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【源码系列】Eureka源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??對于服務注冊中心、服務提供者、服務消費者這個三個主要元素來說,服務提供者和服務消費者(即Eureka客戶端)在整個運行機制中是大部分通信行為的主動發起者(服務注冊、續約、下線等),而注冊中心主要是處理請求的接收者。所以,我們從Eureka的客戶端為入口分析它是如何完成這些主動通信的。
??一般情況下,我們將一個SpringBoot應用注冊到 Eureka Server 或者從 Eureka Server 獲取服務器列表時,就做了兩件事:

  • 在應用啟動類添加注解 @EnableDiscoveryClient
  • 在 application.properties 文件上用 eureka.client.service-url.defaultZone 參數指定注冊中心的地址
  • 我們先看看 @EnableDiscoveryClient 這個注解的源碼,如下:

    /*** Annotation to enable a DiscoveryClient implementation.* @author Spencer Gibb*/ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Import(EnableDiscoveryClientImportSelector.class) public @interface EnableDiscoveryClient {/*** If true, the ServiceRegistry will automatically register the local server.*/boolean autoRegister() default true; }

    通過注釋可以知道,該注解可以開啟 DiscoveryClient 實例,然后我們搜索 DiscoveryClient 會發現一個類和一個接口,它們的關系如圖。

    ?


    enter description here
    右邊的org.springframework.cloud.client.discovery.DiscoveryClient 是SpringCloud的接口,體現了面向接口編程的思想,定義了用來發現服務的常用抽象方法。org.springframework.cloud.netflix.eureka.EurekaDiscoveryClient是該接口的實現,是對Eureka發現服務的封裝,內部依賴了一個EurekaClient接口,所以真正實現發現服務的是com.netflix.discovery.DiscoveryClient類。
    查看類注釋的內容:

    ?

    /*** The class that is instrumental for interactions with <tt>Eureka Server</tt>.** <p>* <tt>Eureka Client</tt> is responsible for a) <em>Registering</em> the* instance with <tt>Eureka Server</tt> b) <em>Renewal</em>of the lease with* <tt>Eureka Server</tt> c) <em>Cancellation</em> of the lease from* <tt>Eureka Server</tt> during shutdown* <p>* d) <em>Querying</em> the list of services/instances registered with* <tt>Eureka Server</tt>* <p>** <p>* <tt>Eureka Client</tt> needs a configured list of <tt>Eureka Server</tt>* {@link java.net.URL}s to talk to.These {@link java.net.URL}s are typically amazon elastic eips* which do not change. All of the functions defined above fail-over to other* {@link java.net.URL}s specified in the list in the case of failure.* </p>** @author Karthik Ranganathan, Greg Kim* @author Spencer Gibb**/ @Singleton public class DiscoveryClient implements EurekaClient {... }

    這個類用于幫助與 Eureka Server 相互協作
    Eureka Client客戶端負責以下內容:

  • 向Eureka Server 注冊服務實例
  • 向 Eureka Server 服務續約
  • 服務關閉時取消租約
  • 查詢注冊在 Eureka Server 上的服務或實例列表
    Eureka Client 還需要配置一個 Eureka Server 的服務列表。
  • 哪里對Eureka Server的URL列表配置?

    根據我們配置的屬性名eureka.client.serviceUrl.defaultZone,通過serviceUrl可以找到該屬性相關的加載屬性,就是DiscoveryClient里有個getEurekaServiceUrlsFromConfig()方法但是棄用了,改用EndpointUtils這個工具類,代碼如下:

  • /**?
  • * Get the list of all eureka service urls from properties file for the eureka client to talk to.?
  • *?
  • * @param clientConfig the clientConfig to use?
  • * @param instanceZone The zone in which the client resides?
  • * @param preferSameZone true if we have to prefer the same zone as the client, false otherwise?
  • * @return an (ordered) map of zone -> list of urls mappings, with the preferred zone first in iteration order?
  • */?
  • public static Map<String, List<String>> getServiceUrlsMapFromConfig(EurekaClientConfig clientConfig, String instanceZone, boolean preferSameZone) {?
  • Map<String, List<String>> orderedUrls = new LinkedHashMap<>();?
  • String region = getRegion(clientConfig);?
  • String[] availZones = clientConfig.getAvailabilityZones(clientConfig.getRegion());?
  • if (availZones == null || availZones.length == 0) {?
  • availZones = new String[1];?
  • availZones[0] = DEFAULT_ZONE;?
  • }?
  • logger.debug("The availability zone for the given region {} are {}", region, availZones);?
  • int myZoneOffset = getZoneOffset(instanceZone, preferSameZone, availZones);?
  • ?
  • String zone = availZones[myZoneOffset];?
  • List<String> serviceUrls = clientConfig.getEurekaServerServiceUrls(zone);?
  • if (serviceUrls != null) {?
  • orderedUrls.put(zone, serviceUrls);?
  • }?
  • int currentOffset = myZoneOffset == (availZones.length - 1) ? 0 : (myZoneOffset + 1);?
  • while (currentOffset != myZoneOffset) {?
  • zone = availZones[currentOffset];?
  • serviceUrls = clientConfig.getEurekaServerServiceUrls(zone);?
  • if (serviceUrls != null) {?
  • orderedUrls.put(zone, serviceUrls);?
  • }?
  • if (currentOffset == (availZones.length - 1)) {?
  • currentOffset = 0;?
  • } else {?
  • currentOffset++;?
  • }?
  • }?
  • ?
  • if (orderedUrls.size() < 1) {?
  • throw new IllegalArgumentException("DiscoveryClient: invalid serviceUrl specified!");?
  • }?
  • return orderedUrls;?
  • }?
  • ?
  • Region,Zone

    getRegion()方法可以看出一個微服務應用只可以屬于一個Region,如果沒配置則為default,可以通過eureka.client.region屬性來定義。

    public static String getRegion(EurekaClientConfig clientConfig) {String region = clientConfig.getRegion();if (region == null) {region = DEFAULT_REGION;}region = region.trim().toLowerCase();return region;}

    getAvailabilityZones()方法可以看出Region與Zone的關系,一個Region可以有多個Zone,設置時可以用逗號來分隔。默認采用defaultZone。

    public String[] getAvailabilityZones(String region) {String value = (String)this.availabilityZones.get(region);if(value == null) {value = "defaultZone";}return value.split(",");}

    在獲取Region和Zone的信息后,根據傳入的參數按一定的算法確定加載位于哪一個Zone的serviceUrls。

    ?


    enter description here
    getEurekaServerServiceUrls方法是EurekaClientConfigBean的實現類,該方法用來獲取一個Zone下配置的所以serviceUrl,通過標注出來的地方可以知道,eureka.client.serviceUrl.defaultZone屬性可以配置多個,用逗號來分隔。

    ?

    ?


    enter description here
    注意: Ribbon具有區域親和特性,Ribbon的默認策略會優先訪問同客戶端處于同一個Zone中的實例。所以通過Zone屬性的定義,配置實際部署的物理結構,我們就可以有效地設計出對區域性故障的容錯集群。

    ?

    服務注冊

    前面說了多個服務注冊中心信息的加載,這里再看看 DiscoveryClient 類是如何實現服務注冊的。通過查看該類的構造函數,發現它調用了以下方法。

    /*** Initializes all scheduled tasks.*/private void initScheduledTasks() {...if (clientConfig.shouldRegisterWithEureka()) {...// Heartbeat timerscheduler.schedule(new TimedSupervisorTask("heartbeat",scheduler,heartbeatExecutor,renewalIntervalInSecs,TimeUnit.SECONDS,expBackOffBound,new HeartbeatThread()),renewalIntervalInSecs, TimeUnit.SECONDS);// InstanceInfo replicatorinstanceInfoReplicator = new InstanceInfoReplicator(this,instanceInfo,clientConfig.getInstanceInfoReplicationIntervalSeconds(),2); // burstSize...instanceInfoReplicator.start(clientConfig.getInitialInstanceInfoReplicationIntervalSeconds());} else {logger.info("Not registering with Eureka server per configuration");}}

    這里先根據配置判斷是不是要注冊到 Eureka,然后創建心跳檢測任務,獲取 instanceInfoReplicator。InstanceInfoReplicator類實現 Runnable接口,instanceInfoReplicator實例會執行一個定時任務,這個定時任務的內容可以查看該類的run()方法。

    ?


    enter description here
    這里定時刷新實例信息,discoveryClient.register()這里觸發了服務注冊,register()的內容如下:

    ?

    ?


    服務注冊的方法
    通過注釋也能看出來,這里是通過發送REST請求的方式進行的,com.netflix.appinfo.InstanceInfo就是注冊時客戶端給服務端的元數據。

    ?

    服務獲取與服務續約

    上面說到的 initScheduledTasks() 方法還有兩個定時任務,分別是服務獲取和服務續約。

    private void initScheduledTasks() {if (clientConfig.shouldFetchRegistry()) {// registry cache refresh timerint registryFetchIntervalSeconds = clientConfig.getRegistryFetchIntervalSeconds();int expBackOffBound = clientConfig.getCacheRefreshExecutorExponentialBackOffBound();scheduler.schedule(new TimedSupervisorTask("cacheRefresh",scheduler,cacheRefreshExecutor,registryFetchIntervalSeconds,TimeUnit.SECONDS,expBackOffBound,new CacheRefreshThread()),registryFetchIntervalSeconds, TimeUnit.SECONDS);}if (clientConfig.shouldRegisterWithEureka()) {int renewalIntervalInSecs = instanceInfo.getLeaseInfo().getRenewalIntervalInSecs();int expBackOffBound = clientConfig.getHeartbeatExecutorExponentialBackOffBound();logger.info("Starting heartbeat executor: " + "renew interval is: {}", renewalIntervalInSecs);// Heartbeat timerscheduler.schedule(new TimedSupervisorTask("heartbeat",scheduler,heartbeatExecutor,renewalIntervalInSecs,TimeUnit.SECONDS,expBackOffBound,new HeartbeatThread()),renewalIntervalInSecs, TimeUnit.SECONDS);...instanceInfoReplicator.start(clientConfig.getInitialInstanceInfoReplicationIntervalSeconds());} else {logger.info("Not registering with Eureka server per configuration");}}

    clientConfig.shouldFetchRegistry()這里其實是通過eureka.client.fetch-registry參數來判斷的,默認為true,它可以定期更新客戶端的服務清單,從而客戶端能訪問到健康的服務實例。
    服務續約也是發送REST請求實現的。

    boolean renew() {EurekaHttpResponse<InstanceInfo> httpResponse;try {httpResponse = eurekaTransport.registrationClient.sendHeartBeat(instanceInfo.getAppName(), instanceInfo.getId(), instanceInfo, null);logger.debug(PREFIX + "{} - Heartbeat status: {}", appPathIdentifier, httpResponse.getStatusCode());if (httpResponse.getStatusCode() == 404) {REREGISTER_COUNTER.increment();logger.info(PREFIX + "{} - Re-registering apps/{}", appPathIdentifier, instanceInfo.getAppName());long timestamp = instanceInfo.setIsDirtyWithTime();boolean success = register();if (success) {instanceInfo.unsetIsDirty(timestamp);}return success;}return httpResponse.getStatusCode() == 200;} catch (Throwable e) {logger.error(PREFIX + "{} - was unable to send heartbeat!", appPathIdentifier, e);return false;}}

    服務獲取的過程省略。

    服務下線

    服務端根據實例Id和appName執行remove操作。

    void unregister() {// It can be null if shouldRegisterWithEureka == falseif(eurekaTransport != null && eurekaTransport.registrationClient != null) {try {logger.info("Unregistering ...");EurekaHttpResponse<Void> httpResponse = eurekaTransport.registrationClient.cancel(instanceInfo.getAppName(), instanceInfo.getId());logger.info(PREFIX + "{} - deregister status: {}", appPathIdentifier, httpResponse.getStatusCode());} catch (Exception e) {logger.error(PREFIX + "{} - de-registration failed{}", appPathIdentifier, e.getMessage(), e);}}}

    注冊中心處理

    前面的分析都是從客戶端出發的,現在看看 Eureka Server是如何處理各種Rest請求的。這種請求的定義都在com.netflix.eureka.resources包下。
    以服務注冊為例:
    調用 ApplicationResource 類下的 addInstance()方法。

    @POST@Consumes({"application/json", "application/xml"})public Response addInstance(InstanceInfo info, @HeaderParam("x-netflix-discovery-replication") String isReplication) {logger.debug("Registering instance {} (replication={})", info.getId(), isReplication);if(this.isBlank(info.getId())) {return Response.status(400).entity("Missing instanceId").build();} else if(this.isBlank(info.getHostName())) {return Response.status(400).entity("Missing hostname").build();} else if(this.isBlank(info.getIPAddr())) {return Response.status(400).entity("Missing ip address").build();} else if(this.isBlank(info.getAppName())) {return Response.status(400).entity("Missing appName").build();} else if(!this.appName.equals(info.getAppName())) {return Response.status(400).entity("Mismatched appName, expecting " + this.appName + " but was " + info.getAppName()).build();} else if(info.getDataCenterInfo() == null) {return Response.status(400).entity("Missing dataCenterInfo").build();} else if(info.getDataCenterInfo().getName() == null) {return Response.status(400).entity("Missing dataCenterInfo Name").build();} else {DataCenterInfo dataCenterInfo = info.getDataCenterInfo();if(dataCenterInfo instanceof UniqueIdentifier) {String dataCenterInfoId = ((UniqueIdentifier)dataCenterInfo).getId();if(this.isBlank(dataCenterInfoId)) {boolean experimental = "true".equalsIgnoreCase(this.serverConfig.getExperimental("registration.validation.dataCenterInfoId"));if(experimental) {String entity = "DataCenterInfo of type " + dataCenterInfo.getClass() + " must contain a valid id";return Response.status(400).entity(entity).build();}if(dataCenterInfo instanceof AmazonInfo) {AmazonInfo amazonInfo = (AmazonInfo)dataCenterInfo;String effectiveId = amazonInfo.get(MetaDataKey.instanceId);if(effectiveId == null) {amazonInfo.getMetadata().put(MetaDataKey.instanceId.getName(), info.getId());}} else {logger.warn("Registering DataCenterInfo of type {} without an appropriate id", dataCenterInfo.getClass());}}}this.registry.register(info, "true".equals(isReplication));return Response.status(204).build();}}

    在對注冊信息進行校驗后,會調用org.springframework.cloud.netflix.eureka.server.InstanceRegistry的register(InstanceInfo info, int leaseDuration, boolean isReplication)方法。

    ?


    enter description here

    ?

    ?


    enter description here
    首先會把新服務注冊事件傳播出去,然后調用父類com.netflix.eureka.registry.AbstractInstanceRegistry中的實現。

    ?

    public void register(InstanceInfo registrant, int leaseDuration, boolean isReplication) {try {this.read.lock();Map<String, Lease<InstanceInfo>> gMap = (Map)this.registry.get(registrant.getAppName());...} finally {this.read.unlock();}}

    ?


    保存實例信息的雙層Map
    InstanceInfo的元數據信息保存在一個ConcurrentHashMap中,它是一個雙層的Map結構,第一層的key是服務名(即InstanceInfo的appName屬性),第二層的key是實例名(即InstanceInfo的InstanceId屬性)。
    ApplicationResource中的其他方法可以自行研究。

    ?

    轉載于:https://www.cnblogs.com/2YSP/p/11072255.html

    總結

    以上是生活随笔為你收集整理的【源码系列】Eureka源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    日韩欧美视频一区二区三区 | av高清免费在线 | 国产九九九精品视频 | 亚洲精品视频在线播放 | 精品成人在线 | 黄色一级大片免费看 | 亚洲最快最全在线视频 | 在线观看 国产 | 国产第页 | 日韩欧美精品在线视频 | 手机成人免费视频 | 欧美日韩国产高清视频 | 成人黄色影片在线 | 亚洲精品福利在线观看 | 久久综合九色欧美综合狠狠 | 精品国产免费人成在线观看 | 日韩视频在线观看免费 | 国产精久久久久久妇女av | 日韩区欧美久久久无人区 | 国产一级免费观看 | 亚洲免费在线 | 97热久久免费频精品99 | 婷婷新五月 | 国产精品99久久久久久有的能看 | 久久久久久国产精品999 | 99精品视频在线看 | 久久久国产毛片 | 天天插天天爱 | 国产999视频 | 久久久久影视 | 亚洲一级黄色片 | 日韩在线中文字幕 | 国产成人精品电影久久久 | 国产亚洲资源 | 亚洲精品影院在线观看 | 99精品国产高清在线观看 | 久久99精品国产91久久来源 | 四虎国产精品永久在线国在线 | 久久一区二区三区日韩 | 在线观看成人 | 欧美激情奇米色 | 亚洲免费av在线播放 | 精品国产一二三四区 | 99免费在线观看 | 免费在线观看a v | 91黄色成人 | 婷婷四房综合激情五月 | 亚洲国产高清在线观看视频 | 日韩在线免费看 | www.日日日.com | 亚洲成人家庭影院 | 国产视频在线观看免费 | 欧美在线观看视频一区二区 | 91在线视频免费播放 | 在线亚洲观看 | 99久久爱 | 日日添夜夜添 | 中文国产成人精品久久一 | 天天草天天干天天 | 青青色影院 | 激情综合色综合久久综合 | 久久国产精品视频 | 91麻豆精品国产91久久久更新时间 | 81国产精品久久久久久久久久 | 日韩亚洲在线 | 免费看黄色大全 | 日本中文字幕观看 | 国产伦精品一区二区三区四区视频 | caobi视频 | 国产又粗又硬又爽的视频 | 91色九色| 97在线观看免费 | 在线一区av | 日韩精品一区二区三区免费观看 | 成人一级视频在线观看 | 丁香激情婷婷 | 国产福利一区二区三区在线观看 | 欧美激情精品久久久久久免费 | 久久99精品久久久久久秒播蜜臀 | 亚洲免费公开视频 | 久草干| www.com久久久| 99精彩视频在线观看免费 | 亚洲精品在线观看av | 日韩精品高清不卡 | 手机看片国产 | 涩涩网站在线观看 | 激情五月婷婷综合 | 亚洲婷婷丁香 | 黄色国产在线观看 | 久久色视频 | 在线91视频 | 在线观看mv的中文字幕网站 | 国产中文自拍 | 久久国产视屏 | 人人爽影院 | 99中文视频在线 | 亚洲黄色在线观看 | 二区三区av | 17videosex性欧美 | 国产精品一区二区视频 | 欧美福利视频 | 黄色一级网| 成人av免费看| 黄色网在线播放 | 久久99久久精品国产 | 日本3级在线观看 | 久久精品视频免费播放 | 国产精品视频线看 | 国产精品久久久久久久妇 | 九九99| 日韩av在线小说 | 97成人在线观看视频 | 欧美性性网 | 欧美精品中文在线免费观看 | 在线观看色网 | 五月婷色| 久久视频国产 | 免费国产亚洲视频 | 日韩免费不卡av | 韩国中文三级 | 六月激情| 一级黄色大片 | 久久成人人人人精品欧 | 综合色中文 | 欧美少妇xx| 超碰成人免费电影 | 久久精品福利 | 日韩视频1区 | 69精品| 亚洲一区在线看 | 成年人在线免费看视频 | 麻豆传媒一区二区 | 日本大片免费观看在线 | 久热久草在线 | 日韩成人av在线 | 久久性生活片 | 182午夜在线观看 | 欧美久草网 | 日韩免费一区二区在线观看 | 中文高清av | 亚洲精品福利在线观看 | 日韩视频免费在线 | www国产亚洲 | 91一区二区在线 | 国产一区二区手机在线观看 | 日本精品视频一区 | 成人黄色大片在线观看 | 精品在线亚洲视频 | 成年人免费av网站 | www激情久久| 欧美日韩一区二区视频在线观看 | 国模精品一区二区三区 | 中文在线8新资源库 | 日韩一区二区免费在线观看 | 中文字幕精品久久 | 国产永久免费 | 91原创在线观看 | 四虎在线观看网址 | 国产五月色婷婷六月丁香视频 | 亚洲精品国偷自产在线99热 | 国产精品久久久久婷婷 | 久草精品免费 | 一区二区精品国产 | 超碰人人在线 | 国产精品1区2区在线观看 | 日韩成人精品一区二区三区 | 中文字幕在线观看视频免费 | 91成人天堂久久成人 | 精品免费99久久 | 天天操综合 | 中文字幕在线一二 | 在线播放第一页 | 国产亚洲精品久久久网站好莱 | 一级免费黄色 | 91视频免费视频 | jizz999| 日韩精品影视 | www国产亚洲精品久久麻豆 | 日韩高清无线码2023 | 超碰在线日本 | 久草资源在线观看 | 99精品视频精品精品视频 | 久久一区二区三区国产精品 | 久久精品99久久久久久 | 日韩欧美专区 | 免费视频网 | 91免费的视频在线播放 | 麻花豆传媒mv在线观看 | 欧美精品在线一区 | av不卡免费在线观看 | 天天操操操操操操 | 在线观看福利网站 | 最近日本字幕mv免费观看在线 | 91精品视屏| 久久国产精品久久久 | 91av中文字幕 | 深夜免费福利视频 | 99久久婷婷国产一区二区三区 | 97香蕉超级碰碰久久免费软件 | 最近中文字幕mv免费高清在线 | 欧美激情精品久久 | 亚洲成人精品国产 | 精品成人国产 | 久久免费视频99 | 在线精品观看 | 激情五月婷婷综合网 | 成人福利在线播放 | 欧美精品一区二区蜜臀亚洲 | 在线欧美日韩 | 国产精品久久久久久一区二区 | 天天干天天操人体 | 免费国产ww | 91精品国产麻豆 | 亚洲影院国产 | 精品免费观看视频 | 日日夜夜天天久久 | 日日草夜夜操 | 亚洲欧美国产精品va在线观看 | avcom在线| 精品女同一区二区三区在线观看 | 中文字幕成人在线 | 国产在线观看一区 | 精品亚洲午夜久久久久91 | 中文字幕人成不卡一区 | 激情av资源 | 日韩免费在线看 | 国产精品扒开做爽爽的视频 | 日韩免费中文 | 一区二区精品在线观看 | 免费黄色网址大全 | 成人中文字幕在线 | 国内久久 | 狠狠狠狠狠狠操 | 日韩免费b| 99在线观看视频 | 黄色成人毛片 | 久久久亚洲电影 | 日韩精品视频一二三 | 中文字幕色网站 | 97色在线视频 | 激情久久五月天 | 91精品国产综合久久久久久久 | 免费亚洲黄色 | 在线免费观看视频一区 | 少妇按摩av | 天堂在线v| 欧美激情综合色综合啪啪五月 | 中文字幕视频 | 色综合久久悠悠 | 久草在线一免费新视频 | 国产精品成人久久久久久久 | 亚洲视频一区二区三区在线观看 | 中文字幕免费中文 | 在线观看视频亚洲 | 久久国产精品系列 | 午夜精品久久久久久久久久 | 成人播放器 | 狠狠躁夜夜躁人人爽视频 | 亚洲最大的av网站 | 成人在线视 | 91成人在线视频观看 | 久久久久久久久久久免费视频 | 人人添人人澡人人澡人人人爽 | 亚洲成av人片在线观看无 | 亚洲精品自拍 | 精品久久久久久久久久久久久久久久久久 | 免费观看成人网 | 成 人 免费 黄 色 视频 | 成人av免费在线 | 国产麻豆精品在线观看 | 国产精品乱看 | 国产黄色精品在线观看 | 中文字幕4| 久久调教视频 | 精品免费视频 | 在线看的毛片 | 最新av观看 | 中文字幕黄色 | 中文字幕中文字幕在线一区 | 国产精品成人免费精品自在线观看 | 国产精品久久电影网 | 午夜av免费在线观看 | 深爱激情综合网 | 免费精品在线观看 | 草久热 | www.99热精品 | 国产精品 中文字幕 亚洲 欧美 | 成人精品视频久久久久 | 伊人五月天av| 久久手机视频 | 国产九九精品视频 | 久久久久免费网站 | 天天躁日日躁狠狠躁av中文 | 欧美在线视频不卡 | 免费观看91 | a黄色影院| 久久免费高清视频 | 激情婷婷综合网 | 国产乱码精品一区二区三区介绍 | 中文字幕免费高清在线 | 国产精品久久99综合免费观看尤物 | 蜜桃av观看 | 韩国精品在线 | www黄在线| 亚洲精品videossex少妇 | 国产精品久久久一区二区三区网站 | 国产精品99久久久久久小说 | 91丨九色丨高潮丰满 | 黄色影院在线免费观看 | 激情在线网站 | 国产乱对白刺激视频不卡 | av成人在线网站 | 欧美韩国在线 | 欧美三级在线播放 | 免费在线观看一级片 | 狠狠婷婷| 国产精品久久久久9999吃药 | 天天操天天色天天 | 国外成人在线视频网站 | 久久一区二区三区日韩 | 国产成人精品一区在线 | 菠萝菠萝蜜在线播放 | 成人性生交大片免费看中文网站 | 99久久精品免费看国产 | 久久成人亚洲欧美电影 | 香蕉视频导航 | www激情网 | 热re99久久精品国产66热 | 玖玖视频网 | 久99久视频 | 国产精品免费看久久久8精臀av | 亚洲视频免费在线看 | 天天插狠狠干 | 午夜久久影院 | 日本精品视频一区二区 | 四虎免费在线观看 | 中文字幕在线视频一区二区三区 | 欧美一级欧美一级 | 久久美女免费视频 | 久久久久久毛片精品免费不卡 | 日本91在线 | 免费久久网站 | 国内精品久久久久影院优 | 婷婷免费视频 | 久久久久久久影院 | 六月婷操| 九九免费在线看完整版 | 久久www免费人成看片高清 | 爱爱一区 | 国产精品成久久久久 | 黄网在线免费观看 | 伊人婷婷色 | 手机在线看a| 国产精品一区二区久久久 | 久久亚洲国产精品 | 久久99精品久久久久蜜臀 | 91视频在线免费看 | 国产免费久久精品 | 亚洲精品高清视频在线观看 | 欧美久草视频 | 久草亚洲视频 | 日韩国产欧美在线播放 | 成人免费视频网址 | 亚洲黄色片在线 | 91亚洲狠狠婷婷综合久久久 | www麻豆视频| 色在线国产 | 午夜av在线| 欧美 亚洲 另类 激情 另类 | 国产小视频在线免费观看视频 | 天天操操| 中午字幕在线 | www.久久久.com | 91理论片午午伦夜理片久久 | 人人揉人人揉人人揉人人揉97 | 久久久精品成人 | 欧美乱码精品一区二区 | 网站免费黄 | 久久久久国产精品视频 | 在线播放视频一区 | 美女啪啪图片 | 久草热久草视频 | 99热这里只有精品1 av中文字幕日韩 | 亚洲视频精品在线 | 成人小视频在线观看免费 | www在线观看国产 | 99久久婷婷国产精品综合 | 天天色天天射天天综合网 | 丝袜av网站 | 日韩a在线观看 | 久久久久久久久久影视 | 精品国产欧美一区二区 | 国产亚洲一区 | 亚洲免费成人av电影 | 久久 国产一区 | 国产丝袜 | 久久无码精品一区二区三区 | 国产精品av电影 | 亚洲精品综合欧美二区变态 | 久久九九国产视频 | 最新亚洲视频 | 日韩av看片 | 综合色综合| 一区二区三区免费在线观看 | 久久a视频 | 色小说在线 | 欧美久久精品 | 91在线观看视频网站 | 色综合久久久久综合 | 九热在线 | 麻豆免费观看视频 | 四虎永久网站 | 狠狠综合久久av | 国产精品9区 | 日日夜夜人人天天 | av解说在线| 国产亚洲精品久久久久久久久久 | 国产打女人屁股调教97 | 国产美女永久免费 | 午夜久久久久久久久久影院 | 免费99精品国产自在在线 | 综合久久精品 | adc在线观看 | 在线观看 亚洲 | 91一区二区三区久久久久国产乱 | 伊人春色电影网 | 水蜜桃亚洲一二三四在线 | 狠狠综合网 | 亚洲午夜av电影 | 97在线资源 | 中文资源在线播放 | 国产精品久久三 | 亚洲人成人天堂h久久 | 看片一区二区三区 | avwww在线观看| 日韩精选在线观看 | 91精品国产一区二区在线观看 | 2020天天干夜夜爽 | 国产成在线观看免费视频 | 五月天激情视频 | 伊人六月 | 日韩在线观看的 | 欧美有色 | 免费看成人a| 91av在线视频免费观看 | 五月天亚洲综合 | 美女福利视频 | 免费视频久久久久久久 | 久久久久伊人 | 日韩精品一区二区三区免费观看 | 欧美另类亚洲 | 国产免费久久精品 | 久久av一区二区三区亚洲 | 午夜久久 | 国产精品久久久久久久妇 | 国产成人精品一区二区三区免费 | 99tvdz@gmail.com | 九九导航 | 婷婷资源站 | 99久免费精品视频在线观看 | 999成人国产 | 不卡的av| 久久免费高清 | 久久久www成人免费毛片麻豆 | 成人av地址| 又黄又爽又刺激 | 中文字幕免费播放 | 三上悠亚一区二区在线观看 | 久久伦理电影 | 日本中文字幕系列 | 欧美va电影| 麻豆一二 | 国内揄拍国内精品 | 亚州精品成人 | 日韩在线 一区二区 | 亚洲精品在线一区二区 | 中文字幕丝袜制服 | 青春草免费在线视频 | 天天操欧美 | 91中文字幕一区 | 成人性生交大片免费观看网站 | 成人九九视频 | 色视频一区 | 最近2019中文免费高清视频观看www99 | 国产午夜三级一二三区 | www亚洲国产 | 久久成人免费视频 | 人人爽人人爽人人片av免 | 亚洲精品电影在线 | 日韩a在线播放 | 久草视频首页 | 97高清视频 | 国产又黄又爽无遮挡 | 激情久久影院 | 亚洲综合日韩在线 | 欧美日韩国产综合一区二区 | 九九色网| 久久精品牌麻豆国产大山 | 性色av免费观看 | 99色网站 | 亚洲涩涩一区 | 99精品久久久久 | 国产福利91精品一区 | 亚洲精品理论 | 亚洲国内精品 | 久久久免费毛片 | 午夜电影 电影 | 国产精品一区二区精品视频免费看 | av电影一区| 中文字幕av免费观看 | 在线观看 国产 | 日日爽天天 | 久久精品国产精品亚洲 | 久久久久久久久福利 | 婷婷丁香激情 | 精品视频999 | 中文字幕激情 | 亚洲人成人天堂h久久 | 欧美孕交vivoestv另类 | 91福利视频免费观看 | 国产精品久久久久久久久久三级 | 亚洲男男gⅴgay双龙 | 国产精品一区二区精品视频免费看 | 亚洲国产av精品毛片鲁大师 | 日韩免费av片 | av福利电影 | 国产精品二区三区 | 亚洲欧美日韩在线一区二区 | 久久久精品电影 | 一区二区三区精品在线视频 | 成人在线视频网 | 一区二区影院 | 久久久国产一区二区三区 | 日韩在线观看免费 | 九九视频热| 九九色视频 | 国产免费叼嘿网站免费 | 午夜性生活片 | 久久免费视频精品 | 992tv人人网tv亚洲精品 | 久久久av电影 | 天天色天天爱天天射综合 | 黄在线免费观看 | 中文字幕亚洲精品日韩 | 干 操 插| 国产高清视频免费最新在线 | 久久av在线| 亚洲一区二区观看 | 国产精品日韩在线 | 激情网婷婷 | 午夜少妇一区二区三区 | 精品美女久久久久 | 在线观看日韩一区 | 国产精品密入口果冻 | 成人av资源网| 五月av在线| 五月婷婷视频 | 波多野结衣小视频 | 亚洲天天在线日亚洲洲精 | 免费成人av电影 | 欧美另类交人妖 | 国产一级a毛片视频爆浆 | 欧美片网站yy | 狠狠色丁香婷婷综合橹88 | 狠狠色丁香婷婷综合久久片 | 成人av网页 | 综合网欧美 | 三上悠亚一区二区在线观看 | 二区视频在线观看 | 91视频com | 天天天天爽 | 国产精品日韩在线观看 | 欧美一级xxxx | 国产精品视频全国免费观看 | 亚洲自拍偷拍色图 | 最近能播放的中文字幕 | 精品久久免费 | av免费在线免费观看 | 福利片视频区 | 奇米网网址| 国产精品ⅴa有声小说 | av中文字幕在线播放 | 四虎在线永久免费观看 | 看黄色.com| 亚洲精品一区二区网址 | 亚洲一区天堂 | www激情久久 | 免费黄色网址大全 | 欧美一级性 | 精品国产一二三 | 毛片精品免费在线观看 | 国产精品第10页 | 国产亚洲精品久久久久久电影 | 97超碰在| 亚洲在线免费视频 | 少妇精69xxtheporn| 有码视频在线观看 | 亚洲综合欧美精品电影 | 久久精品4 | 色老板在线 | 91人人爽久久涩噜噜噜 | 国产美女精品视频 | 99精品国产亚洲 | 激情久久久久久久久久久久久久久久 | 日韩精品欧美视频 | 人人狠狠综合久久亚洲 | 国产亚洲一区二区在线观看 | 91麻豆精品国产91久久久久久久久 | 亚洲精品中文在线资源 | 久久久久激情视频 | 成人国产精品免费观看 | 中文字幕在线观看视频网站 | 精品毛片久久久久久 | 夜夜操网站| 欧美国产日韩一区 | 日韩两性视频 | 亚洲一区二区三区毛片 | 91麻豆精品国产午夜天堂 | 天天综合视频在线观看 | 国产 日韩 中文字幕 | 一区 二区 精品 | 免费a级大片 | 国产精品24小时在线观看 | 久久国产精品二国产精品中国洋人 | 久久精品老司机 | 国产中文字幕网 | 国产精品午夜免费福利视频 | 在线观看视频你懂 | 日韩视频欧美视频 | 91精品国 | 在线观看蜜桃视频 | 日本中文字幕在线视频 | 97久久精品午夜一区二区 | 免费在线观看成年人视频 | 国产精品一级在线 | 国产精品人成电影在线观看 | 毛片3 | 国产午夜精品视频 | 成人超碰97 | 一区精品在线 | 五月天久久婷婷 | 午夜国产在线 | 国产精品男女啪啪 | 亚洲一区网| 日批网站免费观看 | 亚洲一区在线看 | 午夜精品一区二区三区免费 | 亚洲精品字幕在线观看 | 在线观看爱爱视频 | 欧美精品一区二区免费 | 日韩狠狠操 | 久久久福利视频 | 91麻豆精品国产自产在线 | 久操免费视频 | 91桃色国产在线播放 | 久久在线播放 | 久久久黄色av | 偷拍福利视频一区二区三区 | 人人插人人干 | 特级毛片在线观看 | 五月天综合色 | 久草在线91| 天天干中文字幕 | 久久久久免费精品视频 | 国产成人黄色av | 国产老熟 | 97超碰在线人人 | 狠狠色狠狠色综合系列 | 麻豆传媒一区二区 | 最新国产精品拍自在线播放 | 伊人狠狠色 | 久艹在线免费观看 | 亚洲更新最快 | 久久国产精品区 | 中文字幕在线观 | 亚洲免费黄色 | 亚洲精品国产精品乱码不99热 | 国产成人精品久久久 | 色资源在线 | 国产成人一区二区三区影院在线 | 日韩精品视频免费 | 亚洲精品在线免费播放 | 国产91全国探花系列在线播放 | 狠狠色丁香婷综合久久 | 不卡av免费在线观看 | 国内视频在线观看 | 国产精品久久久久一区二区三区 | 99婷婷| 国产精品成人品 | 黄色三级免费观看 | 国产午夜在线观看 | 中文国产在线观看 | 精品国内自产拍在线观看视频 | 国产 欧美 日产久久 | 激情电影在线观看 | 500部大龄熟乱视频使用方法 | 久久精品男人的天堂 | 久久久免费高清视频 | 婷婷伊人综合亚洲综合网 | 亚洲一区网站 | 精品亚洲视频在线 | 日韩精品中字 | 亚洲精品一区二区久 | 黄色一区三区 | 91丨精品丨蝌蚪丨白丝jk | 不卡视频一区二区三区 | 久一网站 | 欧美性大胆 | 免费看片在线观看 | 中文字幕在线观看第一区 | 亚洲精品免费在线观看视频 | 久久伦理电影网 | 国产高清在线观看av | 超碰最新网址 | 国产精品情侣视频 | 久草免费手机视频 | 国产精品区二区三区日本 | www.eeuss影院av撸| 精品国产成人在线影院 | 天天翘av | 69久久99精品久久久久婷婷 | 久久黄页| 不卡电影免费在线播放一区 | 久久亚洲影院 | 欧美日韩亚洲一 | 丁香花在线观看免费完整版视频 | 91在线一区二区 | 免费看的国产视频网站 | 人人爽人人爱 | 91成年人视频 | 久久精品视频99 | 国产伦理一区二区 | 五月天网页 | 97人人澡人人添人人爽超碰 | 91在线免费视频观看 | 日韩精品一区电影 | 黄色三级在线看 | 丁香在线观看完整电影视频 | 国产黄色片久久久 | 亚洲色图色 | 曰本免费av | 国产高h视频 | 日韩免费一级a毛片在线播放一级 | 日韩一区二区三区高清在线观看 | av黄色av| 狠狠操.com| 日本女人的性生活视频 | 亚洲免费公开视频 | 天天干天天操天天 | 色大片免费看 | 中文字幕在线观看一区二区 | 国产在线观看h | 免费av看片| 97超碰人人模人人人爽人人爱 | 国产精品一区二区三区在线播放 | 欧美地下肉体性派对 | 国产精品免费观看国产网曝瓜 | 久久久久久久久影视 | 久色小说 | 久草在线欧美 | 四虎永久免费 | 91在线色 | 精品黄色片 | 99久久影视 | 欧美日韩免费一区二区三区 | 色视频网址 | 国产精品第54页 | 国产在线精品国自产拍影院 | 久久xx视频| av黄色免费在线观看 | 毛片二区| 国产精品久久久久久久久久久不卡 | 国产人成一区二区三区影院 | 在线视频观看成人 | 亚洲性xxxx| 九九九九九九精品 | 久久三级毛片 | 黄色av成人在线观看 | 色综合夜色一区 | 久热这里有精品 | 欧美激情精品 | 天天天天色射综合 | 国产高清免费av | 欧美最新另类人妖 | 亚洲午夜久久久久久久久久久 | 97夜夜澡人人双人人人喊 | 深夜福利视频在线观看 | 中文字幕黄色网 | 国产成人在线免费观看 | 91视频在线免费看 | 99精品免费久久久久久久久 | 免费看黄的 | 亚洲高清视频一区二区三区 | 韩日视频在线 | 精品uu| 久久av高清 | 黄p在线播放 | 日日碰狠狠添天天爽超碰97久久 | 国产高清免费 | 性色视频在线 | 日韩激情综合 | 久久精品99北条麻妃 | 亚洲成人av在线 | 成人久久综合 | 国产精品96久久久久久吹潮 | 在线观看精品黄av片免费 | 欧美十八 | 日韩欧美一区二区三区在线 | 国产精品黄色影片导航在线观看 | 欧美成人在线网站 | 天天综合网国产 | 干天天| 91香蕉嫩草 | 国产看片 色 | 正在播放 国产精品 | 国产黄色一级大片 | 天天爽夜夜爽人人爽一区二区 | 亚洲 欧美 国产 va在线影院 | 91亚洲欧美激情 | 狠狠色综合网站久久久久久久 | 久草在线最新 | 免费在线电影网址大全 | 日韩啪啪小视频 | 黄色一区三区 | 波多野结衣在线视频一区 | 久久久久成人免费 | 99精品国产aⅴ | 欧美福利片在线观看 | 波多野结衣精品 | 国产精品永久在线观看 | 午夜美女网站 | 亚洲欧美国内爽妇网 | 91成人精品视频 | 偷拍福利视频一区二区三区 | 欧美日韩在线观看一区二区 | 美腿丝袜一区二区三区 | av资源中文字幕 | 中文国产成人精品久久一 | 成人免费看片98欧美 | 人人搞人人搞 | 亚洲伦理一区 | 免费看污黄网站 | 婷婷色影院| 精品无人国产偷自产在线 | 精品在线你懂的 | 精品国产99| 婷婷狠狠操 | 91视频下载 | 五月亚洲| 91精品免费视频 | 国产91精品久久久久久 | 日日操天天操夜夜操 | av动态图片 | 亚洲一级片在线看 | 久久国产三级 | 国产精品毛片久久久久久 | 狠狠躁天天躁综合网 | 黄色毛片大全 | 久久香蕉国产精品麻豆粉嫩av | 在线一级片| 夜夜躁天天躁很躁波 | 日韩欧美v| www.五月天婷婷 | 人人射人人爽 | 五月激情婷婷丁香 | 欧美成人精品欧美一级乱 | 黄色网在线免费观看 | 国产一级二级在线播放 | 在线导航福利 | 亚洲天天做 | 成人黄色影片在线 | 丁香久久| 日本xxxxav | 成人在线观看你懂的 | 国产精品久久久久久妇 | 99爱精品视频 | 中日韩免费视频 | 婷婷六月综合亚洲 | 黄色成人小视频 | 99麻豆久久久国产精品免费 | 91大神一区二区三区 | 日精品 | 免费黄色在线播放 | 99国产情侣在线播放 | 中文字幕欧美激情 | 久久精品久久99 | 91av视频网站 | 成人黄色在线 | 日日综合 | 91av蜜桃| 国产1区在线 | 国产理论片在线观看 | 一区二区三区四区在线免费观看 | 最近高清中文在线字幕在线观看 | 国产在线污| 天天操天天操天天操天天操天天操天天操 | 色多多污污 | 久久精品视频在线免费观看 | 中文字幕在线一二 | 精品国产一区二区三区四区vr | 日韩在线免费高清视频 | 成人黄色在线电影 | 国产精品毛片久久 | 国产精品伦一区二区三区视频 | 午夜精品久久久久久久久久久久久久 | 97超碰人人看 | 欧洲精品码一区二区三区免费看 | 欧美综合在线观看 | 五月天视频网 | 国产在线观 | 婷婷伊人网 | 黄色大片国产 | 久久免费a| 一区精品在线 | 九九日韩| 在线成人免费电影 | 日日操夜夜操狠狠操 | 中字幕视频在线永久在线观看免费 | av在线免费观看不卡 | 五月精品 | 久久毛片网 | 99精品在线直播 | 91成熟丰满女人少妇 | 欧美色图p| 91精品一区国产高清在线gif | 久久久精品久久 | 亚洲一区日韩在线 | 亚洲国产成人精品在线观看 | 国产1级毛片 | 日本福利视频在线 | 国产手机在线观看 | 免费视频一级片 | 成人免费网视频 | 久久影视一区 | 久久久精品在线观看 | 亚洲 中文 在线 精品 | 中文字幕在线资源 | 99久久精品免费 | 国产又粗又猛又色又黄视频 | 十八岁以下禁止观看的1000个网站 | 天天草天天插 | 国产精品免费观看在线 | 99久高清在线观看视频99精品热在线观看视频 | 久久久免费观看 | 综合在线观看色 | 91久久精品日日躁夜夜躁国产 | 狠狠做深爱婷婷综合一区 | 国产高清无线码2021 | 人人揉人人揉人人揉人人揉97 | 中文字幕在线日 | 国产视频在线一区二区 | 91麻豆国产| 国产免费又黄又爽 | 8x成人免费视频 | 欧美亚洲一级片 | 久久99视频 | 97精品国产91久久久久久久 | 狠狠色噜噜狠狠狠狠2021天天 | 东方av免费在线观看 | 精品一区二区在线免费观看 | 一区二区三区www | 亚洲专区免费观看 | 日韩欧美视频在线 | 日日夜色 | 亚洲国产一区av | .精品久久久麻豆国产精品 亚洲va欧美 | 99久久精品久久久久久清纯 | 中文字幕在线观看日本 | 99日韩精品 | 国产午夜精品视频 | 国产精品a久久 | 国产精品视频地址 | 97理论电影| av在线小说 | 成人香蕉视频 | 国内精品视频免费 | 91成品视频| 欧美不卡视频在线 | 午夜精品久久久 | 国产亚洲精品女人久久久久久 | 色狠狠狠| 久久久久成| 97视频人人免费看 | 天天射天天干天天插 | 免费看久久久 | 国产中文字幕精品 | 日韩av影视在线观看 | 中文字幕中文字幕在线中文字幕三区 | 免费麻豆 | 国产成人精品一区二区三区 | 97成人超碰 | 色综合天天综合 | 国产成人久久精品77777 | 高清av影院 | 亚洲好视频 | 成人三级黄色 | 久久国产精品成人免费浪潮 |