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

Dubbo + Nacos這么玩就失去高可用的能力了

開發
本文介紹Dubbo配合Nacos搭建的微服務系統,在Nacos-Server集群重啟時出現的問題。過程中通過種種現象、猜測、翻看源碼、實踐,最終讓Nacos-Server平滑重啟。

我們常用的微服務框架是SpringCloud那一套,在服務遠程調用和注冊中心的選型上也有不少方案。在服務遠程調用上常用的有:Feign、Dubbo等,在注冊中心上常用的有:Nacos、Zookeeper、Consul、Eureka等。我們項目這兩塊的選型是這樣的:RPC調用-Dubbo、注冊中心和配置中心-Nacos。

一、故障開端

項目平穩運行了好幾年,有一天發現Nacos集群的Server內存有點高,所以想升級下機器配置,然后重啟。說干就干,立馬在測試環境的3臺Nacos-Server集群中,任意選了一臺進行停機,暫且叫它Nacos-Server-1吧。接下來就是故障了開端了。

停機之后,測試環境立馬有許多服務的接口調不通,等待許久,故障一直沒恢復。所以又趕緊把Nacos-Server-1啟動起來。要找找原因,否則無法在生產環境重啟Nacos-Server。

我一直的觀點是:出現疑難問題時,首先看異常信息,然后猜測原因,再通過實踐去驗證,最終可以通過源碼再去證實。而不是一上來就看源碼,那樣比醬香配拿鐵更傷頭。

二、、異常信息

當Nacos-server-1停機時,首先在Nacos-Client(即某個微服務應用)看到異常,主要有2個:

  • nacos-client與nacos-server心跳異常
  • dubbo微服務調用異常

(1) nacos-client與nacos-server心跳異常:

2023-09-06 08:10:09|ERROR|com.alibaba.nacos.client.naming.net.NamingProxy:reqApi|548|com.alibaba.nacos.naming.beat.sender|"request: /nacos/v1/ns/instance/beat failed, servers: [10.20.1.13:8848, 10.20.1.14:8848, 10.20.1.15:8848], code: 500, msg: java.net.SocketTimeoutException: Read timed out"|""
2023-09-06 08:10:09|ERROR|com.alibaba.nacos.client.naming.beat.BeatReactor$BeatTask:run|198|com.alibaba.nacos.naming.beat.sender|"[CLIENT-BEAT] failed to send beat: {"port":0,"ip":"10.21.230.14","weight":1.0,"serviceName":"DEFAULT_GROUP@@consumers:com.cloud.usercenter.api.PartyCompanyMemberApi:1.0:","metadata":{"owner":"ehome-cloud-owner","init":"false","side":"consumer","application.version":"1.0","methods":"queryGroupMemberCount,queryWithValid,query,queryOne,update,insert,queryCount,queryPage,delete,queryList","release":"2.7.8","dubbo":"2.0.2","pid":"6","check":"false","interface":"com.bm001.ehome.cloud.usercenter.api.PartyCompanyMemberApi","version":"1.0","qos.enable":"false","timeout":"20000","revision":"1.2.38-SNAPSHOT","retries":"0","path":"com.bm001.ehome.cloud.usercenter.api.PartyCompanyMemberApi","protocol":"consumer","metadata-type":"remote","application":"xxxx-cloud","sticky":"false","category":"consumers","timestamp":"1693917779436"},"scheduled":false,"period":5000,"stopped":false}, code: 500, msg: failed to req API:/nacos/v1/ns/instance/beat after all servers([10.20.1.13:8848, 10.20.1.14:8848, 10.20.1.15:8848])"|""
2023-09-06 08:10:10|ERROR|com.alibaba.nacos.client.naming.net.NamingProxy:callServer|613|com.alibaba.nacos.naming.beat.sender|"[NA] failed to request"|"com.alibaba.nacos.api.exception.NacosException: java.net.ConnectException: 拒絕連接 (Connection refused)
        at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:611)
        at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:524)
        at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:491)
        at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:426)
        at com.alibaba.nacos.client.naming.beat.BeatReactor$BeatTask.run(BeatReactor.java:167)
        
