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

這破系統終于拆分重構了,壓力山大!

開發 項目管理
系統內各個應用之間不通,同樣一個功能在各個應用中都有實現,后果就是改一處功能,需要同時改系統中的所有應用。這種情況多存在于歷史較長的系統,因各種原因,系統內的各個應用都形成了自己的業務小閉環。

?1 為什么要拆分?

先看一段對話:

圖片

從上面對話可以看出拆分的理由:

1) 應用間耦合嚴重。系統內各個應用之間不通,同樣一個功能在各個應用中都有實現,后果就是改一處功能,需要同時改系統中的所有應用。這種情況多存在于歷史較長的系統,因各種原因,系統內的各個應用都形成了自己的業務小閉環;

2) 業務擴展性差。數據模型從設計之初就只支持某一類的業務,來了新類型的業務后又得重新寫代碼實現,結果就是項目延期,大大影響業務的接入速度;

3) 代碼老舊,難以維護。各種隨意的if else、寫死邏輯散落在應用的各個角落,處處是坑,開發維護起來戰戰兢兢;

4) 系統擴展性差。系統支撐現有業務已是顫顫巍巍,不論是應用還是DB都已經無法承受業務快速發展帶來的壓力;

5) 新坑越挖越多,惡性循環。不改變的話,最終的結果就是把系統做死了。

2 拆前準備什么?

2.1 多維度把握業務復雜度

一個老生常談的問題,系統與業務的關系?

圖片

我們最期望的理想情況是第一種關系(車輛與人),業務覺得不合適,可以馬上換一輛新的。但現實的情況是更像心臟起搏器與人之間的關系,不是說換就能換。一個系統接的業務越多,耦合越緊密。如果在沒有真正把握住業務復雜度之前貿然行動,最終的結局就是把心臟帶飛。關注公眾號:碼猿技術專欄,回復關鍵詞:1111 獲取阿里內部Java性能調優手冊!

如何把握住業務復雜度?需要多維度的思考、實踐。

一個是技術層面,通過與pd以及開發的討論,熟悉現有各個應用的領域模型,以及優缺點,這種討論只能讓人有個大概,更多的細節如代碼、架構等需要通過做需求、改造、優化這些實踐來掌握。

各個應用熟悉之后,需要從系統層面來構思,我們想打造平臺型的產品,那么最重要也是最難的一點就是功能集中管控,打破各個應用的業務小閉環,統一收攏,這個決心更多的是開發、產品、業務方、各個團隊之間達成的共識,可以參考《微服務(Microservice)那點事》一文,“按照業務或者客戶需求組織資源”。

此外也要與業務方保持功能溝通、計劃溝通,確保應用拆分出來后符合使用需求、擴展需求,獲取他們的支持。

2.2 定義邊界,原則:高內聚,低耦合,單一職責!

業務復雜度把握后,需要開始定義各個應用的服務邊界。怎么才算是好的邊界?像葫蘆娃兄弟一樣的應用就是好的!

舉個例子,葫蘆娃兄弟(應用)間的技能是相互獨立的,遵循單一職責原則,比如水娃只能噴水,火娃只會噴火,隱形娃不會噴水噴火但能隱身。更為關鍵的是,葫蘆娃兄弟最終可以合體為金剛葫蘆娃,即這些應用雖然功能彼此獨立,但又相互打通,最后合體在一起就成了我們的平臺。

這里很多人會有疑惑,拆分粒度怎么控制?很難有一個明確的結論,只能說是結合業務場景、目標、進度的一個折中。但總體的原則是先從一個大的服務邊界開始,不要太細,因為隨著架構、業務的演進,應用自然而然會再次拆分,讓正確的事情自然發生才最合理。關注公眾號:碼猿技術專欄,回復關鍵詞:1111 獲取阿里內部Java性能調優手冊!

2.3 確定拆分后的應用目標

一旦系統的宏觀應用拆分圖出來后,就要落實到某一具體的應用拆分上了。

首先要確定的就是某一應用拆分后的目標。拆分優化是沒有底的,可能越做越深,越做越沒結果,繼而又影響自己和團隊的士氣。比如說可以定這期的目標就是將db、應用分拆出去,數據模型的重新設計可以在第二期。

2.4 確定當前要拆分應用的架構狀態、代碼情況、依賴狀況,并推演可能的各種異常。

