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

接口性能優化的 15 個技巧

開發 前端
關于業務類的內容很大程度依賴于產品同學的節奏,研發更多是被動角色,我們能做的是就是多跟產品聊天,「實時」了解產品的最新動向,培養自己的業務 sense,給自己多預留一定的buffer時間可以去做技術調研、技術儲備。

大家好,我是Tom哥。

作為后端研發同學為了幾兩碎銀,沒日沒夜周旋于各種人、各種事上。

如果你要想成長的更快,就要學會歸納總結,找到規律,并且善用這些規律。

就比如工作,雖然事情很多、也很繁瑣,但如果按照性質歸下類,我覺得可以分為兩大類:

1、業務類,如:產品要做一個紅包活動,下周一就要上線,于是研發同學就吭哧吭哧,周末加班不睡覺也要趕出來。

2、技術類,如:架構升級、系統優化等,這類事情對技術能力有一定要求,通常要求有一定的項目經驗的同學來 owner。

關于業務類的內容很大程度依賴于產品同學的節奏,研發更多是被動角色,我們能做的是就是多跟產品聊天,「實時」了解產品的最新動向,培養自己的業務 sense,給自己多預留一定的buffer時間可以去做技術調研、技術儲備。

工作過一段時間同學一般都經歷過,產品變化節奏很快,經常都是倒排時間,讓研發苦不堪言。

至于技術類,相對就比較溫和的多了,不過也非常考驗研發的技術實力。

今天,我們就來聊下關于接口性能優化有哪些技巧?

1、本地緩存

本地緩存,最大的優點是應用和cache是在同一個進程內部,請求緩存非常快速,沒有過多的網絡開銷等,在單應用不需要集群支持或者集群情況下各節點無需互相通知的場景下使用本地緩存較合適。缺點也是因為緩存跟應用程序耦合,多個應用程序無法直接的共享緩存,各應用或集群的各節點都需要維護自己的單獨緩存,對內存是一種浪費。

常用的本地緩存框架有 Guava、Caffeine 等,都是些單獨的jar包 ,直接導入到工程里即可使用。

我們可以根據自己的需要靈活選擇想要哪個框架。

圖片

使用門檻比較低, 大家可以自行網上搜索相應的教程,這里就不展開了。

 本地緩存適用兩種場景:

  • 對緩存內容時效性要求不高,能接受一定的延遲,可以設置較短過期時間,被動失效更新保持數據的新鮮度。
  • 緩存的內容不會改變。比如:訂單號與uid的映射關系,一旦創建就不會發生改變。

注意問題:

  • 內存 Cache 數據條目上限控制,避免內存占用過多導致應用癱瘓。
  • 內存中的數據移出策略。
  • 雖然實現簡單,但潛在的坑比較多,最好選擇一些成熟的開源框架。

2、分布式緩存

本地緩存的使用很容易讓你的應用服務器帶上“狀態”,而且容易受內存大小的限制。

分布式緩存借助分布式的概念,集群化部署,獨立運維,容量無上限,雖然會有網絡傳輸的損耗,但這1~2ms的延遲相比其更多優勢完成可以忽略。

優秀的分布式緩存系統有大家所熟知的 Memcached? 、Redis。對比關系型數據庫和緩存存儲,其在讀和寫性能上的差距可謂天壤之別,redis單節點已經可以做到 8W+ QPS。設計方案時盡量把讀寫壓力從數據庫轉移到緩存上,有效保護脆弱的關系型數據庫。

注意問題:

  • 緩存的命中率,如果太低無法起到抗壓的作用,壓力還是壓到了下游的存儲層。
  • 緩存的空間大小,這個要根據具體業務場景來評估,防止空間不足,導致一些熱點數據被置換出去。
  • 緩存數據的一致性。
  • 緩存的快速擴容問題。
  • 緩存的接口平均RT,最大RT,最小RT。
  • 緩存的QPS。
  • 網絡出口流量。
  • 客戶端連接數。


3、并行化

梳理業務流程,畫出時序圖,分清楚哪些是串行?哪些是并行?充分利用多核 CPU 的并行化處理能力。

如下圖所示,存在上下文依賴的采用串行處理,否則采用并行處理。

圖片

