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

輕量級動態線程池才是“王道”?

開發 前端
如果項目中使用了 配置中心以及線程池 的話,強烈推薦大家引入到項目中試一試,為項目線上的穩定性多了一份保障。

大家好,我是龍臺。

一、前言

最初設計 Hippo4j 的初衷是盡可能提高以及保障線程池對于線上應用的作用,所以加了很多個性化功能,這也間接導致強依賴 Hippo4j Server 項目。

自 Hippo4j 1.0.0 版本發布之后,不斷有社區小伙伴提出相同的一個問題,如何能夠輕量級使用動態線程池?

這不,它來了。

GitHub:https://github.com/acmenlt/dynamic-threadpool

Gitee:https://gitee.com/acmenlt/dynamic-threadpool

隨著 Hippo4j 1.1.0 版本的發布,除了在原有功能進行迭代輸出外,額外添加了一種使用模式:依賴配置中心實現的輕量級動態線程池,將 Hippo4j 的源代碼從一種使用模式拆分為兩種。

兩種模式共用一套核心源代碼,保留了基礎且大家關注的功能,模塊取名為:Hippo4j Core。

二、Hippo4j Core

所謂“一圖勝千言”,小編畫了一張圖,來描述它的交互行為以及所支持功能。

只要你們項目中有配置中心,引用 hippo4j-core-spring-boot-starter后,就可以使用以上功能啦。

1. 動態線程池參數更新

客戶端項目啟動時向配置中心請求動態線程池配置,獲取配置后創建DynamicThreadPool 線程池。

并向配置中心發起監聽事件,當配置中心中配置發生變更時,監聽事件實時修改項目中的線程池參數。

如在配置中心變更了動態線程池配置,會在日志中打印變更信息:

[MESSAGE-CONSUME] Changed thread pool. 
coreSize :: [1 => 10]
maxSize :: [1 => 20]
queueType :: [ResizableCapacityLinkedBlockIngQueue => ResizableCapacityLinkedBlockIngQueue]
capacity :: [1024 => 2048]
keepAliveTime :: [1000 => 1000]
executeTimeOut :: [600 => 600]
rejectedType :: [DiscardOldestPolicy => DiscardOldestPolicy]
allowCoreThreadTimeOut :: [false => false]

同時,通過消息推送通知相關負責人。目前通知平臺已支持釘釘、企業微信以及飛書三種常用辦公軟件,以企業微信群聊機器人舉例:

2. Web 線程池參數更新

SpringBoot 內置三種 Web 容器:Tomcat、Jetty、Undertow。

Hippo4j Core 已支持容器線程池的核心參數變更:corePoolSize、maximumPoolSize、keepAliveTime。

為什么要加 Web 線程池的動態更新?兩個原因:

  • 壓測應用時,需要針對不同的壓測流量來調整 Web 容器線程池的線程數。正常流程,調整后需要重新發布項目,無疑是比較費時費力;
  • 當 SpringBoot Java 應用響應時間變慢,并且服務器整體負載不高時,我們可以通過修改 Web 容器線程池來提高并行處理能力,以此提高響應時間。

當然,正常來說,線上的容器線程池配置是通過壓測后得出的最優值。所以,這個功能在線上應該謹慎使用,或者說盡量不在線上使用。

3. 動態線程池報警策略

為了讓線程池運行出現問題,及時通知到相關負責人,Hippo4j 針對線程池做了四種定制化報警策略:

  • 活躍度報警:假設設置線程池活躍度報警閾值為 80%,最大線程數 10。當線程數達到 8 發起報警;
  • 阻塞隊列容量報警:假設設置容量報警閾值為 80%,阻塞隊列容量 100。當容量達到 80 發起報警;
  • 拒絕任務報警:當線程池無法執行任務,開始執行拒絕策略時報警;
  • 執行時間報警:假設線程池超時時間設置 1000ms,任務執行時間超過 1000ms 發起報警。

問題比較多的小伙伴就問了,如果線程池 頻繁拒絕任務或者執行時間頻繁超時,那豈不是要被信息轟炸?

不會的。報警策略做了優化,當設置報警間隔時間內,線程池 + 報警類型 兩個維度僅會發出一條通知報警消息。

舉個例子,有一個線程池 ID:message-consum 的線程池,設置了報警間隔為 5 分鐘。