動手前的思考成本遠遠低于動手后遇到問題的解決成本。應用拆分最怕的是中途說“他*的,這塊不能動,原來當時這樣設計是有原因的,得想別的路子!”這時的壓力可想而知,整個節奏不符合預期后,很可能會接二連三遇到同樣的問題,這時不僅同事們士氣下降,自己也會喪失信心,繼而可能導致拆分失敗。

2.5給自己留個錦囊,“有備無患”

錦囊就四個字“有備無患”,可以貼在桌面或者手機上。在以后具體實施過程中,多思考下“方案是否有多種可以選擇?復雜問題能否拆解?實際操作時是否有預案?”,應用拆分在具體實踐過程中比拼得就是細致二字,多一份方案,多一份預案,不僅能提升成功概率,更給自己信心。

2.6 放松心情,緩解壓力

收拾下心情,開干!

3 實踐

3.1 db拆分實踐

DB拆分在整個應用拆分環節里最復雜,分為垂直拆分和水平拆分兩種場景,我們都遇到了。垂直拆分是將庫里的各個表拆分到合適的數據庫中。比如一個庫中既有消息表,又有人員組織結構表,那么將這兩個表拆分到獨立的數據庫中更合適。

水平拆分:以消息表為例好了,單表突破了千萬行記錄,查詢效率較低,這時候就要將其分庫分表。

圖片

3.1.1 主鍵id接入全局id發生器

DB拆分的第一件事情就是使用全局id發生器來生成各個表的主鍵id。為什么?

舉個例子,假如我們有一張表,兩個字段id和token,id是自增主鍵生成,要以token維度來分庫分表,這時繼續使用自增主鍵會出現問題。

圖片

正向遷移擴容中,通過自增的主鍵,到了新的分庫分表里一定是唯一的,但是,我們要考慮遷移失敗的場景,如下圖所示,新的表里假設已經插入了一條新的記錄,主鍵id也是2,這個時候假設開始回滾,需要將兩張表的數據合并成一張表(逆向回流),就會產生主鍵沖突!

圖片

因此在遷移之前,先要用全局唯一id發生器生成的id來替代主鍵自增id。這里有幾種全局唯一id生成方法可以選擇。

1)snowflake:https://github.com/twitter/snowflake;(非全局遞增)

2) mysql新建一張表用來專門生成全局唯一id(利用auto_increment功能)(全局遞增);

3)有人說只有一張表怎么保證高可用?那兩張表好了(在兩個不同db),一張表產生奇數,一張表產生偶數。或者是n張表,每張表的負責的步長區間不同(非全局遞增)

4)……

我們使用的是阿里巴巴內部的tddl-sequence(mysql+內存),保證全局唯一但非遞增,在使用上遇到一些坑:

1)對按主鍵id排序的sql要提前改造。因為id已經不保證遞增,可能會出現亂序場景,這時候可以改造為按gmt_create排序;

2)報主鍵沖突問題。這里往往是代碼改造不徹底或者改錯造成的,比如忘記給某一insert sql的id添加#{},導致繼續使用自增,從而造成沖突;

圖片

3.1.2 建新表&遷移數據&binlog同步

1) 新表字符集建議是utf8mb4,支持表情符。新表建好后索引不要漏掉,否則可能會導致慢sql!從經驗來看索引被漏掉時有發生,建議事先列計劃的時候將這些要點記下,后面逐條檢查;

2) 使用全量同步工具或者自己寫job來進行全量遷移;全量數據遷移務必要在業務低峰期時操作,并根據系統情況調整并發數;

3) 增量同步。全量遷移完成后可使用binlog增量同步工具來追數據,比如阿里內部使用精衛,其它企業可能有自己的增量系統,或者使用阿里開源的cannal/otter:

https://github.com/alibaba/canal?spm=5176.100239.blogcont11356.10.5eNr98

https://github.com/alibaba/otter/wiki/QuickStart?spm=5176.100239.blogcont11356.21.UYMQ17

增量同步起始獲取的binlog位點必須在全量遷移之前,否則會丟數據,比如我中午12點整開始全量同步,13點整全量遷移完畢,那么增量同步的binlog的位點一定要選在12點之前。

位點在前會不會導致重復記錄?不會!線上的MySQL binlog是row 模式,如一個delete語句刪除了100條記錄,binlog記錄的不是一條delete的邏輯sql,而是會有100條binlog記錄。insert語句插入一條記錄,如果主鍵沖突,插入不進去。

3.1.3 聯表查詢sql改造

