欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

IM系統(tǒng)用戶管理子服務(wù)架構(gòu)設(shè)計(jì)與踩坑實(shí)踐:從表結(jié)構(gòu)到緩存策略

IM系統(tǒng)用戶管理子服務(wù)架構(gòu)設(shè)計(jì)與踩坑實(shí)踐:從表結(jié)構(gòu)到緩存策略 做IM系統(tǒng)用戶管理子服務(wù)往往是看起來最簡單、坑卻最多的那一塊。很多人一開始會(huì)覺得無非就是注冊(cè)、登錄、改個(gè)昵稱、拉個(gè)好友列表有什么好寫的但真正上手做才發(fā)現(xiàn)一個(gè)IM系統(tǒng)里最基礎(chǔ)的用戶服務(wù)牽扯到數(shù)據(jù)一致性、在線狀態(tài)、增量同步、token安全、熱點(diǎn)緩存一堆問題任何一個(gè)環(huán)節(jié)沒設(shè)計(jì)好后面消息推送和會(huì)話模塊全都跟著遭殃。這篇文章把我在實(shí)際開發(fā)用戶管理子服務(wù)過程中涉及的架構(gòu)設(shè)計(jì)、表結(jié)構(gòu)、緩存策略、接口實(shí)現(xiàn)和踩坑實(shí)錄都整理出來適合正在做IM項(xiàng)目、或者準(zhǔn)備把用戶模塊獨(dú)立成微服務(wù)的朋友參考。1. 項(xiàng)目背景與總體設(shè)計(jì)思路1.1 IM系統(tǒng)里為什么用戶服務(wù)必須獨(dú)立拆出來很多單體項(xiàng)目里用戶模塊就是一個(gè)UserController加幾張表但在IM項(xiàng)目里用戶服務(wù)幾乎是整個(gè)系統(tǒng)的心臟。你想想看每一次消息發(fā)送都要查用戶關(guān)系、每一個(gè)會(huì)話列表都要拉取用戶資料、每一次好友操作都要變更關(guān)系鏈數(shù)據(jù)如果這些邏輯全部跟消息模塊耦合在一起后期幾乎無法維護(hù)。我參與的這個(gè)IM項(xiàng)目團(tuán)隊(duì)在一開始就確定了微服務(wù)拆分方向。用戶管理子服務(wù)作為最底層的基礎(chǔ)服務(wù)獨(dú)立負(fù)責(zé)賬號(hào)體系、用戶資料、好友關(guān)系、在線狀態(tài)和通信錄同步其他所有服務(wù)都在它之上工作。這樣的好處非常明顯首先是解耦消息服務(wù)只管消息推送服務(wù)只管推送用戶服務(wù)只管用戶出了問題各查各的日志其次是彈性伸縮比如做活動(dòng)拉新的時(shí)候注冊(cè)量暴漲只需要單獨(dú)擴(kuò)容用戶服務(wù)不必把整個(gè)系統(tǒng)都帶起來再有就是故障隔離用戶服務(wù)掛了已經(jīng)在線的人還能繼續(xù)收發(fā)消息不會(huì)導(dǎo)致全盤崩潰。不過獨(dú)立拆服務(wù)也帶來一個(gè)必須正視的問題跨服務(wù)的用戶數(shù)據(jù)訪問怎么辦。不可能每個(gè)服務(wù)都直連用戶數(shù)據(jù)庫那樣連接數(shù)先撐不住。所以實(shí)際架構(gòu)里消息服務(wù)、會(huì)話服務(wù)都要通過用戶服務(wù)提供的接口獲取信息同時(shí)用Redis緩存扛住熱點(diǎn)流量。這也是這次項(xiàng)目架構(gòu)設(shè)計(jì)里反復(fù)權(quán)衡的一個(gè)點(diǎn)。1.2 用戶管理子服務(wù)的職責(zé)邊界先把這個(gè)服務(wù)到底管什么理清楚。我梳理下來用戶管理子服務(wù)大概覆蓋六個(gè)核心域賬號(hào)注冊(cè)與登錄、用戶資料管理昵稱、頭像、個(gè)性簽名、好友關(guān)系鏈管理添加、刪除、拉黑、在線狀態(tài)管理、用戶設(shè)置管理消息免打擾、加好友驗(yàn)證方式、增量同步多端登錄時(shí)的資料同步。邊界之外的東西堅(jiān)決不往里放。比如消息推送那是推送服務(wù)的事文件存儲(chǔ)那是對(duì)象存儲(chǔ)服務(wù)的事敏感詞過濾和審核那是內(nèi)容安全服務(wù)的事。這個(gè)邊界一開始就要在團(tuán)隊(duì)內(nèi)部達(dá)成共識(shí)不然每個(gè)人都在用戶服務(wù)里順手加接口最后變成一個(gè)“大雜燴”。尤其是頭像上傳這個(gè)功能最容易被放在用戶服務(wù)里。我的建議是頭像上傳盡量走獨(dú)立的文件服務(wù)用戶服務(wù)只保存一個(gè)頭像URL和更新版本號(hào)。道理很簡單文件上傳涉及大流量和存儲(chǔ)擴(kuò)容如果圖片流量把用戶服務(wù)的網(wǎng)絡(luò)帶寬占滿正常的查詢接口就直接變慢了。1.3 整體技術(shù)架構(gòu)與數(shù)據(jù)流向用戶管理子服務(wù)的技術(shù)棧選型比較常規(guī)但組合起來效果很穩(wěn)定。后端用的是Java棧Spring Boot對(duì)外提供接口內(nèi)部通過OpenFeign給其他微服務(wù)調(diào)用數(shù)據(jù)庫用MySQL存主數(shù)據(jù)Redis用來扛緩存和在線狀態(tài)消息中間件用的RocketMQ來處理注冊(cè)成功之后的異步事件比如初始化默認(rèn)設(shè)置、創(chuàng)建通信錄目錄、發(fā)送歡迎消息等。數(shù)據(jù)流向分兩條線。一條是寫鏈路客戶端請(qǐng)求進(jìn)來先經(jīng)過網(wǎng)關(guān)鑒權(quán)然后到用戶服務(wù)接口層落庫MySQL同時(shí)同步更新Redis緩存再發(fā)MQ事件給其他下游服務(wù)。另一條是讀鏈路優(yōu)先查Redis緩存沒命中的時(shí)候查MySQL然后回填緩存。這套讀寫分離加上緩存兜底的模式在百萬用戶級(jí)別撐住日常流量問題不大。有一個(gè)細(xì)節(jié)值得說用戶服務(wù)作為基礎(chǔ)服務(wù)很多時(shí)候不是面對(duì)最終用戶而是面對(duì)其他微服務(wù)。比如消息服務(wù)要判斷兩個(gè)用戶是不是好友關(guān)系、會(huì)話服務(wù)要拉取群成員的昵稱頭像這些內(nèi)部調(diào)用接口在設(shè)計(jì)時(shí)需要更高可用性不能因?yàn)槟骋凰查g的流量波峰就雪崩所以接口層做了統(tǒng)一熔斷和降級(jí)處理下游服務(wù)依賴用戶服務(wù)的時(shí)候也要做好容錯(cuò)。2. 技術(shù)選型與數(shù)據(jù)模型設(shè)計(jì)2.1 存儲(chǔ)選型MySQL加Redis加對(duì)象存儲(chǔ)的搭配用戶數(shù)據(jù)的存儲(chǔ)架構(gòu)我最終定下來的是MySQL做持久化主存儲(chǔ)Redis做緩存和在線狀態(tài)存儲(chǔ)頭像和文件類的二進(jìn)制數(shù)據(jù)放在對(duì)象存儲(chǔ)里MySQL里只存元信息。把這個(gè)組合拆開說。MySQL的選擇幾乎沒什么懸念成熟穩(wěn)定事務(wù)支持好適合存儲(chǔ)用戶基礎(chǔ)資料和好友關(guān)系這類強(qiáng)一致性要求高的數(shù)據(jù)。表引擎統(tǒng)一用InnoDB支持行鎖和事務(wù)好友關(guān)系變更這種高頻操作不會(huì)有鎖表問題。Redis則是整個(gè)服務(wù)性能的主力注冊(cè)用戶資料、熱點(diǎn)用戶信息、好友關(guān)系列表、用戶在線狀態(tài)全都在Redis里有對(duì)應(yīng)緩存層。對(duì)象存儲(chǔ)解決的是頭像這類大文件的存儲(chǔ)問題下載走CDN數(shù)據(jù)庫不會(huì)因?yàn)殪o態(tài)資源被打爆。很多人會(huì)問為什么不用MongoDB或者PostgreSQL代替MySQL說實(shí)話IM系統(tǒng)的用戶數(shù)據(jù)量沒有大到需要引入太復(fù)雜的存儲(chǔ)方案MySQL在互聯(lián)網(wǎng)行業(yè)的成熟運(yùn)維經(jīng)驗(yàn)最豐富出問題能找到的解決方案也最多。技術(shù)上夠用就好不必為了新而新。2.2 核心表結(jié)構(gòu)設(shè)計(jì)用戶基礎(chǔ)表和好友關(guān)系表是用戶管理子服務(wù)最重要的兩張表設(shè)計(jì)上花了很多功夫。用戶基礎(chǔ)表第一版設(shè)計(jì)的時(shí)候字段盡量精簡核心就用戶ID、昵稱、頭像URL、性別、個(gè)性簽名、手機(jī)號(hào)或郵箱作為登錄憑證。有一個(gè)很容易踩的坑是用戶ID到底用自增ID還是雪花ID。IM系統(tǒng)里用戶ID會(huì)出現(xiàn)在消息內(nèi)容、分享鏈接、好友添加等對(duì)外場(chǎng)景用自增ID容易被遍歷抓取而且MySQL自增主鍵在分庫分表場(chǎng)景下會(huì)沖突。所以最終用戶ID用了雪花算法生成的長整型對(duì)外展示和內(nèi)部存儲(chǔ)都用同一個(gè)ID避免了兩套ID映射的麻煩。登錄憑證字段的設(shè)計(jì)也值得注意。手機(jī)號(hào)和郵箱都可以作為登錄憑證如果分開建兩個(gè)字段并都允許為空會(huì)出現(xiàn)一個(gè)用戶既有手機(jī)號(hào)又有郵箱時(shí)數(shù)據(jù)冗余的情況。實(shí)際實(shí)現(xiàn)時(shí)建了一張登錄憑證表用戶ID、憑證類型、憑證值三個(gè)字段一個(gè)用戶多條記錄靈活擴(kuò)展且查詢效率不差。好友關(guān)系表的細(xì)節(jié)更多。首先是雙向好友關(guān)系處理A加B為好友成功后關(guān)系鏈里同時(shí)存在A對(duì)B、B對(duì)A兩條記錄每條記錄都有一個(gè)狀態(tài)字段區(qū)分正常、已刪除、拉黑中。其次是好友備注名A給B備注的名字和B給A備注的名字可以不一樣這兩個(gè)字段必須分別保存不能只存一條關(guān)系一個(gè)備注名。最后是索引設(shè)計(jì)關(guān)系表上建了用戶ID加狀態(tài)的聯(lián)合索引查詢好友列表的語句走這個(gè)索引實(shí)測(cè)全表百萬級(jí)數(shù)據(jù)量下響應(yīng)時(shí)間穩(wěn)定在幾十毫秒。用戶設(shè)置表同樣是獨(dú)立的一張表消息免打擾開關(guān)、好友驗(yàn)證方式允許任何人添加、需要驗(yàn)證、不允許添加、被拉黑之后是否可見在線狀態(tài)等都放這張表里和用戶基礎(chǔ)表分開的好處是不會(huì)因?yàn)樵O(shè)置項(xiàng)頻繁更新導(dǎo)致基礎(chǔ)表的緩存頻繁失效。2.3 緩存設(shè)計(jì)Key規(guī)范與數(shù)據(jù)結(jié)構(gòu)選擇緩存設(shè)計(jì)直接決定用戶服務(wù)的查詢性能這塊的規(guī)范在項(xiàng)目里是強(qiáng)制執(zhí)行的。Redis緩存的Key命名統(tǒng)一采用“服務(wù)名:業(yè)務(wù)域:用戶ID:內(nèi)容類型”的格式比如用戶資料緩存是user:profile:10001好友關(guān)系緩存是user:friends:10001:list在線狀態(tài)是user:status:10001。統(tǒng)一規(guī)范看著是小事但等后面緩存幾十個(gè)業(yè)務(wù)域的時(shí)候排查問題和避免Key沖突會(huì)方便太多。數(shù)據(jù)結(jié)構(gòu)的選擇上用戶資料緩存用Hash比用JSON字符串更合適。Hash類型可以單獨(dú)修改某個(gè)字段而不需要整體重新序列化比如用戶只是改了個(gè)昵稱直接hset一個(gè)字段就夠了其他字段的緩存不受影響。我之前用JSON字符串存整個(gè)用戶資料用戶修改昵稱之后要對(duì)整個(gè)對(duì)象做讀寫和緩存更新在高頻更新場(chǎng)景下浪費(fèi)了不少不必要的序列化開銷。好友關(guān)系列表則用ZSet存儲(chǔ)把好友ID作為member成為好友的時(shí)間戳作為score這樣拉取好友列表天然按時(shí)間排序也能方便地做分頁。緩存過期時(shí)間也做過一個(gè)統(tǒng)一約定。用戶基礎(chǔ)資料這種變更頻率不高但又需要高可用的數(shù)據(jù)設(shè)置為24小時(shí)過期并主動(dòng)更新雙寫在線狀態(tài)這種強(qiáng)時(shí)效數(shù)據(jù)不設(shè)置過期時(shí)間完全依賴狀態(tài)上報(bào)來覆蓋。項(xiàng)目里的原則是緩存必須有過期兜底防止極端情況下緩存和數(shù)據(jù)庫不一致時(shí)永遠(yuǎn)無法自愈。3. 核心接口與實(shí)操實(shí)現(xiàn)3.1 注冊(cè)流程服務(wù)端怎么防重復(fù)、防漏洞注冊(cè)接口是整個(gè)用戶服務(wù)流量最大的接口之一也是最容易被人搞的接口。我在實(shí)現(xiàn)注冊(cè)流程時(shí)把重點(diǎn)放在三個(gè)環(huán)節(jié)合法性校驗(yàn)、防重復(fù)提交、數(shù)據(jù)一致性。客戶端傳入手機(jī)號(hào)和驗(yàn)證碼之后先做格式校驗(yàn)然后用驗(yàn)證碼確認(rèn)手機(jī)號(hào)是真實(shí)在用的。服務(wù)端再根據(jù)手機(jī)號(hào)查登錄憑證表判斷這個(gè)手機(jī)號(hào)是否已經(jīng)注冊(cè)過這里要用唯一索引兜底因?yàn)槟呐麓a邏輯里判斷了不存在高并發(fā)下兩個(gè)人同時(shí)注冊(cè)同一個(gè)手機(jī)號(hào)還是可能插入兩條記錄唯一索引能保證數(shù)據(jù)庫層面不會(huì)出現(xiàn)臟數(shù)據(jù)。注冊(cè)時(shí)數(shù)據(jù)寫入用了事務(wù)同時(shí)更新用戶基礎(chǔ)表、登錄憑證表和用戶設(shè)置表任何一個(gè)操作失敗都會(huì)回滾。注冊(cè)成功之后把新用戶ID和手機(jī)號(hào)的映射寫入Redis方便后續(xù)登錄時(shí)快速反查同時(shí)發(fā)送一個(gè)注冊(cè)成功的MQ事件下游服務(wù)收到事件后初始化用戶通信錄目錄、發(fā)送好友推薦等。這里典型的坑是如果MQ發(fā)送失敗會(huì)導(dǎo)致下游服務(wù)收不到通知所以發(fā)送事件要失敗重試并記錄日志重試幾次仍然失敗就要走定時(shí)任務(wù)對(duì)賬補(bǔ)償。3.2 登錄與Token方案雙Token為什么是標(biāo)配登錄流程在IM項(xiàng)目里和普通網(wǎng)站登錄不一樣不只是為了拿到一個(gè)身份憑證更重要的是保證多端登錄互不影響、消息推送能定位到具體設(shè)備。每個(gè)設(shè)備獨(dú)立登錄所以登錄成功后生成的是設(shè)備級(jí)的會(huì)話憑證而不是用戶級(jí)。Token方案最終用了雙Token設(shè)計(jì)短期TokenAccess Token有效期兩小時(shí)用于實(shí)際接口調(diào)用的身份認(rèn)證長期TokenRefresh Token有效期三十天用于短期Token過期后無感刷新。客戶端拿Refresh Token換新的Access Token這樣即使用戶長期沒打開App只要三十天內(nèi)打開過一次就能自動(dòng)續(xù)期體驗(yàn)上不會(huì)出現(xiàn)頻繁要求重新登錄的情況。Access Token采用了JWT格式簽名密鑰單獨(dú)配置并且定期輪換JWT里只放用戶ID、設(shè)備ID、會(huì)話類型幾個(gè)必要字段不放任何敏感信息。Refresh Token則不是JWT而是服務(wù)端生成的隨機(jī)串存Redis設(shè)置有效期并關(guān)聯(lián)設(shè)備ID每次刷新使用后輪換一次舊Token作廢發(fā)新Token。之所以不對(duì)稱處理是因?yàn)镴WT無法服務(wù)端主動(dòng)作廢而Refresh Token需要支持踢人下線、強(qiáng)制注銷等操作必須能被服務(wù)端控制。登出操作要做的就是刪除Redis里的Refresh Token、清理設(shè)備在線狀態(tài)、發(fā)送下線通知給消息服務(wù)。這里有一個(gè)很容易被忽視的細(xì)節(jié)用戶賬號(hào)在別的設(shè)備上登錄或者被管理員封禁時(shí)需要做到強(qiáng)制下線那就得把所有設(shè)備對(duì)應(yīng)的Refresh Token全部刪除同時(shí)維護(hù)一個(gè)用戶維度的Token版本號(hào)存在Redis里Access Token校驗(yàn)時(shí)會(huì)檢查這個(gè)版本號(hào)一旦版本號(hào)變了舊Access Token就算沒過期也直接失效。3.3 增量同步與在線狀態(tài)管理多端登錄場(chǎng)景下一個(gè)手機(jī)端的用戶改了昵稱另一個(gè)平板端要盡快看到更新。如果每次改完立刻通知所有在線端會(huì)制造大量推送如果完全依賴客戶端主動(dòng)拉取數(shù)據(jù)又不及時(shí)。最終的方案是版本號(hào)加增量同步機(jī)制。用戶基礎(chǔ)表加一個(gè)數(shù)據(jù)版本號(hào)字段任何資料變更都讓版本號(hào)加一??蛻舳伺空?qǐng)求增量同步接口時(shí)帶上本地版本號(hào)服務(wù)端拉取更高級(jí)別的數(shù)據(jù)變化返回給客戶端。Redis里用一個(gè)ZSet保存用戶數(shù)據(jù)的版本歷史member存字段IDscore存版本號(hào)這樣斷線重連后只需要同步缺失的那一段版本不需要全量拉取傳輸數(shù)據(jù)量小受網(wǎng)絡(luò)波動(dòng)影響也小。在線狀態(tài)管理的設(shè)計(jì)經(jīng)歷了兩次迭代。最初是用推模式用戶上線上線都通過消息服務(wù)實(shí)時(shí)推給所有好友這樣做的好處是好友用戶看到在線狀態(tài)最及時(shí)但代價(jià)是消息量大——一個(gè)千萬用戶級(jí)別的系統(tǒng)如果一個(gè)百萬粉絲用戶頻繁上下線光狀態(tài)推送就能把消息服務(wù)打爆。后來改成拉模式用戶在線狀態(tài)保存在Redis里狀態(tài)變更只寫Redis并通知自己的所有在線設(shè)備好友列表頁面加載或刷新時(shí)才主動(dòng)拉取好友的在線狀態(tài)。這樣把推送的扇出量降下來了代價(jià)是狀態(tài)展示有延遲但對(duì)于絕大多數(shù)IM使用場(chǎng)景這個(gè)延遲完全能接受。在線狀態(tài)的數(shù)據(jù)模型用的是Redis StringKey是用戶IDValue是設(shè)備列表加最新心跳時(shí)間的JSON結(jié)構(gòu)客戶端每隔60秒發(fā)一次心跳服務(wù)端記錄心跳時(shí)間。判斷下線的邏輯是如果某個(gè)設(shè)備超過90秒沒有心跳認(rèn)為該設(shè)備離線從設(shè)備列表里移除一個(gè)用戶所有設(shè)備都離線了整個(gè)用戶才標(biāo)記為離線。心跳報(bào)文越頻繁狀態(tài)越精準(zhǔn)但服務(wù)端壓力越大60秒心跳加90秒超時(shí)這個(gè)參數(shù)組合在線上跑下來是性能和準(zhǔn)確率的平衡點(diǎn)。4. 常見問題與排查實(shí)錄4.1 用戶資料在不同端不一致改完昵稱之后手機(jī)端顯示新昵稱電腦端還是舊昵稱這個(gè)問題我們?cè)诨叶葴y(cè)試階段復(fù)現(xiàn)過很多次。排查下來無非兩種原因一種是某個(gè)端的本地緩存太久沒有過期沒有及時(shí)觸發(fā)增量同步另一種是服務(wù)端緩存更新失敗導(dǎo)致舊數(shù)據(jù)又返回給了客戶端。服務(wù)端緩存更新失敗這個(gè)原因比較隱蔽。當(dāng)時(shí)的實(shí)現(xiàn)是先更新MySQL再刪除緩存結(jié)果MySQL更新成功、刪除緩存時(shí)Redis剛好發(fā)生主從切換舊緩存沒被清掉后續(xù)讀請(qǐng)求又把舊數(shù)據(jù)回填了。解決方案是引入更新緩存時(shí)的版本號(hào)比對(duì)寫入緩存的用戶資料版本號(hào)如果小于當(dāng)前版本就丟棄同時(shí)修復(fù)了緩存刪除失敗的重試機(jī)制。排查這個(gè)問題時(shí)用了一個(gè)取巧的方法直接對(duì)比用戶在MySQL里的數(shù)據(jù)版本號(hào)和客戶端拿到的最新版本號(hào)版本號(hào)對(duì)不上順著鏈路查下去很快就能定位。4.2 登錄態(tài)突然失效用戶反映App用著用著突然被退出登錄這類問題的排查方向應(yīng)該放在Refresh Token的刷新流程上。最容易出問題的是并發(fā)刷新場(chǎng)景客戶端多個(gè)請(qǐng)求同時(shí)發(fā)現(xiàn)Access Token過期同時(shí)拿同一個(gè)Refresh Token去刷新后發(fā)起的刷新請(qǐng)求把先發(fā)起的舊Refresh Token覆蓋掉導(dǎo)致其中一個(gè)請(qǐng)求拿到一個(gè)已經(jīng)作廢的Token然后用戶被判定為異常登錄強(qiáng)制下線。解決方式也簡單Refresh Token的刷新接口要做并發(fā)控制同一個(gè)用戶同一個(gè)設(shè)備的刷新請(qǐng)求串行化處理Redis里用分布式鎖保證同一時(shí)間只有一個(gè)刷新請(qǐng)求在處理其他請(qǐng)求稍等一下復(fù)用同一個(gè)刷新結(jié)果就行。另外客戶端也做了配合在Token過期時(shí)全局只觸發(fā)一次刷新流程其他接口等待刷新完成后再重放業(yè)務(wù)請(qǐng)求從源頭避免了并發(fā)刷新的可能性。4.3 在線狀態(tài)誤判與抖動(dòng)用戶明明在線好友那邊顯示離線或者剛顯示在線過一會(huì)又變灰了過幾分鐘又亮了。這種抖動(dòng)的常見原因是客戶端網(wǎng)絡(luò)切換——比如WiFi切換到5G網(wǎng)絡(luò)時(shí)TCP連接斷開重建心跳包發(fā)出去了但中間有一個(gè)短暫的斷檔超過90秒超時(shí)閾值后服務(wù)端誤判離線。針對(duì)這個(gè)情況做了兩方面優(yōu)化一是客戶端心跳不依賴網(wǎng)絡(luò)連接狀態(tài)每次進(jìn)后臺(tái)和回前臺(tái)的時(shí)候主動(dòng)補(bǔ)發(fā)一次心跳二是服務(wù)端收到心跳時(shí)如果發(fā)現(xiàn)用戶之前已被標(biāo)記為離線恢復(fù)在線狀態(tài)時(shí)不要立刻向好友端廣播上線通知而是延遲30秒等心跳穩(wěn)定后再廣播避免網(wǎng)絡(luò)切換導(dǎo)致的上線、下線通知風(fēng)暴。有一次線上觀察到某個(gè)用戶的好友端瘋狂收到上下線通知原因就是這個(gè)用戶在地鐵里頻繁進(jìn)出隧道導(dǎo)致網(wǎng)絡(luò)反復(fù)切換加上延遲廣播機(jī)制后這個(gè)現(xiàn)象基本消除。4.4 緩存穿透與熱點(diǎn)用戶問題緩存穿透問題在用戶服務(wù)里很容易被忽略因?yàn)榇蟛糠钟脩魯?shù)據(jù)是存在的但偏偏注冊(cè)、查詢陌生人資料這些場(chǎng)景會(huì)頻繁查一個(gè)不存在的用戶ID。攻擊者可以偽造一批不存在的用戶ID批量請(qǐng)求資料接口請(qǐng)求全部穿透到MySQL。解決方法很直接用戶查詢接口緩存空結(jié)果空值也緩存5分鐘同時(shí)用布隆過濾器做第一層攔截盡快把不存在的ID擋在前面。熱點(diǎn)用戶問題的典型場(chǎng)景是系統(tǒng)里某些達(dá)人賬號(hào)粉絲量特別大好友狀態(tài)被大量用戶同時(shí)輪詢一個(gè)ZSet緩存被高頻讀取單線程的Redis在這個(gè)Key上就成了瓶頸。臨時(shí)方案是熱點(diǎn)Key做多副本把同一個(gè)邏輯Key的數(shù)據(jù)復(fù)制到多個(gè)物理Key上讀請(qǐng)求通過hash分散到不同副本上能在不改變整體架構(gòu)的情況下把單Key壓力降下來。更長期的方案是把這個(gè)讀取邏輯移出同步鏈路走異步批量聚合接口一次查詢批量合并多個(gè)熱點(diǎn)用戶的資料返回減少客戶端單用戶逐個(gè)請(qǐng)求的次數(shù)。4.5 好友關(guān)系數(shù)據(jù)不一致A給B發(fā)消息被提示“您還不是對(duì)方好友”但兩邊的好友列表里明明都顯示對(duì)方。這類問題多半是好友關(guān)系表的分庫分表策略和消息服務(wù)判斷好友關(guān)系時(shí)用的索引不一致造成的。我們的好友關(guān)系表是按用戶ID取模分片的消息服務(wù)判斷好友關(guān)系時(shí)調(diào)用用戶服務(wù)接口如果接口內(nèi)部查詢時(shí)沒有帶全分片鍵就會(huì)落到錯(cuò)誤的庫上把關(guān)系查丟了。排查下來發(fā)現(xiàn)是接口實(shí)現(xiàn)時(shí)在內(nèi)部方法調(diào)用加了一層防重邏輯把好友關(guān)系查詢參數(shù)做了緩存Key歸一化歸一化后丟失了分片鍵信息導(dǎo)致路由錯(cuò)庫。去掉這層錯(cuò)誤的緩存歸一化強(qiáng)制所有好友關(guān)系查詢必須攜帶用戶ID全文路由后問題解決。這里也提醒我微服務(wù)接口對(duì)外暴露的入?yún)⒈仨殧y帶足夠的路由信息任何緩存Key的歸一化邏輯都要仔細(xì)評(píng)審不然很容易在這個(gè)環(huán)節(jié)上埋雷。4.6 發(fā)布與灰度用戶管理子服務(wù)這種基礎(chǔ)服務(wù)發(fā)布的時(shí)候稍微有點(diǎn)問題就會(huì)影響全站。我們的做法是灰度發(fā)布分三步走先在灰度環(huán)境的網(wǎng)關(guān)層只放行內(nèi)部測(cè)試賬號(hào)的流量觀察半小時(shí)日志和錯(cuò)誤率然后把線上5%的流量切到新版本重點(diǎn)關(guān)注注冊(cè)、登錄、資料更新三個(gè)核心鏈路的錯(cuò)誤率和耗時(shí)曲線穩(wěn)定運(yùn)行一小時(shí)后逐步放量到20%、50%、100%。每個(gè)階段都有關(guān)聯(lián)告警任何一步指標(biāo)異常就自動(dòng)回滾到舊版本。上線前還會(huì)做一個(gè)核對(duì)任務(wù)把灰度時(shí)段內(nèi)用戶基礎(chǔ)表和好友關(guān)系表的變更數(shù)據(jù)導(dǎo)出和舊版本服務(wù)處理的結(jié)果做對(duì)賬確保兩邊的數(shù)據(jù)完全一致。這項(xiàng)工作多花半小時(shí)但能擋住很多潛在的邏輯錯(cuò)誤。有一次就是通過這個(gè)方法發(fā)現(xiàn)新版本在好友備注名更新時(shí)丟失了源備注字段全量發(fā)布前攔了下來。5. 項(xiàng)目復(fù)盤幾個(gè)值得堅(jiān)持的決策和踩坑總結(jié)做完這個(gè)用戶管理子服務(wù)有幾個(gè)決策我覺得堅(jiān)持得對(duì)第一是用戶基礎(chǔ)表和登錄憑證表分開設(shè)計(jì)這讓后來增加郵箱登錄、第三方登錄都只需要在憑證表加記錄改動(dòng)成本非常低第二是緩存Key的規(guī)范化管理排查問題時(shí)省了大量時(shí)間第三是狀態(tài)管理堅(jiān)持拉模型配合心跳的折中方案雖然狀態(tài)有秒級(jí)延遲但換來了系統(tǒng)整體的穩(wěn)定性。踩過的最大坑是在設(shè)計(jì)接口時(shí)沒有充分考慮到下游服務(wù)的異常場(chǎng)景。比如消息服務(wù)在用戶服務(wù)不可用時(shí)應(yīng)該返回降級(jí)數(shù)據(jù)而不是報(bào)錯(cuò)當(dāng)時(shí)沒有在客戶端做這層容錯(cuò)導(dǎo)致用戶服務(wù)一次短暫抖動(dòng)引發(fā)了消息模塊的連環(huán)超時(shí)。后來專門在所有下游調(diào)用方加了一組降級(jí)策略配置用戶服務(wù)不可用時(shí)直接返回緩存里的舊資料而不是等超時(shí)再去查數(shù)據(jù)庫?;A(chǔ)服務(wù)的穩(wěn)定性不是靠自身不犯錯(cuò)保證的而是靠上下游一起兜底保證的。如果讓我重新做一遍我會(huì)把用戶數(shù)據(jù)模型設(shè)計(jì)的重心再往前移一點(diǎn)在動(dòng)手寫代碼之前做一輪更徹底的數(shù)據(jù)對(duì)賬和容量規(guī)劃比如幾個(gè)關(guān)鍵表的預(yù)期數(shù)據(jù)量、單Key緩存的大小上限、在線狀態(tài)Redis的持久化策略。這些在項(xiàng)目初期沒有被足夠重視中期都回來找補(bǔ)了代價(jià)。做底層服務(wù)設(shè)計(jì)上的預(yù)見性永遠(yuǎn)比寫代碼的速度重要。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香婷婷五月色| 丁香婷婷五月综合色情| 婷婷色五月丁香六月欧美啪| 五月婷婷久久网| 热思思| 五月丁香中文字幕| 日本久热| 免费无码毛片一区二区A片| 婷婷六月激情综合| 日韩99视频| 久久婷婷五月天蜜桃| 99日韩| 99亚色色色| 色婷綜合网| 色操b| 99久久精品国产色欲| 久99| 欧美黄色一级| 色五月综合激情| 狠狠操天天操| 婷婷色片| 人妻第九页| av在线不卡播放| 亚洲熟女色| 婷五月丁香俺| 婷婷丁香人妻天天爽| 91人操| 天天免费成年人视频| 人妻自慰高清合集| 色色婷婷丁香| 日本女人久久| 五月丁香六月婷婷亚洲| 色一情一乱一乱一区91Av| 天堂无码人妻精品AV一区| 婷婷色网址| 99久久99久久| 五月丁香在线看| 精品久久99码| 一区二区你懂的| 欧美五月婷婷| 深爱五月最新网址| 丁香五月综合| 97碰在线免费观看| 天天激情综合| 天天摸天天舔| 久草九一| 五月激情综合激情五月| 99热综合在线| 欧美日韩中国| 激情五月五月五月婷婷| 99免费| 五月亚洲激情| 99免费视频久久| 日本性激情色播| 五月天色综合| 六月婷婷日| 色婷婷XXXXX| 亚洲色婷婷五月天| 精品国产va久| www.狠狠| 99热这里有精品首页10| 狠色狠色综合久久| 99久久99久久综合| 五月色婷婷中文字幕| 婷婷六月色情| 中字幕视频在线永久在线观看免费| 97在线干| 狠狠激情五月天| 99热免费| 亚洲色色色色色色色色色| 米奇影视五月天| 26uuu成人网| 五月天丁香婷婷社区| 婷婷丁香五另类网站| 色婷婷AV在线| 色月丁| 婷婷五月永远18免费久久久| 开心激情综合| 超碰在线观看99| 无人精品在线视频| 婷婷丁香精品视频在线观看| Va另类视频| 激情五月天电影| 欧美操逼天堂| 久久这里只有欧美| 色啪久| 五月天亚洲最大成人| 婷婷五月综合久久中文字幕| 天堂色婷婷| 丁香五月六月婷婷怡红院| 五月天婷婷色| 丁香色播五月天| 丁香桃色网| 亚洲成人另类| 99丁香五月婷| 中文字幕综合| 超碰成人在线观看| 婷婷啪啪| 玖玖伦理电影| 欧美在线干| 五月婷久久综合| 国产精品色一哟哟| 五月综合激情久久| 美女妹子后射视频网站在线观看| 中文AⅤ大全| 亚洲激情丁香五月基地| 免费视频WWW在线观看网站| 激情另类综合| 亚洲a色| 久99热在线观看| 综合激情网激情五月。| 97久久超视频| 色五月五月婷婷| 五月天综合色| 中文AV在线观看| 另类国产区| 婷婷五月激情小说| 黄色激情久久| 婷婷色五月天在线观看| 色色色在线播放| 99在线观看| 99热在线爱| 99热97| 激情色色| 99热精品在线播放| 五月天婷婷色播在线网| 在线日本www| 这里只有精品网站| WWW免费视频碰碰碰碰| 色色色免费视频| 亚洲成人在线在线| 亚洲va欧美va国产综合久久久| 欧美成人精品三区综合A片| 9l视频自拍九色9l视频自拍九色9l社区| 久久激情五月婷婷| 五月天婷婷黄色视频| 亚洲五月天天| 丁香五月天堂| 97干婷婷五月天| 噼里啪啦在线观看免费完整版视频| 日本久久精品| 狠狠操综合| 久久一热免费视频| 99天堂在线观看免费视频| 无码人妻一区二区三区免费九色| 丁香色影院| 91色吧网| 五月色丁香综合| 色婷婷基地 | 五月婷婷免费视频| 五月天久久网站| 欧美 日韩 成人 在线| 色综合久久888| 色婷婷五月综合| 操笔无码| 91av视频| 久久免费操| 丁香五月婷婷激情网| 五月婷婷av| 综合激情五月丁香9999久久精| 亚洲精品字幕| 天天爽天天操| 99在线观看视频蜜臀| 色色色九九九五月婷婷| 超碰97免费在线| 97精品综合久久| 人妻久久久| 亚洲激情精品| 99热最新地址在线| 九月婷婷在线观看| 桃色激情婷婷伊人网| chaopengdaxiangjiao| 91精品综合久久久久久五月丁香 | 99久久精彩视频| 欧美精产国品一二三区| 管管補管管紱| 91无码高清| 大香蕉久| 婷婷狠狠干| 成人av在线电影| 日产精品一线二线三线芒果| 色停停五月,在线观看| 丝袜人妻| 99色嘟嘟精品网站| 五月天激情电影| 五月永久激情| 九九99精品视频| 五月婷婷激情综合| 日本女人久久| 久久久99精品| 久久久五月天| 視频福利乱色| 五月婷婷色色爱| 久婷婷婷| 一本久道综合色婷婷五月| 综激情网| 日韩精品一区二区刘| 丁香婷婷大香蕉| 午夜丁香五月天综合| 中文字幕av在线| 色婷婷丁香花五月天| 超碰猛烈的性猛交| 狠狠色噜噜狠狠| 色婷婷基地在线| 亚洲中文AV网站| 丁香六月婷| 天天爱天天吃狠天天透| 天插天啪天啪天啪| 亚洲精久久| av人人操| 9精品久久999| 激情综合网五月婷婷| 丁香五月开心婷婷| 婷婷六月综合在线| 国产伦理精品高清在线观看网站一区二区 | 亚洲激情在线| 97碰碰人人| 五月丁香激情六月| 丁香五月天色综合| www..999热久| 百度4399有码精品V在线观看| 国产AV一区二区三区最新精品 | 国产精品久久久久久久久久免费| 99热这里只有精品2| 五月丁香综合激情网| 五月视频日本免费观看| 99re最新地址视频| 亚洲激情四射| 婷婷射图| 91九色超碰正在播放| 亚洲字幕AV一区二区三区四区| 综合色久| Av九九| 天天草比天天爽| 五月天成人伊人| 玖玖综合色| 色婷婷综合在线| 欧洲电影在线观看免费版英语版 | 日本色五月| 99无码视频| 日日肏天天操| 色婷婷六月综合| 婷婷丁香社区网| 2017人人操| 九九Y精品热播| 人妻丰满精品一区二区A片| 色噜噜狠狠色综合日日| 99ri精品视频在线观看| 9久热在线视频精品| 婷婷五月激情五月激情| 天天色综合网1| 玖玖九九99| 欧美狠狠草| 亚洲六月婷婷| 99综合视频一体| 色丁香五月| 色原狠狠综合| 99天堂网最新| 丁香五月手机视频| 天天综合网色欲香| 青青草原爱爱网| 无码字幕中文| 人人超碰99| 色情成人五月天| 中文字幕人妻一区二区| 婷婷五月天最新网址| 色综合综合综合| 国产毛片欧美毛片久久久| 日日操日日撸| 天天干天天拍| 思思久久99热只有频精品66| 色天堂婷婷| 亚洲日本韩国| 婷婷五月五月丁香| 黄色成人AV在线| 色五月激情综合网站| 99九九99九九九视频精品| 黄色片avv| 色综合色| 婷婷啪啪| 婷婷.com| 五月天婷婷涩涩| 伊综合蕉| av激情在线| 日本专区久久| 超碰在线观看99| 99热精品在线播放| 婷婷成人综合免费视频| 婷婷综合伊人丁香| 婷婷五月天在线一区| 婷婷六月激情在线视频| 丁香五月天亚洲视频| 色婷婷先锋| 国产 亚洲 在线| 日韩99视频| 五月婷婷六月色| 九月婷婷色色| 99热综合在线| 激情五月天色色| 亚洲成av人影院| 五月丁香婷婷五月色| 99久久婷婷精品视频| 婷婷五月天首页激情| 久久免费干| 97极品在线| 天天综合久久| 99久久丝| 五月天基地| 狠色色狠网| 亚洲激情五月| 青草五月天| 玖玖热视频| 天天弄天天操| 久热大香蕉| 色色欧美。| 色播色丁香五月| 久久hd| 99热99在线| 久久99热这里只有精品23| 婷婷五月天伦理| 丁香六月婷婷综合在线| 五月丁香自拍| 婷婷色色网| 亚洲情综合五月天| 国产肏屄大片| 性 色 婷婷| 日日操天天| 思思热AV| 99热首页| 99久久婷婷精品视频| 99.N在线视频| 五月天婷婷在线啪啪视频| 成人视频婷婷| 大香网伊人久久综合| www久久久久久久久久久久久久久久久| 久久婷婷的综合色丁香五月| 五月天婷婷一起草| 色色色色色网| 欧美韩国日本| 亚洲无码yw| 欧美成人Va| 欧美日韩aaaa| 亚洲综合五月天| 亚洲成人电影在线免费观看| 大香蕉AV在线| 可以直接看的av| 亭亭五月丁香五月天激情| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99色视频免费在线规看| 99热久| 婷久久久| 五月天天天综合| 五月丁香六月综合激情无码软件亮点 | 99热都是精品| 亚洲婷婷丁香五月| 日本婷婷网| 深爱激情五月天| 亚洲日韩一页精品发布| 91丨九色丨白浆| 婷婷玉月丁香五月在线视频| 丁香九月婷婷| 校园春色亚洲色| 亚洲AV人人操| 色中色综合| 在线不卡视频| av国产精品偷| 玖玖精品视频| 国产熟妇乱子伦hd| 婷婷五月天AV网| 99热这里只有精品3| 国产精品大香蕉| 色婷婷色| 九九综合久久| 婷婷在线视频| 五月丁香婷婷综合网| 五月婷婷综合久久| 性按摩玩人妻HD中文字幕| 欧美婷婷日本| 婷婷五月天福利| 色噜噜综合网| 操逼毛片国语对白| 噜噜噜久久| www婷婷色| 五月激情四射婷婷丁香| 色婷婷操逼| 婷婷五月丁香A∨| 大狠狠在线| 中文字幕 中文字幕明步| 五月婷婷精品| 五月丁香激情六月| 国产99热| 久久永久网址| 五月天婷婷av| 91日视频| 伊人五月天| 九色视频九色九色91jiuseshipin| 六月丁香激情综合网| 色婷婷丁香五月| 狠狠色婷婷丁香五月| 六月天无码网址| 天天干天天操天天拍| av国产精品偷| 丁香五月婷婷AV| 六月丁香天堂| 99A片| 九久九精品| 国熟女视频| 能看的AV| 五月综合婷婷开心网| 日日操夜夜撸| 婷婷五月蜜桃成人桃色丁香| 综合视频久久| 99久久www| 五月婷婷啪啪综合网| 婷婷97C| 色色丁香激情五月| 大大香蕉综合在线| 天天做天天爱天天要| 天天干天天av天天射| 丁香六月婷婷高清| 精品少妇人妻AV无码专区偷人| 梁铮版《蜘蛛女侠》在线| 99啪99| 伊人婷婷91| 色五月婷婷五月| AV操一操| 日日日日日| 色99免费视频中文| 殴美综合激情五月天免费视频| 亚洲综合色婷| 国产成人+亚洲+欧洲| 51精品国自产在线| 九九在线免费观看| 亚洲熟妇AV乱码在线观看| 久月丁香爱婷婷综合| 99热这| 欧美在线97| 色婷婷天堂| 久久影视婷婷五月| www.99热在线观看| 亚洲思思热久| 久久久GOGO无码啪啪艺术| 婷婷五月天改成什么了| 亚洲妇女熟BBW| 狠狠色狠狠鲁| 大香蕉丁香五月| 99热免费在线| 色丁香五月天| 九九RE视频在线精品| 夜夜操夜夜爽| 九月丁香八月婷婷加勒比| 亚洲综合婷婷六月丁香五月| 丁香六月成人网| 激情第四色| 色婷婷丁香综合中文字幕| 九九九九综合| 五月情四婷婷| 99操网站| 久99视频在线观看| 五月天激情网图片 - 百度| 日产精品一线二线三线芒果| 天天日天天爱天天噪| 色哟哟性爱av| 精品五月天| 天天摸,天天爽| 色www99| 五月婷婷导航| 丁香综合婷婷开心激情网| 狠狠综合网| 五月婷婷婷婷婷婷艺术| 欧美成人日韩| 性综合网| 人人草人人爱手机视频看看| 精品久热69| 婷婷色六月| 色五月婷婷丁香婷婷| 国产高潮白浆一区二区| 久久久久9| 五月婷婷综合激情| 综合久久六月| 99热在线观看| 久久人妻视步| 亚洲色情久久| 九月丁香婷婷网| 婷婷操久久| 五月丁香久久网| 丁香五月激情五月色综合| 丁香五月六月综合激情| 久久激情综合| 91丨九色熟女丨首页| 激情涩涩网| 韩日另类| 丁香激情网| 天天爽夜夜爽夜夜爽精| 亚洲成Av人片乱码色第1集| 91久久久久久| www,av好吊操| 无码四色色色| 丁香色五月AV在线| 99热最新| 五月婷婷六月天| 久1色色| 伊人久热91| 亚洲欧美婷婷五月色综合| 狠狠插日日干撸| 欧美在线干| 五月伊人91| 激情五月天色网站| 五月永久激情| 婷婷五月天久久| 这里只有精品96| 97视频.干com| 情婷婷五月天| 77799热| 婷婷欧美激情| 五月停停大香蕉| 久久久久9| 免费观看欧美成人AA片爱我多深| 免费的日逼视频| 日本天堂免费99| 国外亚洲成AV人片在线观看| 中美日韩成人在线| 天堂AV在线看| Se.婷婷五月天| 丁香五月婷婷大香蕉| 成人视频网| 久久五月网| 五月婷网站| 激情五月天久久丁香| 综合超碰熟| 性爱久久| 97在线综合| 五月婷婷综合在线观看| 婷婷伊人激情婷婷| 99热在线观看| 五月天社区| 婷婷激情视频欧美视频自拍视频欧美剧| 99热精品在线播放观看| 97碰久久| 2016日日夜夜操| 香蕉曰比| 超碰av在| 亚洲精品又粗又大又爽A片| 俺去也综合| www.五月天婷婷姐姐| 快乐激情五月色婷婷| 丁香五月天.com| www,99视频| AA片在线观看视频在线播放| 婷婷五月天福利| 久久婷婷五月综合色奶水99啪| 成人丁香婷婷| 日本熟女内射| 伊人五月网| 侠女刀之记忆电影在线看免费| 99久扒热| 欧美碰碰碰| AV中文网| 欧美电影在线观看| 性爱视频久久| 超碰日日操| 99re思思热久久| 亚洲舔观看| 丁香激情网| 五月天色色色网| 99热这里是精品| 丁香 亚洲 久久| 99乱视频| 思思热视频| 天天射色五月天| 丁香五月天BBw| 久青青久| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 91色涩| 五月天激情婷婷| 79精品视频在线观看,| 婷婷.com| 激情五月天激情小说| 天天天操天天天日| 99精品视频免费| 99乱视频| 夜夜躁婷婷AV| 99自拍网| 99人碰碰碰| 五月婷婷久| 免费99情趣网视频| 高潮毛片又色又爽免费| 在线日韩视频| www.超碰| 色婷婷www| 色色色热| 99热这| 色停停五月天| 色女伊人| 久色五月| 夜夜骑夜夜操| www.婷婷六月天| 九九色影院| 欧美黄色AA片哗啦啦啦| 日韩色色视频| 国产精品18久久久| 96丁香婷婷九月蜜桃综合久久| 夜夜穞天天穞狠狠穞AV美女按摩| 99色爱| 亚洲第一成人AV| 天天综合色99| 色综合av超碰| 超碰9| 亚洲综合在线伊人婷| 五月激情丁香六月狠狠干| 在线VA视频| 婷婷色五月色妇| 丁香五月a| 久久丁香综合| 思思热精品在线| 亚洲亚洲人成综合网络| 亚洲啪啪自拍| 亚洲色色五月天| 久久久人妻久久久| 天天日,夜夜爽| www、色色色| 天天操夜夜操| 噜噜噜久久| 久久无码成人| 91无码高清| 99热9| \\五月天婷婷激情| 丁香五月天成人网站| 综合AV在线| 欧美色婷婷| 日韩人妻在线播放| 日韩久热| 丁香5月啪啪| 天天操天天国产三级片处女学生妹| 99噜噜噜| 99久久久国产大片区| 五月婷婷干| www.夜夜操.com| 色之综合网| 色情丁香五月婷婷精品| 丁香婷婷浪潮AV久久综合| 色99网| 99婷婷| 激情文学第四色婷婷丁香五月| 色婷婷五月天成人网| 热婷婷在线视频| 色五月天综合网| 亚洲国产精品二二三三区 | 一级内射毛片| 久久婷婷网站| 五月婷深深爱激情网| 婷婷五月天av| 蜜桃成语时李时珍 免费| 黄色短视频在线观看| 九九九九国产| 久久免费婷婷视频| 深爱五月激情五月| 激情骚五月| 婷婷 久综合| 激情五月,婷婷五月,丁香五月| 97色碰| 校园春色亚洲色| 99超碰在线免费| 日本女va| 天天摸天天透天天舔| 国产免费一区二区在线A片视频| 婷婷五月激情小说| 丁香五月天天| 五月天婷婷综合网| 97在线观看| 色欲九区| 人人爱人人摸人人澡| 91精品久久久久久77777| 六月丁香婷婷大香蕉| 亚洲天堂亚洲色色色| 九九在线视频| 五月丁香婷婷钟和色图| 在线另类视频| 五月天激情www| 色综合五月天| 色色丁香婷婷| 五月婷婷真爱激情网| 国产 码在线成人网站| 人人插9| 激情五月色综合国产精品| 91丨九色丨东北熟女| 激情婷婷五月天丁香| 超碰人人摸人人操| AV在线免费播放| 噜噜色com| 中文幕无线码中文字蜜桃| 超碰成人在线观看| 色婷婷综合网| 嫩草免费视频| 很很操很很操| 99热日韩| 99久久亚洲国产| 狠狠五月激情婷婷直播片| 丁香婷婷啪啪| 综合激情在线| 婷婷五月成人| 男人的天堂在线婷婷| 丁香五月婷婷姐| 久热无码| 婷婷综合视频| 天天在线XXX| 99久久66综合| 激情综合色| www.99热. com这里只有精品| 色色色婷婷五月天| 丁香五月激情五月| 五月天天天开心激情网| 成人AV在线电影| 中国女人做爰A片| 99综合久久| 色色色色五月| 无码激情AAAAA片-区区| 丁香五月六月综合激情| 思思热视频| 99热在线观看| 另类五月婷婷| 丁香九月久久| 98色丁香五月婷婷综合网| 激情五月丁香激情综合网| 91操人视频| 探花搜索结果 - 黄上黄| 丁香美女主播视频在线观看| 丁香五月大香蕉在线99| 五月婷婷深爱六月| 国产,欧美,学生妹,视频| 五月婷婷综合网在线播放| 狠狠干,狠狠操| 激情综合色| 欧美一级色| 99精品热视频| 久热欧美| 99无码视频| 久操操| 亚欧州精品视频| 欧美色九| 色色色婷婷五月天| 99热9999| 精品乱码视频| 99综合视频| 久久永久网址| 91欧美| 五月婷久久| 8090在线影视少妇| 久久人人人人妻| 六月五月天婷婷涩播在线| 欧美性爱5月天天天看| 日本久久激情| 久久婷婷五月免费视频| 五月丁香婷婷啪啪综合| 国产激情在线| 婷婷久久亚洲| 色婷婷香蕉| 六月婷婷色五月| 色五月婷婷成人| 99亚洲日韩| 91在线日本| 天天爽天天日| 超碰操网| 丁香五月婷婷基地| 另类国产综合| 在线亚洲综合网| 天天爽夜夜操| 亚洲黄色影视| 五月天婷婷成人网| 这里只有免费的精品| www久久久久久久| 99亚洲视频| 91人人操.COM| 婷婷视频网| 天天草天天爱| 久久丁香婷婷色情综合| 色色热| 大香蕉伊人久久| 国产精品扒开腿做爽爽爽A片唱戏 青青草国产亚洲精品久久 | 中文字幕av在线播放| 开心五月婷婷激情| 2020久久婷婷五月| 丁香深五月婷婷| 丁香六月五月天| 亚洲乱码在线观看| 丁香五月成人| 色婷婷婷婷成人网| 伊人大香蕉毛片| 欧美性爱五月天| 色婷婷基地| 中国女人做爰A片| 九九色综合九九色| 婷婷激情综合| 欧美性猛交99久久久久99按摩| 五月天婷婷视频| 色色免费网站| 午夜不卡久久精品无码免费| 五月欧美丁香在线观看| 在线观看熟女少妇| 超碰国产一区| 亚洲综合99| 天堂五月婷婷| 国产综合81p| 成人日韩欧美| 色色亚洲五月天| 色色色综合网| 婷婷丁香大香蕉| 婷婷五月电影院| www.人人操人人看人人想人人摸 人人人人操,COM | 超碰免费观看| 久久99视频| 五月丁香五月天现场视频| 2017人人操| 国产乱妇乱子在线播视频播放网站| 五月色综合网| 久久久久亚洲A∨成人乱码电影| 激情国产五月| 五月丁香人妻| 五月天婷婷丁香社区| 妇激情基地| 午夜激情四射影院| 久热这里只有精品6| 狠狠色噜噜色狠狠狠综合久久成人波| 91九色在线| 久久久亚洲成人无码A片| 热久久91| 天天日夜夜帕| 日韩无码一区二区三区四区| 婷婷激情五月天小说| 思思热在线| 91视频综合网| 操逼123网| 成人在线网址| 婷婷亚州综合| 偷偷与邻居做爰完整视频| 婷婷在线播放| 免费AV黄在线播放| 另类亚洲视频| 婷婷色色网站| 久草五月天| 激情六月综合| 六月丁香激情最新更新| 午夜激情综合| 操b视频在线观看一区二区| 可以免费观看的av| 五月天婷综合| 丁香五月,激情五月,深爱五月| 国产精品久久..4399| YW无码| 精品国产乱码久久久久夜深人妻 | 99热在线只有精品| av人人干| 大伊久久| WWW.五月天9999| 色情久久久| 亲子乱av一区二区三区的| 免费啪啪亚州视频| 婷婷五月天干干| 亚洲中文无码成人| 天天操五月天| 欧美日韩成人综合9| 91超碰人人操| 亚洲熟女色| 永久精品| 嫩草AV久久伊人妇女超级a| 色婷婷五月天天天天天| 婷婷免费无马| 碰碰碰91| 婷婷五月天97干| 色色激情五月天| 99综合在线| 日日夜夜天天| 桃色激情网| 爱草视频在线观看| av 一区三区四区| 丁香九月久久| 9久热在线视频精品| 婷婷自拍| 五月婷狠狠| 乱乱av| www.色婷婷| 免费视频99| 五月天啪啪啪| 天天爽天天日天天舔| 四月婷婷五月色综合| 玖色色综合| 99热热热99精品婷婷| 秋霞AV淫| 狠狠狠五月婷婷六月丁香| 天天日天天添| WWW.久久久久久久久久久久久| 超碰在线caop| 激情网五月天| 婷婷五月天狠狠色| 五月丁香六月婷婷久久| 侠女刀之记忆电影在线看免费| 五月丁香综合中文| 99久久综合狠狠综合久久| 一级片操逼视频| 野战J办公桌椅H| 国产FREESEXVIDEOS性中国| 丁香五月伊人| 久色激情| 我爱大香蕉| 亚洲黄色影视| 色婷五月天| 99这里都是精品| 专区无日本视频高清8| 成人精品视频99在线观看免费| 九久9精品| 狠狠色色| 欧美69久成人做爰视频| 国产精品18久久久| 激情小说色五月| 五月天婷婷青青草| 99re久热| 性爱激情小说AV五月丁香花| 欧美激情久| 《久久综合九色综合97婷婷| 免费亚洲成人电影AV| 影院久久久| WWW.久久久久久久久久久久久| 久久一品区| 成人av观看| 亚洲综合色色| 思思久久99热| 日本五月婷婷久久久六月丁香| 欧美综合激情五月丁香| 丁香激情六月天婷婷| 99视频精品全部免费观看| 色婷婷五月综合网| 激情综合色婷婷六月天| 色五月综合| 99这里只有精品99| 少妇综合网| 五月色丁香| 狠狠草狠狠草| 疯狂做受XXXX高潮A片| 91妻人人爽人人看片| 久久久亚洲成人无码A片| 五月天久久激情| 天天搡日日搡aaaaⅩ| 色婷婷五月天亚洲| 颜射 精品性爱av| 激情五月天激情综合网| 免费视频无码| 亚洲成人免费在线| 午夜69成人做爰视频| 天天色中文字幕女优AV| 五月天婷婷色色首页| 51成人| www.99热国产| 激情小说之五月| 99视频在线精品| 欧美内射AA| 欧美槡BBBB槡BBB少妇| 成人国产欧美大片一区| 91干网| 大香蕉五月天婷婷丁香91| 亚洲精品乱码久久久久久按摩观| 婷婷激情六月中文| 五月婷婷在线播放| 中文字幕AV在线| EEUSS鲁片一区二区三区| ztEJj| www.五月天色色.com| 秋霞性爱AV| 久久只这里有精品| 91视频五月丁香| 亚洲综合婷婷| 日日躁夜夜躁狠狠久久AV| 少妇被躁爽到高潮无码文| 五月婷婷久久网| 久久婷婷丁香| 婷婷色五月天第7色| 婷婷丁香五月亚洲| 开心婷婷五月天激情网| 国产精品电影| 色5月婷婷| 久久五月丁香婷婷| 久久久天堂国产精品女人| 色五月,婷婷大香蕉| 久久99这里只有精品| 色五月av伊人| www.99成人视频| 色五月激情网| 婷婷内射视频在线| 亚洲精品V天堂中文字幕| 亚洲人成网站999久久久综合| 99久在线观看| 青青福利网| 情色婷婷五月天| 激情都市另类| 91青娱乐青青草| 俺五月| 任你搞网站| 色欧美一级| 九九99九九99偷拍视频免费看| 69婷婷丁香午夜| 超碰日日操| 六月丁花香啪啪激情欧美| 丁香婷婷五月色成人网站| 色五月五月丁香| VA色婷婷| 九九热内射| 久久婷婷五月天蜜桃| 欧美色色色| 日本久久天堂| 五月丁香亭亭A片| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色婷婷久久综合久色综| 欧美久热| 激情五月色综合网| 丁香五月天精品| 色色吧综合| ..真实国产乱子伦对白在线_欧| av第一二区| 久热这里精品免费| 国产成人AV在线播放| 五婷婷综合网| 婷婷八月激情| 婷婷五月天影院| 这里有精品| 人妻AV在线观看| 综合一本道| 亚洲精品又粗又大又爽A片| 超碰在线视屏| 日婷婷久久开心| 丰满少妇猛烈A片免费看观看| 97综合在线| 色色色综合网| 亚洲岛国电影| 天天做天天爱天天爽在| 激情网五月天| 90色免费视频| 丁香久色| 天天综合精品| 人妻有码乱操| 人人干天天操五月丁香| 狠狠草在线观看| 亚洲99在线| 久久久精品色| 九九热视频在线观看| 97五月天婷婷综合激情网| 777丁香六月青青草婷婷综合久月| av中文网站| 亚洲国产精品成人午夜| 国产成人AV在线| 97色色色| 热99.com婷婷| 久久久99精品| 99操逼| 人人操操| 五月天色社区| 国产精品涩涩涩视频网站| 六月丁香婷婷五月天| 丁香五月中文字幕色播| 黄色片久久| 玖玖在线资源视频| 婷婷五月激情中文字幕| 婷婷午夜激情| www.com.色色| 久久久精品色色色| 婷婷五月丁香青青草在线| 五月色欧洲| 久久免片| 九九99免费视频| 婷婷99狠狠躁| 久久99草五月婷婷| 天天操,夜夜骑| 五月天久久色| 五月天婷婷丁香花| 免费观看18视频网站| 丁香六月天AV| 亚洲综合九九| 国产色丁香| 丁香五月婷婷基地| 热中文字幕| 日韩色色视频| 久久五月丁香婷婷| 狠狠草在线观看| 色色色综合网| 五月婷婷综合潮喷| 国内自拍97在线| 久久九九99亚洲国产久精综合| 五月婷婷色五月| 99精品热| av在线观看网站| 97香蕉久久超级碰碰高清版| 色婷婷免费观看| 激情综合五月天| 婷婷五月天AV| 婷婷月五天在线在线看| 五月天播播| 婷婷综合激情五月中文字幕| 五月天激情视频| 无码毛片992367| 亚洲精品一区中文字幕乱码| 热久久66| 激情5月婷婷| 亚洲丁香五月| 激情婷婷99| 色婷婷电影网| av国产精品偷| 色墦五月丁香| 精品无码av丁香五月激情| 极品少妇XXXX精品少妇偷拍| 五月天综合区| 亚洲成人日韩无码精品| 色99在线视频| 日韩在线99| 五月婷婷综合网| 大香蕉久| 91超碰人人操| 精品无码色欲AV| 久久五月天影院| 这里只有精品1| 激情五月天综合网| 天天搞天天色综合| 综合色久| 色五月激情网| 激情综合网 激情五月天| av超碰在线| 日本99在线| 日韩成人免费电影| 欧美性做爰大片免费看办公室| 丁香婷婷啪啪啪| 91精品视频男人的天堂| 丁香五月激情网| 天天操中文字幕| AV人人操| 六月丁香婷婷尤物| 久久婷婷五月综合色天| 五月色婷婷影院| 丁香六月狠狠| 99热综合在线观看| 天天日天天操心| 九九热这里只有精品23| 99精品偷自拍| 欧美婷婷五月天| 久色网址| 日本精品人妻无码77777| 日韩精品二三区| 激情久久久久久久久| 激情四射五月天| 国产一二三四五六七八视频| 欧美在线视频免费播放| 激情丁香五月婷婷| 日日懆天天懆| 丁香六月婷婷久久高清| 激情五月综合| 5月丁香啪啪啪| 非洲一级AV| 婷婷六月激情| 婷婷丁香人妻| 五月丁香婷婷欧美色图视频五月丁香777电影 | 色欲av伊人久久大香线蕉影院| 六月丁香啪| 超爽内射| 激情五月天无码| 91日综合欧美| 五月天色婷婷综合| 五月丁香AV在线| 五月婷婷狠狠干| 少妇水多A片太爽了| 啪啪色区| 99久久丝| 美女被肏网站在线看| 97色干| www,婷婷五月天,com| 丁香婷婷五月色成人网站| 成 人片 黄 色 大 片| 五月丁香六月激情综合| 26uuu色噜噜精品一区| www.色情五月天.com| 天天综合精品| 五月五婷婷| 亚洲九区| 五月婷婷婷丁香播| 99热 这里只有精品 国产 日韩| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 337p大胆噜噜噜噜噜91Av| 在线视频婷婷| 亚洲欧美综合7777色婷婷| 亚洲综合在线丁香五月| 婷婷WWW久久| 亚洲色在线观看| 99热精品在线观看| 狠狠爱丁香婷| 五月香婷婷| 五月婷婷免费视频| 色婷婷综合视频| 久久婷婷艹| 婷婷五月电影院| 国产乱妇乱子伦| 亚洲精品乱码久久久久久按摩观| 超碰在线个人观看| www.五月天| 日日日日日| 99色在线观看| 中文精品在| 激情婷婷护士激情| 深爱激情五月天| 久久丁香五月| 婷婷五月图片小说视频| 五月开心婷婷中文字幕| 99热国产婷婷| 色一色综合| 五月婷视频| 26uuu在线观看| 亚洲第精品| aⅤ79成人片| Caop在线| 啪啪日热| 极品少妇XXXX精品少妇偷拍| 伊人久久大香网| 六月天六月婷| 97亚洲色 torrent magnet| 91|九色|动漫| 超级碰 久久9| 午夜天堂一区人妻| 婷婷综合| 成人AV中文字幕| 亚洲成人噜噜| 五月天另类综合网| 婷婷五月情| 日本色色网站| 亚洲视频另类| 国产性av| 五月天婷婷基地| 色婷婷裸体色性在线| 黄涩毛片| 九九色热| 七七九色| 2021日韩无码| 波多野结衣不卡AV| 97caop| 五月丁香色| 色色色干| 67194中文字幕| 天干夜夜操| 五月亭亭综合五码| 婷婷操逼网| 婷婷成人在线| 激情综合播播| 婷婷在线免费| 日本美女上人| 日亚二欧美| 天天综合91入口| 99免费在线视频| 激情丁香五月| 丁香婷婷婷婷十二月在线观看视频| 狠狠干最新地址| 2025超碰| 天天干在线播放| 亚洲性爱AV在线| 国产AV熟妇人震精品一品二区| 午夜大香蕉| 色五月婷婷网| 91久久| 亚洲最大在线| 五月婷啪| 久久这里都是精品| 色婷婷五月在线| www夜夜操comwww| 天天操电影院色狼性av|