Caused by: java.io.IOException: Server returned HTTP response code: 502 for URL: http://10.20.1.14:8848/nacos/v1/ns/instance/beat?app=unknown&serviceName=DEFAULT_GROUP%40%40providers%3AChannelOrderExpressApi%3A1.0%3A&namespaceId=dev&port=20880&ip=10.20.0.200
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1914)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1512)
  at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
  at com.alibaba.nacos.common.http.client.response.JdkHttpClientResponse.getStatusCode(JdkHttpClientResponse.java:75)
  at com.alibaba.nacos.common.http.client.handler.AbstractResponseHandler.handle(AbstractResponseHandler.java:43)
"

(2) dubbo微服務調用異常:

2023-09-06 08:09:38|ERROR|runtimeExceptionHandler|135|http-nio-8080-exec-5|"發生系統異常"|"org.apache.dubbo.rpc.RpcException: No provider available from registry 10.20.1.13:8848,10.20.1.14:8848,10.20.1.15:8848 for service ClueAuntMatchApi:1.0 on consumer 10.21.230.14 use dubbo version 2.7.8, please check status of providers(disabled, not registered or in blacklist).
        at org.apache.dubbo.registry.integration.RegistryDirectory.doList(RegistryDirectory.java:599)
        at org.apache.dubbo.rpc.cluster.directory.AbstractDirectory.list(AbstractDirectory.java:74)
        at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.list(AbstractClusterInvoker.java:292)
        at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:257)
        at org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor.intercept(ClusterInterceptor.java:47)

三、根據異常進行猜測

熟悉Dubbo的朋友肯定知道這個錯誤please check status of providers(disabled, not registered or in blacklist).,基本上是代表:Provider下線了 或者 Consumer沒找到Provider。

根據以往使用dubbo + zookeeper的經驗,客戶端應該會拉取注冊中心的Provider的信息,然后本地緩存一份,即使注冊中心掛了,應該也能調用到別的服務。不至于出現完全找不到服務提供者的信息。

當思考不出來時,只能靠異常去猜測原因了。根據以上2個異常開始猜測。

1.猜測1

由于nacos-server-1掛了,導致nacos-client與server的心跳異常,導致本地緩存的provider的元數據被清掉了。有了猜測,趕緊查看nacos-client的源代碼,找到nacos-client 與 nacos-server 心跳的那一段:

圖片

繼續往下跟,可以看到這段核心代碼:

public String reqApi(String api, Map<String, String> params, Map<String, String> body, List<String> servers,
            String method) throws NacosException {
        params.put(CommonParams.NAMESPACE_ID, getNamespaceId());
        if (CollectionUtils.isEmpty(servers) && StringUtils.isEmpty(nacosDomain)) {
            throw new NacosException(NacosException.INVALID_PARAM, "no server available");
        }
        NacosException exception = new NacosException();
        if (servers != null && !servers.isEmpty()) {
            Random random = new Random(System.currentTimeMillis());
            int index = random.nextInt(servers.size());
            
            for (int i = 0; i < servers.size(); i++) {
                String server = servers.get(index);
                try {
                    return callServer(api, params, body, server, method);
                } catch (NacosException e) {
                    exception = e;
                    if (NAMING_LOGGER.isDebugEnabled()) {
                        NAMING_LOGGER.debug("request {} failed.", server, e);
                    }
                }
                index = (index + 1) % servers.size();
            }
        }
        
        if (StringUtils.isNotBlank(nacosDomain)) {
            for (int i = 0; i < UtilAndComs.REQUEST_DOMAIN_RETRY_COUNT; i++) {
                try {
                    return callServer(api, params, body, nacosDomain, method);
                } catch (NacosException e) {
                    exception = e;
                    if (NAMING_LOGGER.isDebugEnabled()) {
                        NAMING_LOGGER.debug("request {} failed.", nacosDomain, e);
                    }
                }
            }
        }
        NAMING_LOGGER.error("request: {} failed, servers: {}, code: {}, msg: {}", api, servers, exception.getErrCode(),
                exception.getErrMsg());
        throw new NacosException(exception.getErrCode(),
                "failed to req API:" + api + " after all servers(" + servers + ") tried: " + exception.getMessage());
    }