現在主鍵已經接入全局唯一id,新的庫表、索引已經建立,且數據也在實時追平,現在可以開始切庫了嗎?no!

考慮以下非常簡單的聯表查詢sql,如果將B表拆分到另一個庫里的話,這個sql怎么辦?畢竟跨庫聯表查詢是不支持的!

圖片

因此,在切庫之前,需要將系統中上百個聯表查詢的sql改造完畢。

如何改造呢?

1) 業務避免

業務上松耦合后技術才能松耦合,繼而避免聯表sql。但短期內不現實,需要時間沉淀;

2) 全局表

每個應用的庫里都冗余一份表,缺點:等于沒有拆分,而且很多場景不現實,表結構變更麻煩;

3) 冗余字段

就像訂單表一樣,冗余商品id字段,但是我們需要冗余的字段太多,而且要考慮字段變更后數據更新問題;

4) 內存拼接

4.1)通過RPC調用來獲取另一張表的數據,然后再內存拼接。1)適合job類的sql,或改造后RPC查詢量較少的sql;2)不適合大數據量的實時查詢sql。假設10000個ID,分頁RPC查詢,每次查100個,需要5ms,共需要500ms,rt太高。

圖片

4.2)本地緩存另一張表的數據

適合數據變化不大、數據量查詢大、接口性能穩定性要求高的sql。

圖片

3.1.4切庫方案設計與實現(兩種方案)

以上步驟準備完成后,就開始進入真正的切庫環節,這里提供兩種方案,我們在不同的場景下都有使用。

a)DB停寫方案

圖片

優點:快,成本低;

缺點:

1)如果要回滾得聯系DBA執行線上停寫操作,風險高,因為有可能在業務高峰期回滾;

2)只有一處地方校驗,出問題的概率高,回滾的概率高

舉個例子,如果面對的是比較復雜的業務遷移,那么很可能發生如下情況導致回滾:

sql聯表查詢改造不完全;

sql聯表查詢改錯&性能問題;

索引漏加導致性能問題;

字符集問題

此外,binlog逆向回流很可能發生字符集問題(utf8mb4到gbk),導致回流失敗。這些binlog同步工具為了保證強最終一致性,一旦某條記錄回流失敗,就卡住不同步,繼而導致新老表的數據不同步,繼而無法回滾!

b)雙寫方案

圖片

第2步“打開雙寫開關,先寫老表A再寫新表B”,這時候確保寫B表時try catch住,異常要用很明確的標識打出來,方便排查問題。第2步雙寫持續短暫時間后(比如半分鐘后),可以關閉binlog同步任務。

優點:

1)將復雜任務分解為一系列可測小任務,步步為贏;

2)線上不停服,回滾容易;

3)字符集問題影響小

缺點:

1)流程步驟多,周期長;

2)雙寫造成RT增加

3.1.5 開關要寫好

不管什么切庫方案,開關少不了,這里開關的初始值一定要設置為null!

如果隨便設置一個默認值,比如”讀老表A“,假設我們已經進行到讀新表B的環節了。這時重啟了應用,在應用啟動的一瞬間,最新的“讀新表B”的開關推送等可能沒有推送過來,這個時候就可能使用默認值,繼而造成臟數據!

3.2 拆分后一致性怎么保證?

以前很多表都在一個數據庫內,使用事務非常方便,現在拆分出去了,如何保證一致性?

1)分布式事務

性能較差,幾乎不考慮。

2)消息機制補償(如何用消息系統避免分布式事務?)

3)定時任務補償

用得較多,實現最終一致,分為加數據補償,刪數據補償兩種。

3.3 應用拆分后穩定性怎么保證?

一句話:懷疑第三方,防備使用方,做好自己!

圖片

1)懷疑第三方

a)防御式編程,制定好各種降級策略;

  • 比如緩存主備、推拉結合、本地緩存……

b)遵循快速失敗原則,一定要設置超時時間,并異常捕獲;

c)強依賴轉弱依賴,旁支邏輯異步化

  • 我們對某一個核心應用的旁支邏輯異步化后,響應時間幾乎縮短了1/3,且后面中間件、其它應用等都出現過抖動情況,而核心鏈路一切正常;

d)適當保護第三方,慎重選擇重試機制

2)防備使用方