JDK 的 CompletableFuture?  提供了非常豐富的API,大約有50種 處理串行、并行、組合以及處理錯誤的方法,可以滿足我們的場景需求。

之前寫的文章:搞定 CompletableFuture,并發異步編程和編寫串行程序還有什么區別?

4、異步化

一個接口的 RT 響應時間是由內部業務邏輯的復雜度決定的,執行的流程約簡單,那接口的耗費時間就越少。

所以,普遍做法就是將接口內部的非核心邏輯剝離出來,異步化來執行。

下圖是一個電商的創建訂單接口,創建訂單記錄并插入數據庫是我們的核心訴求,至于后續的用戶通知,如:給用戶發個短信等,如果失敗,并不影響主流程的完成。

我們會將這些操作從主流程中剝離出來。

圖片

業務的普遍做法就是,下單成功后,發送一條異步消息到MQ 服務器,由消費端監聽 topic,異步消費執行,通過發布/訂閱 模式也能支持一些新的消費任務的快速接入。

5、池化技術

TCP 三次握手非常耗費性能,所以我們引入了 Keep-Alive 長連接,避免頻繁的創建、銷毀連接。

池化技術也是類似道理,將很多能重復使用的對象緩存起來,放到一個池子里,用的時候去申請一個實例對象 ,用完后再放回池子里。

池化技術的核心是資源的“預分配”和“循環使用”,常見的池化技術的使用有:線程池、內存池、數據庫連接池、HttpClient 連接池等。

連接池的幾個重要參數:最小連接數、空閑連接數、最大連接數。

比如創建一個線程池:

new ThreadPoolExecutor(3, 15, 5, TimeUnit.MINUTES,
new ArrayBlockingQueue<>(10),
new ThreadFactoryBuilder().setNameFormat("data-thread-%d").build(),
(r, executor) -> {
(r instanceof BaseRunnable) {
((BaseRunnable) r).rejectedExecute();
}
});

6、分庫分表

MySQL的底層 innodb 存儲引擎采用 B+ 樹結構,三層結構支持千萬級的數據存儲。

當然,現在互聯網的用戶基數非常大,這么大的用戶量,單表通常很難支撐業務需求,將一個大表水平拆分成多張結構一樣的物理表,可以極大緩解存儲、訪問壓力。

圖片

分庫分表也可能會帶入很多問題:

  • 分庫分表后,數據在分表內產生數據傾斜。
  • 如何創建全局性的唯一主鍵id。
  • 數據如何路由到哪一個分片。

每一個問題展開都要花費很長篇幅來講解,這里主要講接口性能優化的方案匯總,就不展開細講了。

關于分庫分表,市場受歡迎的開源框架是 sharding-jdbc,目前已經捐贈給Apache并啟動孵化。

之前寫的文章:為什么要分庫分表?

7、SQL 優化

雖然有了分庫分表,從存儲維度可以減少很大壓力,但「富不過三代」,我們還是要學會精打細算,就比如所有的數據庫操作都是通過 SQL 來執行。

一個不好的SQL會對接口性能產生很大影響。

比如:

  • 搞了個深度翻頁,每次數據庫引擎都要預查非常多的數據。
  • 索引缺失,走了全表掃描。
  • 一條 SQL 一次查詢 幾萬條數據。

SQL 優化的經驗非常多,比如:

  • SQL 查詢時,盡量不要使用 select * ,而是 select 具體字段。
  • 如果只有一條查詢結果(或者最大值、最小值),建議使用 limit 1。
  • 索引不宜太多,一般控制在 5個以內。
  • where 語句中盡量避免使用 or來連接條件。or 可能會導致索引失效,從而全表掃描。
  • 索引盡量避免建在有大量重復數據的字段上,如:性別。
  • where 、 order by 涉及的列上建索引,避免全表掃描。
  • 更多.....

SQL 優化的內容非常多,這里就不展開了。

8、預先計算

有很多業務的計算邏輯比較復雜,比如頁面要展示一個網站的 PV、微信的拼手氣紅包等。

如果在用戶訪問接口的瞬間觸發計算邏輯,而這些邏輯計算的耗時通常比較長,很難滿足用戶的實時性要求。

一般我們都是提前計算,然后將算好的數據預熱到緩存中,接口訪問時,只需要讀緩存即可。

是不是一下子就快了很多。

圖片

9、事務相關