注意上面的這段代碼:

for (int i = 0; i < servers.size(); i++) {
    String server = servers.get(index);
    try {
        return callServer(api, params, body, server, method);
    } catch (NacosException e) {
        exception = e;
        if (NAMING_LOGGER.isDebugEnabled()) {
            NAMING_LOGGER.debug("request {} failed.", server, e);
        }
    }
    index = (index + 1) % servers.size();
}

通過以上這一段代碼可以知道,nacos-client與nacos-server集群里的隨機一臺通信,感興趣的朋友可以繼續閱讀源代碼,跟到最后會發現,只要有一次心跳是正常的,那就認為心跳正常。因為我只停了一臺nacos-server,但是與其他兩臺server依舊可以保持心跳,所以整個心跳過程雖然報錯,但是仍然是正常的,所以這個猜測放棄了,繼續猜測。

2.猜測2

既然dubbo與zookeeper是建立長連接進行socket通信,那dubbo與nacos-server可能也是建立了長連接進行socket通信,某個nacos-server掛了之后,可能因為nacos-server沒有zookeeper的選主機制,所以不會自動切換到別的可用的nacos-server去調用。

或者是nacos-server集群選主問題,選主后沒有及時通知到consumer,或者consumer與nacos本身通信機制有問題。總之就是因為某種機制,導致沒有自動切換到可用的nacos-server上,導致獲取不到provider元數據,自然就無法發起調用。

既然有了這個猜想,那就趕緊去證實:

繼續翻看nacos源碼,發現nacos提供了集群節點之間數據一致性保障,使用的是Raft協議(一致性的選主協議,最后在簡單介紹),源代碼如下:

既然有選主協議,那就看看為什么通信還是失敗了呢?繼續從nacos-server的異常信息入手,在nacos-server-1停機時,看到nacos-server的logs下多種異常信息:

在naming-raft.log里,如下異常信息:

java.lang.NullPointerException: null
  at com.alibaba.nacos.naming.consistency.persistent.raft.RaftCore.signalDelete(RaftCore.java:275)
  at com.alibaba.nacos.naming.consistency.persistent.raft.RaftConsistencyServiceImpl.remove(RaftConsistencyServiceImpl.java:72)
  at com.alibaba.nacos.naming.consistency.DelegateConsistencyServiceImpl.remove(DelegateConsistencyServiceImpl.java:53)
  at com.alibaba.nacos.naming.core.ServiceManager.easyRemoveService(ServiceManager.java:434)
  at com.alibaba.nacos.naming.core.ServiceManager$EmptyServiceAutoClean.lambda$null$1(ServiceManager.java:902)
  at java.util.concurrent.ConcurrentHashMap.computeIfPresent(ConcurrentHashMap.java:1769)
  at com.alibaba.nacos.naming.core.ServiceManager$EmptyServiceAutoClean.lambda$null$2(ServiceManager.java:891)
  at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
  at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
  at java.util.concurrent.ConcurrentHashMap$EntrySpliterator.forEachRemaining(ConcurrentHashMap.java:3606)
  at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
  at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
  at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
  at java.util.concurrent.ForkJoinPool.helpComplete(ForkJoinPool.java:1870)
  at java.util.concurrent.ForkJoinPool.externalHelpComplete(ForkJoinPool.java:2467)
  at java.util.concurrent.ForkJoinTask.externalAwaitDone(ForkJoinTask.java:324)
  at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:405)
  at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734)
  at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
  at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
  at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
  at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
  at com.alibaba.nacos.naming.core.ServiceManager$EmptyServiceAutoClean.lambda$run$3(ServiceManager.java:891)
  at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1597)
  at com.alibaba.nacos.naming.core.ServiceManager$EmptyServiceAutoClean.run(ServiceManager.java:881)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
2023-09-07 08:19:25,262 ERROR Raft remove failed.

naming-push.log里,如下異常信息:

java.lang.IllegalStateException: unable to find ackEntry for key: 10.21.140.23,43998,31247629183519634, ack json: {"type": "push-ack", "lastRefTime":"31247629183519634", "data":""}
  at com.alibaba.nacos.naming.push.PushService$Receiver.run(PushService.java:677)
  at java.lang.Thread.run(Thread.java:748)
2023-09-07 08:17:38,533 ERROR [NACOS-PUSH] error while receiving ack data

naming-distro.log里,如下異常信息:

2023-09-07 08:19:39,904 ERROR receive responsible key timestamp of com.alibaba.nacos.naming.iplist.ephemeral.dev-jzj##DEFAULT_GROUP@@providers:com.bm001.league.ordercenter.api.AdCluePoolApi:1.0: from 10.20.1.13:8848

將這些異常信息結合起來可以推斷出,在nacos-server-1停機時,nacos-server集群只剩余2臺機器,它們在利用Raft協議進行選主時,出現了異常。導致consumer沒有找到主節點,無法建立正確的通信,所以consumer獲取不到provider的元數據。

繼續證實這個推斷吧!

此時同時把nacos-server-1和nacos-server-2同時停機,只保留1臺nacos-server時,微服務之間調用就正常了。因為單個節點時,選主正常,consumer很快與nacos-server建立了通信。此時再把3臺全部啟動后,也是一切正常。至此可以證實2臺nacos-server確實存在選主問題。

至此問題解決,安心干活兒去了,哈哈!

3.Raft協議

簡單講下Raft協議,Raft協議主要用來滿足微服務CAP理論中的CP,保障集群環境下的數據一致性。在Raft理論中,把每一個集群節點定義了三種狀態,跟zookeeper的ZAB 協議類似:

Follower 追隨者:集群所有節點一開始都是 Follower。

Candidate 候選者:當集群的某個節點開始發起投票選舉 Leader 的時,先給自己投一票,這時就會從 Follower 變成 Candidate。

Leader 領導者:當集群的某個節點獲得大多數節點(超過一半)的投票,那么就會變成 Leader。

四、總結

經過以上的過程,有3點注意:

  • nacos-client和nacos-server的心跳只是告訴服務器,我這個客戶端的服務是正常的,同時nacos-server集群之間會異步同步服務信息。但是具體調用時依賴dubbo,dubbo在調用時,是單獨的通道從nacos-server拉取provider的元數據。
  • nacos-server重啟時,一定要選在深夜,避開正常流量時間。同時為了保障集群持續可用,集群節點數保持奇數,偶數時會出現選主問題,導致客戶端與服務端無法正常通信,無法發起微服務調用。也就失去了nacos集群的能力了。
  • 出現疑難問題時,首先看異常信息,然后猜測原因,再通過實踐去驗證,最終可以通過源碼再去證實。
責任編輯:趙寧寧 來源: 不焦躁的程序員
相關推薦

2020-05-29 12:29:25

華為云

2020-12-21 06:13:52

高可用Nacos服務端

2023-12-18 09:37:37

2025-08-13 01:11:00

2020-11-19 11:08:12

高可用架構互聯網

2016-12-02 20:43:28

Android

2022-10-31 08:47:21

人臉識別按鍵鍵盤

2024-02-26 08:32:04

2020-08-27 19:30:39

Chrome瀏覽器

2021-02-26 10:21:35

比特幣投資金融

2022-08-25 09:08:40

微服務架構

2022-12-06 17:30:04

2020-05-09 16:45:56

ping命令Linux

2014-08-26 11:03:54

2019-12-04 14:59:01

分布式緩存高可用

2023-05-08 12:12:56

2021-02-25 08:21:38

高可用風險故障

2021-02-07 08:13:18

@DateTimeFo@NumberFormSpring

2017-12-22 09:21:02

API架構實踐

2024-10-28 07:10:00

scroll標記前端網格布局
點贊
收藏

51CTO技術棧公眾號

