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

從 Dapper 到 OpenTelemetry:分布式追蹤的演進(jìn)之旅

開發(fā) 前端
從基本概念到如何部署 demo 實(shí)戰(zhàn)了解 OpenTelemetry,從那個(gè) demo 中也可以得知整個(gè) OpenTelemetry 體系的復(fù)雜性,包含了太多的組件和概念。

從基本概念到如何部署 demo 實(shí)戰(zhàn)了解 OpenTelemetry,從那個(gè) demo 中也可以得知整個(gè) OpenTelemetry 體系的復(fù)雜性,包含了太多的組件和概念。

為了能更清晰的了解每個(gè)關(guān)鍵組件的作用以及原理,我打算分為幾期來講解 OpenTelemetry 的三個(gè)核心組件:

  • Trace
  • Metrics
  • Logs

首先以 Trace 講起。

Trace

開始之前還是先復(fù)習(xí)一下 Trace 的歷史背景。

如今現(xiàn)代的分布式追蹤的起源源自于 Google 在 2010 年發(fā)布的一篇論文:

  • Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

在這篇論文中提出了分布式追蹤的幾個(gè)核心概念:

  • Trace
  • Span
  • Span 的一些基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
  • 可視化追蹤以及展示

之后 Twitter 受到了 Dapper 的啟發(fā)開源了現(xiàn)在我們熟知的 Zipkin,包含了存儲(chǔ)和可視化 UI 展示我們的追蹤鏈路。

Uber 也在 2015 年開源了 Jaeger 項(xiàng)目,它的功能和 Zipkin 類似,但目前我們用的較多的還是 Jaeger;現(xiàn)在已經(jīng)成為 CNCF 的托管項(xiàng)目。

之后陸續(xù)出現(xiàn)過 OpenTracing 和 OpenCensus 項(xiàng)目,他們都企圖統(tǒng)一分布式追蹤這一領(lǐng)域。

直到 OpenTelemetry 的出現(xiàn)整合了以上兩個(gè)項(xiàng)目,并且逐漸成為可觀測(cè)領(lǐng)域的標(biāo)準(zhǔn)。

更多歷史背景可以參考之前的文章:OpenTelemetry 實(shí)踐指南:歷史、架構(gòu)與基本概念

這里我們結(jié)合 Dapper 論文中的資料進(jìn)行分析,在這個(gè)調(diào)用中用戶發(fā)起了一次請(qǐng)求,內(nèi)部系統(tǒng)經(jīng)歷了 4 次 RPC 調(diào)用。

從第二張圖會(huì)看到一些關(guān)鍵信息:

  • spanName
  • parentId
  • spanId

parentId 很好理解,主要是定義調(diào)用的主次關(guān)系;要注意的是并行調(diào)用時(shí) parentId 是同一個(gè)。

spanId 在可以理解為每一個(gè)獨(dú)立的操作,在這里就是一次 RPC 調(diào)用;同理一次數(shù)據(jù)庫(kù)操作、消息的收發(fā)都是一個(gè) span。

span 的更多內(nèi)容在后文繼續(xù)講解。

Span

當(dāng)我們把某一個(gè)具體的 span 放大會(huì)看到更加詳細(xì)的信息,其中最關(guān)鍵的如下:

  • traceId
  • spanName
  • spanId
  • parentId
  • 開始時(shí)間
  • 結(jié)束時(shí)間

由于一個(gè)完整的 trace 鏈路由 N 個(gè) span 組成,所以這個(gè)鏈路必須得有一個(gè)唯一的 traceId 將這些 span 串聯(lián)起來。這樣才可以在可視化的時(shí)候更好的展示鏈路信息。

以上的這些字段很容易理解,都是一些必須的信息。

在 Dapper 論文中使用 Annotations 來存放 span 的屬性,也就是剛才那些字段,當(dāng)然也可以自定義存放一些數(shù)據(jù),比如圖中的 "foo"

OpenTelemetry 中的 Span

OpenTelemetry 的 trace 自然也是基于 Dapper 的,只是額外做了一些優(yōu)化,比如在剛才那些字段的基礎(chǔ)上新增了一些概念:

{
  "name": "/v1/sys/health",
  "context": {
    "trace_id": "7bba9f33312b3dbb8b2c2c62bb7abe2d",
    "span_id": "086e83747d0e381e"
  },
  "parent_id": "",
  "start_time": "2021-10-22 16:04:01.209458162 +0000 UTC",
  "end_time": "2021-10-22 16:04:01.209514132 +0000 UTC",
  "status_code": "STATUS_CODE_OK",
  "status_message": "",
  "attributes": {
    "net.transport": "IP.TCP",
    "net.peer.ip": "172.17.0.1",
    "net.peer.port": "51820",
    "net.host.ip": "10.177.2.152",
    "net.host.port": "26040",
    "http.method": "GET",
    "http.target": "/v1/sys/health",
    "http.server_name": "mortar-gateway",
    "http.route": "/v1/sys/health",
    "http.user_agent": "Consul Health Check",
    "http.scheme": "http",
    "http.host": "10.177.2.152:26040",
    "http.flavor": "1.1"
  },
  "events": [
    {
      "name": "",
      "message": "OK",
      "timestamp": "2021-10-22 16:04:01.209512872 +0000 UTC"
    }
  ]
}

以這個(gè) JSON 為例,新增了:

  • [ ] Span Context
  • Span 的上下文,存放的都是不可變的數(shù)據(jù),因?yàn)槊總€(gè) Span 之間是存在關(guān)聯(lián)關(guān)系的,這些關(guān)聯(lián)關(guān)系都是存放在 context 中,主要就是 trace_id, span_id.
  • Attributes: 可以理解為 Dapper 中的 Annotations,存放的是我們自定義的鍵值對(duì),通常是由我們常用第三方開源 Instrumentation 內(nèi)置的一些屬性。
  • Span Events: Span 的一些關(guān)鍵事件。

比如我們常用的 Redis 客戶端 lettuce,它就會(huì)自己記錄一些 Attributes。

如果有多個(gè) span 存在依賴關(guān)系:

[Span A]  ←←←(the root span)
            |
     +------+------+
     |             |
 [Span B]      [Span C] ←←←(Span C is a `child` of Span A)
     |             |
 [Span D]      +---+-------+
               |           |
           [Span E]    [Span F]

大部分的可視化工具都是以時(shí)間線的方式進(jìn)行展示:

––|–––––––|–––––––|–––––––|–––––––|–––––––|–––––––|–––––––|–> time

 [Span A···················································]
   [Span B··········································]
      [Span D······································]
    [Span C····················································]
         [Span E·······]        [Span F··]

這些和 Dapper 中描述的概念沒有本質(zhì)區(qū)別。

Span Status

Span 還內(nèi)置了一些 Status:

  • Unset
  • Error
  • Ok

默認(rèn)情況下是 Unset,出現(xiàn)錯(cuò)誤時(shí)則是 Error,一切正常時(shí)則是 Ok。

通過可視化頁(yè)面很容易得知某個(gè) trace 中 span 的異常情況,點(diǎn)進(jìn)去后可以看到具體的異常 span 以及它的錯(cuò)誤日志。

Span Kind

最后是 Span 的類型:

  • Client
  • Server
  • Internal
  • Producer
  • Consumer

Client 和 Server 非常好理解,比如我們有一個(gè) gRPC 接口,調(diào)用方的 Span 是 client,而服務(wù)端的 Span 自然就是 Server。

Internal 則是內(nèi)部組件調(diào)用產(chǎn)生的 Span,這類 Span 相對(duì)會(huì)少一些。

Producer 和 Consumer 一般指的是發(fā)起異步調(diào)用時(shí)的 Span,我們常見的就是往消息隊(duì)列里生產(chǎn)和消費(fèi)消息。

通過這幾種類型的 Span 也可以了解到什么情況下會(huì)創(chuàng)建 Span,通常是以下幾種場(chǎng)景:

  • RPC 調(diào)用
  • 數(shù)據(jù)庫(kù)(Redis、MySQL、Mongo 等等)操作
  • 生產(chǎn)和消費(fèi)消息
  • 有意義的內(nèi)部調(diào)用