也就是說,活躍度、阻塞隊列容量、拒絕任務、執行時間幾個報警緯度,message-consum 線程池在 5分鐘內最多每個類型發送一條報警通知。

目前已支持了釘釘、企業微信以及飛書的群機器人報警。企業微信機器人示例如下:

上圖中的鏈路信息只會在超時報警時存在,這樣可以通過鏈路信息,更方便定位到線程池任務執行緩慢的原因。

三、代碼示例

Nacos 或 Apollo 配置中心任選其一。

SpringBoot Pom 文件引入 Hippo4j Core Maven 坐標。

<dependency>
<groupId>cn.hippo4j</groupId>
<artifactId>hippo4j-core-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>

啟動類上添加 @EnableDynamicThreadPool 注解。

@SpringBootApplication
@EnableDynamicThreadPool
public class ExampleApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}

在配置中心中添加 spring.dynamic.thread-pool 前綴的配置。如下:

server:
port: 8090
servlet:
context-path: /example

spring:
profiles:
active: dev

dynamic:
thread-pool:
enable: true # 是否開啟動態線程池
banner: true # 是否打印 banner
collect: true # 是否開啟線程池數據采集,對接 Prometheus
check-state-interval: 3 # 檢查線程池狀態,是否達到報警條件,單位秒
notify-platforms: # 通知報警平臺,支持多個,或者任選其一
- platform: 'WECHAT' # 企業微信
secret-key: 1d307bfa-815f-4662-a2e5-99415e947bb8
- platform: 'DING' # 釘釘
secret-key: 56417ebba6a27ca352f0de77a2ae9da66d01f39610b5ee8a6033c60ef9071c55
- platform: 'LARK' # 飛書
secret-key: 2cbf2808-3839-4c26-a04d-fd201dd51f9e
nacos: # nacos apollo 任選其一
data-id: xxx
group: xxx
apollo:
namespace: xxxx
config-file-type: yml # 配置中心文件格式
executors:
- thread-pool-id: 'message-consume' # 線程池標識
core-pool-size: 1 # 核心線程數
maximum-pool-size: 1 # 最大線程數
queue-capacity: 1 # 阻塞隊列大小
execute-time-out: 1000 # 執行超時時間,執行任務時間超過此時間發起報警
blocking-queue: 'LinkedBlockingQueue' # 阻塞隊列名稱,參考 QueueTypeEnum,支持 SPI
rejected-handler: 'AbortPolicy' # 拒絕策略名稱,參考 RejectedPolicies,支持 SPI
keep-alive-time: 1024 # 線程存活時間,單位秒
allow-core-thread-time-out: true # 是否允許核心線程超時
thread-name-prefix: 'message-consume' # 線程名稱前綴
notify: # 通知配置
is-alarm: true # 是否報警
active-alarm: 80 # 活躍度報警閾值;假設線程池最大線程數 10,當線程數達到 8 發起報警
capacity-alarm: 80 # 容量報警閾值;假設阻塞隊列容量 100,當容量達到 80 發起報警
interval: 8 # 報警間隔,同一線程池下同一報警緯度,在 interval 時間內只會報警一次,單位分鐘
receives: # 任選其一
DING: 'xxx' # 手機號
WECHAT: 'xxx' # 填寫企業微信用戶 ID(填寫其它將無法達到 @ 效果)
LARK: 'xxx' # 填寫 ou_開頭的用戶唯一標識,否則只能普通 @

使用 Hippo4j ThreadPoolBuilder 構建動態線程池。

import cn.hippo4j.core.executor.DynamicThreadPool;
import cn.hippo4j.core.executor.support.ThreadPoolBuilder;

@Bean
@DynamicThreadPool
public ThreadPoolExecutor dynamicThreadPoolExecutor() {
String consumeThreadPoolId = "message-consume";
return ThreadPoolBuilder.builder()
.threadFactory(consumeThreadPoolId)
.dynamicPool()
.build();
}

按照 Spring Bean 注入的方式使用動態線程池即可。

@Resource
private ThreadPoolExecutor dynamicThreadPoolExecutor;

dynamicThreadPoolExecutor.execute(() -> xxx);

沒了,是不是很 easy?我大致試了下,不到兩分鐘的時間,就能讓你的 SpringBoot 項目快速接入動態線程池。