精品欧美乱码久久久久久1区2区| 久久婷婷一区二区三区| 久久这里有精品视频| 精产国品一区二区三区| 丝袜在线视频| 97se亚洲国产综合自在线观| 国产精品大片wwwwww| 情侣偷拍对白清晰饥渴难耐| 亚洲天堂av资源在线观看| 黑人精品xxx一区一二区| 亚洲成人蜜桃| 亚洲美女性生活| 日韩综合在线视频| 欧美大片免费看| 亚洲AV无码成人精品区明星换面| www.一区| 欧美性xxxxx极品| 黑人巨茎大战欧美白妇| 欧美精品久久久久久久久久丰满| 狠狠色丁香久久婷婷综合_中 | 老司机精品免费视频| 一区二区三区欧洲区| 欧美性色综合网| 国产最新免费视频| 亚洲卡一卡二| 国产精品久线在线观看| 久久久婷婷一区二区三区不卡| 国产乱码精品一区二区| 首页综合国产亚洲丝袜| 韩国v欧美v日本v亚洲| 黄色a级片在线观看| 精品不卡一区| 精品91自产拍在线观看一区| 天天干天天玩天天操| 中文字幕在线高清| 亚洲福中文字幕伊人影院| 六月婷婷激情网| 婷婷激情在线| 国产精品少妇自拍| 先锋影音网一区| 黄色av网站在线看| 91亚洲午夜精品久久久久久| 国产伦精品一区二区三区免 | 黄页视频在线91| 日本波多野结衣在线| 久久av老司机精品网站导航| 日本不卡免费高清视频| 国产精品第一页在线观看| 五月激情久久久| www.日韩不卡电影av| wwwww黄色| av资源久久| 亚洲欧美日韩国产中文| 国产精品无码午夜福利| 日韩最新在线| 亚洲日本aⅴ片在线观看香蕉| 添女人荫蒂视频| 色吊丝一区二区| 日韩成人av网| 熟女高潮一区二区三区| 国内精品久久久久久久久电影网 | 麻豆传媒在线观看| 日本一区二区视频在线观看| 手机在线观看国产精品| 自拍视频在线播放| 欧美国产精品v| 一道精品一区二区三区| 免费网站成人| 一区二区三区日韩欧美| 和岳每晚弄的高潮嗷嗷叫视频| 成人超碰在线| 色综合中文字幕国产| 久久午夜夜伦鲁鲁一区二区| 成人av色网站| 欧美日韩精品电影| 国产成人精品综合久久久久99 | 欧美gv在线| 欧美日韩综合视频| 日本在线观看免费视频| 先锋影音网一区二区| 日韩欧美国产一区在线观看| 中文字幕天堂网| 国产99亚洲| 日韩视频免费在线观看| 永久看片925tv| 欧美喷水视频| 日韩av色综合| 国产绿帽刺激高潮对白| 波多野结衣精品在线| 日韩av在线电影观看| 黄网站在线播放| 午夜在线成人av| 黄色aaa级片| 91精品久久久久久综合五月天| 亚洲精品国产免费| 影音先锋男人看片资源| 影音先锋中文字幕一区| 国产精品jvid在线观看蜜臀 | 精品裸体舞一区二区三区| 黄色a一级视频| 亚州av乱码久久精品蜜桃| 隔壁老王国产在线精品| 日本三级一区二区三区| 粉嫩绯色av一区二区在线观看| 麻豆精品视频| 污视频网站在线免费| 91久久国产综合久久| 天天干天天曰天天操| 欧美**vk| 久久免费精品视频| 国产又粗又猛又爽| 久久久精品日韩欧美| 9色porny| 精品视频一二| 最新国产精品拍自在线播放 | а√天堂8资源在线官网| 岛国精品视频在线播放| 欧美69精品久久久久久不卡| 精品视频97| 2019国产精品自在线拍国产不卡| 国产精品丝袜黑色高跟鞋| www久久精品| 免费视频爱爱太爽了| 宅男噜噜噜66国产精品免费| 亚洲欧美一区二区三区在线| 久久久久久久福利| 激情五月播播久久久精品| 欧美韩国日本精品一区二区三区| 国产美女情趣调教h一区二区| 69精品人人人人| 日韩影视一区二区三区| 亚洲综合二区| 精品日本一区二区| 超碰97免费在线| 日韩免费观看高清完整版 | 嫩草研究院在线| 亚洲成人av资源| 久久久无码人妻精品无码| 亚洲精品国产偷自在线观看| 国产日韩换脸av一区在线观看| 日韩精品系列| 欧美日韩另类字幕中文| 绯色av蜜臀vs少妇| 欧美日韩国产欧| av免费精品一区二区三区| 超碰在线观看免费| 欧美一区二区三区在线| 午夜国产福利一区二区| 国产在线精品一区二区 | 亚洲日韩视频| 国产精品亚洲一区| 国产99re66在线视频| 精品少妇一区二区| 国产无套粉嫩白浆内谢| 成人激情文学综合网| 大伊香蕉精品视频在线| 国产一区调教| 国产91成人video| 日韩精品一二| 欧美日韩在线播放三区| av黄色免费在线观看| 韩国毛片一区二区三区| 三级在线免费观看| 99re热精品视频| 欧美亚洲国产成人精品| 国产经典自拍视频在线观看| 欧美日韩在线免费视频| 亚洲国产精品久| 成人福利视频网站| 久久国产亚洲精品无码| 久久99蜜桃| 91精品久久久久| 特级毛片在线| 亚洲精品小视频| 最新中文字幕第一页| 亚洲视频一区二区在线| 亚洲无人区码一码二码三码| 国产精品日本| 性欧美.com| 视频在线一区| 国产suv精品一区二区| 欧美成年黄网站色视频| 精品成人一区二区三区四区| 99精品人妻国产毛片| 国产精品第五页| 俄罗斯黄色录像| 日韩高清不卡一区二区| 992tv成人免费观看| 久久久久97| 国产欧美一区二区三区久久| 黄页在线观看免费| 伊人久久久久久久久久| www.精品视频| 欧美午夜免费电影| 久久精品www| 国产精品系列在线| 免费看毛片的网站| 久久精品国产99久久6| 玩弄中年熟妇正在播放| 国产韩日影视精品| 欧美精品欧美精品| 亚洲综合网狠久久| 国产精品无码专区在线观看| 92久久精品| 精品国产区一区二区三区在线观看| 人人妻人人澡人人爽久久av| 欧美日韩不卡在线| 天天干天天色综合| 亚洲一区二区三区视频在线播放| 美国美女黄色片| 91视频在线看| 中文字幕亚洲日本| 精品亚洲免费视频| 天堂在线资源视频| 亚洲一区成人| 国产av熟女一区二区三区| 日韩精品久久久久久久电影99爱| 国产欧美一区二区三区不卡高清| 亚洲成人1区| 国产精品久久久久久久久久小说| caoprom在线| 欧美人成在线视频| 成人福利片网站| 最好看的2019年中文视频| 欧美在线一卡| 亚洲精品动漫100p| 成人毛片视频免费看| 日韩一区二区在线观看| 91国在线视频| 欧美日韩成人一区二区| 91麻豆精品在线| 欧美日韩性视频| 久久午夜免费视频| 午夜婷婷国产麻豆精品| 动漫精品一区一码二码三码四码| 日韩一区在线免费观看| 国产亚洲精品精品精品| 国产蜜臀av在线一区二区三区| 欧美色图亚洲激情| 2023国产精品| 亚洲av无码一区二区三区网址| 国产ts人妖一区二区| 麻豆传媒在线看| 国产a区久久久| 国内自拍偷拍视频| 成人一级片在线观看| 亚洲av综合色区无码另类小说| 国产精品一区二区在线观看网站| 亚洲男人天堂2021| 国产成人自拍在线| 成人做爰69片免费| 99精品1区2区| 尤物视频最新网址| 国产精品午夜在线| 天天看天天摸天天操| 有码一区二区三区| 久久久久亚洲av片无码下载蜜桃 | 黄色一级片黄色| 亚洲激情视频| 欧美亚洲另类色图| 日韩精品国产欧美| 亚洲国产成人va在线观看麻豆| 激情深爱一区二区| 亚洲妇女无套内射精| 成人av免费在线| 亚洲熟妇一区二区三区| 欧美国产丝袜视频| 成人三级视频在线观看| 一区二区三区资源| 波多野结衣国产| 欧美性生活久久| 99久久久久成人国产免费| 欧美电影免费观看完整版| 午夜视频福利在线观看| 国产亚洲欧洲在线| 尤物视频在线看| 992tv成人免费影院| 成人看片毛片免费播放器| 7777精品伊久久久大香线蕉语言| 久久大胆人体视频| 少妇免费毛片久久久久久久久| 亚洲精品成人影院| 精品99在线视频| 国内成+人亚洲+欧美+综合在线| 911亚洲精选| 日本一区二区三区久久久久久久久不 | 成人小视频在线看| 国精产品一区一区三区mba视频 | 亚洲大尺度视频| 亚洲男女性事视频| 精品176二区| 国产99视频在线观看| 日韩成人视屏| 日韩在线观看电影完整版高清免费| 伊人久久大香线| 国产第一页视频| 国产成人自拍网| 中文字幕黄色网址| 午夜精品福利一区二区三区av| 中文字幕永久在线视频| 亚洲大尺度美女在线| 日本在线免费看| 欧美亚洲在线观看| 日韩三级精品| 亚洲三区在线观看| 香蕉国产精品偷在线观看不卡| 亚洲欧美日本一区二区| 久久久精品一品道一区| 欧美福利视频一区二区| 欧美一区二区三区免费视频| 国产日产精品久久久久久婷婷| 高清欧美一区二区三区| 亚洲热av色在线播放| 欧美在线播放一区| 亚洲激情网站| 一卡二卡三卡四卡五卡| 国产精品久久免费看| aaaaaa毛片| 精品偷拍各种wc美女嘘嘘| 少女频道在线观看高清| 91九色视频导航| 日韩极品一区| 黄色免费网址大全| 久久在线观看免费| 日韩欧美中文字幕一区二区| 日韩一区二区麻豆国产| 美女写真理伦片在线看| 国产精品久久久久久久7电影| 尤物tv在线精品| 国产一级爱c视频| 成人黄色a**站在线观看| 欧美精品一区二区蜜桃| 91精品国产色综合久久不卡蜜臀 | 欧美 日韩 国产 成人 在线 91| 久久视频在线看| 一区二区三区无毛| 亚洲 日韩 国产第一区| 日韩av电影免费观看高清完整版| 色呦呦一区二区| 欧美日韩国产一区二区| 日本xxxxwww| 66m—66摸成人免费视频| 精品无人区一区二区| 青青草成人免费在线视频| 波多野结衣中文字幕一区二区三区| 久久国产精品二区| 亚洲大胆人体视频| 成人免费观看在线观看| 国产一区二区高清不卡| 国产欧美不卡| 在线免费观看麻豆| 一本久久精品一区二区| 国产系列在线观看| 国产精品美女主播| 国产精品久久久久久影院8一贰佰| 羞羞的视频在线| 亚洲日本电影在线| 亚洲第一天堂在线观看| 久久久午夜视频| 鲁大师精品99久久久| 成人在线免费在线观看| 国产欧美日韩综合精品一区二区| 五月激情丁香网| 久久的精品视频| 大陆精大陆国产国语精品 | 日韩精品电影一区亚洲| 成人激情五月天| 欧美高清视频不卡网| 日韩三级免费| 久久久久久久久久久一区| 视频精品一区二区| 国产精品久久国产精麻豆96堂| 这里只有精品电影| 波多野结衣中文字幕久久| 免费一区二区三区| 久久国产免费看| 国产在线成人精品午夜| 亚洲天堂男人天堂| 国产亚洲高清一区| www.com毛片| 亚洲欧洲www| 天天综合天天综合| 国产精品自产拍在线观| 黄色欧美日韩| 日本人亚洲人jjzzjjz| 91精品欧美一区二区三区综合在 | 亚洲影影院av| 亚洲欧美视频| 成熟的女同志hd| 亚洲精品视频免费| 国产精区一区二区| 欧美精品色婷婷五月综合| 亚洲同性gay激情无套| 视频国产在线观看| 91影视免费在线观看| 午夜一区在线| 久久国产精品波多野结衣av | 日韩精品分区| 亚洲成人第一| 95精品视频在线|