很多業務邏輯有事務要求,針對多個表的寫操作要保證事務特性。

但事務本身又特別耗費性能,為了能盡快結束,不長時間占用數據庫連接資源,我們一般要減少事務的范圍。

將很多查詢邏輯放到事務外部處理。

另外在事務內部,一般不要進行遠程的 RPC 接口訪問,一般占用的時間比較長。

10、海量數據處理

如果數據量過大,除了采用關系型數據庫的分庫分表外,我們還可以采用 NoSQL。

如:MongoDB、Hbase、Elasticsearch、TiDB。

NoSQL 采用分區架構,對數據海量存儲能較好的支持,但是事務方面可能沒那么友好。

每一個 NoSQL 框架都有自己的特色,有支持 搜索的、有列式存儲、有文檔存儲,大家可以根據自己的業務場景選擇合適的框架。

11、批量讀寫

當下的計算機CPU處理速度還是很多的,而 IO 一般是個瓶頸,如:磁盤IO、網絡IO。

有這么一個場景,查詢 100 個人的賬戶余額?

有兩個設計方案:

方案一:開單次查詢接口,調用方內部循環調用 100 次。

方案二:服務提供方開一個批量查詢接口,調用方只需查詢 1 次。

你覺得那種方案更好?

答案不言而喻,肯定是方案二。

數據庫的寫操作也是一樣道理,為了提高性能,我們一般都是采用批量更新。

12、鎖的粒度。

并發業務,為了防止數據的并發更新對數據的正確性產生干擾,我們通常是采用 加鎖 ,涉及獨享資源每次只能是一個線程來處理。

問題點在于,鎖是成對出現的,有加鎖就是釋放鎖。

對于非競爭資源,我們沒有必要圈在鎖內部,會嚴重影響系統的并發能力。

控制鎖的范圍是我們要考慮的重點。

之前寫過一篇常用的鎖有哪些,聊聊 13 種鎖的實現方式。

13、上下文傳遞

Tom哥帶團隊對小伙伴有要求,代碼必須要有 code review 環節,review 同學代碼經常發現一個問題。

當需要一個數據時,如果沒有調 RPC 接口去查,比如想用戶信息這種通用型接口。

因為前面要用,肯定已經查過。但是我們知道方法的調用都是以棧幀的形式來傳遞,隨著一個方法執行完畢而出棧,方法內部的局部變量也就被回收了。

后面如果又要用到這個信息,只能重新去查。

如果能定義一個Context 上下文對象,將一些中間信息存儲并傳遞下來,會大大減輕后面流程的再次查詢壓力。

14、空間大小

如何創建一個集合,這還不簡單,很快我們就寫出下面代碼。

List<String> lists = Lists.newArrayList();

如果說,要往里面插入 1000000  個元素,有沒有更好的方式?

我們做個試驗:

場景一:

圖片

結果:1000000 次插入 List,花費時間:154。

場景二:

圖片

結果:1000000 次插入 List,花費時間:134。

如果我們預先知道集合要存儲多少元素,初始化集合時盡量指定大小,尤其是容量較大的集合。

ArrayList 初始大小是 10,超過閾值會按 1.5 倍大小擴容,涉及老集合到新集合的數據拷貝,浪費性能。

15、查詢優化

避免一次從 DB 中查詢大量的數據到內存中,可能會導致內存不足,建議采用分批、分頁查詢。

責任編輯:武曉燕 來源: 微觀技術
相關推薦

2024-01-22 13:16:00

接口性能優化本地緩存

2018-02-23 13:55:16

ASP.NET性能優化技巧

2024-06-21 08:21:44

2021-11-18 08:20:22

接口索引SQL

2022-05-11 12:15:50

scriptweb性能

2023-01-26 01:33:09

web性能優化

2021-11-10 18:52:42

SQL技巧優化

2022-06-28 16:00:17

Linux網絡性能優化

2020-03-25 08:00:32

Kubernetes節點工作

2009-04-16 16:57:58

DotNetNuke優化網站開發

2024-09-02 14:30:43

2022-02-21 13:27:11

接口性能優化索引命令

2024-08-26 11:50:08

2019-08-21 10:53:29

.NET性能優化

2009-06-16 16:39:49

Hibernate性能

2017-02-05 17:33:59

