久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Java Kafka 消費積壓監控的示例代碼

瀏覽:9日期:2022-08-10 15:40:53

后端代碼:

Monitor.java代碼:

package com.suncreate.kafkaConsumerMonitor.service;import com.suncreate.kafkaConsumerMonitor.model.ConsumerInfo;import org.apache.kafka.clients.consumer.ConsumerConfig;import org.apache.kafka.clients.consumer.KafkaConsumer;import org.apache.kafka.clients.consumer.OffsetAndMetadata;import org.apache.kafka.common.PartitionInfo;import org.apache.kafka.common.TopicPartition;import org.apache.kafka.common.serialization.StringDeserializer;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.*;/** * kafka消費監控 * * @author suxiang */public class Monitor { private static final Logger log = LoggerFactory.getLogger(Monitor.class); private String servers; private String topic; private String groupId; private long lastTime; private long lastTotalLag = 0L; private long lastLogSize = 0L; private long lastOffset = 0L; private double lastRatio = 0; private long speedLogSize = 0L; private long speedOffset = 0L; private String time; private List<ConsumerInfo> list; private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); public String getTime() {return time; } public void setTime(String time) {this.time = time; } public long getLastTotalLag() {return lastTotalLag; } public double getLastRatio() {return lastRatio; } public String getTopic() {return topic; } public String getGroupId() {return groupId; } public long getSpeedLogSize() {return speedLogSize; } public long getSpeedOffset() {return speedOffset; } public List<ConsumerInfo> getList() {return list; } public void setList(List<ConsumerInfo> list) {this.list = list; } private KafkaConsumer<String, String> consumer; private List<TopicPartition> topicPartitionList; private final DecimalFormat decimalFormat = new DecimalFormat('0.00'); public Monitor(String servers, String topic, String groupId) {this.servers = servers;this.topic = topic;this.groupId = groupId;this.list = new ArrayList<>();//消費者Properties properties = new Properties();properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, this.servers);properties.put(ConsumerConfig.GROUP_ID_CONFIG, this.groupId);properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);consumer = new KafkaConsumer<String, String>(properties);//查詢 topic partitionstopicPartitionList = new ArrayList<>();List<PartitionInfo> partitionInfoList = consumer.partitionsFor(topic);for (PartitionInfo partitionInfo : partitionInfoList) { TopicPartition topicPartition = new TopicPartition(partitionInfo.topic(), partitionInfo.partition()); topicPartitionList.add(topicPartition);} } public void monitor(boolean addToList) {try { long startTime = System.currentTimeMillis(); //查詢 log size Map<Integer, Long> endOffsetMap = new HashMap<>(); Map<TopicPartition, Long> endOffsets = consumer.endOffsets(topicPartitionList); for (TopicPartition partitionInfo : endOffsets.keySet()) {endOffsetMap.put(partitionInfo.partition(), endOffsets.get(partitionInfo)); } //查詢消費 offset Map<Integer, Long> commitOffsetMap = new HashMap<>(); for (TopicPartition topicAndPartition : topicPartitionList) {OffsetAndMetadata committed = consumer.committed(topicAndPartition);commitOffsetMap.put(topicAndPartition.partition(), committed.offset()); } long endTime = System.currentTimeMillis(); log.info('查詢logSize和offset耗時:' + (new DecimalFormat('0.000')).format((endTime - startTime) / 1000.0) + ' 秒'); startTime = System.currentTimeMillis(); //累加lag long totalLag = 0L; long logSize = 0L; long offset = 0L; if (endOffsetMap.size() == commitOffsetMap.size()) {for (Integer partition : endOffsetMap.keySet()) { long endOffset = endOffsetMap.get(partition); long commitOffset = commitOffsetMap.get(partition); long diffOffset = endOffset - commitOffset; totalLag += diffOffset; logSize += endOffset; offset += commitOffset;} } else {log.error('Topic:' + topic + ' consumer:' + consumer + ' topic partitions lost'); } log.info('Topic:' + topic + ' logSize:' + logSize + ' offset:' + offset + ' totalLag:' + totalLag); if (lastTime > 0) {if (System.currentTimeMillis() - lastTime > 0) { speedLogSize = (long) ((logSize - lastLogSize) / ((System.currentTimeMillis() - lastTime) / 1000.0)); speedOffset = (long) ((offset - lastOffset) / ((System.currentTimeMillis() - lastTime) / 1000.0));}if (speedLogSize > 0) { String strRatio = decimalFormat.format(speedOffset * 100 / (speedLogSize * 1.0)); lastRatio = Double.parseDouble(strRatio); log.info('Topic:' + topic + ' speedLogSize:' + speedLogSize + ' speedOffset:' + speedOffset + ' 百分比:' + strRatio + '%');} } lastTime = System.currentTimeMillis(); lastTotalLag = totalLag; lastLogSize = logSize; lastOffset = offset; endTime = System.currentTimeMillis(); log.info('計算耗時:' + (new DecimalFormat('0.000')).format((endTime - startTime) / 1000.0) + ' 秒'); if (addToList) {this.setTime(simpleDateFormat.format(new Date()));this.list.add(new ConsumerInfo(this.getTopic(), this.getGroupId(), this.getLastTotalLag(), this.getLastRatio(), this.getSpeedLogSize(), this.getSpeedOffset(), this.getTime()));if (this.list.size() > 500) { this.list.remove(0);} }} catch (Exception e) { log.error('Monitor error', e);} }}

MonitorService.java代碼:

package com.suncreate.kafkaConsumerMonitor.service;import com.suncreate.kafkaConsumerMonitor.model.ConsumerInfo;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;import javax.annotation.PostConstruct;import java.util.*;@Servicepublic class MonitorService { private static final Logger log = LoggerFactory.getLogger(MonitorService.class); @Value('${kafka.consumer.servers}') private String servers; private Monitor monitor; private List<Monitor> monitorList; @PostConstruct private void Init() {monitorList = new ArrayList<>();monitorList.add(new Monitor(servers, 'wifiData', 'wifi-kafka-hbase'));monitorList.add(new Monitor(servers, 'KK_PASS_INFO_TYCC', 'EXTRACT-SAMPLE'));monitorList.add(new Monitor(servers, 'KK_PASS_INFO_TYCC', 'dblrecog-upload2vcn'));monitorList.add(new Monitor(servers, 'KK_PASS_INFO_TYCC_FILTER', 'yisa20210521000001'));monitorList.add(new Monitor(servers, 'KK_PASS_INFO_TYCC_FILTER', 'kafka-filter-check-19'));monitorList.add(new Monitor(servers, 'motorVehicle', 'unifiedstorage-downloader'));monitorList.add(new Monitor(servers, 'motorVehicle', 'full-vehicle-data-storage-kafka2ch'));monitorList.add(new Monitor(servers, 'motorVehicle', 'vehicle_store'));monitorList.add(new Monitor(servers, 'motorVehicle', 'vcn-sk-upload-luyang'));monitorList.add(new Monitor(servers, 'motorVehicle', 'vcn-sk-upload-yaohai'));monitorList.add(new Monitor(servers, 'motorVehicle', 'vcn-sk-upload-baohe'));monitorList.add(new Monitor(servers, 'peopleFace', 'kafka-filter-check-19')); } public void monitorOnce(boolean addToList) {for (Monitor monitor : monitorList) { monitor.monitor(addToList);} } public List<ConsumerInfo> getConsumerList() {List<ConsumerInfo> list = new ArrayList<>();for (Monitor monitor : monitorList) { list.add(new ConsumerInfo(monitor.getTopic(), monitor.getGroupId(), monitor.getLastTotalLag(), monitor.getLastRatio(), monitor.getSpeedLogSize(), monitor.getSpeedOffset(), monitor.getTime()));}return list; } public List<ConsumerInfo> getDetails(String topic, String groupId) {for (Monitor monitor : monitorList) { if (monitor.getTopic().equals(topic) && monitor.getGroupId().equals(groupId)) {return monitor.getList(); }}return new ArrayList<>(); }}

MonitorConfig.java代碼:

package com.suncreate.kafkaConsumerMonitor.task;import com.suncreate.kafkaConsumerMonitor.service.MonitorService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.SchedulingConfigurer;import org.springframework.scheduling.config.ScheduledTaskRegistrar;import org.springframework.scheduling.support.CronTrigger;import java.text.SimpleDateFormat;@Configuration@EnableSchedulingpublic class MonitorConfig implements SchedulingConfigurer { private static final Logger logger = LoggerFactory.getLogger(MonitorConfig.class); private String cronExpression = '0 */3 * * * ?'; //private String cronExpression = '*/20 * * * * ?'; private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss.SSS'); @Autowired private MonitorService monitorService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.addTriggerTask(() -> { monitorService.monitorOnce(true);}, triggerContext -> new CronTrigger(cronExpression).nextExecutionTime(triggerContext)); }}

MonitorController.java代碼:

package com.suncreate.kafkaConsumerMonitor.controller;import com.suncreate.kafkaConsumerMonitor.model.ConsumerInfo;import com.suncreate.kafkaConsumerMonitor.model.LayuiData;import com.suncreate.kafkaConsumerMonitor.service.MonitorService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController@RequestMapping('/monitor')public class MonitorController { @Autowired private MonitorService monitorService; @GetMapping('/getConsumers') public LayuiData getConsumers() {List<ConsumerInfo> list = monitorService.getConsumerList();LayuiData data = new LayuiData(list);return data; } @GetMapping('/monitorOnce') public void monitorOnce() {monitorService.monitorOnce(false); } @GetMapping('/getDetails') public LayuiData getDetails(String topic, String groupId) {List<ConsumerInfo> list = monitorService.getDetails(topic, groupId);LayuiData data = new LayuiData(list);return data; }}

pom.xml文件(有些東西沒用到或者備用,沒有刪):

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.suncreate</groupId> <artifactId>kafka-consumer-monitor</artifactId> <version>1.0</version> <name>kafka-consumer-monitor</name> <description>Kafka消費積壓監控預警</description> <properties><java.version>1.8</java.version><elasticsearch.version>6.1.4</elasticsearch.version> </properties> <dependencies><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency><dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope></dependency><dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version></dependency><dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.1.4</version></dependency><dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.1.0.7.0</version></dependency><dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>0.11.0.1</version></dependency><dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.11.0.1</version></dependency> </dependencies> <build><plugins> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration> <source>8</source> <target>8</target></configuration> </plugin></plugins> </build></project>

前端使用了 Layui 和 ECharts 展示表格和圖表

index.css代碼:

.div-title { font-size: 18px; margin-top: 10px; margin-left: 10px;}.div-right { text-align: right;}.span-red { color: #ff0000;}

index.html代碼(展示topic、消費者組Consumer GroupId、Total Lag、Kafka數據生產速度、Kafka數據消費速度等):

<!DOCTYPE html><html lang='zh'><head> <meta charset='UTF-8'> <title>Title</title> <link rel='stylesheet' href='http://www.gepszalag.com/bcjs/css/index.css' rel='external nofollow' rel='external nofollow' > <link rel='stylesheet' href='http://www.gepszalag.com/bcjs/js/layui-v2.6.8/css/layui.css' rel='external nofollow' rel='external nofollow' media='all'> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/js/jquery-1.7.1.js'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/js/layui-v2.6.8/layui.js' charset='utf-8'></script></head><body><div class='div-title'>Kafka 監控 <button type='button' onclick='refreshTable()'>刷新</button></div><table id='myTable'></table><script type='text/javascript'> var myTable; layui.use(’table’, function () {var table = layui.table;myTable = table.render({ elem: ’#myTable’, url: ’/home/monitor/getConsumers’, cellMinWidth: 80, //全局定義常規單元格的最小寬度 cols: [[{field: ’topic’, width: 300, title: ’topic’, sort: true},{field: ’groupId’, width: 300, title: ’groupId’},{ field: ’totalLag’, width: 150, title: ’Total Lag’, sort: true, templet: function (d) {if (d.delayDay * 24 > 2) { return ’<div class='div-right'><span class='span-red'>’ + d.totalLag + ’</span></div>’} else { return ’<div class='div-right'><span>’ + d.totalLag + ’</span></div>’} }},{ field: ’speedLogSize’, width: 150, title: ’生產速度(條/秒)’, templet: function (d) {return ’<div class='div-right'>’ + d.speedLogSize + ’</div>’ }},{ field: ’speedOffset’, width: 150, title: ’消費速度(條/秒)’, templet: function (d) {return ’<div class='div-right'>’ + d.speedOffset + ’</div>’ }},{ field: ’ratio’, width: 100, title: ’消費/生產’, templet: function (d) {if (d.ratio < 90) { return ’<div class='div-right'><span class='span-red'>’ + d.ratio + ’%</span></div>’} else { return ’<div class='div-right'><span>’ + d.ratio + ’%</span></div>’} }},{ field: ’delayDay’, width: 150, title: ’積壓(天)’, sort: true, templet: function (d) {if (d.delayDay * 24 > 2) { return ’<div class='div-right'><span class='span-red'>’ + d.delayDay + ’</span></div>’} else { return ’<div class='div-right'><span>’ + d.delayDay + ’</span></div>’} }},{ field: ’ope’, width: 100, title: ’操作’, templet: function (d) {return ’<a href='http://www.gepszalag.com/home/detail.html?topic=’ + d.topic + ’&groupId=’ + d.groupId + ’' rel='external nofollow' target='_blank' >詳細</a>’; }} ]]}); }); function refreshTable() {if (myTable) { myTable.reload();} } setInterval(function () {refreshTable(); }, 30000); // setInterval(function () { // $.get('/home/monitor/monitorOnce'); // }, 30000);</script></body></html>

detail.html代碼(展示單個消費者組的Total Lag、生產速度、消費速度以及Total Lag趨勢圖):

<!DOCTYPE html><html lang='zh'><head> <meta charset='UTF-8'> <title>Title</title> <link rel='stylesheet' href='http://www.gepszalag.com/bcjs/css/index.css' rel='external nofollow' rel='external nofollow' > <link rel='stylesheet' href='http://www.gepszalag.com/bcjs/js/layui-v2.6.8/css/layui.css' rel='external nofollow' rel='external nofollow' media='all'> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/js/jquery-1.7.1.js'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/js/layui-v2.6.8/layui.js' charset='utf-8'></script> <script type='text/javascript' src='http://www.gepszalag.com/bcjs/js/echarts-v4.7.0/echarts.min.js'></script></head><body><div class='div-title'><span id='detailTitle'></span> 明細 <button type='button' onclick='refreshTable()'>刷新</button></div><div style='height:400px;'></div><table id='test'></table><script type='text/javascript'> var myTable; var topic = getQueryVariable('topic'); var groupId = getQueryVariable('groupId'); $('#detailTitle').html(topic + ' ' + groupId); layui.use(’table’, function () {var table = layui.table;myTable = table.render({ elem: ’#test’, url: ’/home/monitor/getDetails?topic=’ + topic + ’&groupId=’ + groupId, cellMinWidth: 80, //全局定義常規單元格的最小寬度 initSort: {field: ’time’, //排序字段,對應 cols 設定的各字段名type: ’desc’ //排序方式 asc: 升序、desc: 降序、null: 默認排序 }, cols: [[{field: ’topic’, width: 300, title: ’topic’},{field: ’groupId’, width: 300, title: ’groupId’},{field: ’time’, width: 180, title: ’時間’, sort: true},{ field: ’totalLag’, width: 150, title: ’Total Lag’, templet: function (d) {if (d.delayDay * 24 > 2) { return ’<div class='div-right'><span class='span-red'>’ + d.totalLag + ’</span></div>’} else { return ’<div class='div-right'><span>’ + d.totalLag + ’</span></div>’} }},{ field: ’speedLogSize’, width: 150, title: ’生產速度(條/秒)’, templet: function (d) {return ’<div class='div-right'>’ + d.speedLogSize + ’</div>’ }},{ field: ’speedOffset’, width: 150, title: ’消費速度(條/秒)’, templet: function (d) {return ’<div class='div-right'>’ + d.speedOffset + ’</div>’ }},{ field: ’ratio’, width: 100, title: ’消費/生產’, templet: function (d) {if (d.ratio < 90) { return ’<div class='div-right'><span class='span-red'>’ + d.ratio + ’%</span></div>’} else { return ’<div class='div-right'><span>’ + d.ratio + ’%</span></div>’} }},{ field: ’delayDay’, width: 150, title: ’積壓(天)’, templet: function (d) {if (d.delayDay * 24 > 2) { return ’<div class='div-right'><span class='span-red'>’ + d.delayDay + ’</span></div>’} else { return ’<div class='div-right'><span>’ + d.delayDay + ’</span></div>’} }} ]]}); }); function refreshTable() {if (myTable) { myTable.reload();}showChart(); } setInterval(function () {refreshTable(); }, 30000); function getQueryVariable(variable) {var query = window.location.search.substring(1);var vars = query.split('&');for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('='); if (pair[0] == variable) {return pair[1]; }}return (false); } function showChart() {$.ajax({ type: 'GET', url: ’/home/monitor/getDetails?topic=’ + topic + ’&groupId=’ + groupId, success: function (data) {if (data && data.data && data.data.length > 1) { debugger; var chartDom = document.getElementById(’main’); var myChart = echarts.init(chartDom); var option; var xAxis = []; var serseis = []; for (var i = 0; i < data.data.length; i++) {xAxis.push(data.data[i].time);serseis.push(data.data[i].totalLag); } option = {title: { show: true, text: 'Total Lag 趨勢圖', x: ’center’},xAxis: { type: ’category’, data: xAxis},yAxis: { type: ’value’},series: [{ data: serseis, type: ’line’}] }; myChart.setOption(option);} }}); } showChart();</script></body></html>

效果圖:

消費者組列表:

Java Kafka 消費積壓監控的示例代碼

消費者組明細:

Java Kafka 消費積壓監控的示例代碼

到此這篇關于Java Kafka 消費積壓監控的文章就介紹到這了,更多相關Java Kafka 消費監控內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 欧美久久一级特黄毛片 | 国产精品美女久久久久久久久久久 | 日本一区二区三区四区视频 | 日本黄色片免费 | 91精品视频在线播放 | 成人欧美一区二区三区视频xxx | 99riav国产精品 | 中文字幕成人 | 亚洲成av人影片在线观看 | 国产目拍亚洲精品99久久精品 | 美女毛片| 国产精品一区二区在线 | 天堂一区二区三区在线 | 伊人av在线| 日本黄色激情片 | www.日韩系列 | 91视频一区二区 | 久久不卡日韩美女 | 日韩综合网 | 亚洲日本韩国在线观看 | 日韩精品一二三区 | 欧美一区在线看 | 国产不卡视频在线观看 | 欧美日韩国产精品一区 | 色综合久 | 91久久精品一区二区二区 | 中文字幕成人免费视频 | 成人免费在线观看视频 | 国产1页| 国产一区二区三区久久久久久久久 | 久久亚洲精品视频 | 欧美∨a | 欧美电影一区 | 欧美午夜一区二区三区免费大片 | 久久免费精品 | 亚洲中国精品精华液 | 国产精品国产成人国产三级 | 久久国产久 | 国产精品视频免费看 | 欧美人体一区二区三区 | 影视一区 | 中文字幕一区在线观看 | 精品国产乱码久久久久久1区2区 | 国产精品18hdxxxⅹ在线 | 亚洲精品亚洲人成人网 | 四虎永久在线 | 欧洲精品在线观看 | 亚洲人成在线观看 | 亚洲性网| 欧美日韩中文字幕在线 | 久久综合九色综合欧美狠狠 | 一区二区三区影院 | 一区二区三区精品视频 | 国产片在线观看 | 久久成人精品 | www.久久.com| 日韩精品小视频 | 级毛片| 黄视频免费在线 | 男女爱爱免费视频 | 国产精品久久av | 久久久91精品国产一区二区 | 99精品视频网 | 99re国产 | www,四虎| 午夜精品一区二区三区免费视频 | 在线免费观看色视频 | 91一区二区 | 久久99这里只有精品 | 欧美视频中文字幕 | 中文字幕久久精品 | 午夜亚洲电影 | 亚洲国产日韩a在线播放性色 | 色视频www在线播放国产人成 | 成人网在线 | 成人精品视频在线观看 | 久草视频在线播放 | 国产91av视频在线观看 | 亚洲国产二区三区 | 日本 欧美 三级 高清 视频 | 久久99深爱久久99精品 | 亚洲精选免费视频 | 国产精品国产精品国产专区不片 | 国产91对白叫床清晰播放 | 国产精品久久久久久久久久免费看 | 另类 综合 日韩 欧美 亚洲 | 超级乱淫片国语对白免费视频 | 热久久这里只有精品 | 国产精品毛片久久久久久久 | 91福利视频导航 | 一区二区三区免费看 | 中文字幕三区 | 一区二区三区精品视频免费看 | 久久亚洲欧美日韩精品专区 | 天堂在线中文字幕 | 精品久久久久久久久久久院品网 | 黑人巨大精品欧美一区二区三区 | 天天操天天拍 | 麻豆精品国产91久久久久久 | 日韩视频―中文字幕 | 国产一区在线视频 | 偷拍自拍网站 | 亚洲乱码在线 | baoyu123成人免费看视频 | 日韩欧美综合 | 日韩中文字幕在线视频 | 99这里只有精品视频 | 国产精品一区二区无线 | 国产精品美女久久久久久久网站 | 国产视频精品视频 | 久久国产亚洲 | 欧美a v在线播放 | heyzo 在线 | 欧美日韩激情在线一区二区三区 | 涩涩999| 日本aⅴ毛片成人实战推荐 成人免毛片 | 天天天天天天天天操 | 久久久国产精品视频 | 欧美日韩一区二区三区在线观看 | 青娱乐国产视频 | 亚洲国产二区 | 美日韩成人 | 亚洲国产精品一区二区www | 国产精品久久久久久久午夜片 | 亚洲男人的天堂在线播放 | 中文字幕在线资源 | 欧美一级在线 | 超碰高清 | 日韩精品一区二区三区在线播放 | 亚洲 欧美 精品 | 久久久久综合 | 色婷婷综合久久久久中文一区二区 | 日韩成人一区 | 欧美一区久久 | 欧美一区二区三区免费观看视频 | 日韩在线欧美 | 韩国精品视频在线观看 | 香蕉av777xxx色综合一区 | 国产一区二区三区久久久久久久久 | 日韩欧美在线观看视频 | av在线免费观看网站 | 亚洲成人国产精品 | 国产精品久久久久久中文字 | 色xx综合网 | 精品专区| chinese中国真实乱对白 | 91性高湖久久久久久久久_久久99 | 国产欧美日韩精品一区二区三区 | 亚洲久久久 | 欧美视频三区 | 日韩av入口 | 在线观看视频91 | 99久久久久久 | 亚洲国产精品久久久久 | 99日韩| 日韩一区在线播放 | 欧美国产日韩一区二区 | 一级毛片在线播放 | 精品国产一区二区三区久久久 | 性做久久久久久久免费看 | 国产性色| 在线观看国产精品一区二区 | 久久一区视频 | 欧美成人a∨高清免费观看 在线视频成人 | 欧美三级视频在线播放 | 色av色av色av | 啊啊啊网站 | 男人天堂亚洲 | 在线视频 中文字幕 | 黄网免费看 | 国产精品成av人在线视午夜片 | 81精品国产乱码久久久久久 | 无码日韩精品一区二区免费 | 日韩在线不卡 | 久久久一区二区三区 | 一区二区精品视频在线观看 | 午夜午夜精品一区二区三区文 | 午夜影院免费 | 久久久久久免费看 | 91亚洲精品乱码久久久久久蜜桃 | 伊人99| 国产精品久久久久久久久久久久冷 | 国产色婷婷精品综合在线播放 | 欧美日韩一区二区三区四区 | 久久精品一区 | 免费一区二区 | 亚洲精品专区 | 久久精品国产99国产 | 日韩精品 电影一区 亚洲 | 91精品久久久久久久 | 欧美黄色激情 | 亚洲三级不卡 | 久久精品一区二区 | 色综合色| 一区二区三区国产精品 | 欧洲一级毛片 | 99久久精品免费看国产免费软件 | 国产精品一区人伦免视频播放 | 免费的一级视频 | 亚洲成人一二区 | 精品国产乱码久久久久夜 | 天天干国产| 精品综合 | 黄色免费网站在线看 | 久久精品亚洲 | 国产片侵犯亲女视频播放 | 极品久久 | 伊人网综合视频 | 成人久久久 | 精品国产乱码一区二区三区四区 | 国产va| 精品国产一区二区三区免费 | 国产毛片毛片 | 精品96久久久久久中文字幕无 | 亚洲麻豆| 久久久久久国产免费视网址 | 中文字幕一区二区三区乱码在线 | 国产精品99久久久久久大便 | 91九色视频在线 | 亚洲一区二区在线免费观看 | 久久精品亚洲精品国产欧美kt∨ | 一级电影院 | 国产在线播 | 国产精品精品 | 欧美一级免费 | 最新国产中文字幕 | 国产一区二区视频在线播放 | 欧美成人高清视频 | 超碰最新网址 | 精品三级在线观看 | 国产高清在线精品一区二区三区 | 国产日韩欧美 | 亚洲不卡视频在线观看 | 丰满少妇久久久久久久 | 亚洲欧洲精品成人久久奇米网 | 91网站免费 | 久久99一区二区 | 成人在线看片 | 天天天操 | 特级丰满少妇一级aaaa爱毛片 | 日本精品免费在线观看 | 免费一区二区三区视频在线 | 国变精品美女久久久久av爽 | 中文字幕亚洲欧美 | 综合精品久久久 | 一区二区三区在线免费观看 | 国产剧情一区二区 | 日韩三级视频 | 一级片在线观看 | 北条麻妃一区二区三区在线观看 | 99热.com| 国产高清中文字幕 | 在线观看av国产一区二区 | 亚洲精品一区二区三区蜜桃久 | 亚洲成av人片一区二区三区 | 在线看一区二区 | 男人的天堂中文字幕 | 久久精品国产一区二区三 | 嫩草影院地址 | 日韩欧美国产一区二区 | 日韩精品在线观看免费 | 男女羞羞视频在线免费观看 | 成人亚洲欧美 | www.色综合| 99re热精品视频国产免费 | 国产欧美精品一区二区三区 | 99这里只有精品视频 | 精品国产91亚洲一区二区三区www | 亚洲毛片 | 国产成人精品一区二区三区视频 | 久久综合网址 | 午夜精品网站 | 天堂av一区二区 | 成人视屏在线观看 | 日本色道视频 | 中文字幕一区二区三区四区 | 久久久国产视频 | 91中文字幕在线 | 狠狠伊人 | 国产精品视频入口 | 在线播放三级 | 黄在线看 | 亚洲精品免费在线 | 国产激情视频网 | 久章操| 国产精品亚洲一区二区三区在线 | 国产激情偷乱视频一区二区三区 | 在线视频久 | 黄色毛片观看 | 亚洲中午字幕在线观看 | 婷婷久久五月天 | 日韩久久久久久 | 天天干国产 | 午夜视频在线播放 | 成人av入口 | 亚洲精品在线视频 | 一区二区在线视频 | 国产成人精品久久 | 国产性网 | 韩国毛片在线观看 | 综合五月网 | 亚洲精品国产成人 | 最新的黄色网址 | 久久午夜影院 | 成人中文网 | 日本精品一区二区三区在线观看视频 | 国产午夜精品一区二区三区 | 97精品视频在线 | 国产999精品久久久久久麻豆 | 久久久久中文 | 日韩激情综合网 | 亚洲精品二区三区 | 亚洲欧美综合 | 日本一二三区视频 | 色婷婷一区二区三区四区 | 九九综合| 欧美精品区 | 91九色porny首页最多播放 | 日本在线免费 | 国产成人精品一区二区视频免费 | 亚洲一区二区福利 | www国产亚洲精品 | 91av在线播放 | 午夜电影av| 久久免费黄色网址 | 亚洲黄色免费 | 精品二区| 欧美黄色一区 | 日韩成人在线观看 | 一区二区久久 | 国产午夜精品久久 | 狠狠狠色丁香婷婷综合久久五月 | 天天夜夜操| 99er视频| 欧美在线激情 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲www啪成人一区二区 | 国产精品美女久久久久久久久久久 | 久久久片| 91免费在线视频 | 日韩快播电影网 | 国产一区二区视频在线观看 | 亚洲综合区 | 最新国产福利在线 | 日本二区在线观看 | 精品久久久久久久久久久久 | 久久密| 日韩一区中文字幕 | 成人av在线看| 国产欧美精品一区aⅴ影院 毛片视频网站 | 午夜精品91 | 羞羞视频在线观免费观看 | 一区二区三区视频在线播放 | 色欧美日韩 | 国产一区中文字幕 | 美女久久 | 综合网av | 欧美1314 | 日韩一级av毛片 | 国产精品无码永久免费888 | 亚洲av毛片一区二二区三三区 | 欧美日韩伊人 | 成人精品在线 | 欧美一区二区三区电影 | 奇米色欧美一区二区三区 | 日韩1区 | 欧美激情一区二区三区 | 色婷婷国产精品免费网站 | 狠狠天天 | 亚洲一区二区免费看 | 最新国产在线视频 | 国产精品一二三区 | 欧美精品一区二区三区在线 | 亚洲精品高清视频 | 日韩污视频在线观看 | 天天玩天天操天天射 | 欧美极品一区 | 久久久99久久久国产自输拍 | 国产精品免费一区二区三区四区 | 日韩乱视频 | 久久久久国产精品一区二区 | 久久国产综合 | 国内精品久久久久久中文字幕 | 欧美激情啪啪 | 视频一区在线播放 | 在线成人www免费观看视频 | 国产福利精品一区 | 99热这里有精品 | 欧美日韩中文字幕在线播放 | 国产亚洲成av人片在线观看桃 | 久草一区 | 91视频久久 | 日韩毛片免费看 | 久久国产精品91 | 亚洲成av人片在线观看无码 | 成人免费淫片aa视频免费 | 日韩中文在线 | 天堂资源在线 | 久久伊人成人 | 亚洲天堂成人在线 | 一区二区三区国产精品 | 国产成人免费视频网站高清观看视频 | 一级在线播放 | 成人做爰9片免费视频 | 亚洲91精品 | 一区二区三区国产免费 | 成年人精品视频在线观看 | 91久色| 男人天堂亚洲天堂 | 99色影院 | 国产超碰人人模人人爽人人添 | 午夜精品久久久久久久久久久久久 | 蜜桃视频在线播放 | 久久激情视频 | 视频在线一区二区 | 国产高清在线精品一区二区三区 | 国产精品第一国产精品 | 国产免费久久 | 亚洲综合在 | 国产精品一区二 | 午夜视频在线观看网站 | 亚洲一区二区三区四区五区中文 | 超碰人人操 | 国产欧美精品一区二区 | 欧美久久一区二区 | 91精品视频在线 | 伊人网站 | 欧美一级片免费播放 | 黄色片地址 | 日本一本在线 | 久久99精品国产91久久来源 | 日本高清视频一区二区三区 | 青青久久av北条麻妃海外网 | 久久久久久久久一区二区 | 欧美日韩国产在线看 | 中文字幕亚洲综合久久久软件 | 精品视频一区二区 | 免费午夜电影 | 亚洲精片 | 亚洲欧美日韩另类精品一区二区三区 | 国产一区二区观看 | 国产亚洲一区在线 | 欧美一级视频免费 | 中文字幕一区二区三 | 综合久久网 | 在线亚洲欧美 | 精品美女在线 | 成人精品视频在线观看 | 天堂av中文字幕 | 成人a网| 亚洲成人免费观看 | 国产在线一区不卡 | 久久精品国产免费 | 亚洲精品国偷拍自产在线观看 | 国产一区在线观看视频 | 久久久久久久久久国产精品 | 国产一区二区三区免费 | 能免费看的av | 日韩在线观看中文字幕 | 国产精品毛片 | aa级毛片毛片免费观看久 | 国产视频中文字幕 | 羞羞在线视频 | 中文字幕一级毛片 | 天堂中文av在线 | 国产精品成人一区二区三区 | 成人日韩av | 91免费观看 | 羞羞视频在线播放 | 午夜免费视频 | 日本爽快片毛片 | 日本黄色毛片 | 日韩av免费看| www.中文字幕在线 | 亚洲国内精品 | 黄色国产 | 性色浪潮 | 中文字幕一区二区三区不卡 | 操操操干干干 | 性色在线 | 免费在线一区二区 | 日韩色在线 | 天堂欧美城网站 | 亚洲精品免费在线 | 妞干网av | 在线观看成人av | 免费成人小视频 | 欧美国产综合 | 久久久久国产精品 | 中文字幕在线电影 | 一区二区免费在线 | 玖玖综合网 | 国产午夜精品视频 | 欧美1314| 免费观看一区二区三区毛片 | 久久99国产一区二区三区 | 国产午夜视频在线观看 | 成人黄色av| 成人久久久精品乱码一区二区三区 | 大象视频成人在线观看 | 亚洲综合在线一区二区 | 久久午夜精品 | www国产精品 | 91网在线观看| 国产区在线 | 国产午夜精品久久久久久久 | 国产片一区二区三区 | 青娱乐99| 久久综合久久综合久久综合 | 亚洲精彩视频 | 精品视频久久久 | 日韩精品一区二区三区视频播放 | 一级毛片,一级毛片 | 亚洲精品久久久久国产 | 国产一区二区在线免费 | 久久久久久综合 | 国产精品一区二区在线观看 | 欧美aⅴ| 在线一区视频 | 91大神xh98hx在线播放 | 亚洲精品国产9999久久久久 | 黄色电影天堂 | 亚洲最黄视频 | 51ⅴ精品国产91久久久久久 | 91久久在线 | 国产成人a亚洲精品 | 亚洲福利一区 | av片在线免费观看 | 免费亚洲婷婷 | 久草免费福利 | 久久亚 | 精产国产伦理一二三区 | 国产一级片 | 成人在线免费观看视频 | 日韩一级视频 | 香蕉大人久久国产成人av | 91福利网址 | 午夜不卡一区二区 | 99久久精品国产一区二区三区 | 永久91嫩草亚洲精品人人 | 一级毛片视频 | 国产精品日韩欧美一区二区 | 超级碰在线视频 | 国产精品一区二区三区在线播放 | 色婷婷一二三 | 五月激情综合婷婷 | 在线观看亚洲大片短视频 | 一区二区免费视频 | 视频在线91 | 日本亚洲精品一区二区三区 | 精品久久一区二区三区 | 草比网站 | 成人精品一区二区 | 91人人| 日韩一区二区在线观看 | 亚洲一区二区 | 久久99久久久久 | 中文字幕不卡在线 | 亚洲黄色高清视频 | 国产精品香蕉 | 日本在线免费 | 蜜桃视频一区 | 在线视频一区二区三区 | h视频在线免费观看 | 久久国产成人 | 99视频免费在线观看 | 日韩精品在线网站 | 国产一级视频 | aaaaaa黄色片 | 日本久草 | 国产免费一区二区三区 | 性做久久久 | 久久这里只有精品首页 | 国产一区二区资源 | 日韩在线看片 | 久久久999成人 | 中文字幕一区二区三区日韩精品 | 日韩城人免费 | 成人影院在线 | 久久久综合色 | 国产精品一区av | 久久99深爱久久99精品 | 亚洲国产免费 | 亚洲高清一区二区三区 | 老司机福利在线观看 | 黄色片视频免费 | 视频在线一区 | 久久成人国产精品 | 日韩欧美国产一区二区 | 欧美激情一区二区 | 欧美麻豆 | 91精品国产综合久久久久 | 在线婷婷 | 精品一区二区6 | 国产一在线| 日韩av一区二区三区在线观看 | 伊人青青操 | 日日网| 国内精品国产三级国产在线专 | 黄色一级片视频 | 91精品国产91久久久久久蜜臀 | 免费欧美一级 | a久久久久久 | 99国产精品 | 人人射av| 亚洲成人免费网址 | www.色综合 | 久久精品欧美一区二区三区不卡 | 日韩精品 电影一区 亚洲 | 亚洲性在线 | 欧美日韩在线免费观看 | 国产在线观看 | 国产精品毛片无码 | 日本一区不卡 | 在线久草|