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

接口性能優(yōu)化的 15 個(gè)技巧

開發(fā) 后端
關(guān)于業(yè)務(wù)類的內(nèi)容很大程度依賴于產(chǎn)品同學(xué)的節(jié)奏,研發(fā)更多是被動角色,我們能做的是就是多跟產(chǎn)品聊天,「實(shí)時(shí)」了解產(chǎn)品的最新動向,培養(yǎng)自己的業(yè)務(wù) sense,給自己多預(yù)留一定的buffer時(shí)間可以去做技術(shù)調(diào)研、技術(shù)儲備。

大家好,我是Tom哥。

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

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

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

  • 業(yè)務(wù)類,如:產(chǎn)品要做一個(gè)紅包活動,下周一就要上線,于是研發(fā)同學(xué)就吭哧吭哧,周末加班不睡覺也要趕出來
  • 技術(shù)類,如:架構(gòu)升級、系統(tǒng)優(yōu)化等,這類事情對技術(shù)能力有一定要求,通常要求有一定的項(xiàng)目經(jīng)驗(yàn)的同學(xué)來 owner

關(guān)于業(yè)務(wù)類的內(nèi)容很大程度依賴于產(chǎn)品同學(xué)的節(jié)奏,研發(fā)更多是被動角色,我們能做的是就是多跟產(chǎn)品聊天,「實(shí)時(shí)」了解產(chǎn)品的最新動向,培養(yǎng)自己的業(yè)務(wù) sense,給自己多預(yù)留一定的buffer時(shí)間可以去做技術(shù)調(diào)研、技術(shù)儲備。

工作過一段時(shí)間同學(xué)一般都經(jīng)歷過,產(chǎn)品變化節(jié)奏很快,經(jīng)常都是倒排時(shí)間,讓研發(fā)苦不堪言。

至于技術(shù)類,相對就比較溫和的多了,不過也非常考驗(yàn)研發(fā)的技術(shù)實(shí)力。

今天,我們就來聊下關(guān)于接口性能優(yōu)化有哪些技巧?

1、本地緩存

本地緩存,最大的優(yōu)點(diǎn)是應(yīng)用和cache是在同一個(gè)進(jìn)程內(nèi)部,請求緩存非常快速,沒有過多的網(wǎng)絡(luò)開銷等,在單應(yīng)用不需要集群支持或者集群情況下各節(jié)點(diǎn)無需互相通知的場景下使用本地緩存較合適。缺點(diǎn)也是因?yàn)榫彺娓鷳?yīng)用程序耦合,多個(gè)應(yīng)用程序無法直接的共享緩存,各應(yīng)用或集群的各節(jié)點(diǎn)都需要維護(hù)自己的單獨(dú)緩存,對內(nèi)存是一種浪費(fèi)。

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

我們可以根據(jù)自己的需要靈活選擇想要哪個(gè)框架

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

本地緩存適用兩種場景:

  • 對緩存內(nèi)容時(shí)效性要求不高,能接受一定的延遲,可以設(shè)置較短過期時(shí)間,被動失效更新保持?jǐn)?shù)據(jù)的新鮮度
  • 緩存的內(nèi)容不會改變。比如:訂單號與uid的映射關(guān)系,一旦創(chuàng)建就不會發(fā)生改變

注意問題:

  • 內(nèi)存 Cache 數(shù)據(jù)條目上限控制,避免內(nèi)存占用過多導(dǎo)致應(yīng)用癱瘓。
  • 內(nèi)存中的數(shù)據(jù)移出策略
  • 雖然實(shí)現(xiàn)簡單,但潛在的坑比較多,最好選擇一些成熟的開源框架

2、分布式緩存

本地緩存的使用很容易讓你的應(yīng)用服務(wù)器帶上“狀態(tài)”,而且容易受內(nèi)存大小的限制。

分布式緩存借助分布式的概念,集群化部署,獨(dú)立運(yùn)維,容量無上限,雖然會有網(wǎng)絡(luò)傳輸?shù)膿p耗,但這1~2ms的延遲相比其更多優(yōu)勢完成可以忽略。

