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

開發 | 一文讀懂微服務監控之分布式追蹤

開發 前端 分布式
現在越來越多的應用遷移到基于微服務的云原生的架構之上,微服務架構很強大,但是同時也帶來了很多的挑戰,尤其是如何對應用進行調試,如何監控多個服務間的調用關系和狀態。如何有效的對微服務架構進行有效的監控成為微服務架構運維成功的關鍵。

[[272944]]

現在越來越多的應用遷移到基于微服務的云原生的架構之上,微服務架構很強大,但是同時也帶來了很多的挑戰,尤其是如何對應用進行調試,如何監控多個服務間的調用關系和狀態。如何有效的對微服務架構進行有效的監控成為微服務架構運維成功的關鍵。用軟件架構的語言來說就是要增強微服務架構的可觀測性(Observability)。

一文讀懂微服務監控之分布式追蹤

微服務的監控主要包含一下三個方面:

  • 通過收集日志,對系統和各個服務的運行狀態進行監控
  • 通過收集量度(Metrics),對系統和各個服務的性能進行監控
  • 通過分布式追蹤,追蹤服務請求是如何在各個分布的組件中進行處理的細節

對于是日志和量度的收集和監控,大家會比較熟悉。常見的日志收集架構包含利用Fluentd對系統日志進行收集,然后利用ELK或者Splunk進行日志分析。而對于性能監控,Prometheus是常見的流行的選擇。

分布式追蹤正在被越來越多的應用所采用。分布式追蹤可以通過對微服務調用鏈的跟蹤,構建一個從服務請求開始到各個微服務交互的全部調用過程的視圖。用戶可以從中了解到諸如應用調用的時延,網絡調用(HTTP,RPC)的生命周期,系統的性能瓶頸等等信息。那么分布式追蹤是如何實現的呢?

1.分布式追蹤的概念

