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

分布式進(jìn)階-鏈路追蹤SpringCloudSleuth、Zipkin【實(shí)戰(zhàn)篇】

開發(fā) 架構(gòu)
Spring Cloud Sleuth 是 Spring Cloud 生態(tài)系統(tǒng)的一部分,它是一個分布式追蹤解決方案,用于監(jiān)視微服務(wù)架構(gòu)中的請求流程,并幫助開發(fā)者跟蹤請求在不同微服務(wù)之間的傳播路徑。

一、前言

我們在使用微服務(wù)的時候,往往涉及到各個微服務(wù)之間的調(diào)用,肯定會存在深度的調(diào)用鏈路,如果出現(xiàn)BUG或者異常,就會讓問題定位和處理效率非常低。有了Sleuth ,就可以幫助我們記錄、跟蹤應(yīng)用程序中的請求和操作。通常與 Zipkin 配合使用,從而提供更全面的可視化應(yīng)用程序跟蹤和分析功能。

就像ElasticSearch和Kibana一樣!

復(fù)雜的鏈路調(diào)用如下圖所示:

在繼續(xù)往下看的同時,需要你具備Springboot整合Nacos構(gòu)建一個聚合項(xiàng)目的能力。

當(dāng)然如果不想自己來,小編也給大家準(zhǔn)備好了。大家可以下載運(yùn)行一下,開始下面的實(shí)戰(zhàn)!

防止Github訪問不了,這里把代碼提交到了Gitee。

cloud-sleuth-zipkin-demo代碼下載地址:https://gitee.com/wang-zhenjun/cloud-sleuth-zipkin-demo

二、Spring Cloud Sleuth 介紹

1、簡介

Spring Cloud Sleuth 是 Spring Cloud 生態(tài)系統(tǒng)的一部分,它是一個分布式追蹤解決方案,用于監(jiān)視微服務(wù)架構(gòu)中的請求流程,并幫助開發(fā)者跟蹤請求在不同微服務(wù)之間的傳播路徑。

Sleuth主要用于解決微服務(wù)架構(gòu)中的分布式系統(tǒng)跟蹤和調(diào)試問題。

官網(wǎng)文檔:https://docs.spring.io/spring-cloud-sleuth/docs/2.2.8.RELEASE/reference/html/。

2、核心概念

我們可以看一下官網(wǎng)的圖片:

簡單名詞介紹:

?

cs:「客戶端發(fā)送」,客戶已提出請求。該注釋指示跨度的開始。sr:「服務(wù)器已接收」,服務(wù)器端收到請求并開始處理。從此時間戳中減去cs時間戳即可得出網(wǎng)絡(luò)延遲。ss:「服務(wù)器發(fā)送」,在請求處理完成時(當(dāng)響應(yīng)發(fā)送回客戶端時)進(jìn)行注釋。從這個時間戳中減去sr時間戳就可以得出服務(wù)器端處理請求所需的時間。cr:「客戶端已收到」,表示跨度的結(jié)束。客戶端已成功收到服務(wù)器端的響應(yīng)。從此時間戳中減去cs時間戳即可得出客戶端從服務(wù)器接收響應(yīng)所需的整個時間。

?

詳細(xì)信息可以看官網(wǎng)介紹,總結(jié)一下:

名詞

翻譯

解釋

Trace

追蹤

Trace 是一個請求的整體追蹤。它代表了從請求的起始點(diǎn)到結(jié)束點(diǎn)的完整路徑,經(jīng)過多個微服務(wù)。每個 Trace 都有一個唯一的 Trace ID。

Span

跨度

Span 是 Trace 中的一個小段,它代表了請求在某個特定微服務(wù)上的處理過程。Spans 之間有父子關(guān)系,它們可以形成一個層次結(jié)構(gòu),以表示請求的處理路徑。

Trace ID

追蹤標(biāo)識

Trace ID 是唯一標(biāo)識一個 Trace 的標(biāo)識符。它在整個 Trace 中保持不變,用于將不同的 Span 關(guān)聯(lián)到同一個 Trace 上。

Span ID

跨度標(biāo)識

Span ID 是唯一標(biāo)識一個 Span 的標(biāo)識符。它用于在不同 Span 之間建立父子關(guān)系。

Parent Span ID

父 Span 標(biāo)識

父 Span ID 是標(biāo)識一個 Span 的父 Span 的標(biāo)識符。它用于建立 Span 之間的關(guān)系。