a)設計一個好的接口,避免誤用

  • 遵循接口最少暴露原則;很多同學搭建完新應用后會隨手暴露很多接口,而這些接口由于沒人使用而缺乏維護,很容易給以后挖坑。聽到過不只一次對話,”你怎么用我這個接口啊,當時隨便寫的,性能很差的“;
  • 不要讓使用方做接口可以做的事情;比如你只暴露一個getMsgById接口,別人如果想批量調用的話,可能就直接for循環rpc調用,如果提供getMsgListByIdList接口就不會出現這種情況了。
  • 避免長時間執行的接口;特別是一些老系統,一個接口背后對應的可能是for循環select DB的場景。

b)容量限制

  • 按應用優先級進行流控;不僅有總流量限流,還要區分應用,比如核心應用的配額肯定比非核心應用配額高;
  • 業務容量控制。有些時候不僅僅是系統層面的限制,業務層面也需要限制。舉個例子,對saas化的一些系統來說,”你這個租戶最多1w人使用“。

3)做好自己

a)單一職責

b)及時清理歷史坑

  • 例:例如我們改造時候發現一年前留下的坑,去掉后整個集群cpu使用率下降1/3

c) 運維SOP化

  • 說實話,線上出現問題,如果沒有預案,再怎么處理都會超時。曾經遇到過一次DB故障導致臟數據問題,最終只能硬著頭皮寫代碼來清理臟數據,但是時間很長,只能眼睜睜看著故障不斷升級。經歷過這個事情后,我們馬上設想出現臟數據的各種場景,然后上線了三個清理臟數據的job,以防其它不可預知的產生臟數據的故障場景,以后只要遇到出現臟數據的故障,直接觸發這三個清理job,先恢復再排查。

d)資源使用可預測

應用的cpu、內存、網絡、磁盤心中有數

正則匹配耗cpu

耗性能的job優化、降級、下線(循環調用rpc或sql)

慢sql優化、降級、限流

tair/redis、db調用量要可預測

例:tair、db

舉個例子: 某一個接口類似于秒殺功能,qps非常高(如下圖所示),請求先到tair,如果找不到會回源到DB,當請求突增時候,甚至會觸發tair/redis這層緩存的限流,此外由于緩存在一開始是沒數據的,請求會穿透到db,從而擊垮db。

圖片

這里的核心問題就是tair/redis這層資源的使用不可預測,因為依賴于接口的qps,怎么讓請求變得可預測呢?

如果我們再增加一層本地緩存(guava,比如超時時間設置為1秒),保證單機對一個key只有一個請求回源,那樣對tair/redis這層資源的使用就可以預知了。假設有500臺client,對一個key來說,一瞬間最多500個請求穿透到Tair/redis,以此類推到db。

圖片

再舉個例子:

比如client有500臺,對某key一瞬間最多有500個請求穿透到db,如果key有10個,那么請求最多可能有5000個到db,恰好這些sql的RT有些高,怎么保護DB的資源?

可以通過一個定時程序不斷將數據從db刷到緩存。這里就將不可控的5000個qps的db訪問變為可控的個位數qps的db訪問。

圖片

4  總結

1)做好準備面對壓力!

2)復雜問題要拆解為多步驟,每一步可測試可回滾!

這是應用拆分過程中的最有價值的實踐經驗!

3)墨菲定律:你所擔心的事情一定會發生,而且會很快發生,所以準備好你的SOP(標準化解決方案)!

某個周五和組里同事吃飯時討論到某一個功能存在風險,約定在下周解決,結果周一剛上班該功能就出現故障了。以前講小概率不可能發生,但是概率再小也是有值的,比如p=0.00001%,互聯網環境下,請求量足夠大,小概率事件就真發生了。

4)借假修真

這個詞看上去有點玄乎,顧名思義,就是在借者一些事情,來提升另外一種能力,前者稱為假,后者稱為真。在任何一個單位,對核心系統進行大規模拆分改造的機會很少,因此一旦你承擔起責任,就毫不猶豫地全力以赴吧!不要被過程的曲折所嚇倒,心智的磨礪,才是本真。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2020-11-27 12:35:58

IT上線系統

2021-08-10 09:02:37

NumPy視圖內存

2025-10-29 16:29:27

OpenAIGPT-2模型

2025-11-10 09:15:43

2015-07-29 10:32:13

Windows 10下載

2022-09-15 09:49:17

網絡安全擴展物聯網漏洞

2021-03-04 13:14:54

文件系統存儲

2020-03-05 18:40:06

iPhone安卓Android 10