總結下接入步驟:

  • Pom 中引入 Hippo4j Core 包依賴;
  • 啟動類上添加動態線程池啟用注解;
  • 配置中心(Nacos 或 Apollo)添加動態線程池配置;
  • 項目中以 Spring Bean 的形式創建動態線程池 。

四、常見問題

1. 項目關閉時,如何保障線程池中任務全部完成

答:借鑒了 Spring 封裝的線程池框架。構建動態線程池時,指定waitForTasksToCompleteOnShutdown 和 awaitTerminationMillis

import cn.hippo4j.core.executor.DynamicThreadPool;
import cn.hippo4j.core.executor.support.ThreadPoolBuilder;

@Bean
@DynamicThreadPool
public ThreadPoolExecutor dynamicThreadPoolExecutor() {
String consumeThreadPoolId = "message-consume";
return ThreadPoolBuilder.builder()
.threadFactory(consumeThreadPoolId)
.waitForTasksToCompleteOnShutdown(true)
.awaitTerminationMillis(5000L)
.dynamicPool()
.build();
}

這兩個參數什么意思呢?

  • waitForTasksToCompleteOnShutdown:是否在關閉線程池時等待任務完成,這里我們設置 true;
  • awaitTerminationMillis:等待任務完成的時間,單位毫秒。

問題很多的小伙伴可能就問了:為啥要有 awaitTerminationMillis 這個參數?直接等待全部任務完成不就行了。

線程池中都是執行很快的任務可能是沒問題。但是,如果線程池里面都是耗時的任務呢?

停止項目時等個幾分鐘甚至更長時間是無法忍受的。這個需要根據大家項目的實際情況評估。

2. 動態線程池是否可以傳遞上下文參數

可以的,同樣是借鑒 Spring 線程池框架。實現 TaskDecorator 接口,并在構建動態線程池時指定。

import cn.hippo4j.core.executor.DynamicThreadPool;
import cn.hippo4j.core.executor.support.ThreadPoolBuilder;

@Bean
@DynamicThreadPool
public ThreadPoolExecutor dynamicThreadPoolExecutor() {
String consumeThreadPoolId = "message-consume";
return ThreadPoolBuilder.builder()
.threadFactory(consumeThreadPoolId)
.waitForTasksToCompleteOnShutdown(true)
.awaitTerminationMillis(5000L)
.taskDecorator(new TaskDecoratorTest.ContextCopyingDecorator())
.dynamicPool()
.build();
}

3. Hippo4j Core 和 Hippo4j Server 轉換麻煩么

有些小伙伴最初用的 Hippo4j Core,覺得功能并不滿足使用,想要使用 Hippo4j Server,問我如何轉換?

其實這里非常簡單。從項目上來說:代碼無需任何改變,把 Pom 文件中的依賴坐標改下就可以。

其次就是將配置中心里的配置遷移到 Hippo4j 的控制臺,將線程池記錄創建才出來即可。

五、總結

文章介紹了 Hippo4j 新增的一種使用模式:依賴配置中心的輕量動態線程池的實現。

不太好評價 Hippo4j Server 和 Hippo4j Core 的好壞。一個是功能更強大,一個是引入更加輕量,使用上具體如何,交給使用者來評價。

如果項目中使用了 配置中心以及線程池 的話,強烈推薦大家引入到項目中試一試,為項目線上的穩定性多了一份保障。

因為個人能力有限,項目中難免會有考慮不到或待優化的地方,各位小伙伴有興趣可以提交 PR 修復。

責任編輯:武曉燕 來源: 龍臺的技術筆記
相關推薦

2022-03-22 09:20:57

應用線程池技術

2018-07-18 12:43:13

多云云計算云技術

2012-05-08 10:36:20

LinuxUbuntu發行版

2010-03-31 16:59:02

企業采購

2011-05-04 12:30:50

惠普激光打印機

2011-06-28 17:43:37

SEO

2011-03-30 13:31:50

iOSAndroidWeb

2015-11-09 09:38:36

白群暉

2015-11-09 09:54:28

“白”群暉

2025-06-25 09:31:41

2009-07-17 14:38:51

輕量級Swing組件

2009-07-14 18:05:28

輕量級Swing組件

2015-07-22 09:39:27

企商象云互聯網