Annotations

注解

Annotations 是關(guān)于 Span 的額外信息,通常用于記錄 Span 的開始和結(jié)束時間、操作名稱、以及其他相關(guān)信息。Annotations 可以幫助你更好地理解請求的處理過程。

Binary Annotations

二進(jìn)制注解

Binary Annotations 是鍵值對形式的信息,用于記錄與 Span 相關(guān)的自定義信息,例如請求的狀態(tài)、錯誤信息等。

Collector

收集器

Collector 是用于收集追蹤信息的組件,它將追蹤數(shù)據(jù)發(fā)送到后端存儲或可視化工具(如Zipkin或Jaeger)。Collector 可以將 Span 數(shù)據(jù)持久化,以供分析和監(jiān)視使用。

Sampler

采樣器

Sampler 用于確定是否對一個請求進(jìn)行追蹤。它決定是否為請求創(chuàng)建一個 Trace。Sampler 可以根據(jù)策略決定是否記錄某個請求的 Trace 數(shù)據(jù),以避免記錄過多的追蹤信息,從而降低性能開銷。

「官網(wǎng)的圖,每一個代表一個組件,他們之間進(jìn)行調(diào)用,畫的少了Trace Id,加上就好了。」

每個組件都會生成一個 Trace Id(全局唯一),還會有 Span Id、Parent Id 三部分組成。鏈路上的所有組件組成一個完整的 Trace。

「注意:」

「頭鏈路Parent Id = null,其余的都指向上一個組件的Span Id,從而形成鏈路。」

「一次鏈路調(diào)用所有的組件Trace Id都是一樣的。」

「這里說的組件就是一個個的微服務(wù)!」

三、 Zipkin介紹和搭建

1、定義

Zipkin 是一個分布式追蹤系統(tǒng)。它有助于收集解決服務(wù)架構(gòu)中的延遲問題所需的計時數(shù)據(jù)。功能包括該數(shù)據(jù)的收集和查找。

Zipkin官網(wǎng)地址:https://zipkin.io/。

2、核心概念

名詞

翻譯

解釋

Trace

追蹤

Trace 代表整個請求的追蹤路徑,跨越不同的服務(wù)。

Span

跨度

Span 是基本工作單位,代表了請求在單個服務(wù)中的處理過程。

Trace ID

追蹤標(biāo)識

Trace ID 是唯一標(biāo)識一個 Trace 的標(biāo)識符,用于將不同的 Span 關(guān)聯(lián)到同一個 Trace 上。

Annotations

注解

Annotations 用于記錄 Span 的關(guān)鍵事件,通常包括開始和結(jié)束時間、操作名稱等。

Binary Annotations

二進(jìn)制注解

Binary Annotations 用于記錄額外的自定義信息,例如請求狀態(tài)、錯誤信息等。

Collector

收集器

Collector 負(fù)責(zé)接收和存儲從不同服務(wù)發(fā)送的 Span 數(shù)據(jù),以便后續(xù)的檢查和分析。

Query and Visualization

查詢和可視化

提供了查詢和可視化界面,允許用戶查看和分析跟蹤數(shù)據(jù),以幫助故障排查和性能優(yōu)化。

盡管Sleuth 和 Zipkin有些術(shù)語和概念中有相似之處,但它們是兩個不同的工具,各自有自己的實(shí)現(xiàn)和用途。

「Spring Cloud Sleuth 用于生成和傳播跟蹤信息,而 Zipkin 用于收集、存儲、查詢和可視化這些信息。它們可以協(xié)同工作,但也可以獨(dú)立使用。」

3、docker搭建

官方有三種方式搭建,推薦使用:「如果您熟悉 Docker,這是首選的啟動方法。」

Docker Zipkin項(xiàng)目能夠構(gòu)建 docker 鏡像、提供腳本和docker-compose.yml 用于啟動預(yù)構(gòu)建鏡像的腳本。

https://github.com/openzipkin/docker-zipkin/blob/master/docker-compose.yml。

最快的啟動方式是直接運(yùn)行最新的鏡像:

docker run -d -p 9411:9411 openzipkin/zipkin

我們啟動成功,在Windows下訪問看是否成功!

http://192.168.239.130:9411/zipkin/

「注意:」