谷歌在2010年4月發表了一篇論文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》(http://1t.click/6EB),介紹了分布式追蹤的概念。

一文讀懂微服務監控之分布式追蹤

對于分布式追蹤,主要有以下的幾個概念:

  • 追蹤 Trace:就是由分布的微服務協作所支撐的一個事務。一個追蹤,包含為該事務提供服務的各個服務請求。
  • 跨度 Span:Span是事務中的一個工作流,一個Span包含了時間戳,日志和標簽信息。Span之間包含父子關系,或者主從(Followup)關系。
  • 跨度上下文 Span Context:跨度上下文是支撐分布式追蹤的關鍵,它可以在調用的服務之間傳遞,上下文的內容包括諸如:從一個服務傳遞到另一個服務的時間,追蹤的ID,Span的ID還有其它需要從上游服務傳遞到下游服務的信息。

2.OpenTracing 標準概念

基于谷歌提出的概念OpenTracing(http://1t.click/6tC)定義了一個開放的分布式追蹤的標準。

Span是分布式追蹤的基本組成單元,表示一個分布式系統中的單獨的工作單元。每一個Span可以包含其它Span的引用。多個Span在一起構成了Trace。

一文讀懂微服務監控之分布式追蹤

OpenTracing的規范定義每一個Span都包含了以下內容:

  • 操作名(Operation Name),標志該操作是什么
  • 標簽 (Tag),標簽是一個名值對,用戶可以加入任何對追蹤有意義的信息
  • 日志(Logs),日志也定義為名值對。用于捕獲調試信息,或者相關Span的相關信息
  • 跨度上下文呢 (SpanContext),SpanContext負責子微服務系統邊界傳遞數據。它主要包含兩部分:
  1. 和實現無關的狀態信息,例如Trace ID,Span ID
  2. 行李項 (Baggage Item)。如果把微服務調用比做從一個城市到另一個城市的飛行, 那么SpanContext就可以看成是飛機運載的內容。Trace ID和Span ID就像是航班號,而行李項就像是運送的行李。每次服務調用,用戶都可以決定發送不同的行李。

這里是一個Span的例子:

  1. t=0 operation name: db_query t=x 
  2.  +-----------------------------------------------------+ 
  3.  | · · · · · · · · · · Span · · · · · · · · · · | 
  4.  +-----------------------------------------------------+ 
  5. Tags: 
  6. - db.instance:"jdbc:mysql://127.0.0.1:3306/customers 
  7. - db.statement: "SELECT * FROM mytable WHERE foo='bar';" ​ 
  8. Logs: 
  9. - message:"Can't connect to mysql server on '127.0.0.1'(10061)" ​ 
  10. SpanContext: 
  11. - trace_id:"abc123" 
  12. - span_id:"xyz789" 
  13. - Baggage Items: 
  14.  - special_id:"vsid1738" 

要實現分布式追蹤,如何傳遞SpanContext是關鍵。OpenTracing定義了兩個方法Inject和Extract用于SpanContext的注入和提取。

一文讀懂微服務監控之分布式追蹤

Inject 偽代碼

  1. span_context = ... 
  2. outbound_request = ... ​ 
  3. # We'll use the (builtin) HTTP_HEADERS carrier format. We 
  4. # start by using an empty map as the carrier prior to the 
  5. # call to `tracer.inject`. 
  6. carrier = {} 
  7. tracer.inject(span_context, opentracing.Format.HTTP_HEADERS, carrier) ​ 
  8. # `carrier` now contains (opaque) key:value pairs which we pass 
  9. # along over whatever wire protocol we already use. 
  10. for key, value in carrier: 
  11.  outbound_request.headers[key] = escape(value) 

這里的注入的過程就是把context的所有信息寫入到一個叫Carrier的字典中,然后把字典中的所有名值對寫入 HTTP Header。

Extract 偽代碼

  1. inbound_request = ... ​ 
  2. # We'll again use the (builtin) HTTP_HEADERS carrier format. Per the 
  3. # HTTP_HEADERS documentation, we can use a map that has extraneous data 
  4. in it and let the OpenTracing implementation look for the subset 
  5. of key:value pairs it needs. 
  6. As such, we directly use the key:value `inbound_request.headers` 
  7. # map as the carrier. 
  8. carrier = inbound_request.headers 
  9. span_context = tracer.extract(opentracing.Format.HTTP_HEADERS, carrier) 
  10. Continue the trace given span_context. E.g., 
  11. span = tracer.start_span("...", child_of=span_context) ​ 
  12. # (If `carrier` held trace data, `span` will now be ready to use.) 

抽取過程是注入的逆過程,從carrier,也就是HTTP Headers,構建SpanContext。

整個過程類似客戶端和服務器傳遞數據的序列化和反序列化的過程。這里的Carrier字典支持Key為string類型,value為string或者Binary格式(Bytes)。

3.怎么用能?

好了講了一大堆的概念,作為程序猿的你早已經不耐煩了,不要講那些有的沒的,快上代碼。不急我們這就看看具體如何使用Tracing。

我們用一個程序猿喜聞樂見的打印‘hello world’的Python應用來說明OpenTracing是如何工作的。

客戶端代碼

  1. import requests 
  2. import sys 
  3. import time 
  4. from lib.tracing import init_tracer 
  5. from opentracing.ext import tags 
  6. from opentracing.propagation import Format ​ 
  7. def say_hello(hello_to): 
  8.  with tracer.start_active_span('say-hello'as scope: 
  9.  scope.span.set_tag('hello-to', hello_to) 
  10.  hello_str = format_string(hello_to) 
  11.  print_hello(hello_str) 
  12. def format_string(hello_to): 
  13.  with tracer.start_active_span('format'as scope: 
  14.  hello_str = http_get(8081, 'format''helloTo', hello_to) 
  15.  scope.span.log_kv({'event''string-format''value': hello_str}) 
  16.  return hello_str ​ 
  17. def print_hello(hello_str): 
  18.  with tracer.start_active_span('println'as scope: 
  19.  http_get(8082, 'publish''helloStr', hello_str) 
  20.  scope.span.log_kv({'event''println'}) ​ 
  21. def http_get(port, path, param, value): 
  22.  url = 'http://localhost:%s/%s' % (port, path) ​ 
  23.  span = tracer.active_span 
  24.  span.set_tag(tags.HTTP_METHOD, 'GET'
  25.  span.set_tag(tags.HTTP_URL, url) 
  26.  span.set_tag(tags.SPAN_KIND, tags.SPAN_KIND_RPC_CLIENT) 
  27.  headers = {} 
  28.  tracer.inject(span, Format.HTTP_HEADERS, headers) ​ 
  29.  r = requests.get(url, params={param: value}, headers=headers) 
  30.  assert r.status_code == 200 
  31.  return r.text 
  32. # main 
  33. assert len(sys.argv) == 2 ​ 
  34. tracer = init_tracer('hello-world'​ 
  35. hello_to = sys.argv[1] 
  36. say_hello(hello_to) 
  37. # yield to IOLoop to flush the spans 
  38. time.sleep(2) 
  39. tracer.close() 

客戶端完成了以下的工作:

  • 初始化Tracer,trace的名字是‘hello-world’
  • 創建以個客戶端操作say_hello,該操作關聯一個Span,取名‘say-hello’,并調用span.set_tag加入標簽
  • 在操作say_hello中調用第一個HTTP 服務A,format_string, 該操作關聯另一個Span取名‘format’,并調用span.log_kv加入日志
  • 之后調用另一個HTTP 服務B,print_hello, 該操作關聯另一個Span取名‘println’,并調用span.log_kv加入日志
  • 對于每一個HTTP請求,在Span中都加入標簽,標志http method,http url和span kind。并調用tracer.inject把SpanContext注入到http header 中。

服務A代碼

  1. from flask import Flask 
  2. from flask import request 
  3. from lib.tracing import init_tracer 
  4. from opentracing.ext import tags 
  5. from opentracing.propagation import Format ​ 
  6. app = Flask(__name__) 
  7. tracer = init_tracer('formatter')    
  8. @app.route("/format"
  9. def format(): 
  10.  span_ctx = tracer.extract(Format.HTTP_HEADERS, request.headers) 
  11.  span_tags = {tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER} 
  12.  with tracer.start_active_span('format', child_of=span_ctx, tags=span_tags): 
  13.  hello_to = request.args.get('helloTo'
  14.  return 'Hello, %s!' % hello_to 
  15. if __name__ == "__main__"
  16.  app.run(port=8081) 

服務A響應format請求,調用tracer.extract從http headers中提取信息,構建spanContext。

服務B代碼

  1. from flask import Flask 
  2. from flask import request 
  3. from lib.tracing import init_tracer 
  4. from opentracing.ext import tags 
  5. from opentracing.propagation import Format  
  6. app = Flask(__name__) 
  7. tracer = init_tracer('publisher'
  8. @app.route("/publish"
  9. def publish(): 
  10.  span_ctx = tracer.extract(Format.HTTP_HEADERS, request.headers) 
  11.  span_tags = {tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER} 
  12.  with tracer.start_active_span('publish', child_of=span_ctx, tags=span_tags): 
  13.  hello_str = request.args.get('helloStr'
  14.  print(hello_str) 
  15.  return 'published' ​ 
  16. if __name__ == "__main__"
  17.  app.run(port=8082) 

服務B和A類似。

之后在支持分布式追蹤的軟件UI上(下圖是Jaeger UI),就可以看到類似下圖的追蹤信息。我們可以看到服務hello-word和三個操作say-hello/format/println的詳細追蹤信息。

一文讀懂微服務監控之分布式追蹤

當前有很多分布式追蹤軟件都提供了OpenTracing的支持,包括:Jaeger,LightStep,Instanna,Apache SkyWalking,inspectIT,stagemonitor,Datadog,Wavefront,Elastic APM等等。其中作為開源軟件的Zipkin(http://1t.click/6Ec)和Jaeger(http://1t.click/6DY)最為流行。

Zipkin

Zipkin(http://1t.click/6Ec)是Twitter基于Dapper開發的分布式追蹤系統。它的設計架構如下圖:

一文讀懂微服務監控之分布式追蹤
  • 藍色實體是Zipkin要追蹤的目標組件,Non-Intrumented Server表示不直接調用Tracing API的微服務。通過Intrumented Client從Non-Intrumented Server中收集信息并發送給Zipkin的收集器Collector。Intrumented Server 直接調用Tracing API,發送數據到Zipkin的收集器。
  • Transport是傳輸通道,可以通過HTTP直接發送到Zipkin或者通過消息/事件隊列的方式。
  • Zipkin本身是一個Java應用,包含了:收集器Collector負責數據采集,對外提供數據接口;存儲;API和UI。

Zipkin的用戶界面像這個樣子:

一文讀懂微服務監控之分布式追蹤
一文讀懂微服務監控之分布式追蹤

Zipkin官方支持以下幾種語言的客戶端:C#,Go,Java,JavaScript,Ruby,Scala,PHP。開源社區也有其它語言的支持。

Zipkin發展到現在有快4年的時間,是一個相對成熟的項目。

Jaeger

Jaeger(http://1t.click/6DY)最早是由Uber開發的分布式追蹤系統,同樣基于Dapper的設計理念。現在Jaeger是CNCF(Cloud Native Computing Foundation)的一個項目。如果你對CNCF這個組織有所了解,那么你可以推測出這個項目應該和Kubernetes有非常緊密的集成。

Jaeger基于分布式的架構設計,主要包含以下幾個組件:

  1. Jaeger Client,負責在客戶端收集跟蹤信息。
  2. Jaeger Agent,負責和客戶端通信,把收集到的追蹤信息上報個收集器 Jaeger Collector
  3. Jaeger Colletor把收集到的數據存入數據庫或者其它存儲器
  4. Jaeger Query 負責對追蹤數據進行查詢
  5. Jaeger UI負責用戶交互

這個架構很像ELK,Collector之前類似Logstash負責采集數據,Query類似Elastic負責搜索,而UI類似Kibana負責用戶界面和交互。這樣的分布式架構使得Jaeger的擴展性更好,可以根據需要,構建不同的部署。

Jaeger作為分布式追蹤的后起之秀,隨著云原生和K8s的廣泛采用,正變得越來越流行。利用官方給出的K8s部署模版(http://1t.click/6DU),用戶可以快速的在自己的k8s集群上部署Jaeger。

4.分布式跟蹤系統——產品對比

當然除了支持OpenTracing標準的產品之外,還有其它的一些分布式追蹤產品。這里引用一些其它博主的分析,給大家一些參考:

  • 調用鏈選型之Zipkin,Pinpoint,SkyWalking,CAT(http://1t.click/6tY)
  • 分布式調用鏈調研(pinpoint,skywalking,jaeger,zipkin等對比)(http://1t.click/6DK)
  • 分布式跟蹤系統——產品對比(http://1t.click/6ug)

5.總結

在微服務大行其道,云原生成為架構設計的主流的情況下,微服務系統監控,包含日志,指標和追蹤成為了系統工程的重中之重。OpenTracing基于Dapper的分布式追蹤設計理念,定義了分布式追蹤的實現標準。在開源項目中,Zipkin和Jaeger是相對優秀的選擇。尤其是Jaeger,由于對云原生框架的良好集成,是構建微服務追蹤系統的必備良器。

責任編輯:華軒 來源: EAWorld
相關推薦

2023-09-21 16:10:44

2023-09-20 22:56:45

分布式追蹤應用程序

2016-10-25 14:35:05

分布式系統 存儲

2022-09-21 16:56:16

設計模式微服務架構

2024-07-09 08:11:56

2025-03-05 00:05:50

2016-09-01 13:48:18

2022-09-25 22:19:24

Dapr分布式追蹤

2022-07-13 09:53:58

分布式開發

2024-05-27 10:42:55

2020-06-10 10:20:24

微服務架構WEB2.0

2020-09-11 09:44:04

微服務分布式鏈路

2021-01-25 15:00:44

微服務分布式日志

2021-08-27 10:14:16

Thanos監控開源

2021-08-09 10:20:04

Thanos監控架構

2019-05-28 10:30:16

Java架構微服務

2022-12-21 08:40:05

限流器分布式限流

2017-10-20 13:39:29

分布式系統數據存儲數據量

2025-01-10 08:42:27

分布式服務發布Dubbo

2021-08-04 16:06:45

DataOps智領云
點贊
收藏

51CTO技術棧公眾號

在线观看 中文字幕| 美女少妇一区二区| 熟妇人妻系列aⅴ无码专区友真希| 亚洲午夜电影| 亚洲男人天堂网| 亚洲av无日韩毛片久久| h片在线观看下载| 国产色产综合色产在线视频| 91久久精品国产| 91久久国产视频| 91久久夜色精品国产按摩| 精品国产污网站| 手机在线免费观看毛片| 国产第一页在线| 国产精品久久精品日日| 国产精品污www一区二区三区| 免费av中文字幕| 欧美日韩成人| 在线视频欧美性高潮| 无码人妻少妇色欲av一区二区| 亚洲国产福利| 亚洲色图视频网| 日本免费高清一区二区| 黄色av免费观看| 精品一区二区三区香蕉蜜桃| 欧美激情手机在线视频| youjizz亚洲女人| 欧美成a人免费观看久久| 欧美一区二区网站| 在线免费观看视频黄| 中文日产幕无线码一区二区| 一二三区精品视频| 亚洲图片欧洲图片日韩av| 五月婷婷激情在线| 高清在线观看日韩| 亚洲bt欧美bt日本bt| 中文字幕欧美人妻精品一区蜜臀| 一本色道久久综合| 久久久久女教师免费一区| 毛片久久久久久| 精品视频黄色| 欧美精品一区二区三区蜜臀| 九色91porny| 成人在线视频www| 欧美日韩一区国产| 国产又黄又猛又粗又爽的视频| 国产三级电影在线播放| 亚洲一区二区三区中文字幕| 韩国黄色一级大片| 午夜免费福利在线观看| 中文字幕av一区二区三区| 欧美日韩国产精品一卡| 欧美女子与性| 久久久午夜精品理论片中文字幕| 九色91国产| 性xxxfllreexxx少妇| www.视频一区| 精品久久久久久乱码天堂| 少妇人妻精品一区二区三区| 成人国产在线观看| 国产一区二区三区高清视频| 少妇av一区二区| 99久免费精品视频在线观看| 精品久久久久久综合日本| 日日躁夜夜躁白天躁晚上躁91| 风流少妇一区二区| 国产精品有限公司| 亚洲 欧美 激情 小说 另类| 久久久午夜电影| 亚洲三区在线| av中文字幕在线观看| 一级精品视频在线观看宜春院 | 欧美一级免费片| 丁香五精品蜜臀久久久久99网站 | 欧美精品激情视频| 国产大片中文字幕在线观看| 99riav1国产精品视频| 日本精品性网站在线观看| 亚洲中文一区二区| 理论片日本一区| 成人av蜜桃| 视频在线观看你懂的| 国产亲近乱来精品视频| 最新不卡av| 爱情岛论坛亚洲品质自拍视频网站| 亚洲第一福利一区| 天天操天天摸天天爽| www.欧美| 国产丝袜一区视频在线观看| www.日本高清视频| 红桃视频亚洲| 国产成人在线一区| 亚洲高清视频网站| 久久―日本道色综合久久 | 亚洲网站在线| 国产成人精品午夜| 精品女同一区二区三区| 91片在线免费观看| 蜜桃视频成人在线观看| 国产精品高颜值在线观看| 欧美丝袜自拍制服另类| 四虎永久免费观看| 日韩成人精品一区| 午夜剧场成人观在线视频免费观看| www.五月婷婷.com| 高清不卡一二三区| 在线视频不卡一区二区| ****av在线网毛片| 欧美精品在欧美一区二区少妇| 制服丝袜第一页在线观看| 欧美日韩水蜜桃| 久久久久久久久久久免费| 在线免费观看日韩视频| 91在线播放网址| 国产激情在线看| jizz亚洲女人高潮大叫| 日韩av在线免播放器| 我要看黄色一级片| 日韩高清欧美激情| 狠狠色狠狠色综合人人| 26uuu亚洲电影在线观看| 欧美中文字幕久久| 黄色正能量网站| 国产精品大片| 成人免费看黄网站| 超碰国产在线观看| 色综合激情久久| 免费黄色三级网站| 欧美日韩hd| 99超碰麻豆| 看女生喷水的网站在线观看| 欧美伊人久久大香线蕉综合69| 中文成人无字幕乱码精品区| 欧美精品一线| 亚洲综合色av| 麻豆视频在线免费观看| 精品视频999| 老熟妇一区二区| 老司机精品导航| 久久av免费观看| av日韩国产| 精品国产三级电影在线观看| 麻豆chinese极品少妇| 国内精品视频666| 在线看无码的免费网站| 男人亚洲天堂| 中文字幕日韩精品在线| 中文字幕+乱码+中文| 国产亚洲美州欧州综合国| 亚洲爆乳无码专区| 九九久久电影| 国产精品久久久久久久久久久新郎 | 日韩精品欧美精品| 日韩高清av| av日韩电影| 一区二区日韩精品| 国产女优在线播放| 国产精品国产三级国产a| av中文字幕网址| 亚洲一本二本| 国产激情一区二区三区在线观看 | 日本无删减在线| 欧美mv日韩mv国产网站| 国产精彩视频在线观看| 91偷拍与自偷拍精品| 日韩久久一级片| 国产精品最新| 成人福利视频在线观看| 欧美亚洲系列| 亚洲精品第一页| 中文区中文字幕免费看| 最近日韩中文字幕| 逼特逼视频在线观看| 性久久久久久| 亚洲一区二区精品在线| 午夜日韩影院| 欧美在线一区二区视频| av网在线观看| 日韩精品在线一区二区| 国产精品乱子伦| 中文字幕国产精品一区二区| 天天爽夜夜爽视频| 99成人在线| 亚洲国产婷婷香蕉久久久久久99| 9999在线精品视频| 91成人国产在线观看| 香蕉视频在线免费看| 欧美zozozo| 无码任你躁久久久久久久| 亚洲三级视频在线观看| 在线观看国产网站| 久久精品国产亚洲aⅴ| www插插插无码视频网站| 成人在线免费视频观看| 成人黄色片视频网站| 欧美片第一页| 久久91精品国产| 黄色软件在线| 精品国产乱码久久久久久久| 五月婷婷丁香在线| 亚洲国产成人91porn| 黄色av免费播放| jiyouzz国产精品久久| 欧美三级午夜理伦三级富婆| 亚洲福利专区| 正在播放国产精品| 亚洲香蕉视频| 国产成人一区二区三区免费看| 亚洲a∨精品一区二区三区导航| 欧美激情视频播放| 日韩黄色影院| 亚洲免费小视频| 六月丁香色婷婷| 69堂成人精品免费视频| 精品黑人一区二区三区| 亚洲国产一二三| 亚洲波多野结衣| 国产精品素人一区二区| av无码av天天av天天爽| 国产成人免费视频精品含羞草妖精| 天堂中文视频在线| 久久久xxx| 国产成人在线免费看| 亚洲精品一区二区在线看| 日韩电影免费观看在| 亚洲人成网站77777在线观看| 99一区二区| 国产精品国产亚洲精品| 国产欧美日韩中文| 99久久婷婷国产综合精品首页| 欧美自拍视频在线观看| 17videosex性欧美| 午夜精品理论片| 午夜av在线免费观看 | 2019中文字幕在线电影免费 | 九九热视频精品| 成人免费在线视频| 久久爱一区二区| 国产精品视频一二三| 欧美 日韩 成人| 久久精品亚洲精品国产欧美kt∨| 免费成人深夜夜行p站| heyzo一本久久综合| 国产视频久久久久久| 成人午夜激情片| 性色av蜜臀av浪潮av老女人| 成人黄色综合网站| 欧美大喷水吹潮合集在线观看| 成人综合在线视频| 国产在线不卡av| 白白色 亚洲乱淫| 中出视频在线观看| 91日韩在线专区| 久久国产柳州莫菁门| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区四区免费| 国产日韩高清在线| 奇米网一区二区| 亚洲天堂a在线| 激情五月婷婷小说| 亚洲香肠在线观看| 久久国产精品免费看| 91九色02白丝porn| 中文字幕在线观看第二页| 在线不卡a资源高清| 国产a级免费视频| 亚洲成人网在线| 欧美视频综合| 最近2019中文字幕一页二页| 高清免费电影在线观看| 欧美精品激情在线观看| 日韩脚交footjobhd| 国产精品久久久久av免费| 国产精品一区免费在线| 国产福利不卡| 精品国产乱码久久久久久蜜坠欲下| 亚洲国产午夜伦理片大全在线观看网站 | 中文字幕国产精品久久| av免费在线免费| 4438全国成人免费| 国产亚洲欧美日韩精品一区二区三区| 成人久久久久久| 美女网站色精品尤物极品姐弟| 欧美一区二区高清在线观看| 天天做综合网| 日本中文字幕网址| 免费在线观看一区二区三区| 亚洲av无一区二区三区久久| 91视频www| 亚洲 欧美 变态 另类 综合| 欧美视频在线观看免费| 一级黄色片在线观看| 日韩av在线网址| 米奇精品一区二区三区| 91sa在线看| 国产精品一区二区三区av | 特黄特黄一级片| 久久久亚洲精品石原莉奈| 全网免费在线播放视频入口| 色综合色综合色综合| 国产高潮在线观看| 亚洲色图第一页| 国内小视频在线看| 成人国产精品一区二区| 亚洲精品国模| 欧美黄色免费网址| 美女视频一区二区| 51调教丨国产调教视频| 一区二区三区四区高清精品免费观看| 欧美brazzers| 亚洲国产精品久久久久秋霞不卡| 麻豆免费在线视频| 国产成人精品久久| 国产精品一区二区三区美女| 黑人巨大国产9丨视频| 青青草国产成人99久久| 国产精品无码网站| 亚洲香蕉伊在人在线观| 国产精品天天操| 在线精品国产成人综合| 中国字幕a在线看韩国电影| 高清一区二区三区视频| 91精品综合| 天天操狠狠操夜夜操| 久久午夜色播影院免费高清 | 亚洲第一伊人| 日本人妻一区二区三区| 亚洲三级小视频| 国产精品国产三级国产aⅴ| 在线精品高清中文字幕| 日韩精品第一| 欧美一区二区综合| 亚洲综合日韩| jizz日本免费| 精品国产精品自拍| 视频一区 中文字幕| 欧美—级a级欧美特级ar全黄| 免费看日产一区二区三区 | 免费在线观看黄| 国产精品一二三在线| jizzjizz欧美69巨大| 国产嫩草在线观看| 中文字幕乱码久久午夜不卡 | 老色鬼在线视频| 激情五月综合色婷婷一区二区| 韩国欧美一区| 久久久久亚洲av成人网人人软件| 一区二区三区日韩欧美| 亚洲国产综合网| 欧美国产视频日韩| 99精品中文字幕在线不卡 | 久久超级碰视频| 登山的目的在线| 欧美一区二区三区四区视频| 制服丝袜在线播放| 成人欧美一区二区三区在线观看| 国产精品av久久久久久麻豆网| 国产探花一区二区三区| 午夜精品福利一区二区三区av | 在线免费观看视频网站| 日韩少妇与小伙激情| 日韩高清一区| 人妻久久久一区二区三区| 久久一区二区三区国产精品| 夜夜躁日日躁狠狠久久av| 少妇精69xxtheporn| 欧美久久亚洲| 男人添女人下面高潮视频| 久久久99精品免费观看不卡| 在线观看毛片网站| 免费99精品国产自在在线| 精品福利网址导航| 不卡影院一区二区| 国产精品国产自产拍高清av王其| 99久久夜色精品国产亚洲| 97香蕉超级碰碰久久免费的优势| 国产一区二区在线| 人妻换人妻仑乱| 欧美香蕉大胸在线视频观看| 日本在线观看视频| 国产精品.com| 日韩电影在线观看网站| 美国黄色小视频| 亚洲精品日韩欧美| 伊人亚洲精品| 国产精品宾馆在线精品酒店| 国产精品乱码久久久久久| 亚洲第一色网站| 国产精品第一视频| 欧美亚洲不卡| 午夜黄色福利视频| 精品sm在线观看| 色综合视频一区二区三区44| 日韩伦理在线免费观看| 国产精品大尺度| 日韩精品系列| 99精品欧美一区二区三区| 奇米精品一区二区三区在线观看一| 久久午夜无码鲁丝片| 中文字幕亚洲一区在线观看|