精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

日本一区二区欧美| 国产一级做a爰片久久| 精品国产va久久久久久久| 亚洲天堂偷拍| 亚洲区一区二区| 污视频网址在线观看| gogo高清在线播放免费| 97国产精品videossex| 国产精品免费一区| 日本a在线观看| 欧美日韩中字| 欧美精品一区二区三区很污很色的| 欧美成人精品免费| av在线电影观看| 成人国产在线观看| 国产精品亚洲аv天堂网| 久久精品国产亚洲av香蕉| 精品九九在线| 亚洲精品狠狠操| 亚洲欧美天堂在线| 欧美专区福利免费| 亚洲国产日韩a在线播放性色| 日本一区二区三区四区高清视频| 国产成人a人亚洲精品无码| 一区二区日本视频| 九九精品在线观看| 精品在线观看一区| 国产欧美一区| 日韩精品欧美国产精品忘忧草 | 国产成人精品一区二区三区福利 | 不卡av免费观看| 亚洲欧洲精品一区二区三区不卡| 九色91国产| 欧美一区,二区| 国内精品视频一区二区三区八戒| 国产大片精品免费永久看nba| 日本视频www| 欧美性色综合| 九九热精品视频国产| 天堂а√在线中文在线鲁大师| 自拍偷拍欧美一区| 精品亚洲国产成av人片传媒 | 国产女人18水真多18精品一级做| 精品免费二区三区三区高中清不卡| 精品国产黄色片| 国产精品原创巨作av| 成人免费xxxxx在线观看| 中文字幕一区二区免费| 日韩精品一二三| 国产精国产精品| 黄色污污网站在线观看| 狂野欧美一区| 国产精品成人在线| 中文字幕免费观看| 视频一区二区三区入口| 国产精品91久久久久久| 国产suv精品一区二区33| 老牛嫩草一区二区三区日本| 日韩av快播网址| 黄色污污网站在线观看| 日韩av在线免费观看不卡| 国产成人精品av| 国产一级精品毛片| 青青草国产精品97视觉盛宴| 国产精品情侣自拍| 一本色道久久综合精品婷婷| 精品一区二区在线观看| 亚洲最大av在线| wwwav在线播放| 不卡视频在线看| 美脚丝袜一区二区三区在线观看| 欧美孕妇孕交| 国产精品女人毛片| 99久久99久久精品| 17videosex性欧美| 91久久精品一区二区三区| 亚洲综合色在线观看| 日韩综合久久| 精品欧美一区二区久久| 亚洲天堂资源在线| 欧美日韩有码| 九九久久综合网站| 在线永久看片免费的视频| 免费人成在线不卡| 亚洲精品欧美极品| 偷拍25位美女撒尿视频在线观看| 久久蜜臀精品av| 亚洲午夜精品一区二区三区| 四季久久免费一区二区三区四区| 精品久久久精品| 亚洲免费看av| 成人午夜网址| 在线观看国产欧美| 国产精品二区一区二区aⅴ| 久久99伊人| 91精品天堂| 国产黄色片在线观看| 亚洲精品国产a久久久久久| 日韩av在线第一页| 成人污版视频| 亚洲欧美色图片| 久久久久亚洲av无码专区体验| 国产精品毛片一区二区三区| 国产美女精品视频免费观看| 日本高清视频在线| 国产精品福利一区二区三区| 黄页免费在线观看视频| 久久久久伊人| 日韩黄色av网站| 国产少妇在线观看| 日韩不卡免费视频| 久99久视频| 免费影视亚洲| 欧美日韩国产高清一区| 国产高清自拍视频| 自拍偷拍欧美| 国产精品视频网址| 亚洲日本国产精品| 一个色在线综合| 男女视频在线看| 亚洲精品国产精品粉嫩| 久久久久久久电影一区| 国产精品一级二级| 国产日韩欧美综合在线| 18禁免费观看网站| 亚洲精品v亚洲精品v日韩精品| 中文字幕v亚洲ⅴv天堂| 国产精品免费精品一区| 成人成人成人在线视频| 50度灰在线观看| 亚瑟国产精品| 中文字幕av一区二区| 婷婷激情五月网| 成人黄页在线观看| 东北少妇不带套对白| 日韩黄色av| 久久国产精品偷| 国产喷水吹潮视频www| 国产精品久久久久久久久免费樱桃| 日韩欧美精品在线观看视频| 久久久久97| 91国产在线精品| 天天干天天爽天天操| 亚洲图片一区二区| www.四虎在线| 亚洲国产精品第一区二区| 91九色极品视频| 欧美xxxx视频| 精品国产亚洲在线| 日韩精品久久久久久久| 99re免费视频精品全部| 欧美 日韩精品| 九九视频精品全部免费播放| 国产精品国产精品国产| 老司机午夜精品视频在线观看| 国产日韩欧美二区| 阿v视频在线| 国产视频欧美视频| 区一区二在线观看| 日本一区二区动态图| 免费看国产黄色片| 欧美岛国激情| 99re热精品| 精品捆绑调教一区二区三区| 国产视频丨精品|在线观看| 精品久久久久久久久久久久久久久久 | 久久99精品视频一区97| 亚洲国产精品suv| 亚洲高清不卡在线观看| av网站免费在线播放| 久久精品观看| 亚洲在线观看一区| 亚洲高清在线一区| 91av网站在线播放| 东凛在线观看| 日韩一级黄色片| 日韩精品视频免费播放| 久久久久久久国产精品影院| xx欧美撒尿嘘撒尿xx| 欧美精品导航| 欧美日韩另类综合| 亚洲热av色在线播放| 欧美激情精品在线| 国产在线免费观看| 制服丝袜亚洲精品中文字幕| 亚洲国产综合久久| 国产亚洲欧美一级| 特黄特黄一级片| 亚洲一区中文| 精品国产一区二区三区在线| 激情小说亚洲图片| 国产精品视频网| gogo高清在线播放免费| 综合136福利视频在线| 狠狠躁日日躁夜夜躁av| 欧美日韩在线播| 在线观看 中文字幕| 国产精品久久久一本精品| 一级欧美一级日韩片| 精久久久久久久久久久| heyzo亚洲| 亚洲成人日韩| 色99中文字幕| 国产精品tv| 成人免费视频a| 国产欧美一区二区三区精品酒店| 久久国产精品亚洲| 国产高清一级毛片在线不卡| 亚洲精品在线免费观看视频| 亚洲综合网av| 色婷婷久久99综合精品jk白丝| h色网站在线观看| 国产欧美精品区一区二区三区| 亚洲麻豆一区二区三区| 麻豆国产精品777777在线| 草草久久久无码国产专区| 欧美激情精品久久久六区热门| 天堂社区 天堂综合网 天堂资源最新版 | 国产精品久久久免费看| 91在线观看一区二区| 潘金莲一级淫片aaaaaaa| 麻豆91在线播放免费| 欧美极品欧美精品欧美图片| 亚洲精品日韩久久| 国产精品va在线观看无码| 天天综合久久| 中文字幕久精品免| 不卡一区2区| 欧美一区二区三区精美影视| 精品丝袜久久| 国产精品毛片一区视频| 一区二区亚洲视频| 91精品久久香蕉国产线看观看| 91精品国产一区二区在线观看 | 中文字幕人妻一区二区三区视频 | 欧美激情免费观看| 91一区二区三区在线| 久久色精品视频| 91caoporn在线| 正在播放亚洲1区| 91在线看片| 日韩视频免费大全中文字幕| jizz亚洲| 久久精品国产v日韩v亚洲| 色多多视频在线观看| 中文字幕欧美国内| 在线观看免费网站黄| 视频直播国产精品| 日本不卡在线| 久热在线中文字幕色999舞| 麻豆传媒在线观看| 久久亚洲精品视频| 色yeye免费人成网站在线观看| 欧美丰满少妇xxxx| ririsao久久精品一区| 97久久超碰福利国产精品…| 不卡视频观看| 日本高清不卡的在线| 日韩高清成人| 国产一区二区视频在线观看| 亚洲青青久久| 国产精品久久精品国产 | 国产成+人+日韩+欧美+亚洲| 一二三区视频在线观看| 成人91在线观看| 色无极影院亚洲| 中文字幕人成不卡一区| 国内偷拍精品视频| 精品久久久久久久久中文字幕 | 日本不卡一二三区黄网| 亚洲一级片网站| 国产激情91久久精品导航 | 性色av蜜臀av| 亚洲国产欧美一区二区丝袜黑人| 日本一级在线观看| 日韩最新av在线| sis001亚洲原创区| 国产精品美女视频网站| 日本在线一区二区三区| 精品视频一区二区| 欧美日韩激情| wwwjizzjizzcom| 一区二区高清| 免费网站在线观看黄| www.欧美日韩| youjizz亚洲女人| 亚洲一二三四在线| 成人一二三四区| 日韩精品中文字幕在线一区| 牛牛影视精品影视| 久久精品国产亚洲精品| bl在线肉h视频大尺度| 国产精品91在线观看| 视频一区中文字幕精品| 日本一区二区久久精品| 激情综合网址| 日日干夜夜操s8| aaa国产一区| 亚洲欧美精品aaaaaa片| 欧美午夜www高清视频| 国产成人精品毛片| 亚洲人线精品午夜| 国产一线二线在线观看| 国产精品久久久久久网站| 爱高潮www亚洲精品| 亚洲精品美女久久7777777| 在线成人欧美| 亚洲黄色片免费看| 欧美激情一区二区三区四区| 日韩福利片在线观看| 91精品国产麻豆| 在线免费黄色| 国产精品第七影院| 免费日韩一区二区三区| 日本大胆人体视频| 精品在线观看免费| 少妇太紧太爽又黄又硬又爽小说| 天涯成人国产亚洲精品一区av| 国产老女人乱淫免费| 亚洲天堂影视av| 欧产日产国产精品视频| 999视频在线免费观看| 国产精品99一区二区三区| 99视频精品免费| xfplay精品久久| 国产在线视频在线观看| 日韩免费高清视频| 久久日韩视频| 国产精品一区二区电影| 国产麻豆精品久久| 国产日韩一区二区在线| av电影在线观看完整版一区二区| 免费在线观看黄色av| 91精品国产美女浴室洗澡无遮挡| 秋霞午夜理伦电影在线观看| 国产精品青草久久久久福利99| 国产欧美日韩免费观看| 成年人视频在线免费| 久久久99精品免费观看不卡| 麻豆精品久久久久久久99蜜桃| 日韩精品免费观看| 小早川怜子影音先锋在线观看| 精品国产一区二区三区四区精华| 伊人成人在线视频| 久久久高清视频| 午夜久久久久久久久| 国模无码一区二区三区| 欧美激情女人20p| 久久av国产紧身裤| heyzo国产| 国产三级精品视频| 国产三级理论片| 久久韩剧网电视剧| 精品午夜视频| 久久久久久av无码免费网站下载| 国产剧情一区二区三区| 久久久久久久国产视频| 精品播放一区二区| 无码小电影在线观看网站免费| 乱一区二区三区在线播放| 久久亚洲图片| 日韩欧美黄色网址| 欧美丰满美乳xxx高潮www| 黄色一级片在线观看| 97人人香蕉| 亚洲青色在线| 日本理论中文字幕| 666欧美在线视频| 成人超碰在线| 欧美人xxxxx| 久久99精品国产| 69av视频在线| 亚洲男人7777| 999精品视频在线观看| 免费特级黄色片| 国产亚洲精品福利| 国产又黄又大又粗的视频| 久久久久久久久久久免费精品| 丝袜久久网站| 免费一区二区三区在线观看| 亚洲自拍偷拍网站| 国产午夜精品一区理论片| 亚洲综合一区二区不卡| 亚洲永久免费| 一起操在线播放| 精品中文视频在线| 久久三级中文| 丁香婷婷激情网| 一区二区三区在线影院| 久久天堂电影| www 成人av com| 日本最新不卡在线| 国产一级做a爰片在线看免费| 亚洲欧美另类中文字幕| 免费一级欧美在线大片 | 精品一区二区免费看| 久久露脸国语精品国产91| 久久黄色av网站| 欧美**字幕| 欧美久久久久久久久久久|