「Zipkin默認(rèn)將追蹤數(shù)據(jù)信息保存到內(nèi)存,重啟服務(wù)后追蹤數(shù)據(jù)丟失,Zipkin支持將追蹤數(shù)據(jù)持久化到MySQL或ES。」

可以直接使用docker-componse運(yùn)行:

docker-componse運(yùn)行腳本:https://github.com/openzipkin/zipkin/tree/master/docker/examples

可以自行試一下,這里就不帶大家演示了!

四、Springboot整合

今天我們來進(jìn)行簡單的鏈路模擬:

「service-order模塊調(diào)用service-stock模塊調(diào)用service-message模塊」

「通信我們使用openFeign來進(jìn)行調(diào)用,三個模塊統(tǒng)一使用nacos進(jìn)行注冊」

大家可以下載一下項(xiàng)目體驗(yàn)一下,可以自己搭建,就是一個聚合項(xiàng)目!

結(jié)構(gòu)如下:

1、導(dǎo)入依賴

這是父依賴。

<properties>
    <spring.boot.version>2.7.3</spring.boot.version>
    <spring.cloud.dependencies.version>2021.0.1</spring.cloud.dependencies.version>
    <spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <org.projectlombok.lombok>1.18.26</org.projectlombok.lombok>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud.dependencies.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring.cloud.alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring.boot.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring.boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${org.projectlombok.lombok}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

spring-cloud-dependencies里包含了sleuth、zipkin的依賴,父不需要再定義管理版本。

子依賴要比父依賴多了sleuth、zipkin兩個,還有openFeign的包!

<!-- Sleuth依賴項(xiàng) -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

<!--Zipkin 依賴-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

2、yml配置

三份自己改一下端口和應(yīng)用名稱:service-order、service-stock、service-message;端口分別為:9000、9001、9002

server:
  port: 9000

spring:
  application:
    # 應(yīng)用名稱
    name: service-order
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊地址
        server-addr: localhost:8848
  zipkin:
    base-url: http://192.168.239.130:9411
    sender:
      type: web # 設(shè)置使用 http 的方式傳輸數(shù)據(jù)

3、詳細(xì)代碼

記得在啟動類上添加注解:@EnableFeignClients,表示開啟feign調(diào)用。

完整的結(jié)構(gòu)如下:

下面把具體代碼給大家:OrderController :

/**
 * @author wangzhenjun
 * @date 2023/10/31 14:25
 */
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/order")
@RestController
public class OrderController {

    private final RemoteStockFeignService remoteStockFeignService;
    /**
     * 模擬下單流程
     * @param userId
     * @param productId
     * @return
     */
    @GetMapping("/createOrder")
    public String createOrder(@RequestParam("userId") Integer userId, @RequestParam("productId") Integer productId) {
        log.info("====>訂單模塊<========");
        // 調(diào)用庫存服務(wù)進(jìn)行庫存扣減
        String stockResult = remoteStockFeignService.subtractStock(userId,productId,1);
        log.info("扣減庫存結(jié)果:{}", stockResult);
        // 還有其他。。。。。

        return "下單成功!";
    }
}

RemoteStockFeignService :

/**
 * @author wangzhenjun
 * @date 2023/10/31 14:29
 */
@FeignClient(value = "service-stock")
public interface RemoteStockFeignService {

    @GetMapping(value = "/stock/subtractStock")
    String subtractStock(@RequestParam(value = "userId") Integer userId,@RequestParam(value = "productId") Integer productId,@RequestParam(value = "num") Integer num);
}

StockController :

/**
 * @author wangzhenjun
 * @date 2023/10/31 14:40
 */
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/stock")
@RestController
public class StockController {

    private final RemoteMessageFeignService remoteMessageFeignService;

    @GetMapping(value = "/subtractStock")
    public String subtractStock(@RequestParam(value = "userId") Integer userId,@RequestParam(value = "productId") Integer productId, @RequestParam(value = "num") Integer num) {
        log.info("====>庫存模塊<========");
        if (productId < 1) {
            throw new RuntimeException("商品不存在,請重新請求!");
        }
        // 調(diào)用短信模塊給用戶發(fā)下單成功短信
        String messageResult = remoteMessageFeignService.sendMessage(userId);
        log.info("發(fā)送短信結(jié)果:{}", messageResult);
        return "扣減庫存成功!";
    }
}

RemoteMessageFeignService:

/**
 * @author wangzhenjun
 * @date 2023/10/31 14:29
 */
@FeignClient(value = "service-message")
public interface RemoteMessageFeignService {

    @GetMapping(value = "/message/sendMessage/{userId}")
    String sendMessage(@PathVariable(value = "userId") Integer userId);
}

MessageController :

/**
 * @author wangzhenjun
 * @date 2023/10/31 14:40
 */
@Slf4j
@RequestMapping("/message")
@RestController
public class MessageController {


    @GetMapping(value = "/sendMessage/{userId}")
    public String sendMessage(@PathVariable(value = "userId") Integer userId) {
        log.info("====>短信模塊<========");
        if (userId < 1 || userId > 999999) {
            throw new RuntimeException("用戶不存在,請重新請求!");
        }
        return "發(fā)送短信成功!";
    }
}

4、啟動nacos

Windows下啟動nacos,找到nacos下的bin目錄執(zhí)行命令:

startup.cmd -m standalone

找到地址,訪問。用戶名密碼都是nacos。可以在配置文件中修改!

5、注冊成功

我們把三個模塊進(jìn)行啟動!nacos上已經(jīng)可以看到我們的服務(wù)注冊上了,可以通過服務(wù)名進(jìn)行調(diào)用了!

五、調(diào)試

我們以訂單模塊為入口進(jìn)行鏈路調(diào)用:

http://localhost:9000/order/createOrder?userId=2&productId=89。

1、查看日志

我們看一下訂單模塊的日志。

可以總結(jié)出Sleuth 日志格式:

[service-order,e36ebe859a7473e7,e36ebe859a7473e7]

[服務(wù)名稱,Trace ID,Span ID]

在最開始的鏈路上,Trace ID 和 Span ID 的值通常是相同的,這是因?yàn)樗鼈兌即砹苏麄€請求的追蹤。

「一條鏈路使用一個相同的Trace ID。」

在日志沒有體現(xiàn)出Parent Span ID,不過不應(yīng)該,我們可以通過Zipkin來看鏈路!

2、Zipkin查看

前面我們已經(jīng)進(jìn)入了Zipkin頁面了,只需要刷新一下就可以看到每次鏈路的記錄了!

點(diǎn)擊SHOW按鈕,可以看到詳細(xì)鏈路信息:

耗時,深度,Trance ID 還是挺好的。

3、模擬異常

我們來把商品修改一下:

http://localhost:9000/order/createOrder?userId=2&productId=-89。

此時是庫存服務(wù)出現(xiàn)的問題,就不會展示下一個消息模塊,自然而然的找到了出現(xiàn)問題的鏈路和根源!

在模擬一個三級錯誤的,就會看到鏈路的最后一級!

下面還可以查詢依賴關(guān)系:

點(diǎn)擊節(jié)點(diǎn),可以查看匯總,調(diào)用次數(shù)和失敗次數(shù)的統(tǒng)計分析!

六、總結(jié)

分布式鏈路追蹤已經(jīng)成為現(xiàn)代微服務(wù)架構(gòu)中不可或缺的工具之一。

通過它,我們可以清晰地跟蹤請求的調(diào)用路徑,了解系統(tǒng)的性能,診斷潛在問題,并不斷優(yōu)化我們的應(yīng)用程序。

Spring Cloud Sleuth讓我們輕松生成和傳播跟蹤信息,使我們的微服務(wù)能夠協(xié)同工作,無縫地捕捉每個請求的處理路徑。

Zipkin作為一個流行的分布式追蹤系統(tǒng),為我們提供了可視化界面,使我們能夠以圖形化的方式查看和分析跟蹤數(shù)據(jù)。

「當(dāng)然簡單系統(tǒng)上這個大材小用,但是我們可以在項(xiàng)目中試試,加了也不會影響程序的正常運(yùn)行,做一個簡單的知識儲備!」

責(zé)任編輯:姜華 來源: 小王博客基地
相關(guān)推薦

2020-12-16 09:24:18

Skywalking分布式鏈路追蹤

2024-06-07 13:04:31

2024-08-21 08:09:17

2025-10-10 08:58:13

2024-01-26 07:49:49

Go分布式鏈路

2022-05-25 08:23:32

ZipKinTwitter開源項(xiàng)目

2021-02-22 07:58:51

分布式鏈路追蹤

2020-09-11 09:44:04

微服務(wù)分布式鏈路