通常在一個(gè)函數(shù)內(nèi)部再調(diào)用其他的本地函數(shù)是不用創(chuàng)建 span 的,不然這個(gè)鏈路會(huì)非常的長(zhǎng)。

Annotations

當(dāng)然也有一些特殊情況,比如我的某個(gè)內(nèi)部函數(shù)非常重要,需要單獨(dú)關(guān)心它的調(diào)用時(shí)長(zhǎng)。

此時(shí)我們就可以使用 Annotations 來單獨(dú)創(chuàng)建自己的 Span。

這個(gè) Annotations 和 Dapper 中的不是同一個(gè),只是 Java 中的注解。

@Override  
public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {  
    Executors.newFixedThreadPool(1).execute(() -> {  
        myMethod(request.getName());  
    });    
    
    HelloReply reply = HelloReply.newBuilder()  
            .setMessage("Hello ==> " + request.getName())  
            .build();  
    responseObserver.onNext(reply);  
    responseObserver.onCompleted();  
}  
  
@SneakyThrows  
@WithSpan  
public void myMethod(@SpanAttribute("request.name") String name) {  
    TimeUnit.SECONDS.sleep(1);  
    log.info("myMethod:{}", name);  
}

以這段代碼為例,這是一個(gè) gRPC 的服務(wù)端接口,在這個(gè)接口中調(diào)用了一個(gè)函數(shù) myMethod,默認(rèn)情況下并不會(huì)為它單獨(dú)創(chuàng)建一個(gè) Span。

但如果我們想單獨(dú)記錄它,就可以使用 @WithSpan 這個(gè)注解,同時(shí)也可以使用  @SpanAttribute 來自定義 attribute。

最終的效果如下:

此時(shí)就會(huì)單獨(dú)為這個(gè)函數(shù)創(chuàng)建一個(gè) Span。

需要單獨(dú)引入一個(gè)依賴:

<dependencies>
  <dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-instrumentation-annotations</artifactId>
    <version>2.3.0</version>
  </dependency>
</dependencies>

Context Propagation

上下文傳播也是 Trace 中非常重要的概念,剛才提到了每個(gè) Span 都有自己不可變的上下文,那么后續(xù)的 Span 如何和上游的 Span 進(jìn)行關(guān)聯(lián)呢?

這里有兩種情況:

  • 同一進(jìn)程
  • 垮進(jìn)程

同一進(jìn)程

同一個(gè)進(jìn)程也分為兩種情況:

  • 單線程
  • 多線程

單線程的比較好處理,我們只需要把數(shù)據(jù)寫入 ThreadLocal 中就可以做到線程隔離。

private static final ThreadLocal<Context> THREAD_LOCAL_STORAGE = new ThreadLocal<>();

@Override  
@Nullable  
public Context current() {  
  return THREAD_LOCAL_STORAGE.get();  
}

這點(diǎn)我們可以通過源碼 io.opentelemetry.context.ThreadLocalContextStorage看到具體的實(shí)現(xiàn)過程。

而如果是多線程時(shí):

Executors.newFixedThreadPool(1).execute(() -> {  
    myMethod(request.getName());  
});

則需要對(duì)使用的線程池進(jìn)行單獨(dú)處理,將父線程中 threadlocal 中的數(shù)據(jù)拷貝出來進(jìn)行傳遞,比如有阿里提供的 TransmittableThreadLocal,可以提供對(duì)線程池的支持。

跨進(jìn)程

而如果是垮進(jìn)程的場(chǎng)景,就需要將 context 的信息進(jìn)行序列化傳遞。

如果是 gRPC 調(diào)用會(huì)將信息存放到 metadata 中。

HTTP 調(diào)用則是存放在 header 中。

消息隊(duì)列,比如 Pulsar 也可以將數(shù)據(jù)存放在消息中的 header 中進(jìn)行傳遞。

數(shù)據(jù)一旦跨進(jìn)程傳輸成功后,就和單進(jìn)程一樣的處理方式了。

Baggage