前端優化Web性能

2011-06-14 10:35:15

性能優化

2020-06-05 08:53:31

接口性能實踐

2023-11-26 17:54:07

JavaScript開發
點贊
收藏

51CTO技術棧公眾號

老熟妇高潮一区二区三区| wwwjizzjizzcom| 天天爽夜夜爽人人爽| 残酷重口调教一区二区| 欧美一级艳片视频免费观看| 免费拍拍拍网站| 国产中文字幕在线| 国产精品一区三区| 国产va免费精品高清在线观看 | 日韩三级一区| 亚洲大尺度视频在线观看| 日本在线成人一区二区| 国产极品久久久| 日本成人中文字幕| 久久久久久久国产| 女人黄色一级片| 国产丝袜一区| 欧美精品第一页| 99re在线视频免费观看| 黑人玩欧美人三根一起进| 中文一区在线播放| 久久伊人资源站| 国产成a人亚洲精v品无码| 青青草97国产精品免费观看 | 久久久99精品免费观看不卡| 亚洲xxx视频| 中文天堂在线播放| 性欧美精品高清| 色综合久久88色综合天天看泰| 中字幕一区二区三区乱码| 女同一区二区三区| 日韩欧美精品在线视频| 性生活免费在线观看| 欧美国产大片| 精品女厕一区二区三区| 97超碰国产精品| 亚洲精品视频播放| 又黄又爽的网站| 91精东传媒理伦片在线观看| 日韩一级精品| 国产69精品久久久久99| 欧美三级小视频| 婷婷激情图片久久| 爽爽爽爽爽爽爽成人免费观看| av小说在线观看| 日韩美女毛片| 精品亚洲夜色av98在线观看| 亚洲一级Av无码毛片久久精品| 亚洲国产精选| 欧美精品日韩一本| 国产精品久久久久久久99| 九九九精品视频| 欧美日韩国产不卡| 天堂av在线8| 欧美一区二区三区婷婷| 欧美日韩在线播放| 国产乱码一区二区三区四区| 91麻豆精品| 日韩一区和二区| 亚洲精品久久久久久| 九九久久成人| 中文字幕一区在线观看视频| 亚洲国产精品日韩| www.成人.com| 中文字幕一区二区三区四区不卡 | 91丨porny丨九色| 国产区一区二| 精品电影一区二区| 亚洲av成人精品一区二区三区| 粉嫩av一区二区| 日韩成人黄色av| 国产 欧美 在线| 久久在线视频| 欧美成人精品一区二区| 久久精品99国产精| av不卡免费看| 国产精品高潮粉嫩av| 亚洲一区二区视频在线播放| 国产精品主播直播| 久久婷婷开心| seseavlu视频在线| 亚洲精品日韩综合观看成人91| 国产精品69久久久| 免费看av不卡| 制服丝袜亚洲网站| 亚洲精品国产成人av在线| 国产调教一区二区三区| 久热99视频在线观看| 日本亚洲色大成网站www久久| 久久精品1区| 亚洲在线视频观看| 日夜干在线视频| 国产精品免费av| 青草青青在线视频| 欧美精品资源| 日韩免费观看高清完整版在线观看| 精品无码国产一区二区三区51安| 成人在线丰满少妇av| 欧美高清视频在线观看| 无码人妻精品一区二区三区不卡| 国产一区二区三区不卡在线观看| 久久精品国产美女| www.久久ai| 色播五月激情综合网| 手机精品视频在线| 久久不卡国产精品一区二区| 欧美精品在线观看91| 青青视频在线免费观看| 国产精品夜夜爽| 亚洲欧美成人一区| 中文字幕在线中文字幕在线中三区| 欧美日韩国产小视频| 影音先锋人妻啪啪av资源网站| 秋霞欧美视频| 2018国产精品视频| 精品久久人妻av中文字幕| 国产区在线观看成人精品| 欧美精品一区二区三区三州| 国产精品日韩精品在线播放| 亚洲午夜精品视频| 日韩av免费网址| 粉嫩av一区二区三区在线播放| 色吧亚洲视频| 性欧美1819sex性高清| 亚洲黄色在线看| 欧美极品aaaaabbbbb| 久久福利资源站| 日本在线播放一区| 中文字幕高清在线播放| 亚洲高清一二三区| 久久黄色小视频| 国产激情视频一区二区在线观看| 一区二区在线不卡| 日韩av一级| 国产一区二区激情| 波多野结衣影片| 久久久久久久久岛国免费| 欧美一区二区中文字幕| 国产伦理久久久久久妇女| 久久91精品国产91久久久| 国产女人高潮时对白| 国产精品美女久久久久久2018 | 国产精品18久久久久久vr| 亚洲国产精品久久久久婷婷老年 | 欧美在线观看18| 国产jjizz一区二区三区视频| 亚洲永久字幕| 欧美成人在线免费观看| 成人影院av| 亚洲欧美三级在线| 国产成人av免费| 中文子幕无线码一区tr| 国产原创精品在线| 国产精品久久久乱弄| 91久久精品美女高潮| 在线观看小视频| 精品福利一区二区三区免费视频| 久久久久久久久久一区二区三区| 国产成人av电影在线观看| 91.com在线| 欧美18免费视频| 国产成人免费av| 69久久夜色| 91精品国产乱| 国产午夜激情视频| 久久五月婷婷丁香社区| 九九热免费精品视频| 成人精品影院| 亚洲一区二区三区在线视频| 成人免费高清观看| 亚洲欧美成人一区二区在线电影| 亚洲无码精品一区二区三区| 国产精品久久久久桃色tv| 日本一区二区三区在线免费观看| 影音先锋久久精品| 日本在线观看一区二区| 久久婷婷五月综合色丁香| 毛片精品免费在线观看| 四虎在线视频免费观看| 欧美最新大片在线看| www.毛片com| 91麻豆国产自产在线观看| 超碰在线人人爱| 欧美性久久久| 日韩av影视| 欧美精品影院| 国产精品对白刺激| 视频在线这里都是精品| 亚洲人午夜色婷婷| 在线观看国产三级| 日本sm残虐另类| 亚洲人成精品久久久久久| 91黄色小网站| 无需播放器亚洲| 久久99精品久久久久久久青青日本| 国产另类xxxxhd高清| 欧美精品在线观看| 北岛玲一区二区三区| 日韩免费高清视频| 国产亚洲久一区二区| 亚洲成人在线观看视频| 99久久久无码国产精品不卡| 成人黄色一级视频| 国产精品嫩草影院8vv8| 国产精品久久国产愉拍| 国产内射老熟女aaaa| 欧美丝袜丝交足nylons172| 国产成人一区二区三区免费看| 在线观看免费版| 亚洲精品一区二区在线观看| 一区二区三区在线免费观看视频 | 亚洲人精品午夜在线观看| 99久久婷婷国产一区二区三区| 欧美日韩在线视频一区| 久草免费在线视频观看| 国产精品白丝在线| 免费看裸体网站| av网站免费线看精品| 亚洲欧美天堂在线| 日韩精品一级二级| 黄色片视频在线免费观看| 欧美日韩一区二区国产| 亚洲欧洲一二三| 欧美熟乱15p| 日本成人三级电影网站| 欧美电影网址| 国内精品视频一区| av网站大全在线| 色999日韩欧美国产| 国产精品久久一区二区三区不卡| 日韩av网址在线| 日韩在线视频观看免费| 精品久久久久久综合日本欧美| 国产剧情精品在线| 欧美精选午夜久久久乱码6080| 波多野结衣电车痴汉| 色噜噜狠狠色综合中国| 成年人午夜视频| 亚洲va欧美va人人爽午夜| 国语对白一区二区| 亚洲线精品一区二区三区| 免费一级片在线观看| 亚洲午夜在线视频| 国产无套在线观看| 精品久久久久久久久久久久久| 日韩 欧美 精品| 欧美日韩性视频在线| 久久国产视频播放| 日本乱人伦aⅴ精品| 国产美女www| 精品视频在线免费观看| 一区二区三区精| 日韩一区二区三区免费观看| www.成人精品| 亚洲第一中文字幕在线观看| 手机av免费在线观看| 日韩精品免费在线视频观看| 黄色av免费在线观看| 中文一区二区视频| 哥也色在线视频| 欧美精品videos另类日本| 性爽视频在线| 国产精品视频永久免费播放| 色8久久久久| 99久久精品无码一区二区毛片 | 欧美在线3区| 日韩精品网站| 欧美大片免费播放| 亚洲一区免费| 乌克兰美女av| 丰满少妇久久久久久久| 性色av蜜臀av色欲av| 国产清纯白嫩初高生在线观看91 | 午夜小视频福利在线观看| 午夜精品理论片| 成人精品国产亚洲| 粉嫩av一区二区三区免费观看 | 色香蕉在线观看| 国产精品草草| 一本久道综合色婷婷五月| 久久精品国产色蜜蜜麻豆| 日本一级大毛片a一| 久久影音资源网| 免费三级在线观看| 欧美午夜片欧美片在线观看| 国产精品久久久久久久一区二区| 亚洲精品一区二区三区在线观看 | 欧美二区在线播放| 小黄鸭精品aⅴ导航网站入口| 亚洲一区二区三区成人在线视频精品| 国产91精品入| 亚洲精品乱码视频| 亚洲精选在线| 国产精品igao网网址不卡| 久久久久9999亚洲精品| 日韩影院一区二区| 日韩欧美亚洲国产一区| 97在线视频人妻无码| 亚洲国产精品成人va在线观看| 欧美成人精品一区二区男人看| 69av成年福利视频| 亚洲午夜免费| 一区二区精品免费视频| 亚洲在线播放| 亚洲熟女一区二区三区| 国产精品久久久久精k8| 欧美一级特黄视频| 日韩精品一区二区在线观看| aaa在线观看| 国产成人精品一区二区| 成人资源在线| 激情视频小说图片| 免费一级片91| 精品无码一区二区三区| 亚洲一区二三区| 国产人妖一区二区| 最近的2019中文字幕免费一页| 最新欧美色图| 九九九热999| 亚洲三级国产| 国偷自产av一区二区三区麻豆| 1024精品合集| 亚洲中文字幕一区二区| 伊人成人开心激情综合网| 麻豆国产在线| 加勒比在线一区二区三区观看| 欧美视频在线观看| 午夜影院免费版| 亚洲私人影院在线观看| 一区精品在线观看| 一区二区在线免费视频| 成人看片在线观看| 日产精品久久久一区二区| 亚洲神马久久| 三级电影在线看| 日韩欧美极品在线观看| 青春草在线观看| 国产成人鲁鲁免费视频a| 精品产国自在拍| 欧美性猛交久久久乱大交小说| 久久久噜噜噜久噜久久综合| 久久青青草视频| 国产视频欧美视频| 一级毛片久久久| 日韩一区不卡| 麻豆精品新av中文字幕| 日韩欧美视频免费观看| 91麻豆精品国产91久久久久久久久| 欧美极品视频| 97久久夜色精品国产九色| 伊人精品在线| av网页在线观看| 一本大道综合伊人精品热热| 国产中文在线| 91精品视频在线| 国内精品久久久久久久影视麻豆| 日本精品一二三区| 亚洲成人免费看| 涩涩视频在线观看免费| 国产aaa精品| 99久久99视频只有精品| 在线观看网站黄| 亚洲mv大片欧洲mv大片精品| 欧美日韩视频精品二区| 国产精品视频白浆免费视频| 一本到12不卡视频在线dvd| 超碰人人cao| 欧美色道久久88综合亚洲精品| 狠狠色伊人亚洲综合网站l| 国产日韩视频在线观看| 午夜国产欧美理论在线播放| 伊人av在线播放| 黑人极品videos精品欧美裸| 番号在线播放| 亚洲综合在线做性| 国产精品社区| 少妇高潮惨叫久久久久| 精品国产一区二区三区久久久蜜月| 中文字幕在线高清| 9l视频自拍9l视频自拍| 国产亚洲在线| 538精品视频| 精品国产精品网麻豆系列 | 91麻豆蜜桃| 西西人体一区二区| 99鲁鲁精品一区二区三区| 亚洲国产精品国自产拍av秋霞| 欧美色网在线| 国产视频在线观看网站| 欧美韩国日本综合| 亚洲精品一区二区三区不卡| 国产精品91视频| 欧美日本一区| 国产18无套直看片| 欧美精品一区二| 91成人app| 虎白女粉嫩尤物福利视频| 亚洲免费高清视频在线| 国产小视频福利在线| 国产精品国产精品国产专区不卡|