2024-07-09 08:11:56

2024-11-28 08:57:21

分布式鏈路Skywalking

2021-11-08 14:10:37

分布式Spring鏈路

2022-11-26 09:49:07

分布式鏈路追蹤技術(shù)

2022-08-05 10:03:17

分布式微服務(wù)

2022-05-23 08:23:24

鏈路追蹤SleuthSpring

2023-10-26 00:00:00

分布式系統(tǒng)定位

2024-10-24 08:51:19

分布式鏈路項(xiàng)目

2020-05-26 11:59:30

日志鏈路微服務(wù)架構(gòu)

2011-09-13 14:21:00

IRF交換機(jī)基礎(chǔ)分布式鏈路聚合

2022-02-18 09:30:48

分布式Spring應(yīng)用程序

2022-09-25 22:19:24

Dapr分布式追蹤
點(diǎn)贊
收藏

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

亚洲一区二区三区影院| 精品亚洲国内自在自线福利| 亚洲精品按摩视频| 激情五月婷婷久久| 乱人伦中文视频在线| 国产91精品入口| 日本亚洲欧美成人| 国产免费久久久久| 久久中文资源| 在线不卡免费av| 欧美 日韩 国产在线观看| 调教视频免费在线观看| 97se亚洲国产综合自在线| 国产精品高潮在线| www..com国产| 正在播放日韩欧美一页| 国产一区二区三区四区福利| 男人添女人荫蒂国产| 日韩精品免费观看视频| 亚洲观看高清完整版在线观看| 三区精品视频观看| 午夜福利一区二区三区| 国产sm精品调教视频网站| 国产精品露脸自拍| 9i看片成人免费看片| 我不卡手机影院| 亚洲天堂影视av| av在线播放网址| 1313精品午夜理伦电影| 欧美日韩国产免费| 99热手机在线| 欧美日韩视频网站| 精品福利在线视频| 久久99中文字幕| 日本h片在线| 亚洲欧美偷拍三级| 日本一区视频在线播放| 日韩专区一区二区| www.色综合.com| 国产精品露出视频| 性一交一乱一透一a级| 精品一区二区三区影院在线午夜| 国产成人精彩在线视频九色| 国产精品人人人人| 亚洲一区久久| 国产91精品久| 亚洲 欧美 成人| 性高湖久久久久久久久| 久久久亚洲欧洲日产国码aⅴ| 欧美毛片在线观看| 欧美午夜在线| 久久久女女女女999久久| 久久久久久久国产精品毛片| 一级欧洲+日本+国产| 美女999久久久精品视频| 91精品一区二区三区蜜桃| 天天色综合色| 欧美成人精品在线| 国产一区二区三区在线视频观看| 91精品精品| 欧美另类极品videosbestfree| 日韩成人毛片视频| 国产综合网站| 国内精品美女av在线播放| 日本少妇激情舌吻| 久久久久国产精品一区三寸| 国产a∨精品一区二区三区不卡| 日韩熟女一区二区| 免费一级片91| 亚洲影影院av| 免费av一级片| 久久久久99精品一区| 视频在线精品一区| a视频在线观看免费| 亚洲一级不卡视频| 免费大片在线观看| 久久不卡日韩美女| 日韩一区二区三区三四区视频在线观看| 佐佐木明希电影| 亚洲品质自拍| www.色综合| 久久综合激情网| 日韩综合小视频| 96国产粉嫩美女| 天天干天天操av| 国产日韩欧美麻豆| 欧美另类videosbestsex日本| heyzo中文字幕在线| 日本福利一区二区| 中文字幕 欧美 日韩| 日韩有码一区| 久久精品视频播放| 91香蕉在线视频| 麻豆成人在线观看| 国产三区二区一区久久| 97电影在线看视频| 午夜在线电影亚洲一区| 午夜国产一区二区三区| 久久91在线| 久久精品在线视频| 一级黄色av片| 国产suv一区二区三区88区| 欧美亚洲另类久久综合| 1区2区3区在线视频| 欧美色综合网站| 老司机午夜免费福利| 欧美国产小视频| 91大神福利视频在线| 国产又爽又黄又嫩又猛又粗| av一区二区三区在线| 激情图片qvod| av在线日韩| 亚洲第一中文字幕在线观看| 国产在线观看免费视频软件| 国产精品乱看| 国产精品国产三级欧美二区| 麻豆视频免费在线观看| 一本大道av一区二区在线播放| 五月天婷婷在线观看视频| 国产探花一区在线观看| 久久噜噜噜精品国产亚洲综合| 一区二区视频网| 久久免费午夜影院| 男人插女人视频在线观看| 国产精品亚洲一区二区在线观看| 中文字幕国产亚洲| 六月丁香激情综合| av电影天堂一区二区在线| 日本a在线天堂| 日本超碰一区二区| 久久精品国产亚洲精品| 亚洲综合精品视频| 国产精品毛片a∨一区二区三区| 成年网站在线免费观看| 看全色黄大色大片免费久久久| 欧美精品999| 国产富婆一级全黄大片| 亚洲欧洲综合另类| 亚洲网中文字幕| 图片区亚洲欧美小说区| 亚洲综合在线小说| av黄色在线| 日韩免费电影一区| 激情四射综合网| 高清不卡在线观看| 91.com在线| 高清精品视频| 97热在线精品视频在线观看| 日本免费一区视频| 精品久久久国产| 毛茸茸多毛bbb毛多视频| 亚洲中午字幕| 日本精品一区| 久久人体av| 久久成年人视频| 国产哺乳奶水91在线播放| 亚洲日本在线天堂| aaaaa黄色片| 伊人激情综合| 欧美精品亚洲精品| 久久爱.com| 欧美老女人xx| 三级做a全过程在线观看| 色综合久久久久综合| 免费一级黄色录像| 黄网站免费久久| 国产在线视频在线| 亚洲精品国产setv| 国产精品福利网站| 黄黄的网站在线观看| 精品福利一二区| 狠狠人妻久久久久久综合| 国产欧美视频一区二区| 91视频这里只有精品| 欧美午夜一区| 欧美极品色图| 在线观看亚洲精品福利片| 欧美成人午夜视频| 青青草娱乐在线| 欧美日韩一二三区| 欧美三级小视频| 久久综合九色综合97_久久久| 九九热在线免费| 欧美日韩国产亚洲一区| 欧美一区二区三区在线播放| 成人精品国产| 欧美激情一级二级| 国产资源在线播放| 日韩欧美一级片| 日韩中文字幕在线观看视频| 中文字幕永久在线不卡| 91精品又粗又猛又爽| 日韩黄色小视频| 成人一级生活片| av影片在线一区| 国产 高清 精品 在线 a| 亚洲伦乱视频| 久久久亚洲网站| 蜜芽在线免费观看| 亚洲精品视频免费在线观看| 97在线播放免费观看| 欧美日韩国产精品一区| 成人免费精品动漫网站| 91啪亚洲精品| 日本wwwxx| 久久成人av少妇免费| 日韩av片在线看| 欧美日韩少妇| 亚洲午夜精品国产| 亚洲精品3区| 国产a一区二区| 天堂久久一区| 国产成人自拍视频在线观看| segui88久久综合9999| 久久综合88中文色鬼| 国产高清自拍视频在线观看| 亚洲国产97在线精品一区| 国产精品毛片一区视频播| 色婷婷久久久综合中文字幕 | 中日韩av在线播放| 亚洲一区日本| av动漫在线看| 亚洲第一毛片| 亚洲中文字幕无码一区二区三区| av伊人久久| 日本不卡免费新一二三区| 女一区二区三区| www.久久久| 欧美高清hd| 91久久精品日日躁夜夜躁国产| 韩日精品一区二区| 热99在线视频| 一区二区精品伦理...| 欧美在线www| 亚洲精品88| 欧美中文在线观看| 综合日韩av| 欧美在线视频a| 涩涩涩在线视频| 久久久久亚洲精品国产| 牛牛精品视频在线| 九九视频这里只有精品| 怡红院在线播放| 欧美日韩成人免费| 亚洲大胆人体大胆做受1| 久久天天躁日日躁| 中文字幕中文字幕在线中高清免费版| 久久久精品免费| 综合图区亚洲| 国内精品小视频在线观看| 国精产品一区一区三区mba下载| 久久97久久97精品免视看| 性xxxxfjsxxxxx欧美| 久久99久久99精品中文字幕| 色呦呦呦在线观看| 97免费在线视频| 日本韩国欧美| 国产欧美中文字幕| 国产麻豆精品| 国产高清在线一区二区| 日韩影视高清在线观看| 四虎影视永久免费在线观看一区二区三区| 欧美日韩国产高清电影| 中文字幕一区二区三区乱码 | 欧美亚洲国产日韩| 欧美精品亚洲精品| 日韩片欧美片| 免费极品av一视觉盛宴| 悠悠资源网久久精品| 99免费视频观看| 韩国成人在线视频| 亚洲图片欧美另类| 欧美激情综合五月色丁香| 搜索黄色一级片| 婷婷中文字幕综合| 中文字幕人妻互换av久久| 日韩一区二区在线看片| 天堂中文在线8| 在线中文字幕日韩| 污污在线观看| 日本欧美爱爱爱| 国产va免费精品观看精品| 精品国产一区二区三区麻豆小说| 国产成人精品999在线观看| 亚洲第一页在线视频| 在线精品在线| 久久久久国产一区| 丁香天五香天堂综合| 超碰97av在线| 亚洲成人av电影| 在线免费av网| 亚洲精品久久久久久久久久久| 91福利在线视频| 97欧美精品一区二区三区| 色8久久久久| 久久久久久a亚洲欧洲aⅴ| 欧美成人激情| 毛片一区二区三区四区| 国产一区二区三区黄视频| 日韩av在线看免费观看| 亚洲另类在线视频| 久久久黄色大片| 欧美成人a视频| 在线毛片网站| 秋霞成人午夜鲁丝一区二区三区| 欧美激情三级| 亚洲欧美精品| 老司机一区二区三区| 亚洲美女高潮久久久| 亚洲欧洲三级电影| www.欧美色| 亚洲国产日韩欧美在线99| 91精品久久久久久粉嫩| 国产精品久久久久久久久久| 果冻天美麻豆一区二区国产| 国产又粗又爽又黄的视频| 日韩精品一级二级| 久久人人妻人人人人妻性色av| 一区二区三区精品| 91影院在线播放| 国产一区二区成人| 中文字幕21页在线看| 精品国产乱码久久久久久88av | 久久6精品影院| 九九热这里有精品| 亚洲春色在线| 日韩经典中文字幕一区| 老司机福利av| 大伊人狠狠躁夜夜躁av一区| 日韩一区二区三区不卡| 欧美日韩国产成人| 日本伊人久久| 久久久无码中文字幕久...| 久久99最新地址| 一区二区三区在线播放视频| 欧美视频一区在线| 北条麻妃在线| 国产精品视频xxxx| 大胆日韩av| 欧美午夜aaaaaa免费视频| 国产亚洲欧美激情| 国产成人麻豆免费观看| 国产亚洲精品综合一区91| 免费观看亚洲| 日本在线高清视频一区| 秋霞成人午夜伦在线观看| 国产精成人品免费观看| 欧洲一区二区三区在线| www在线播放| 91精品美女在线| 在线电影一区二区| 欧美熟妇精品一区二区| 亚洲第一av色| 天堂在线中文网| 日本精品在线视频| 日韩免费看片| 在线成人精品视频| 香蕉加勒比综合久久| 免费在线性爱视频| 国产精品日韩欧美| 91精品久久久久久久蜜月| 91成人在线观看喷潮蘑菇| 精品国产乱码久久久久久天美| 国产中文在线视频| 国产精品最新在线观看| 亚洲乱码在线| 中国一级特黄录像播放| 色素色在线综合| 国产网站在线免费观看| 国产精品swag| 久久久久99| 日韩成人短视频| 亚洲精品美女在线观看播放| 台湾佬中文娱乐久久久| 伊人av成人| 99热精品一区二区| 五月婷婷丁香在线| 欧美大肥婆大肥bbbbb| 老牛影视av一区二区在线观看 | 国产美女一区二区三区| 日本少妇做爰全过程毛片| 亚洲美女性视频| 99精品在线免费观看| 国产美女网站在线观看| 中文字幕 久热精品 视频在线| av无码精品一区二区三区宅噜噜| 97在线观看免费| 91亚洲国产| 亚洲天堂网一区二区| 欧美精品aⅴ在线视频| 黄色视屏在线免费观看| 一区二区三区四区五区精品 | 少妇的滋味中文字幕bd| 日韩精品一区国产麻豆| 亚洲四虎影院| 黄色成人在线看| 1000部国产精品成人观看| 欧美拍拍视频| 国产精品亚洲一区| 九色|91porny|