優(yōu)秀的分布式緩存系統(tǒng)有大家所熟知的 Memcached 、Redis。對比關(guān)系型數(shù)據(jù)庫和緩存存儲,其在讀和寫性能上的差距可謂天壤之別,redis單節(jié)點(diǎn)已經(jīng)可以做到 8W+ QPS。設(shè)計(jì)方案時(shí)盡量把讀寫壓力從數(shù)據(jù)庫轉(zhuǎn)移到緩存上,有效保護(hù)脆弱的關(guān)系型數(shù)據(jù)庫。

注意問題:

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

3、并行化

梳理業(yè)務(wù)流程,畫出時(shí)序圖,分清楚哪些是串行?哪些是并行?充分利用多核 CPU 的并行化處理能力

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

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

4、異步化

一個(gè)接口的 RT 響應(yīng)時(shí)間是由內(nèi)部業(yè)務(wù)邏輯的復(fù)雜度決定的,執(zhí)行的流程約簡單,那接口的耗費(fèi)時(shí)間就越少。

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

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

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

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

5、池化技術(shù)

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

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

池化技術(shù)的核心是資源的“預(yù)分配”和“循環(huán)使用”,常見的池化技術(shù)的使用有:線程池、內(nèi)存池、數(shù)據(jù)庫連接池、HttpClient 連接池等

連接池的幾個(gè)重要參數(shù):最小連接數(shù)、空閑連接數(shù)、最大連接數(shù)

比如創(chuàng)建一個(gè)線程池:

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

6、分庫分表

MySQL的底層 innodb 存儲引擎采用 B+ 樹結(jié)構(gòu),三層結(jié)構(gòu)支持千萬級的數(shù)據(jù)存儲。

當(dāng)然,現(xiàn)在互聯(lián)網(wǎng)的用戶基數(shù)非常大,這么大的用戶量,單表通常很難支撐業(yè)務(wù)需求,將一個(gè)大表水平拆分成多張結(jié)構(gòu)一樣的物理表,可以極大緩解存儲、訪問壓力。

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

  • 分庫分表后,數(shù)據(jù)在分表內(nèi)產(chǎn)生數(shù)據(jù)傾斜
  • 如何創(chuàng)建全局性的唯一主鍵id
  • 數(shù)據(jù)如何路由到哪一個(gè)分片

每一個(gè)問題展開都要花費(fèi)很長篇幅來講解,這里主要講接口性能優(yōu)化的方案匯總,就不展開細(xì)講了。

關(guān)于分庫分表,市場受歡迎的開源框架是 sharding-jdbc,目前已經(jīng)捐贈給Apache并啟動孵化

7、SQL 優(yōu)化

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

一個(gè)不好的SQL會對接口性能產(chǎn)生很大影響。

比如:

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

SQL 優(yōu)化的經(jīng)驗(yàn)非常多,比如:

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

SQL 優(yōu)化的內(nèi)容非常多,這里就不展開了

8、預(yù)先計(jì)算

有很多業(yè)務(wù)的計(jì)算邏輯比較復(fù)雜,比如頁面要展示一個(gè)網(wǎng)站的 PV、微信的拼手氣紅包等

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

一般我們都是提前計(jì)算,然后將算好的數(shù)據(jù)預(yù)熱到緩存中,接口訪問時(shí),只需要讀緩存即可

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

9、事務(wù)相關(guān)

很多業(yè)務(wù)邏輯有事務(wù)要求,針對多個(gè)表的寫操作要保證事務(wù)特性。

但事務(wù)本身又特別耗費(fèi)性能,為了能盡快結(jié)束,不長時(shí)間占用數(shù)據(jù)庫連接資源,我們一般要減少事務(wù)的范圍。

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

另外在事務(wù)內(nèi)部,一般不要進(jìn)行遠(yuǎn)程的 RPC 接口訪問,一般占用的時(shí)間比較長。

10、海量數(shù)據(jù)處理

如果數(shù)據(jù)量過大,除了采用關(guān)系型數(shù)據(jù)庫的分庫分表外,我們還可以采用 NoSQL

如:MongoDB、Hbase、Elasticsearch、TiDB