2022-05-02 08:42:07

威脅檢測IOCIOB

2018-09-25 16:28:02

辦公指南

2010-12-24 13:17:25

QQ電腦管家QQ

2025-01-09 11:24:59

線程池美團動態配置中心

2012-03-30 15:57:18

臺式機推薦

2017-05-22 15:23:46

PUE監測數據中心

2012-06-27 09:43:59

Win RTWin NT
點贊
收藏

51CTO技術棧公眾號

欧美在线色视频| 久久精品免视看| 欧美精品videossex性护士| 偷偷色噜狠狠狠狠的777米奇| 国产高潮在线| 国产人伦精品一区二区| 成人午夜激情网| 久久精品无码人妻| 日韩av专区| 亚洲精品一区二区精华| 黄色aaa级片| 久久www人成免费看片中文| 久久精品夜色噜噜亚洲aⅴ| 91亚洲精华国产精华| 国产无套丰满白嫩对白| 久久久五月天| 一区二区av在线| 欧美日韩一区二区区别是什么 | 182午夜在线观看| 色呦呦呦在线观看| 国产欧美日韩在线观看| 国产精品三区四区| 国产原创中文av| 亚洲影院在线| 欧美国产视频一区二区| 人人妻人人澡人人爽| 超碰成人97| 欧美日韩成人激情| 已婚少妇美妙人妻系列| 黄网站在线观| 中文字幕一区二区不卡| 精品亚洲第一| 国产av一区二区三区| 久久国产精品毛片| 国内久久久精品| 欧美黄色一级网站| 欧美激情电影| 国产一区二区三区精品久久久| 不许穿内裤随时挨c调教h苏绵| 99欧美精品| 日韩欧美在线看| 青青青青草视频| 色呦呦久久久| 国产三级精品三级| 免费99视频| 免费观看a视频| 丰满岳乱妇一区二区三区| 成人精品福利视频| 夜夜嗨av禁果av粉嫩avhd| 视频一区欧美精品| 18一19gay欧美视频网站| 九热这里只有精品| 亚洲午夜伦理| 欧美国产极速在线| 久久精品这里只有精品| 欧美日韩日本国产亚洲在线| 成年无码av片在线| 亚洲成人生活片| 欧美99在线视频观看| 久久综合免费视频影院| 日韩欧美123区| 中文在线日韩| 欧美激情视频在线| 日本在线观看中文字幕| 在线欧美不卡| 97色伦亚洲国产| 五月天婷婷久久| 香蕉视频成人在线观看| 国产99视频精品免视看7| 国产一区二区视频免费| 男女男精品视频网| 国产日韩欧美视频在线| 一级日韩一级欧美| 国产精品一区二区三区乱码| 亚洲自拍av在线| 亚洲xxx在线| 91麻豆蜜桃一区二区三区| 免费中文日韩| 在线观看的av| 国产欧美精品一区二区色综合 | 亚洲深夜av| 国产suv精品一区二区| 日本三级一区二区三区| 久久99深爱久久99精品| 99在线观看视频| 凸凹人妻人人澡人人添| 国产欧美一区二区精品性色超碰| 亚洲午夜精品一区二区三区| 国产精品剧情| 五月婷婷久久综合| 男女污污的视频| 不卡的国产精品| 亚洲精品720p| 免费成人深夜蜜桃视频| 牛牛国产精品| 欧美性受xxxx白人性爽| 亚洲最大成人av| 99精品欧美一区二区三区综合在线| 欧美一区二区在线视频观看| 久草资源在线观看| 精品免费在线观看| 中日韩av在线播放| 久久久久97| 久久精品国产2020观看福利| 香蕉免费毛片视频| 久久99国产乱子伦精品免费| 黑人中文字幕一区二区三区| av在线播放网站| 亚洲成人激情av| 中文字幕在线综合| 色天下一区二区三区| 精品国产区一区二区三区在线观看| 国产精品suv一区二区| 青青草97国产精品免费观看无弹窗版| 99国产超薄肉色丝袜交足的后果| 国内精品一区视频| 亚洲二区视频在线| 五月激情五月婷婷| 国产成人短视频在线观看| 欧美成人精品在线观看| 日本视频www色| 9久草视频在线视频精品| 国产精品亚洲天堂| 日韩网站中文字幕| 精品成人一区二区三区四区| www色aa色aawww| 三级精品在线观看| 久久久综合香蕉尹人综合网| 色a资源在线| 在线不卡中文字幕| 欧美三级视频网站| 久久精品亚洲一区二区| 国产一区二区不卡视频| 天天色天天射天天综合网| 精品视频一区二区三区免费| 好吊日免费视频| 99亚洲伊人久久精品影院红桃| 91精品在线国产| 日本三级在线视频| 欧美色爱综合网| 白白色免费视频| 国产精品久久国产愉拍| 国产伦精品一区二区三区免费视频| 三区四区电影在线观看| 欧美性生活大片视频| 国产精品高清无码在线观看| 一本色道久久综合亚洲精品不| 动漫一区二区在线| 人人超在线公开视频| 日韩精品一区二区三区蜜臀| 久久精品一区二区三区四区五区| 青青草一区二区三区| 亚洲狠狠婷婷综合久久久| 欧美人与性动交xxⅹxx| 亚洲欧美综合v| 激情五月婷婷网| 国产亚洲制服色| 九热视频在线观看| 欧美激情成人| 91影视免费在线观看| www.久久ai| 日韩欧美一二区| 精品无码人妻一区二区三| 成人性生交大合| 国产 日韩 亚洲 欧美| 全国精品免费看| 国产成人极品视频| 国产青青草在线| 这里只有精品99re| 欧美精品色哟哟| 99久久精品国产毛片| 国产精品亚洲αv天堂无码| 久久99国内| 国产精品 欧美在线| aaa在线观看| 欧美久久高跟鞋激| 久久久精品一区二区涩爱| 99视频精品在线| 老熟妇仑乱视频一区二区| 日韩精品一区二区三区免费观看| 成人欧美在线观看| 99色在线观看| 亚洲午夜精品久久久久久性色| 中文字幕在线观看1| 亚洲欧美一区二区三区极速播放| 岛国精品一区二区三区| 国产精品普通话对白| 亚洲欧美日本国产有色| 99精品在免费线中文字幕网站一区| 992tv在线成人免费观看| 狠狠v欧美ⅴ日韩v亚洲v大胸| 欧美人狂配大交3d怪物一区| 动漫精品一区一码二码三码四码| 久久久久久黄色| 四虎1515hh.com| 亚洲欧美视频| 中国女人做爰视频| 亚洲最好看的视频| 亚洲自拍欧美色图| 欧美中文字幕精在线不卡| 按摩亚洲人久久| 免费国产在线观看| 欧美一区二区福利视频| 亚洲高清毛片一区二区| 樱花草国产18久久久久| japanese中文字幕| 国产高清精品在线| 四季av一区二区| 国产精品色网| 日韩在线视频在线| 日本一区二区在线看| 国产日本一区二区三区| 亚洲人成777| 日本中文字幕不卡免费| 性欧美ⅴideo另类hd| 伊人一区二区三区久久精品| 六月婷婷综合网| 欧美视频精品在线观看| 女人十八岁毛片| 亚洲乱码精品一二三四区日韩在线 | 蜜桃视频在线观看播放| 久久久av一区| 成a人片在线观看www视频| 亚洲第一综合天堂另类专| 7777久久亚洲中文字幕| 日本久久一区二区三区| 九九热国产视频| 亚洲少妇中出一区| 精品一区二区6| 久久久久久日产精品| 中国一级特黄录像播放| 成人一区二区三区在线观看| 一区二区三区欧美精品| 老汉av免费一区二区三区| 免费在线观看日韩视频| 亚洲人www| 福利在线一区二区| 综合在线视频| 青青草原网站在线观看| 欧美激情理论| 在线观看视频黄色| 忘忧草精品久久久久久久高清| 日韩免费毛片| 欧美日韩有码| 亚洲 日韩 国产第一区| 精品中文字幕一区二区三区av| 精品国产一二| 人妖一区二区三区| 麻豆av一区二区| 欧美人妖在线观看| 精品一区二区久久久久久久网站| 老司机精品在线| 国产专区一区二区| 少妇高潮一区二区三区| 久久99九九| 亚洲日产av中文字幕| 欧美三级网色| 国产日产一区 | 在线观看免费版| 日韩中文字幕视频在线| 国产黄网站在线观看| 久久不射热爱视频精品| 欧美性受ⅹ╳╳╳黑人a性爽| 九九视频直播综合网| 精品日韩av| 欧美在线视频一二三| 欧美专区福利免费| 国产久一一精品| 国产精品777777在线播放| 91在线看网站| 久久综合社区| 欧美日韩在线一二三| 第一社区sis001原创亚洲| 在线播放 亚洲| 欧美日韩一区二区国产| 青娱乐自拍偷拍| 久久综合图片| 视频免费1区二区三区| 丁香激情综合国产| 人妻熟女aⅴ一区二区三区汇编| 国产片一区二区三区| 动漫性做爰视频| 天天操天天色综合| 亚洲成人av网址| 日韩美一区二区三区| 日韩三级电影网| 色老头一区二区三区在线观看| av片在线观看免费| 欧美综合在线观看| 成人动漫视频在线观看| 国产亚洲二区| 91嫩草亚洲精品| 日韩一级性生活片| 蜜桃免费网站一区二区三区| 亚洲欧洲国产视频| 国产日韩精品一区| 久草视频手机在线观看| 色婷婷av一区二区三区软件 | 日韩av一卡二卡| 日本在线视频站| 97人人做人人爱| 国产专区精品| 欧美一区亚洲二区| 欧美精品偷拍| 在线看的黄色网址| 99久久夜色精品国产网站| 亚洲AV成人无码网站天堂久久| 午夜精品一区在线观看| 国产精品欧美综合亚洲| 亚洲美女av网站| 福利成人导航| 成人xxxx视频| 国模吧精品视频| 成人免费网站入口| 国内精品久久久久影院一蜜桃| 亚洲第一香蕉网| 亚洲成人综合视频| 国产欧美日韩成人| 在线成人激情视频| 大胆人体一区二区| 国产伦精品一区二区三区免| 欧美粗暴jizz性欧美20| 午夜免费福利在线| 久久蜜臀精品av| 国产乡下妇女做爰视频| 日韩欧美色综合网站| 免费大片在线观看www| 国产成人精品视| 日韩成人av在线资源| avav在线播放| 国产河南妇女毛片精品久久久| 国产三级aaa| 欧美视频一二三区| 黄色网址在线播放| 日韩av手机在线看| 偷拍自拍亚洲色图| 国产精品免费入口| 不卡一区二区中文字幕| 国产一级片播放| 精品国产免费久久| 大香伊人中文字幕精品| 91九色偷拍| 午夜欧美精品| 欧美熟妇精品一区二区| 亚洲精品国产成人久久av盗摄| 国产精品视频无码| 北条麻妃久久精品| 日韩美女在线| 手机福利在线视频| 国产一区二区视频在线| 国产传媒免费在线观看| 91精品婷婷国产综合久久竹菊| 在线免费av网站| 成人免费视频97| 亚洲91中文字幕无线码三区| 能看毛片的网站| 一区二区三区产品免费精品久久75| jizz中国女人| 久久久久在线观看| 欧亚精品一区| 亚洲成熟丰满熟妇高潮xxxxx| 久久久99久久| 中文字幕无线码一区| 久久精品国产精品| 日韩一级淫片| 久久久亚洲精品无码| 久久久综合视频| 少妇又紧又色又爽又刺激视频| 最近的2019中文字幕免费一页 | 天天色天天综合| 欧美一区二区视频在线观看| 色爱综合区网| 欧美裸体网站| 看国产成人h片视频| 日本中文在线视频| 亚洲第一av网站| 日韩在线短视频| www亚洲国产| 99久久国产免费看| 免费黄色小视频在线观看| 日韩视频免费中文字幕| 黑人久久a级毛片免费观看| 久久国产乱子伦免费精品| 国产精品免费av| 成人高潮片免费视频| 91成人在线视频| 久久婷婷蜜乳一本欲蜜臀| 国产精九九网站漫画| 日本精品一级二级| 宅男在线观看免费高清网站| 黑人另类av| 国产在线观看一区二区| 免费在线不卡视频| xvideos亚洲| 神马香蕉久久| 超碰中文字幕在线观看| 欧美性xxxx极品hd欧美风情| 黄色av电影在线观看| 久久久久久九九| 国产精品亚洲第一区在线暖暖韩国|