有時(shí)候我們需要通過垮 Span 傳遞信息,比如如上圖所示:我們需要在 serverB 中拿到 serverA 中收到的一個(gè)請(qǐng)求參數(shù):http://127.0.0.1:8181/request\?name\=1232。

這個(gè)數(shù)據(jù)默認(rèn)會(huì)作為 span 的 attribute ,但只會(huì)存在于第一個(gè) span。

如果我們想要在后續(xù)的 span 中也能拿到這個(gè)數(shù)據(jù),甚至是垮進(jìn)程也能獲取到。

那就需要使用 Baggage 這個(gè)對(duì)象了。

它的使用也很簡(jiǎn)單:

@RequestMapping("/request")  
public String request(@RequestParam String name) {  
 // 寫入
    Baggage.current().toBuilder().  
          put("request.name", name).build()  
          .storeInContext(Context.current()).makeCurrent();
}         

// 獲取
String value = Baggage.current().getEntryValue("request.name");  
log.info("request.name: {}", value);

只要是屬于同一個(gè) trace 的調(diào)用就可以直接獲取到數(shù)據(jù)。

traceId 也是垮 Span 傳遞的。

而它的原理也是通過往 context 中寫入數(shù)據(jù)實(shí)現(xiàn)的:

@Immutable  
class BaggageContextKey {  
  static final ContextKey<Baggage> KEY = ContextKey.named("opentelemetry-baggage-key");  
  
  private BaggageContextKey() {}  
}

而這個(gè) context 是通過一個(gè) entries 數(shù)據(jù)存儲(chǔ)數(shù)據(jù)的,不管是在內(nèi)部還是外部的跨進(jìn)程調(diào)用,OpenTelemetry 都會(huì)將 context 通過 Context Propagation 傳遞出去。

總結(jié)

Trace 這部分的內(nèi)容我覺得比 Metrics 和 Logs 更加復(fù)雜一些,畢竟多了一些數(shù)據(jù)結(jié)構(gòu);現(xiàn)在的內(nèi)容也只是冰山一角,現(xiàn)在也在做 trace 的一些定制化開發(fā),后續(xù)有新的進(jìn)展會(huì)接著更新。

參考鏈接:

  • https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/papers/dapper-2010-1.pdf。
  • https://opentelemetry.io/docs/languages/java/automatic/annotations/。
  • https://opentelemetry.io/docs/specs/otel/overview/#tracing-signal。
  • https://opentelemetry.io/docs/concepts/context-propagation/。
  • https://opentelemetry.io/docs/concepts/observability-primer/#distributed-traces。
  • https://tech.meituan.com/2023/04/20/traceid-google-dapper-mtrace.html。
責(zé)任編輯:姜華 來源: crossoverJie
相關(guān)推薦

2024-08-21 08:09:17

2013-06-07 13:46:29

分布式存儲(chǔ)自動(dòng)化運(yùn)維

2021-04-29 19:07:33

Redis演進(jìn)微服務(wù)

2024-06-14 08:19:45

2024-04-22 08:10:29

2022-06-14 15:28:37

數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)變革趨勢(shì)

2024-05-16 07:51:55

分布式系統(tǒng)架構(gòu)

2021-11-26 06:43:19

Java分布式

2018-04-03 09:27:42

分布式架構(gòu)系統(tǒng)

2017-09-01 05:35:58

分布式計(jì)算存儲(chǔ)

2022-12-04 22:41:15

IPC分布式機(jī)制

2022-03-25 08:40:32

分布式架構(gòu)

2024-06-07 13:04:31

2020-12-16 09:24:18

Skywalking分布式鏈路追蹤

2020-03-09 08:24:06

TengineWeb代理服務(wù)器

2023-08-18 09:00:00

Kubernetes數(shù)據(jù)庫(kù)SQL

2018-10-18 08:15:27

開源分布式追蹤工具

2021-11-29 08:18:22

架構(gòu)互聯(lián)網(wǎng)分布式

2020-10-20 09:38:15

分布式存儲(chǔ)Ceph

2022-09-25 22:19:24

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

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