NoSQL 采用分區(qū)架構(gòu),對數(shù)據(jù)海量存儲能較好的支持,但是事務(wù)方面可能沒那么友好。

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

11、批量讀寫

當(dāng)下的計(jì)算機(jī)CPU處理速度還是很多的,而 IO 一般是個(gè)瓶頸,如:磁盤IO、網(wǎng)絡(luò)IO。

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

有兩個(gè)設(shè)計(jì)方案:

方案一:開單次查詢接口,調(diào)用方內(nèi)部循環(huán)調(diào)用 100 次

方案二:服務(wù)提供方開一個(gè)批量查詢接口,調(diào)用方只需查詢 1 次

你覺得那種方案更好?

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

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

12、鎖的粒度

并發(fā)業(yè)務(wù),為了防止數(shù)據(jù)的并發(fā)更新對數(shù)據(jù)的正確性產(chǎn)生干擾,我們通常是采用 加鎖 ,涉及獨(dú)享資源每次只能是一個(gè)線程來處理。

問題點(diǎn)在于,鎖是成對出現(xiàn)的,有加鎖就是釋放鎖。

對于非競爭資源,我們沒有必要圈在鎖內(nèi)部,會嚴(yán)重影響系統(tǒng)的并發(fā)能力。

控制鎖的范圍是我們要考慮的重點(diǎn)。

13、上下文傳遞

Tom哥帶團(tuán)隊(duì)對小伙伴有要求,代碼必須要有 code review 環(huán)節(jié),review 同學(xué)代碼經(jīng)常發(fā)現(xiàn)一個(gè)問題。

當(dāng)需要一個(gè)數(shù)據(jù)時(shí),如果沒有調(diào) RPC 接口去查,比如想用戶信息這種通用型接口

因?yàn)榍懊嬉茫隙ㄒ呀?jīng)查過。但是我們知道方法的調(diào)用都是以棧幀的形式來傳遞,隨著一個(gè)方法執(zhí)行完畢而出棧,方法內(nèi)部的局部變量也就被回收了。

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

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

14、空間大小

如何創(chuàng)建一個(gè)集合,這還不簡單,很快我們就寫出下面代碼

List lists = Lists.newArrayList();

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

我們做個(gè)試驗(yàn):

場景一:

結(jié)果:1000000 次插入 List,花費(fèi)時(shí)間:154

場景二:

結(jié)果:1000000 次插入 List,花費(fèi)時(shí)間:134

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

ArrayList 初始大小是 10,超過閾值會按 1.5 倍大小擴(kuò)容,涉及老集合到新集合的數(shù)據(jù)拷貝,浪費(fèi)性能。

15、查詢優(yōu)化

避免一次從 DB 中查詢大量的數(shù)據(jù)到內(nèi)存中,可能會導(dǎo)致內(nèi)存不足,建議采用分批、分頁查詢

責(zé)任編輯:姜華 來源: 微觀技術(shù)
相關(guān)推薦

2022-10-09 13:36:44

接口性能優(yōu)化

2018-02-23 13:55:16

ASP.NET性能優(yōu)化技巧

2024-06-21 08:21:44

2021-11-18 08:20:22

接口索引SQL

2023-01-26 01:33:09

web性能優(yōu)化

2022-05-11 12:15:50

scriptweb性能

2021-11-10 18:52:42

SQL技巧優(yōu)化

2022-06-28 16:00:17

Linux網(wǎng)絡(luò)性能優(yōu)化

2009-04-16 16:57:58

DotNetNuke優(yōu)化網(wǎng)站開發(fā)

2020-03-25 08:00:32

Kubernetes節(jié)點(diǎn)工作

2024-09-02 14:30:43

2022-02-21 13:27:11

接口性能優(yōu)化索引命令

2019-08-21 10:53:29

.NET性能優(yōu)化

2024-08-26 11:50:08

2009-06-16 16:39:49

Hibernate性能

2017-02-05 17:33:59

前端優(yōu)化Web性能

2011-06-14 10:35:15

性能優(yōu)化

2020-06-05 08:53:31

接口性能實(shí)踐

2023-11-26 17:54:07