2013-09-29 09:26:39

寬帶中國

2021-03-11 12:27:36

java 變量數量

2012-04-25 09:30:11

工信部寬帶

2025-11-07 00:00:00

2018-06-17 14:23:23

Windows系統更新

2017-09-08 09:01:54

2014-05-09 15:29:21

2025-05-21 09:41:23

2021-04-26 08:16:18

CPU 語言編寫

2023-06-09 07:04:05

緩存AMD主機板

2015-06-11 09:12:06

網絡趨勢802.11ac

2020-11-23 06:50:31

微信原視頻移動應用
點贊
收藏

51CTO技術棧公眾號

日本阿v视频在线观看| 久久久噜噜噜久噜久久| 免费看的黄色大片| а天堂8中文最新版在线官网| 男人的天堂亚洲在线| 中文字幕亚洲综合| 欧美日韩一区二区区别是什么| 日韩伦理福利| **欧美大码日韩| 国内精品久久国产| 在线播放成人av| 99综合在线| 久久久精品一区二区| 亚洲最大成人网站| 亚洲午夜免费| 欧美色中文字幕| 国自产拍偷拍精品啪啪一区二区| 在线观看免费高清完整| 99久精品国产| 成人激情免费在线| 中文字幕在线日本| 亚洲国产日本| 久久久精品网站| 美女100%露胸无遮挡| jizz性欧美23| 欧美在线短视频| 精品人妻一区二区三区四区在线 | 亚洲免费福利视频| 在线观看免费看片| 六九午夜精品视频| 日韩欧美中文第一页| 无码熟妇人妻av在线电影| 欧美被日视频| 国产精品麻豆视频| 天天综合狠狠精品| 免费在线观看一级毛片| av资源站一区| 2019国产精品视频| 国产又黄又粗又猛又爽| 免费在线观看日韩欧美| 国产99在线|中文| 久久久精品福利| 亚洲看片免费| 羞羞色国产精品| 日韩精品一区二区av| 欧美日本国产| 欧美高清无遮挡| 免费视频一二三区| 欧美三级午夜理伦三级中文幕| 精品国产区一区二区三区在线观看| 手机看片福利视频| jlzzjlzz亚洲女人| 一区二区三区在线播放欧美| 手机毛片在线观看| 精品国产美女| 日韩亚洲综合在线| 亚洲xxxx3d动漫| 欧美黄色大片网站| 欧美激情手机在线视频| 国产在线视频卡一卡二| 亚洲美女少妇无套啪啪呻吟| 亚洲3p在线观看| 成人在线免费看视频| 久久av一区| 国产精品久久久久久久久借妻 | 欧美一区午夜视频在线观看| 爱豆国产剧免费观看大全剧苏畅| 亚洲欧洲一二区| 欧美成人一级视频| 私密视频在线观看| 久久91精品| 中文字幕一区二区精品| 成人免费毛片xxx| 欧美日本不卡| 欧美在线视频在线播放完整版免费观看 | 性刺激的欧美三级视频| 青青在线精品| 欧美xxxxxxxx| 日韩精品电影一区二区| 水蜜桃精品av一区二区| 欧美xxxx14xxxxx性爽| 久青草免费视频| 亚洲欧美日本日韩| 国产女精品视频网站免费| a网站在线观看| 99热在这里有精品免费| 四虎一区二区| 性欧美video高清bbw| 精品久久久一区二区| 波多野结衣天堂| 深夜福利一区| 亚洲情综合五月天| 九九热这里有精品视频| 久久中文字幕一区二区三区| 成人黄色片在线| 深夜影院在线观看| 一区在线观看视频| 国产二区视频在线播放| 精品视频在线一区| 亚洲天堂色网站| 欧美精品色哟哟| 日韩成人一级片| 粉嫩av四季av绯色av第一区| 国产高清一级毛片在线不卡| 亚洲一区二区三区自拍| 亚洲欧美激情网| 理论片一区二区在线| 日韩最新中文字幕电影免费看| 国产精品成人网站| 老司机精品视频导航| 精品国产一区二区三区四区精华| 91高清在线| 色诱视频网站一区| 久久国产免费视频| 天天超碰亚洲| 国产第一区电影| 人妻一区二区三区| 自拍偷在线精品自拍偷无码专区| 免费在线激情视频| av成人男女| 久久天天躁日日躁| 中文字幕视频一区二区| 91毛片在线观看| 激情小视频网站| 嫩呦国产一区二区三区av| 一区二区三区四区视频| 无码人妻久久一区二区三区不卡| 国产98色在线|日韩| 黄色高清视频网站| 久久91视频| 国产亚洲精品综合一区91| 青青草成人av| 成人丝袜18视频在线观看| 在线观看18视频网站| 精品176极品一区| 中文字幕久久亚洲| 亚洲图片视频小说| 欧美激情一区二区三区在线| 国产第一页视频| 亚洲免费专区| 热久久免费国产视频| 亚洲欧美一区二区三| 午夜精品视频一区| 国产一卡二卡三卡四卡| 国产精品黄色| 成人片在线免费看| 欧美videosex性欧美黑吊| 日韩欧美在线不卡| 国产高清在线免费观看| 国产成人免费在线观看| 污污污污污污www网站免费| 精品一区二区三区亚洲| 欧美老女人性视频| 成人午夜视频一区二区播放| 夜夜爽夜夜爽精品视频| 中国xxxx性xxxx产国| 日韩一级精品| 免费日韩电影在线观看| 欧美日韩不卡| 综合136福利视频在线| 国产精品视频第一页| 亚洲日本在线视频观看| 日韩精品――色哟哟| 伊人精品视频| 久久影视中文粉嫩av| 日本一道高清亚洲日美韩| 一二美女精品欧洲| 国产女无套免费视频| 亚洲国产日韩一级| 18禁裸乳无遮挡啪啪无码免费| 久久美女性网| 伊人久久大香线蕉精品| 视频一区日韩| 57pao国产成人免费| 国产乱子伦三级在线播放 | 精品毛片一区二区三区| 性久久久久久久久久久久| 国产呦小j女精品视频| 日本午夜一本久久久综合| 裸体裸乳免费看| 伦理一区二区三区| 国产精品精品一区二区三区午夜版 | 久久天堂av综合合色| 人妻精品一区一区三区蜜桃91| 色欧美片视频在线观看在线视频| 美国精品一区二区| 夫妻av一区二区| 久久久久久久激情| 外国成人免费视频| 精选一区二区三区四区五区| 久久久加勒比| 97在线观看视频国产| 日韩理伦片在线| 亚洲国产精彩中文乱码av| 日本妇乱大交xxxxx| 亚洲国产日日夜夜| 99热99这里只有精品| 99久久精品免费看| 欧洲在线免费视频| 老司机亚洲精品| 欧美国产视频一区| 北条麻妃国产九九九精品小说| 99久久精品无码一区二区毛片| 男人皇宫亚洲男人2020| 欧美激情按摩在线| 日韩在线免费电影| 精品亚洲男同gayvideo网站| 国产av无码专区亚洲a∨毛片| 一本在线高清不卡dvd| 免费视频一二三区| 国产精品电影一区二区| 精品无码在线视频| 国产成人丝袜美腿| 一区二区在线免费看| 天堂午夜影视日韩欧美一区二区| 欧美视频在线第一页| 99久久久久| 日韩欧美精品久久| 亚洲动漫在线观看| 岛国视频一区| 国产精品视频一区视频二区 | 97精品人妻一区二区三区在线 | 国产av一区二区三区| 欧美三日本三级三级在线播放| 色婷婷av国产精品| 亚洲国产精品视频| 澳门黄色一级片| 自拍偷拍国产精品| 99久久久免费精品| 国产精品久久久久久久久搜平片| 西西444www无码大胆| 91丨porny丨户外露出| 欧美激情一区二区三区p站| 国产一区不卡精品| 一级黄色片在线免费观看| 蜜乳av一区二区三区| 亚洲精品视频导航| 蜜臀av一区二区在线免费观看| av网址在线观看免费| 性欧美暴力猛交另类hd| 日韩少妇内射免费播放| 国产欧美一区二区色老头| 国产免费黄色小视频| 99精品视频免费观看| 99热自拍偷拍| 小嫩嫩精品导航| 免费在线观看毛片网站| 久久最新视频| 色婷婷成人在线| 久久er99精品| 男女视频在线观看网站| 国产久卡久卡久卡久卡视频精品| 亚洲天堂一区二区在线观看| 国产精品一区二区无线| 欧美一区二区三区影院| 成人免费黄色在线| 一本色道综合久久欧美日韩精品| 91蜜桃婷婷狠狠久久综合9色| 日本黄色片在线播放| 国产亚洲制服色| 日本污视频网站| 亚洲免费在线看| 国产亚洲色婷婷久久99精品| 午夜精品久久久久久不卡8050| 欧美精品二区三区| 91福利资源站| 国产巨乳在线观看| 精品免费视频一区二区| 手机看片一区二区| 国产午夜精品视频免费不卡69堂| 69av在线| 欧美精品电影在线| 超碰超碰人人人人精品| 国产精品一区二区女厕厕| 国产不卡精品| 精品一区二区三区免费毛片| 欧美综合一区| 日韩一级免费看| 美女久久一区| 天天综合成人网| 99精品欧美一区二区三区综合在线| 魔女鞋交玉足榨精调教| 18成人在线观看| 国产在线综合网| 欧美中文一区二区三区| 国产成人精品白浆久久69| 国产婷婷97碰碰久久人人蜜臀 | 中文字幕在线一区二区三区| 免费在线观看国产精品| 91国内精品野花午夜精品| 精品久久久久中文慕人妻| 国产视频精品自拍| 黄色网址在线免费播放| 日本午夜人人精品| 国产日本亚洲| 日韩福利视频| 亚洲黄色天堂| 爱豆国产剧免费观看大全剧苏畅| 99热精品国产| 欧美黄色免费看| 欧美日韩精品免费观看视频| 少妇喷水在线观看| 久久精品电影一区二区| 天天免费亚洲黑人免费| 不卡视频一区二区| 欧美电影三区| 日日碰狠狠躁久久躁婷婷| 国产91富婆露脸刺激对白| 美国黑人一级大黄| 精品久久久久久久久久国产| 国产精品无码天天爽视频| 亚洲午夜久久久影院| av中文字幕电影在线看| 91久久在线观看| 超碰成人久久| 欧美日韩一区二区在线免费观看| 国产成人av电影| 久久久久久久麻豆| 欧美在线综合视频| 免费在线国产| 欧洲午夜精品久久久| 粉嫩一区二区三区四区公司1| 在线免费观看一区二区三区| 爽爽淫人综合网网站| 国产麻豆xxxvideo实拍| 亚洲中国最大av网站| 国产美女无遮挡永久免费| 一区二区欧美激情| 欧美一级大黄| 欧美激情导航| 国产精品毛片| 黄色污在线观看| 午夜久久久影院| 色婷婷激情五月| 久久久女女女女999久久| 午夜日韩影院| 久久这里只有精品8| 福利一区二区在线| 亚洲国产精品成人无久久精品| 欧美刺激午夜性久久久久久久| 超碰在线caoporn| 91情侣在线视频| 综合一区av| 高清中文字幕mv的电影| 亚洲午夜免费视频| 婷婷在线免费观看| 69av在线视频| 国产精品片aa在线观看| 精品久久久久av| 国产精品久久一卡二卡| 91激情在线观看| 久久久成人的性感天堂| 亚洲91网站| 国产v片免费观看| 91麻豆精品在线观看| 亚洲GV成人无码久久精品| 亚洲人成网站色ww在线| 日本综合视频| 免费看av软件| 成人夜色视频网站在线观看| 日本三级2019| 尤物精品国产第一福利三区| 成人在线高清| 在线观看污视频| 成人动漫视频在线| 国产成人精品777777| 最近2019年中文视频免费在线观看| 2020国产精品小视频| 免费看欧美一级片| 久久综合色天天久久综合图片| 国产免费a视频| 久久九九亚洲综合| 欧美成人午夜77777| 欧美一级裸体视频| 亚洲男人电影天堂| 天天摸天天干天天操| 国产免费一区二区三区香蕉精| 欧美搞黄网站| av女人的天堂| 91精品国产91综合久久蜜臀| 爱啪视频在线观看视频免费| 欧美亚洲丝袜| 狠狠色丁香久久婷婷综合_中| 久久精品免费在线| 尤物tv国产一区| 国产精品一区二区三区美女| 免费看a级黄色片| 亚洲一区二区三区中文字幕在线| 加勒比一区二区三区在线| 亚洲伊人久久大香线蕉av| 国产精品普通话对白| 久艹在线观看视频| 国产丝袜精品视频| 日韩免费一级| 天天爽人人爽夜夜爽| 亚洲观看高清完整版在线观看| а天堂8中文最新版在线官网| 国产精品一 二 三| 狠狠久久亚洲欧美| 日韩在线视频不卡|