黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

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

瀏覽:6日期: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://m.propowerdrill.cn/bcjs/css/index.css' rel='external nofollow' rel='external nofollow' > <link rel='stylesheet' href='http://m.propowerdrill.cn/bcjs/js/layui-v2.6.8/css/layui.css' rel='external nofollow' rel='external nofollow' media='all'> <script type='text/javascript' src='http://m.propowerdrill.cn/bcjs/js/jquery-1.7.1.js'></script> <script type='text/javascript' src='http://m.propowerdrill.cn/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://m.propowerdrill.cn/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://m.propowerdrill.cn/bcjs/css/index.css' rel='external nofollow' rel='external nofollow' > <link rel='stylesheet' href='http://m.propowerdrill.cn/bcjs/js/layui-v2.6.8/css/layui.css' rel='external nofollow' rel='external nofollow' media='all'> <script type='text/javascript' src='http://m.propowerdrill.cn/bcjs/js/jquery-1.7.1.js'></script> <script type='text/javascript' src='http://m.propowerdrill.cn/bcjs/js/layui-v2.6.8/layui.js' charset='utf-8'></script> <script type='text/javascript' src='http://m.propowerdrill.cn/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
相關文章:
主站蜘蛛池模板: 国产福利姬喷水福利在线观看 | 亚洲欧美日韩系列 | 成年美女黄网站色大片免费看 | 久久精品资源 | 一区二区欧美视频 | 激情小说激情视频 | а√天堂www在线天堂小说 | 乌克兰丰满少妇毛片 | 久久观看最新视频 | gogogo免费在线观看 | 欧美中文 | 精品视频一区二区三区四区五区 | 俺去俺来也www色官网cms | 狠狠色丁香婷婷综合视频 | 欧美少妇18p | 99精品国产成人一区二区 | 韩国精品一区二区三区 | 日本三级视频在线 | 视频福利一区 | 91视频播放器 | 色啦啦视频 | 人妻有码av中文字幕久久琪 | 一本色道久久综合狠狠躁篇怎么玩 | 欧美在线观看视频免费 | 好吊妞视频这里有精品 | 成人综合伊人五月婷久久 | 久草福利视频 | 成人黄色免费网站 | 少妇激情一区二区三区视频 | 又紧又大又爽精品一区二区 | 麻豆影音先锋 | 久久久香蕉网 | 男人免费视频 | 一道本久在线中文字幕 | 天天综合天天做天天综合 | 国产天天操 | 国产精品久久久精品 | 欧美一a一片一级一片 | 一卡二卡在线视频 | 免费看污的网站 | 一本大道东京热无码aⅴ | 亚洲天堂男人影院 | 中国国语毛片免费观看视频 | 婷婷久久综合九色综合 | 51国偷自产一区二区三区 | 无码少妇一区二区三区芒果 | 亚洲国产福利 | 无码国产精成人午夜视频一区二区 | 香港三级在线视频 | 97久久综合亚洲色hezyo | 少妇大叫太大太粗太爽了a片小说 | xx性欧美肥妇精品久久久久久 | 再深点灬舒服灬太大了网站 | 国产成人鲁鲁免费视频a | 免费在线观看黄色网 | 亚洲精品免费在线观看视频 | 青青青国产精品一区二区 | av一区二| 精品动漫av | 成年人在线视频 | 日本在线视频www鲁啊鲁 | 欧洲美熟女乱又伦 | 四虎影在永久在线观看 | 日韩视频免费在线观看 | 天堂在线官网 | 五月天婷婷缴情五月免费观看 | 日本三级吃奶乳视频在线播放 | 俺去俺来也在线www色官 | 人人澡人人妻人人爽人人蜜桃 | 免费人成又黄又爽又色 | 91网站免费 | 成人免费看视频 | 亚洲熟伦熟女新五十路熟妇 | 又紧又大又爽精品一区二区 | 日日摸日日添日日碰9学生露脸 | 美女日日日 | 亚洲精品乱码久久久久久花季 | 裸体丰满白嫩大尺度尤物 | 日本大奶视频 | 99re视频精品| 狠狠五月天| 国产午夜精品一区二区三区漫画 | 中文字幕日产乱码中文字幕 | 性视频免费的视频大全2015年 | 成人av在线影院 | 欧美三日本三级少妇三级99观看视频 | 强乱中文字幕亚洲精品 | 国产黄色片在线免费观看 | 亚洲视频在线观看网站 | 日韩五码 | 亚洲国产成人a精品不卡在线 | 免费无毒永久av网站 | 亚洲国产精品无码久久电影 | 国内少妇偷人精品视频 | 国产传媒一区 | 国产男女无套免费网站 | 少妇学院在线观看 | 欧美裸体xxxx | 国产精品午夜无码体验区 | 国产口语对白老妇 | 一本大道一区二区 | 亚洲综合一区无码精品 | 美女xx00| 国语对白超精彩 | 四虎影视永久地址www成人 | 国产黄色在线播放 | 国产清纯白嫩初高生视频在线观看 | 精品国内自产拍在线观看 | 18禁裸乳无遮挡自慰免费动漫 | 日产精致一致六区麻豆 | 免费福利在线 | 亚洲毛片一级 | 欧美美女一区 | 欧美色一区二区三区在线观看 | 亚洲欧美在线人成最新 | 日日碰狠狠躁久久躁2023 | 少妇被躁爽到高潮无码人狍大战 | 久在线视频| 久久久久麻豆v国产精华液好用吗 | 亚洲国产精品成人综合在线 | 青青草原av | 国产无套免费网站69 | 爽爽影院在线 | 裸体黄色片 | 毛片网站在线看 | 国产欧美日韩在线在线播放 | 粉嫩av一区二区三区四区五区 | 亚洲另类伦春色综合图片 | 一级肉体全黄裸片高潮不断 | 50部乳奶水在线播放 | 无码人妻丰满熟妇区毛片18 | 91在线高清 | 绝色美妇性调教沦为玩物 | av午夜久久蜜桃传媒软件 | av大全免费| 又污又黄又无遮挡的网站 | 老汉色av| 男人巨茎大战欧美白妇 | 成人在线高清视频 | 一区二区三区在线免费观看视频 | 成年人视频网站 | 18禁真人抽搐一进一出在线 | 亚洲韩国精品 | 中文字幕 日韩 欧美 | 亚洲国产精品一区二区www | 国产一级免费大片 | 欧美疯狂做受xxxx高潮小说 | 久久精品久久久久 | 男ji大巴进入女人的视频小说 | 内射夜晚在线观看 | 欧美成人高清视频在线观看 | 少妇精品视频一区二区免费看 | 国产麻豆网 | 粗了大了 整进去好爽视频 色偷偷亚洲男人的天堂 | 黑人一级视频 | 亚洲一级视频在线观看 | 精品国产一区二区三区久久久 | 中文字幕一区三区 | 欧美精品在线观看 | 国产露脸系列magnet | 放荡闺蜜高h苏桃情事h | 巨大乳女人做爰视频在线看 | 暖暖成人免费视频 | 长河落日电视连续剧免费观看 | 国产精品久久久久久久久久妞妞 | 国产精品8 | 色黄视频在线观看 | 日本19禁啪啪免费观看www | 性一交一乱一色一情丿按摩 | 亚洲精品一区二区三 | 国产一区91精品张津瑜 | 最近中文字幕免费mv视频7 | 美女极度色诱视频国产 | 免费毛片无需任何播放器 | 黄色大片儿. | 国产精品老热丝在线观看 | 日本一卡2卡三卡4卡免费网站 | 一级少妇淫片免费观看 | 国产 亚洲 制服 无码 中文 | 人人草视频在线 | 日日夜夜免费视频 | 国产精彩视频在线 | 欧美性大战久久久久久 | 久久久亚洲色 | 国产精品超碰 | 奇米综合网| 亚洲男女啪啪 | 伦理一级片 | 亚洲婷婷免费 | 性久久久久久久久 | 亚洲国产一区二区三区在线观看 | 中文字幕精品久久久久 | 亚洲国语 | 欧美久久网 | 日韩国产一区 | 久久tv| 看片在线 | 欧美一区二区三区四区在线观看 | 亚洲国产精品久久精品 | 中文在线√天堂 | 成人午夜网址 | 欧美激情一区二区三区成人 | 亚洲女同另类 | 久久精品女人天堂av免费观看 | 国产黄色免费看 | 国产亚洲精品久久久久久网站 | 二个男人躁我一个视频 | 亚洲精品一区二区三区不 | 亚洲精品在 | 在线观看老湿视频福利 | 色情无码一区二区三区 | 亚洲美女性视频 | 抽搐一进一出aaaaa | 99蜜桃臀精品视频在线观看 | 无码专区亚洲综合另类 | 日韩特黄特色大片免费视频 | 久久精品超碰 | 色综亚洲国产vv在线观看 | 国产成人精品av久久 | 性国产丰满麻豆videosex | 久久久午夜视频 | 亚洲精品国产精品乱码不66 | 欧美69wwwcom| 国产美女精品视频国产 | 国产精品奇米一区二区三区小说 | 中文字幕在线看 | 热99视频 | a级黄色毛片三个搞一 | 成人免费看片又大又黄 | 成人天堂网 | a黄色毛片 | 天天爽夜夜爽 | 久久视频在线观看 | 色哟哟一区二区三区 | 国产日韩精品一区 | 欧美一级一区 | 少妇全黄性生交片 | 欧美性猛交xxx乱大交3 | 久热免费视频 | 久久国产精品-国产精品 | 国产午夜精品一区二区理论影院 | 在线视频欧美日韩 | 中文字幕在线视频免费观看 | 免费特级毛片 | 中文字字幕 | 国产老熟女伦老熟妇露脸 | 宝宝好涨水快流出来免费视频 | 欧美色交 | 美女激情av | 少妇激情av一区二区 | 99免费看| 黄色软件网站入口 | 男女做爰猛烈刺激 | 色视频一区| 欧洲美熟女乱又伦av影片 | 日日碰狠狠躁久久躁蜜桃 | 视频一区二区三区在线 | 一级国产精品一级国产精品片 | 成年人在线观看av | 久久99国产精一区二区三区 | 国产精品综合一区二区三区 | 久久精品视频在线看 | 天天躁夜夜躁狠狠是什么心态 | 欧美一区二区三区在线视频 | 国产精品成人观看视频国产奇米 | 一区三区视频 | 亚洲一久久久久久久久 | 久久久久黑人强伦姧人妻 | 牲欲强的熟妇农村老妇女 | 国偷自产视频一区二区久 | 国产成人亚洲精品无码h在线 | 天天射狠狠干 | 一区二区亚洲 | 国产精品98| 日本一二三区在线 | 亚洲一区二区视频 | 宅男噜噜噜66一区二区 | 又色又爽又黄无遮挡的免费视频 | 亚洲国产精品久久久久秋霞不卡 | 久久综合中文 | 五月婷婷六月天 | 国产普通话对白刺激 | 双性受爽到不停的喷水bl | 午夜av不卡| 成人拍拍视频 | 欧美另类xxxx野战 | 美女插插 | 欧美在线另类 | 人人射人人爱 | 亚洲成在线观看 | 无码人妻精品一区二区三区9厂 | 久久偷看各类wc女厕嘘嘘偷窃 | 成人孕妇专区做爰高潮 | 久久aaaa片一区二区 | 亚州五月 | 日日骚网 | 久久香视频 | 亚洲日本中文字幕在线 | 综合久久中文字幕 | 雨宫琴音一区二区三区 | 一区二区三区在线不卡 | 香港三级日本三级妇三级 | 成年女人色毛片 | 一级全黄色毛片 | 欧美高潮在线 | 在线视频se| 九九爱精品 | 神马久久久久久久久 | 性按摩xxxx在线观看 | 91在线影院 | 性欧美高清 | 亚洲欧美视频一区 | 欧美成人在线视频 | 亚洲另类激情综合偷自拍图 | 免费无码av片在线观看中文 | 2021国产精品视频 | 中文字幕+乱码+中文乱码91 | 成人性生交大片免费看vr | 天天摸天天舔 | 国产一区二三区 | 麻豆精品一区二正一三区 | 麻豆入口 | 亚洲天堂一级片 | 欧美wwwxxxx| 日本欧美大码aⅴ在线播放 中文人妻无码一区二区三区在线 | 亚洲精品久久久久一区二区三区 | 97免费公开视频 | 国产午夜一级片 | 四季av中文字幕一区 | 91丝袜一区在线观看 | 久久久精品中文 | 国产91久 | 亚洲国产av无码综合原创国产 | 午夜窝窝 | av网址导航 | 免费在线看黄视频 | 四虎影视库www111we | 国产馆在线视频 | 欧美日在线| 国产视频不卡 | 97se亚洲| 欧美丰满熟妇bbb久久久 | 国产黄在线播放 | 中文字幕日韩精品有码视频 | 天堂在线www天堂中文在线 | 久久泄欲网 | 古代玷污糟蹋np高辣h文 | 中文字幕不卡二区 | 日本丰满熟妇hd | 军人全身脱精光自慰 | 日本高清不卡aⅴ免费网站 久久精品国产av一区二区三区 | 亚洲精品久久久一区二区三区 | 激情综合网五月天 | 欧美成a| japanese丰满少妇最高潮 | 欧美xxxxav| 欧美日本精品 | 可以直接看的毛片 | 日本色影院 | 国语对白做受欧美 | 成人羞羞国产免费 | 日韩免费不卡视频 | 中国超碰| 青青草成人免费在线视频 | 国产精品视频一区二区三区四区国 | 亚洲欧美精品伊人久久 | 嫩草午夜少妇在线影视 | 一本免费视频 | 日韩乱码一二三 | 成人天堂视频在线观看软件 | 国产一级自拍视频 | 国产实拍会所女技师在线观看 | 中文字幕乱码亚洲精品一区 | 亚洲网址在线观看 | 狠狠躁天天躁夜夜添人人 | 天天做天天爱天天爽综合网 | 国产精品sss| 少妇献身老头系列 | 国产91福利 | 99综合视频 | 欧美城天堂网 | 国产日韩三级 | 亚洲色图99p | 一级性生活免费视频 | 成年人色网站 | 狼人综合伊人 | 肉版如懿传高h | 一区二区国产精品精华液 | av手机天堂 | 精品国产96亚洲一区二区三区 | 日本免费一区二区三区视频 | 天堂资源中文网 | 日韩一区二区三区在线免费观看 | 欧美一区二区三区不卡视频 | 制服丝袜天堂网 | 免费黄色小视频网站 | 欧美日韩综合在线 | 色吊丝永久性观看网站免费 | 成人黄色大片在线观看 | 国产成人无码精品午夜福利a | 91精品国产自产精品男人的天堂 | 久操视频免费在线观看 | 在线播放成人 | 茄子视频国产在线观看 | 国产在线观看99 | www.啪啪.com| 亚洲在线一区二区 | 国产a级精品 | 国产精品不卡视频 | 成人做爰高潮片免费视频美国 | 免费av网址在线观看 | 久久久亚洲精品一区二区三区 | 欧美性群另类交 | 关之琳三级全黄做爰在线观看 | 激情综合五月 | 校园伸入裙底揉捏1v1h | 黄色在线视频播放 | 啃乳做爰猛烈床戏三级 | 丰满蕾丝乳罩少妇呻视频 | 日本精品久久久久中文字幕乱中年 | 男女做爰猛烈叫床爽爽免费网站 | jizz中国女人高潮 | 久久精品99久久久久久 | 四虎影城库| 黄色av网页 | 色综合免费视频 | 18无码粉嫩小泬无套在线观看 | 操综合网| 亚洲精品www. | 国产丝袜视频一区二区三区 | 精品人妻无码区二区三区 | 中文字幕www | 国产乱人伦app精品久久 | 中文字幕123伦 | 综合色站导航 | 日韩成人av网址 | 伊人艹| 免费看特级毛片 | 日韩一级在线视频 | 爱操综合| 一级毛片一级黄片 | 国产91绿帽单男绿奴 | 亚洲熟妇丰满多毛xxxx | 中文字幕蜜桃 | 国产精品久久久久久久久久久久久久 | 92看片淫黄大片一级 | 亚洲国产精品嫩草影院 | 一区二区片 | 乌克兰少妇性做爰 | 国产日韩一区二区在线 | 18性夜影院午夜寂寞影院免费 | 欧美亚洲综合网 | 亚洲tv久久 | 欧美激情久 | 一级美女大片 | 在线成人精品国产区免费 | 一级特黄aaaaaa大片 | 久久日韩激情一区二区三区四区 | 狠狠躁夜夜躁人人爽天天不卡软件 | 国产精品人妻一区夜夜爱 | 天堂网成人 | 成人黄色免费视频 | 亚洲国产精品成人av在线 | 国产毛片毛片精品天天看软件 | 特级做a爰片毛片免费看 | 亚洲图片自拍偷拍 | 久久免费播放视频 | 亚洲一区av | 疯狂做受xxxx高潮不断 | 国产天天骚 | 女厕厕露p撒尿八个少妇 | 久久久综合婷婷精品国产一区影院 | 国产在线观看码高清视频 | 国产人妻精品区一区二区三区 | 国产污视频在线 | 黄色免费成人 | 国产精品系列在线 | 性仑少妇av啪啪a毛片 | 免费看黄色毛片 | eeuss鲁片一区二区三区69 | 久久精品精品 | 巨大荫蒂视频欧美大片 | 久久传媒av性色av人人爽网站 | 亚洲 美腿 欧美 偷拍 | 久久久久久久免费 | 狠狠色伊人亚洲综合第8页 狠狠色综合久久婷婷 | 无码国模国产在线观看 | 欧美在线看片a免费观看 | 97久久精品人人澡人人爽缅北 | 人人爽视频 | 久久久久久欧美六区 | 亚洲 欧美 变态 国产 另类 | 日本五十熟hd丰满 | 可以免费看成人啪啪过程的软件 | 一区二区三区av在线 | www...zzz成人啪啪 | 91黄色免费 | 国产精品18久久久久久vr | 91九色视频 | 国产做爰xxxⅹ高潮视频12p | 极品尤物魔鬼身材啪啪仙踪林 | 国产精品久久久久久久久久久久冷 | 久久精品无码中文字幕 | a级黄色片免费看 | 成年女人免费v片 | 不卡av在线免费观看 | a级毛片,黄,免费观看 m | 午夜夜伦鲁鲁片六度影院 | 亚洲区小说区 | 影音先锋男人天堂 | 九九免费观看视频 | 免费在线观看a视频 | 巨胸美女爆视频网站 | 婷婷色国产偷v国产偷v小说 | 不卡中文字幕在线 | 日本熟妇浓毛hdsex | 欧美性xxxx偷拍 | 女女互慰吃奶互揉的视频 | 7788色淫网站免费 | 久久66热人妻偷产精品 | 国产变态拳头交视频一区二区 | 亚洲乱妇熟女爽到高潮的片 | 国产精品视频导航 | 国内精品久久久久久久久久清纯 | 日韩在线 | 91在线高清 | 天天操天天透 | 中文字幕无码第1页 | 中文字幕ipx696希岛あい | 欧洲熟妇色xxxx欧美老妇老头多毛 | (无码视频)在线观看 | 国产成人精品亚洲7777 | 最新天堂在线视频 | 国内自拍一区 | 激情五月少妇a | 国产毛片乡下农村妇女bd | 91网站在线看 | 国产人妻精品午夜福利免费 | 亚洲国产精品肉丝袜久久 | 日本特黄成人 | 亚洲奶水xxxx哺乳期tv | 澳门久久 | 一区二区日韩欧美 | 国产午夜精品一区二区三 | 亚洲国产午夜精品理论片妓女 | 久久久久久五月天 | 国产精品久久久久婷婷 | 日本内谢少妇xxxxx少交 | 麻豆短视频 | 99国产精品久久久久久久夜 | 精品无码久久久久久久久水蜜桃 | 在线免费激情视频 | 日本无遮羞教调屁股视频网站 | 亚洲精品一区国产精品 | 午夜久久福利 | 伊大人香蕉综合8在线视 | 狠狠网| 无遮挡啪啪摇乳动态图gif | 青青操久久| 国产精彩视频在线 | av高清在线 | 日韩av网址大全 | 五月婷婷丁香激情 | 又粗又大又硬毛片免费看 | 国产大学生毛片 | 国产精品成人av在线观看春天 | 亚洲天堂视频一区 | 久激情内射婷内射蜜桃 | 五月天堂色 | 亚洲区中文字幕 | 久久久www成人免费精品张筱雨 | 国产中文欧美日韩在线 | 开心五月综合亚洲 | 久久免费视频网站 | 蜜臀av一区二区 | 内射干少妇亚洲69xxx | 国产精品水嫩水嫩 | 狠狠干网址 | jav成人av免费播放 | 欧美在线视频二区 | 撸啊撸av | 久久伊人成人网 | 无码人妻av免费一区二区三区 | 少妇又粗又猛又爽又黄的视频 | 亚洲国产精品入口 | 色噜噜狠狠色综合久 | 自拍偷拍亚洲 | 精品超清无码视频在线观看 | 97久久综合区小说区图片区 | 国产cd人妖ts在线观看 | 99久久久国产精品免费蜜臀 | 大尺度做爰啪啪高潮床戏 | 中国肥胖女人真人毛片 | 欧美精品久久天天躁 | 婷婷伊人网 | 国产高潮国产高潮久久久91 | 国产精品国产对白熟妇 | 国产精品对白清晰受不了 | 久久亚洲激情 | 亚洲天堂三级 | 黄网址在线免费观看 | 亚洲国产午夜精品理论片在线播放 | 亚洲性无码av在线 | 亚洲色图第三页 | 精品国产_亚洲人成在线 | 99精品久久久久久中文字幕 | 国产chinesehd精品 | 男人天堂2014 | 五月天久久综合 | 婷婷精品久久久久久久久久不卡 | 欧美日韩在线一区二区 | 精品www| 亚洲加勒比久久88色综合 | 中文字幕女教师julia视频 | 国产精品日本一区二区在线播放 |