在线黄色网页| 中文字幕久久久久| 成功精品影院| 亚洲成人福利片| 国产欧美精品一区二区三区| 久草网视频在线观看| 九九热hot精品视频在线播放| 亚洲无线码一区二区三区| 国产三级精品在线不卡| 久久人妻免费视频| 91亚洲一区| 日韩精品专区在线影院重磅| 国产美女无遮挡网站| av大片在线播放| 国产福利不卡视频| 91高清免费在线观看| 一级二级黄色片| 日韩中文字幕在线一区| 精品久久久久久| 久久婷婷人人澡人人喊人人爽| www.国产一区二区| 日本一区二区免费高清| 欧美mv和日韩mv国产网站| 男人的天堂99| 黄色av网站在线播放| a在线欧美一区| 97精品国产91久久久久久| 超薄肉色丝袜一二三| 伊人久久精品| 欧美网站在线观看| 精品久久免费观看| 黄色片在线免费看| 成人av网址在线观看| 国产精品网站大全| 日韩av无码中文字幕| 天天做天天爱天天爽综合网| 亚洲乱码av中文一区二区| www.午夜av| 欧美大片免费高清观看| 亚洲一区在线观看免费观看电影高清 | 91福利资源站| 免费在线黄网站| 在线免费看黄网站| 91首页免费视频| 成人深夜直播免费观看| 99精品人妻国产毛片| 亚洲小说欧美另类社区| 中文字幕亚洲图片| 国产网站无遮挡| www国产精品| 欧美一区二区高清| xxww在线观看| h1515四虎成人| 色婷婷国产精品久久包臀| 久久久久久久久久伊人| 色综合久久影院| 国产精品女主播av| 日韩久久精品一区二区三区| 男人天堂手机在线观看| 国产美女精品人人做人人爽| 国产精品伦子伦免费视频| 影音先锋亚洲天堂| 日韩午夜高潮| 欧美精品激情在线观看| 天天操天天操天天操天天操天天操| 精品福利久久久| 亚洲欧美日韩精品久久| 中文字幕一区二区三区人妻不卡| 超碰成人在线免费| 欧美精品一区男女天堂| 欧美国产日韩另类| 亚洲人成777| 777午夜精品视频在线播放| 日韩精品视频一二三| 成人一级视频| 欧美精品aⅴ在线视频| 污污的网站免费| 国产视频一区二区在线播放| 4438亚洲最大| 麻豆传媒在线看| 另类视频一区二区三区| 这里只有精品免费| 婷婷激情综合五月天| 亚洲精品一二三**| 亚洲激情视频网站| 法国伦理少妇愉情| 欧美色就是色| 久久久97精品| 精品97人妻无码中文永久在线| 国产一区观看| 57pao精品| 懂色av中文字幕| 激情图片小说一区| 国产精品国色综合久久| 亚洲欧美丝袜中文综合| 久久精品一区二区| 一本一生久久a久久精品综合蜜| 国产福利在线看| 国产精品久久久久久久蜜臀| 免费观看中文字幕| h片精品在线观看| 日韩欧美中文在线| xxx国产在线观看| 一区二区三区视频免费视频观看网站 | 91精品国产全国免费观看| 性久久久久久久久久久久久久| 亚洲第一二区| 亚洲视频在线观看| 久久久久久久久精| 久久精选视频| 亚洲一区二区三区777| 视频一区二区免费| 欧美经典一区二区三区| 中国一区二区三区| 狠狠操一区二区三区| 欧美美女视频在线观看| 亚洲一级av无码毛片精品| 黑丝美女一区二区| 国内精品在线一区| 精品人妻一区二区三区日产乱码 | 日韩精品一区二区三区在线| 在线免费观看视频| 国产精品美女久久久| 亚洲最大的成人网| a黄色在线观看| 一本一本久久a久久精品综合麻豆| 亚洲国产欧美日韩在线| 99精品一区| 国产精品久久久久久久久借妻| 欧美自拍第一页| 亚洲精品中文在线观看| 欧美第一页浮力影院| 久久综合欧美| 2018国产精品视频| 天天干天天舔天天射| 亚洲视频在线一区| 777一区二区| 日韩欧美视频| 国产综合在线观看视频| 成av人电影在线观看| 色综合久久综合| 中文字幕av网址| 欧美一区=区| 精品一区二区久久久久久久网站| 欧美韩日亚洲| 精品国产一区二区三区久久久蜜月 | 欧美激情影院| 久久人人爽人人爽人人片av高请| 成 人 免费 黄 色| 亚洲综合999| 日韩精品视频一区二区| 一本色道久久综合亚洲精品不卡 | 91黄色免费视频| 中文亚洲字幕| 免费国产一区二区| 天天免费亚洲黑人免费| 一区二区三区无码高清视频| 激情五月婷婷网| 国产精品美女久久久久aⅴ国产馆| 欧美一级特黄a| 91精品啪在线观看国产18| 91久久久久久久| 久草在线资源站资源站| 亚洲第一视频网| 神马久久久久久久 | 亚洲成年人影院在线| 日韩欧美三级在线观看| 久久亚洲捆绑美女| 一区二区在线播放视频| 日韩电影免费网址| 91亚洲永久免费精品| 久草在线资源站资源站| 亚洲伦理中文字幕| 中文字幕第一页在线播放| 亚洲欧美自拍偷拍| 精品国产乱码久久久久夜深人妻| 亚洲国产精品第一区二区| 久久综合一区二区三区| 巨大黑人极品videos精品| 久久黄色av网站| 成人免费视频国产| 欧美午夜性色大片在线观看| 日本猛少妇色xxxxx免费网站| 国产综合久久久久影院| 高清欧美精品xxxxx| 欧美熟乱15p| 国产成人精品自拍| 午夜欧美巨大性欧美巨大 | 岛国片av在线| 亚洲欧洲午夜一线一品| 一炮成瘾1v1高h| 亚洲高清视频在线| 亚洲国产日韩一区无码精品久久久| 久久精品国产99国产精品| 国产免费裸体视频| 精品一区电影| 电影午夜精品一区二区三区| 香蕉视频亚洲一级| 久久久久久久久久久成人| 高清av在线| 精品国产亚洲在线| 一卡二卡三卡在线| 欧美性猛交xxxx偷拍洗澡| 一区二区国产精品精华液| 91视频国产观看| 中国男女全黄大片| 久久狠狠亚洲综合| 欧美aⅴ在线观看| 在线欧美不卡| 91香蕉视频网址| 精品国内自产拍在线观看视频 | 全部免费毛片在线播放一个| 精品视频免费看| 日韩免费在线视频观看| 亚洲视频中文字幕| 久久精品三级视频| 成年人国产精品| 视频区 图片区 小说区| 日本va欧美va精品发布| 欧美乱大交xxxxx潮喷l头像| 91精品国产乱码久久久久久| 日本不卡久久| 欧美激情极品| 国产视频一区二区三区四区| 日韩黄色三级在线观看| 国产99久久精品一区二区| av丝袜在线| 欧美激情在线有限公司| 国产精品剧情| 日日骚久久av| 国产中文字幕在线视频| 日韩精品福利网站| 国模私拍视频在线| 日韩免费电影一区| 国产丰满美女做爰| 在线不卡a资源高清| 最新中文字幕第一页| 色婷婷久久久综合中文字幕| 国产午夜性春猛交ⅹxxx| 亚洲第一成年网| 免费日韩在线视频| 亚洲视频中文字幕| 性色av无码久久一区二区三区| 中文字幕在线不卡| 国产亚洲精品久久久久久豆腐| 日本一区二区久久| 亚洲av毛片基地| 国产精品久久三| 小泽玛利亚一区| 亚洲欧美影音先锋| 久久国产高清视频| 亚洲黄色在线视频| 久久久久亚洲av成人片| 亚洲午夜视频在线观看| 国产第一页在线播放| 亚洲国产另类精品专区| 日韩视频免费观看高清| 日韩欧美成人精品| 波多野结衣绝顶大高潮| 欧美午夜精品电影| 国产乱码久久久久| 日韩免费电影一区| 天天舔天天干天天操| 日韩av在线不卡| 国产高清在线| 久久综合五月天| 国产经典三级在线| 欧美亚洲午夜视频在线观看| 免费观看成人性生生活片| 国产欧美在线观看| 欧美欧美在线| 久久精品国产99精品国产亚洲性色| 亚洲电影男人天堂| 这里只有精品66| 亚洲香蕉网站| 已婚少妇美妙人妻系列| 免费高清不卡av| 三上悠亚 电影| 97精品久久久午夜一区二区三区| 欧美偷拍一区二区三区| 国产精品乱人伦一区二区| 欧美日韩在线观看成人| 婷婷国产v国产偷v亚洲高清| 免费黄色小视频在线观看| 欧美一区二区人人喊爽| 亚洲 小说区 图片区 都市| 一区二区在线视频播放| 中文国产字幕在线观看| 人人爽久久涩噜噜噜网站| 亚洲成人毛片| 精品一区在线播放| 国产精品二区不卡| www.99热这里只有精品| 麻豆精品视频在线观看视频| av不卡中文字幕| 国产欧美日本一区二区三区| 欧美国产在线看| 在线欧美一区二区| 黄色小视频免费在线观看| 怡红院精品视频| 黄色在线看片| 91精品久久久久久综合乱菊| 精品综合久久88少妇激情| 一本色道久久综合亚洲二区三区| 亚洲国内欧美| 涩多多在线观看| 久久久久高清精品| 国产精品第一页在线观看| 欧美日韩在线三级| 天堂а√在线8种子蜜桃视频| 久久久精品中文字幕| 超碰超碰人人人人精品| 99在线观看| 91精品国产福利在线观看麻豆| 日本黄色三级大片| 成人av网站免费| 人妻少妇精品一区二区三区| 欧美性一区二区| 三级在线视频| 久久久久久久久久久免费| 91精品国产色综合久久不卡粉嫩| 欧美精品国产精品久久久| 在线观看视频日韩| 又黄又爽又色的视频| 国产精品狼人久久影院观看方式| 视频一区二区三区四区五区| 精品sm捆绑视频| 色呦呦视频在线观看| 亚洲综合中文字幕在线观看| 91影院成人| 亚洲娇小娇小娇小| 欧美极品美女视频| 福利网址在线观看| 亚洲欧美国产一区二区三区| 国产传媒在线观看| 国产精品美女久久久久av福利| 欧美成人tv| 日本wwwxx| 一区av在线播放| 亚洲av无码乱码国产麻豆| 久久成人一区二区| 国产视频一区二| 麻豆一区二区三区在线观看| 国产原创一区二区| 国产喷水在线观看| 这里只有精品99re| 黄色的网站在线观看| 91久久国产精品91久久性色| 91久久电影| 一卡二卡三卡四卡五卡| 亚洲综合激情小说| 手机看片福利在线| 18久久久久久| 精品视频免费| 国产精品自拍视频在线| 亚洲三级电影网站| 精品国产九九九| 欧美激情一区二区三区在线视频观看| 成人另类视频| www.中文字幕在线| 国产亚洲精品超碰| 91theporn国产在线观看| 久久亚洲春色中文字幕| 一级毛片精品毛片| 国产精品免费入口| 中文字幕的久久| 99久久免费国产精精品| 久久久亚洲国产| 欧美日韩播放| 天堂在线一区二区三区| 亚洲伦理在线精品| 天堂av手机版| 国产精品流白浆视频| 综合久久亚洲| 插我舔内射18免费视频| 日本高清成人免费播放| 免费在线看黄| 国产视频在线观看一区| 日韩精品一区第一页| 国产福利在线导航| 精品国免费一区二区三区| 二区三区不卡| 中文字幕av导航| 94色蜜桃网一区二区三区| 最近中文字幕在线免费观看| 久久99精品久久久久久琪琪| 欧美网色网址| 久久久久久久久久久久久久久国产| 亚洲成人手机在线| 成年人免费在线视频| 国产精品免费一区二区| 日本欧美一区二区| 免看一级a毛片一片成人不卡| 亚洲精品一区二区三区婷婷月| 亚洲图片小说区| 国产精品wwwww| 一区二区三区国产豹纹内裤在线| 国内精品一区视频| 国产伦精品一区二区三区四区视频 | www.久久久精品|