JavaScript開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美国产小视频| 大片免费在线看视频| 丝袜亚洲精品中文字幕一区| 亚洲欧美制服另类日韩| 色噜噜狠狠一区二区| 四虎影院观看视频在线观看| av高清不卡在线| 国产精品美女呻吟| 日本在线视频中文字幕| 成人久久一区| 精品国产91亚洲一区二区三区婷婷| 逼特逼视频在线| 国产1区在线| 久久久久久久电影| 超碰97在线播放| 国内av在线播放| 一区二区亚洲精品| 色综合伊人色综合网站| 国产高清自拍视频| 午夜视频一区二区在线观看| 欧洲视频一区二区| 131美女爱做视频| 成人在线免费看黄| 国产午夜精品福利| 精品欧美一区二区久久久伦| 99久久精品无免国产免费| 久久久精品午夜少妇| 久久免费视频网| 99视频只有精品| 欧美日中文字幕| 精品在线观看国产| 无码人妻精品一区二区三| www 久久久| 欧美网站一区二区| 日韩视频免费在线播放| а√天堂8资源在线| 亚洲女同一区二区| 中文字幕久精品免| 香蕉视频免费在线播放| 久久嫩草精品久久久精品一| 国产在线观看一区| 欧美 日韩 国产 精品| 国产一区视频导航| 成人黄色在线播放| 亚洲最大成人av| 免费高清成人在线| 国产欧美精品一区二区| 一卡二卡三卡在线观看| 秋霞电影网一区二区| 国产精品福利无圣光在线一区| www欧美在线| 国产欧美午夜| 欧美一区二区三区免费观看| 国产三级av片| 国产日韩专区| 欧美怡春院一区二区三区| 国产又大又黄视频| 亚洲综合丁香| 国产成人精品国内自产拍免费看 | 九色成人国产蝌蚪91| 日韩成人在线观看| 蜜桃精品一区二区| 国产精品一区二区av日韩在线| 亚洲精品少妇网址| 男人的天堂av网| 久久人体视频| 欧美日韩国产999| 国产网友自拍视频| 羞羞答答国产精品www一本| 日本免费久久高清视频| 亚洲精品无码久久久久| 久久99精品国产麻豆不卡| 91免费看国产| 欧美一级免费片| 久久久精品影视| 亚洲一区二区三区午夜| 在线中文字幕电影| 午夜欧美视频在线观看| 欧美激情成人网| 国产精品视频一区二区三区| 精品国产电影一区二区| 全黄一级裸体片| 午夜片欧美伦| 91精品国产精品| 中文字幕丰满人伦在线| 国产99精品在线观看| 韩国成人一区| 91xxx在线观看| 亚洲一区视频在线观看视频| 37pao成人国产永久免费视频| 不卡亚洲精品| 精品福利一区二区三区 | 亚洲欧美高清视频| 2024国产精品| 免费久久久久久| 三妻四妾的电影电视剧在线观看| 欧美三片在线视频观看| 亚洲视频天天射| 欧美日韩中文字幕一区二区三区| 九色精品免费永久在线| 久久久久久久久久成人| 国产精品一区在线观看乱码 | 天天av天天翘天天综合网| 日本熟妇人妻xxxxx| 久久九九精品视频| 一区二区日韩精品| 国产午夜小视频| 久久精品国产第一区二区三区| 国产日韩一区二区| 欧美成年黄网站色视频| 欧美日韩精品在线| 深爱五月综合网| 欧美三级情趣内衣| 日本sm极度另类视频| 精品人妻无码一区二区| 欧美激情一区二区在线| 波多野结衣50连登视频| 动漫av一区| 久久国产精品久久精品| 国产裸体美女永久免费无遮挡| www.久久网| 日本久久黄色| 91精品成人久久| 性生交生活影碟片| 自拍偷拍亚洲综合| 簧片在线免费看| 亚洲人成亚洲精品| 性亚洲最疯狂xxxx高清| 亚洲av无码国产精品永久一区| 国产精品嫩草久久久久| 青青草av网站| 免费欧美激情| 欧洲成人性视频| 色欲久久久天天天综合网| 亚洲精品乱码久久久久久日本蜜臀| 欧美精品性生活| 中日韩免视频上线全都免费| 欧美又大又硬又粗bbbbb| 免费观看国产精品| 亚洲综合一二区| 国产精品欧美性爱| 欧美日韩国产精品一区二区亚洲| 91视频8mav| 成人av福利| 日韩一区二区在线看片| 免费在线观看日韩| 成人免费不卡视频| 欧美一级视频免费看| 成人福利一区| 韩国精品美女www爽爽爽视频| 日本黄色一区二区三区| 亚洲h精品动漫在线观看| 国产视频精品视频| 亚洲美女黄网| 久久精品国产精品国产精品污| 啊啊啊久久久| 精品无码久久久久久国产| 三级视频在线观看| 中文字幕欧美三区| www激情五月| 国产一区日韩欧美| 99精彩视频在线观看免费| 女同一区二区免费aⅴ| 欧美精品一区二区三| 亚洲欧美三级伦理| 久久网免费视频| av在线不卡观看免费观看| 国产伦精品一区二区三区四区视频_| 欧美黄色录像| 国产91热爆ts人妖在线| 自拍视频在线免费观看| 91精品国产免费久久综合| 久久久久久久久久久久国产| 99re视频这里只有精品| 青青艹视频在线| 欧美日韩中文一区二区| 成人久久久久久久| 丰满大乳少妇在线观看网站| 亚洲精品视频二区| 91高潮大合集爽到抽搐| 亚洲一区二区精品视频| 日本高清www| 久久99热99| 日本中文字幕网址| 欧美mv日韩| 精品乱子伦一区二区三区| 福利一区二区三区视频在线观看| 久久亚洲精品国产亚洲老地址| 三级网站在线看| 欧美日韩在线观看一区二区 | 久久电影视频| 日韩视频在线一区二区| 成年人视频在线免费看| 亚洲男人都懂的| 精品人妻互换一区二区三区| 国产真实乱对白精彩久久| 欧美精品一区免费| 亚欧美无遮挡hd高清在线视频| 国产伦精品一区二区三区视频免费 | 国产ts一区二区| 少妇av在线| 神马国产精品影院av| 神马午夜电影一区二区三区在线观看| 91福利精品视频| 日韩免费一级片| 亚洲欧洲精品一区二区精品久久久 | 超碰97久久| 国产人妖伪娘一区91| 国产精品13p| 欧美成人免费全部| av中文字幕在线| 亚洲欧美国产一本综合首页| 国产精品视频久| 人妻无码一区二区三区久久99| 欧美午夜寂寞影院| 欧美一级片免费在线观看| 有码一区二区三区| 欧美激情久久久久久久| 99精品国产视频| 亚洲性图第一页| 国内精品自线一区二区三区视频| 老司机午夜av| 欧美在线综合| 久久视频这里有精品| 欧美人与禽猛交乱配视频| 一区二区在线高清视频| 国产在视频线精品视频www666| 国产专区一区二区三区| 中文一区二区三区四区| 亚洲精品日韩av| 色成人综合网| 国产精品中文在线| 成人深夜福利| 国产精品丝袜久久久久久高清| 综合在线影院| 国产成人精品a视频一区www| 日韩不卡免费高清视频| 日韩美女免费线视频| 一区二区三区短视频| 欧美在线性爱视频| 精品人人视频| 欧美综合激情网| 波多视频一区| 国产99久久精品一区二区永久免费 | 中文字幕亚洲电影| 欧美亚洲另类制服自拍| 国产一级一片免费播放| 亚洲女同女同女同女同女同69| 国产在线观看免费视频软件| 国产精品护士白丝一区av| 99在线视频免费| 中文字幕永久在线不卡| 国精产品一区一区二区三区mba| 亚洲色图视频免费播放| 欧美日韩黄色网| 亚洲激情六月丁香| 日韩三级视频在线播放| 狠狠色狠狠色综合日日小说| 亚洲不卡在线视频| 欧美日韩国产中文| 国产欧美久久久| 欧美xxxxx牲另类人与| 三级网站在线看| 亚洲香蕉伊综合在人在线视看 | 久久久久久久综合日本| 亚洲色图第四色| 亚洲男人的天堂在线aⅴ视频| 久久久久久久福利| 欧美日韩国产精品一区| 免费看av在线| 日韩一区二区三区视频| 国产自产一区二区| 亚洲美女在线视频| 免费超碰在线| 国内免费久久久久久久久久久| 中文字幕在线官网| 国产欧美日韩高清| 成人福利免费在线观看| 日韩欧美亚洲精品| 欧美日韩影院| 免费日韩视频在线观看| 久久激情综合网| 野战少妇38p| 欧美极品少妇xxxxⅹ高跟鞋| 免费在线看黄网址| 欧亚一区二区三区| 蜜桃av中文字幕| 在线一区二区日韩| 波多野结依一区| 国产欧美日韩综合精品| youjizzjizz亚洲| 五月天久久狠狠| 亚洲国产高清一区二区三区| 久热精品在线播放| av中文字幕在线不卡| 日本激情视频一区二区三区| 精品久久久久久久中文字幕| 怡红院成永久免费人全部视频| 精品国产1区2区3区| 嫩草香蕉在线91一二三区| 91精品国产色综合| 看亚洲a级一级毛片| 品久久久久久久久久96高清| 欧美日韩三级| 制服丝袜中文字幕第一页| 99re热视频精品| 午夜精品福利在线视频| 色菇凉天天综合网| 午夜美女福利视频| 久久久97精品| 日本欧美不卡| 久久精品综合一区| 黄色亚洲在线| 韩国一区二区在线播放| 国产欧美精品日韩区二区麻豆天美| 国产精选第一页| 欧美一卡二卡在线| 91青青在线视频| 青青在线视频一区二区三区| 国产一区一区| 在线综合视频网站| 免费美女久久99| 日本成人免费视频| 色香蕉成人二区免费| 偷拍自拍在线视频| 亚洲**2019国产| 果冻天美麻豆一区二区国产| 蜜臀av.com| 国模大尺度一区二区三区| 女人黄色一级片| 在线观看免费视频综合| 精品久久av| 国产精品99久久99久久久二8| 一区二区三区日本久久久| 欧美国产激情视频| 91蜜桃在线免费视频| 国产乱国产乱老熟| 国产视频精品在线| 亚洲欧洲自拍| 欧美日韩精品久久| 天堂成人国产精品一区| 国产熟妇久久777777| 日本道色综合久久| 国产永久免费高清在线观看视频| 国产99在线|中文| 欧美手机在线| 天堂在线一区二区三区| 亚洲视频小说图片| 精品久久久久久亚洲综合网站 | 亚洲国产小视频在线观看| sis001亚洲原创区| 精品九九九九| 性欧美长视频| 午夜时刻免费入口| 欧美日韩一区二区三区四区五区 | 神马影视一区二区| 日本在线观看免费视频| 国产精品不卡视频| 国产情侣激情自拍| 欧美激情啊啊啊| 日韩mv欧美mv国产网站| 日韩黄色片视频| 中文字幕欧美日韩一区| 97人妻精品一区二区三区动漫| 久久香蕉国产线看观看av| www.丝袜精品| 女性隐私黄www网站视频| 中文字幕一区二区三区av| 国产www免费观看| 91国语精品自产拍在线观看性色 | 欧美在线一区视频| 久久久久成人黄色影片| 国产又粗又大又黄| 久久久久久久久91| 久久综合亚洲| 91免费视频污| 欧美性xxxxx| 黄色网在线免费看| 激情欧美一区二区三区中文字幕| 天使萌一区二区三区免费观看| 亚洲一级二级片| 精品视频久久久久久| 欧美jizz18| 少妇人妻在线视频| 中文字幕一区二区三| 婷婷伊人综合中文字幕| 国产剧情日韩欧美| 99精品久久久| 亚洲天堂一级片| 日韩av在线免费播放| 婷婷丁香久久| 人妻内射一区二区在线视频 | 99精品久久免费看蜜臀剧情介绍| 又污又黄的网站| 57pao精品| 在线精品国产| 免费人成又黄又爽又色| 欧美草草影院在线视频| 国产精品99精品一区二区三区∴| 99国产精品白浆在线观看免费|