久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

基于ZooKeeper的在線狀態(tài)漂移檢測與選主實現(xiàn)

基于ZooKeeper的在線狀態(tài)漂移檢測與選主實現(xiàn) 1. 先聊清楚微信個人號多設備場景下的“在線狀態(tài)漂移”是什么1.1 多個實例同時工作為什么會產(chǎn)生狀態(tài)分歧如果你搭過微信個人號相關的中臺服務一定遇過這種奇怪現(xiàn)象后臺明明顯示賬號在線消息流水也正常可業(yè)務側(cè)就是反饋漏消息、重復消息。查到最后往往是同一個號被兩個進程同時管理著A 進程剛發(fā)完一條消息B 進程又把它頂下線微信端的在線狀態(tài)像拉鋸一樣來回橫跳。我們內(nèi)部把這種現(xiàn)象叫做“在線狀態(tài)漂移”——主控權從一個實例轉(zhuǎn)移到另一個實例但沒有經(jīng)過雙方確認誰都覺得當前自己才有資格操作這個賬號。這種場景在帶多設備、多進程的 IM 個人號管理系統(tǒng)里非常常見客服工作臺、消息聚合、自動化備份都可能讓同一套憑據(jù)同時暴露給多個節(jié)點。理想情況下同一時間只能有一個實例作為“主控”與微信服務端保持主會話其他實例只做只讀監(jiān)聽或待命。可一旦節(jié)點宕機、網(wǎng)絡抖動、進程僵死主控身份就需要立刻交給另一個實例。關鍵問題是怎么讓大家同時感知到“舊主已失效”并且在新舊交替時不讓消息發(fā)送錯亂。這就是在線狀態(tài)漂移檢測要解決的核心矛盾。1.2 數(shù)據(jù)庫里放一個在線標志位為什么靠不住有人會想在數(shù)據(jù)庫建一張狀態(tài)表online_holdernode_aA 不行了就改成node_b不就行了嗎我一開始也是這么干的后來發(fā)現(xiàn)這條路走不通。第一數(shù)據(jù)庫里存的只是一個靜態(tài)快照。進程是被 kill -9 干掉的數(shù)據(jù)庫不會自動把狀態(tài)改成“離線”只能靠額外的定時任務去心跳清理而心跳本身又會引入新的超時判斷問題。第二多節(jié)點同時讀寫這張表時時序很難控制。A 網(wǎng)絡抖動恢復后可能并不知道 B 已經(jīng)把狀態(tài)改成自己了它只要再往數(shù)據(jù)庫寫一條online_holdernode_a狀態(tài)就又分裂了。第三數(shù)據(jù)庫的更新事務沒法保障“誰真正持有網(wǎng)絡會話”這個事實。會話是長連接數(shù)據(jù)庫狀態(tài)只是一個弱信號兩者沒有強綁定關系最終一定會出現(xiàn)狀態(tài)與事實脫節(jié)。所以我們需要的是一個具備“會話語義”的協(xié)調(diào)組件把進程是否存在、會話是否有效、主控權是否被持有這幾件事天然綁在一起。ZooKeeper 的臨時節(jié)點正好干這個。2. 選型思考為什么是 ZooKeeper而不是 Redis 或 MySQL2.1 臨時節(jié)點天然就是在線狀態(tài)的“心跳探針”ZooKeeper 里有一種節(jié)點叫臨時節(jié)點Ephemeral Node它和客戶端的 ZK 會話綁定??蛻舳藙?chuàng)建臨時節(jié)點之后如果連接斷開并且超過會話超時時間ZooKeeper 服務端會主動把這個節(jié)點刪除。進程被強殺、機器掉電、長時間網(wǎng)絡隔離都會觸發(fā)同樣的結果節(jié)點自動消失。這個特性幾乎是給“在線狀態(tài)漂移檢測”量身定做的。我們不需要寫清理邏輯去移除僵尸標記也不需要等業(yè)務方手動上報離線。ZK 服務端會替我們做這件事。把“當前主控權”放在一個臨時節(jié)點上等于告訴所有節(jié)點誰能在 ZK 里保住這個節(jié)點誰才有資格繼續(xù)對外操作。這里有個容易忽略的細節(jié)臨時節(jié)點刪除的時機是“會話超時”不是“連接斷開”。客戶端和 ZooKeeper 之間的連接斷開后會話不會立刻失效ZK 服務端會等待一個會話超時時間期間如果網(wǎng)絡恢復客戶端可以重連并繼續(xù)使用同一個會話。這個超時時間是可以配置的后面我會專門講如何避免因為參數(shù)設置不當導致誤漂移。2.2 Watch 機制讓狀態(tài)變化能夠主動通知所有候選節(jié)點ZooKeeper 的另一個關鍵能力是 Watch監(jiān)聽。客戶端可以對某個節(jié)點設置監(jiān)聽節(jié)點創(chuàng)建、刪除、數(shù)據(jù)變化、子節(jié)點變化時ZK 會向客戶端推送一個事件。這樣選主和漂移檢測就可以從“定時輪詢”變成“事件驅(qū)動”。比如每個候選節(jié)點都盯著當前active節(jié)點一旦active節(jié)點消失所有候選中至少有一個會收到通知馬上發(fā)起新一輪選舉。如果換成數(shù)據(jù)庫輪詢就得每隔幾百毫秒查一次狀態(tài)表既慢又費資源而且響應速度還取決于輪詢間隔。當然Watch 是“一次性”的。事件觸發(fā)后監(jiān)聽自動失效如果業(yè)務代碼沒有重新注冊 Watch下一次變化就感知不到了。這是一個非常經(jīng)典的坑后面的實操部分我會給出應對方案。2.3 和 Redis / MySQL / etcd 放在一起看選型時我也對比過其他方案簡單列個表方案會話綁定能力事件通知運維成本適合場景ZooKeeper有臨時節(jié)點綁定會話節(jié)點隨會話失效自動刪除原生 Watch注冊簡單偏高集群需要獨立維護分布式協(xié)調(diào)、選主、分布式鎖Redis沒有會話概念需要自己用 TTL 模擬可用 Pub/Sub 或 Stream但語義弱低簡單緩存鎖、短任務互斥MySQL無狀態(tài)全靠業(yè)務寫無只能輪詢低業(yè)務狀態(tài)存儲etcd有 Lease可綁定節(jié)點續(xù)期有 WatchgRPC 生態(tài)高云原生場景下的選主配置如果你團隊里已經(jīng)有成熟的 ZooKeeper 集群用 ZK 做在線狀態(tài)漂移檢測和選主是最順手的。如果沒運維條件etcd 也完全可以做類似的事但本文重點講 ZooKeeper 的實現(xiàn)思路。3. 在線狀態(tài)漂移檢測與選主的整體設計3.1 節(jié)點模型把賬號狀態(tài)“立”在 ZooKeeper 上我最終采用的節(jié)點結構大概是這樣/wx-accounts /{wxid} /members /m-0000000001 /m-0000000002 /active三層節(jié)點的含義/wx-accounts/{wxid}是持久節(jié)點代表一個微信個人號。/wx-accounts/{wxid}/members是持久節(jié)點用戶存放所有候選實例。/members/m-0000000001是臨時順序節(jié)點。每個實例啟動時都在這里創(chuàng)建一個節(jié)點節(jié)點序號由 ZooKeeper 自動遞增。/wx-accounts/{wxid}/active是臨時節(jié)點由當前主控實例創(chuàng)建。誰創(chuàng)建成功了誰就是主控。active節(jié)點的數(shù)據(jù)里我習慣放一段 JSON{ seq: 1, instanceId: host-a-001, sessionId: 1234567890, activeSince: 1699999999000 }seq就是候選節(jié)點的序號instanceId是本實例的唯一標識sessionId是 ZK 會話 ID。這三個字段一起決定“當前主控是誰”以及“是否發(fā)生了狀態(tài)漂移”。用臨時順序節(jié)點而不是隨機節(jié)點名是有意的節(jié)點序號天然給出了候選者的繼任順序先啟動的實例序號小更容易成為主控中途掛掉后下一個節(jié)點自動頂上不需要再做復雜的優(yōu)先級排序。3.2 選主流程順序節(jié)點 最小序號 Watch 前驅(qū)有了上面的節(jié)點模型選主流程就非常清晰了實例啟動連接 ZooKeeper。確保/wx-accounts/{wxid}和/members持久節(jié)點存在。在/members下創(chuàng)建臨時順序節(jié)點拿到自己的seq。讀取/members下所有子節(jié)點按序號排序。如果自己的序號是最小的嘗試創(chuàng)建/active臨時節(jié)點。創(chuàng)建成功就是主控實例失敗說明已經(jīng)有主控存在那就監(jiān)聽/active。如果自己的序號不是最小那么監(jiān)聽“緊挨著自己前面的那個節(jié)點”。比如當前序是 2就監(jiān)聽序 1 的節(jié)點。當前驅(qū)節(jié)點消失時說明前面的候選退出了立刻重新讀取子節(jié)點重新執(zhí)行選舉。這里的關鍵優(yōu)化是“只監(jiān)聽前驅(qū)節(jié)點”。如果所有候選節(jié)點都監(jiān)聽/active一旦active刪除所有節(jié)點都會收到事件但只有一個能創(chuàng)建成功其他節(jié)點白白競爭會產(chǎn)生驚群效應。通過監(jiān)聽前驅(qū)節(jié)點ZooKeeper 天然給候選人排了隊前面的掛了后面的頂上整個過程非常安靜。選舉完成后非主控節(jié)點還要繼續(xù)監(jiān)聽/active節(jié)點因為如果主控實例進程沒崩但是active節(jié)點被人為刪除或數(shù)據(jù)被改也需要觸發(fā)重新評估。3.3 漂移檢測規(guī)則序號、會話、持有者三者缺一不可在線狀態(tài)漂移檢測的核心不是簡單判斷“有沒有主控”而是判斷“當前主控是不是我”。我總結了三個信號信號一我的候選節(jié)點在/members下是否存在。如果不存在說明我的 ZK 會話可能已經(jīng)過期我失去競選資格。信號二/active節(jié)點是否存在。不存在說明當前沒有主控需要立即選舉。信號三/active節(jié)點里的數(shù)據(jù)是不是我。如果節(jié)點存在但instanceId、sessionId、seq和我本地不一致說明主控權已經(jīng)漂移到了別的實例我必須立刻降級。把這三個信號組合起來看候選節(jié)點存在active 節(jié)點存在active 持有者是我判定結果是是是正常主控繼續(xù)工作是是否候選/待命等待 active 消失是否否沒有主控立即參與選舉否任意任意本實例已失去資格重新登記節(jié)點連接斷開任意任意暫停一切業(yè)務操作等待重連這里最容易被忽略的是“連接斷開”這一行。我在早期實現(xiàn)里犯過錯誤本地進程以為自己還是主控繼續(xù)向微信服務發(fā)送消息但其實 ZooKeeper 里active節(jié)點已經(jīng)因為會話超時被刪除了新的主控已經(jīng)產(chǎn)生于是兩邊同時發(fā)消息造成重復和沖突。正確做法是只要 ZK 客戶端進入Disconnected或Expired狀態(tài)立刻把本地角色降級為SUSPEND停掉所有對外寫操作避免舊主在不知道的情況下繼續(xù)工作。3.4 狀態(tài)機把角色流轉(zhuǎn)寫清楚所有實例都會經(jīng)歷幾個狀態(tài)INIT初始化、CANDIDATE候選、LEADER主控、WAITING等待前驅(qū)、SUSPEND暫停/降級。創(chuàng)建候選節(jié)點成功進入CANDIDATE。CANDIDATE發(fā)現(xiàn)自己是最小序號且成功創(chuàng)建active進入LEADER。CANDIDATE發(fā)現(xiàn)前驅(qū)還在進入WAITING。WAITING收到前驅(qū)節(jié)點刪除事件回到CANDIDATE重新選舉。LEADER如果發(fā)現(xiàn)active節(jié)點消失、數(shù)據(jù)被改、ZK 連接異常進入SUSPEND。SUSPEND重連成功后重新創(chuàng)建候選節(jié)點進入CANDIDATE。把這個狀態(tài)機寫清楚代碼就不容易亂。我在工程里遇到過一些代碼選主邏輯和心跳邏輯混在一起狀態(tài)一多就開始到處改變量最后線上故障時根本分不清當前該算什么態(tài)。后來強行把狀態(tài)流轉(zhuǎn)收斂到一個對象里所有狀態(tài)變更都只由 ZK 事件驅(qū)動再也沒有出現(xiàn)過“看著像主控但其實不是”的混亂窗口。4. Java 落地一套最小可用的選主與漂移檢測實現(xiàn)4.1 環(huán)境與依賴準備我用 Java 原生客戶端做了一版可運行的最小實現(xiàn)。先加依賴dependency groupIdorg.apache.zookeeper/groupId artifactIdzookeeper/artifactId version3.8.4/version /dependency本地起一個單節(jié)點 ZooKeeper 就夠了測試時用bin/zkServer.sh start啟動服務默認端口2181。生產(chǎn)環(huán)境建議起三節(jié)點集群但選主邏輯本身不需要區(qū)分單機還是集群。核心類我命名為WxAccountLeaderElector字段包括private final ZooKeeper zk; private final String wxid; private final String instanceId; private final String membersPath; private final String activePath; private String candidatePath; private long localSeq; private volatile boolean isLeader false;instanceId用來標識本機實例比如host-a-001。后面判斷active節(jié)點是否為本人持有全靠它。4.2 候選注冊創(chuàng)建臨時順序節(jié)點實例啟動的第一步是創(chuàng)建候選節(jié)點。這個過程相當于向 ZooKeeper 喊一句“我來了請給我排個號”。public void start() throws Exception { ensureParentNode(); registerCandidate(); evaluateLeader(); } private void ensureParentNode() throws Exception { if (zk.exists(/wx-accounts, false) null) { zk.create(/wx-accounts, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } if (zk.exists(/wx-accounts/ wxid, false) null) { zk.create(/wx-accounts/ wxid, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } String path /wx-accounts/ wxid /members; if (zk.exists(path, false) null) { zk.create(path, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } } private void registerCandidate() throws Exception { String data String.format({\instanceId\:\%s\,\pid\:%d,\startTime\:%d}, instanceId, ProcessHandle.current().pid(), System.currentTimeMillis()); candidatePath zk.create(membersPath /m-, data.getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); localSeq Long.parseLong(candidatePath.substring(candidatePath.lastIndexOf(-) 1)); }這里創(chuàng)建的是EPHEMERAL_SEQUENTIAL節(jié)點它既具備臨時節(jié)點的自動刪除特性又能得到一個全局遞增的序號。所有候選節(jié)點按照創(chuàng)建順序排成一條隊序號越小優(yōu)先級越高。4.3 選主與漂移監(jiān)聽核心邏輯選主邏輯在evaluateLeader方法里。每次 ZK 事件觸發(fā)都會重新評估當前角色。private void evaluateLeader() throws Exception { if (zk.getState() ! ZooKeeper.States.CONNECTED) { markFence(); return; } ListString children zk.getChildren(membersPath, true); ListLong seqs children.stream() .map(p - Long.parseLong(p.substring(p.lastIndexOf(-) 1))) .sorted() .collect(Collectors.toList()); if (seqs.isEmpty()) { return; } long minSeq seqs.get(0); if (minSeq localSeq) { tryAcquireActive(); } else { long prevSeq seqs.get(seqs.indexOf(localSeq) - 1); String prevPath membersPath /m- prevSeq; if (zk.exists(prevPath, event - { if (event.getType() EventType.NodeDeleted) { try { evaluateLeader(); } catch (Exception e) { log.error(重新選舉失敗, e); } } }) null) { evaluateLeader(); } } }注意zk.exists(prevPath, ...)這一步注冊的是針對前驅(qū)節(jié)點的 Watch。事件回調(diào)只在NodeDeleted時觸發(fā)觸發(fā)后重新執(zhí)行evaluateLeader這樣當前實例就能從前驅(qū)消失的狀態(tài)中立刻感知到主控權發(fā)生了漂移。下一步是嘗試創(chuàng)建active節(jié)點也就是搶主控private void tryAcquireActive() throws Exception { String data String.format({\seq\:%d,\instanceId\:\%s\,\sessionId\:%d}, localSeq, instanceId, zk.getSessionId()); try { zk.create(activePath, data.getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); isLeader true; log.info(成為主控實例seq{}, instance{}, localSeq, instanceId); zk.exists(activePath, event - { if (event.getType() EventType.NodeDeleted) { try { evaluateLeader(); } catch (Exception e) { log.error(active 節(jié)點消失重新選舉失敗, e); } } }); } catch (KeeperException.NodeExistsException e) { log.info(active 已存在當前不是主控進入等待狀態(tài)); isLeader false; zk.exists(activePath, event - { if (event.getType() EventType.NodeDeleted) { try { evaluateLeader(); } catch (Exception ex) { log.error(重新選舉失敗, ex); } } }); } }當active創(chuàng)建成功isLeader置為true。但“創(chuàng)建成功”只代表那一瞬間我是主控不代表我一直是。所以每次對外執(zhí)行任務前還要做一次漂移校驗確保主控權沒有在后臺悄悄溜走。4.4 發(fā)送消息前的主控權校驗我在實際工程里寫了一個方法所有對外操作都必須走這一層門禁public boolean checkLeadership() { if (!isLeader) { return false; } if (zk.getState() ! ZooKeeper.States.CONNECTED) { resign(); return false; } try { Stat stat new Stat(); byte[] raw zk.getData(activePath, false, stat); ActiveInfo info ActiveInfo.fromJson(raw); boolean mine info.seq localSeq info.instanceId.equals(instanceId) info.sessionId zk.getSessionId(); if (!mine) { resign(); return false; } return true; } catch (KeeperException.NoNodeException e) { resign(); return false; } catch (Exception e) { return false; } } private void resign() { isLeader false; log.warn(檢測到在線狀態(tài)漂移或主控權丟失當前實例已降級); }這里最關鍵的一點是除了比對instanceId還要比對sessionId。因為 ZK 會話過期后客戶端重連會得到一個全新的sessionId即使instanceId相同它也不是原來的會話。單獨比對instanceId是不夠的。任務執(zhí)行時可以這樣統(tǒng)一約束public boolean executeIfLeader(Runnable task) { if (!checkLeadership()) { log.warn(非主控或主控已漂移拒絕執(zhí)行任務); return false; } task.run(); return true; }嚴格來說這個校驗屬于“操作前檢查”。在分布式環(huán)境下舊主可能已經(jīng)和新主同時工作消息帶一個 fencing token 會更安全。seq就是天然的 token每一次選主都會產(chǎn)生更大的序號下游服務只需要拒絕 token 小于當前主控序號的請求就能避免舊主消息造成數(shù)據(jù)沖突。4.5 運行效果漂移檢測到底能檢測到什么假設我同時啟動兩個實例A和BA 啟動創(chuàng)建/members/m-0000000001成功創(chuàng)建/activeA 成為主控。B 啟動創(chuàng)建/members/m-0000000002發(fā)現(xiàn)最小序號不是自己于是 watchm-1進入等待狀態(tài)。我手動 kill 掉 A 進程。ZK 檢測到 A 的會話結束臨時節(jié)點m-1和/active自動刪除。B 收到前驅(qū)節(jié)點刪除事件重新執(zhí)行evaluateLeader發(fā)現(xiàn)自己是當前最小序號創(chuàng)建active成功B 成為新主控。我重新啟動 A。A 創(chuàng)建/members/m-0000000003發(fā)現(xiàn)最小序號是 B于是 watchm-2進入等待。整個過程里B 的日志會出現(xiàn)一行“成為主控實例”A 重啟后不會有任何任務權限直到 B 再次故障。這就是一次標準的在線狀態(tài)漂移檢測和選主切換。5. 實戰(zhàn)中踩過的坑故障排查與避坑清單5.1 網(wǎng)絡抖動引發(fā)的會話超時誤判我在測試環(huán)境第一次上線這套邏輯時用的是 5 秒會話超時。結果機房一次輕微的網(wǎng)絡抖動把所有實例全部踢下線觸發(fā)了一次完全沒必要的選主切換。原因是 ZooKeeper 的臨時節(jié)點刪除機制基于會話超時不是基于連接斷開。網(wǎng)絡抖動后ZK 服務端暫時聯(lián)系不上客戶端如果超時設得太短服務端會認為客戶端死了直接刪除臨時節(jié)點??蛻舳司W(wǎng)絡恢復后發(fā)現(xiàn)自己創(chuàng)建的節(jié)點已經(jīng)沒了只能重新注冊。我的建議是把 ZK 客戶端構造參數(shù)里的sessionTimeout設置為 20 到 30 秒具體數(shù)值取決于業(yè)務對“主控恢復速度”和“誤判容忍度”的權衡。如果業(yè)務可以容忍 30 秒沒有主控就設 30 秒如果希望秒級切換那就要接受網(wǎng)絡抖動帶來的誤判風險。同時客戶端收到Disconnected事件時不要等 ZK 告訴你“節(jié)點已刪除”自己要先主動標記為SUSPEND暫停所有對外寫操作。這樣即使 ZK 側(cè)還沒判定會話超時業(yè)務側(cè)也不會因為舊主繼續(xù)工作而產(chǎn)生重復信息。5.2 舊進程僵尸化帶來的雙主窗口真正危險的場景不是進程被 kill而是舊主進程還活著但它和 ZooKeeper 之間的網(wǎng)絡被切斷了。這時候從 ZK 的視角看舊主已經(jīng)因為會話超時而退出新主成功上位但舊主進程還保存著“我是主控”的本地狀態(tài)它仍然能訪問微信服務端繼續(xù)發(fā)消息。兩個主同時存在就成了雙主窗口。這個問題不能單靠 ZooKeeper 解決。ZooKeeper 只能保證“在 ZK 內(nèi)部狀態(tài)一致”不能保證“在業(yè)務網(wǎng)絡里也一致”。我最后的處理方法是兩層配合客戶端收到Disconnected時立刻拒絕所有本地任務不等待 ZK 判定。業(yè)務消息里帶上 fencing token也就是active節(jié)點里的seq。下游服務只接受當前主控的 token。如果你能把 token 校驗下沉到消息網(wǎng)關雙主問題能基本被攔住。舊主發(fā)出來的 token 已經(jīng)比新主小網(wǎng)關直接拒絕比舊主自己“猜”自己是不是主控要可靠得多。5.3 Watch 只觸發(fā)一次重連后通知丟失ZooKeeper 的 Watch 是一次性的。最開始我寫代碼時只在初始化時注冊了一次exists后面發(fā)現(xiàn)節(jié)點變化后程序完全沒有反應。排了半天才發(fā)現(xiàn)事件觸發(fā)后 Watch 就失效了如果不重新注冊下一次變化永遠感知不到。更隱蔽的是在回調(diào)里重新執(zhí)行evaluateLeader時getChildren(membersPath, true)會注冊一個新的 Watch但如果你在某條分支里調(diào)了zk.exists(prevPath, watcher)這次注冊也是獨立的別忘記在對應回調(diào)里再次注冊。我建議把“重新評估 重新注冊 Watch”收斂成一個公共方法在回調(diào)里統(tǒng)一調(diào)用并且把異常包裹在 try/finally 里保證 Watch 不會因為一次異常就永久丟失。當然更省心的做法是用 Curator 框架的LeaderSelector或PathChildrenCache它內(nèi)部封裝了 Watch 的重注冊邏輯。但如果想真正理解 ZK 選主的原理手工實現(xiàn)一次是值得的。5.4 多賬號場景下的線程模型與連接復用如果同時管理幾百個微信個人號不可能給每個號都建一個獨立的 ZooKeeper 連接。連接太多會耗盡 ZK 的文件描述符和會話資源。正確的做法是一個 ZooKeeper 實例承載所有賬號的選主邏輯不同賬號通過不同的父節(jié)點路徑區(qū)分。但這就帶來一個新的問題ZooKeeper 的 Watcher 回調(diào)線程是共享的。如果一個賬號的選主回調(diào)里做了數(shù)據(jù)庫操作或者網(wǎng)絡請求整個 Watcher 線程都會被阻塞其他賬號的狀態(tài)變化也會延遲處理。我后來把狀態(tài)變更邏輯全部丟進一個獨立的單線程 executor回調(diào)只負責往 executor 里提交任務。這樣賬號 A 的慢操作不會影響賬號 B。同時每個賬號的選主狀態(tài)都隔離在自己的WxAccountLeaderElector對象里公共的僅是 ZK 連接。5.5 監(jiān)控與可觀測性別等漂移發(fā)生了才去救火選主邏輯上線后一定要配監(jiān)控。我至少會暴露這些指標當前賬號的active節(jié)點持有者。候選節(jié)點數(shù)量。主控切換次數(shù)和切換時間。最近一次切換的原因session_expired、node_deleted、active_deleted。日志里每次切換都要帶清晰上下文比如leader changed accountwxid_xxx oldSeq1 oldInstancehost-a newSeq2 newInstancehost-b reasonsession_expired這樣每次發(fā)生漂移我們都能從日志里快速還原當時的網(wǎng)絡情況、實例狀態(tài)而不是靠猜。沒有監(jiān)控的選主邏輯等于把一個分布式炸彈埋在系統(tǒng)里平時看不出來一炸就是大事故。我在實際項目里反復體會到一件事ZooKeeper 只是給了你一個可靠的狀態(tài)源真正決定系統(tǒng)穩(wěn)不穩(wěn)的是所有業(yè)務操作是否嚴格服從“只要不持有 active 節(jié)點就立刻停手”這個紀律。選主代碼反而是整個鏈路里最簡單的一塊難的是讓所有調(diào)用方都統(tǒng)一走同一個門禁。建議先把狀態(tài)機畫清楚再寫代碼會少走非常多彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
四虎免费看黄| 久久久久元码视频| 日韩乱中文| 草草影院最新网址| 中文AV制服乱伦| 加勒比伊人综合| 夜夜操91744565| 97香蕉碰碰人妻国产欧美| 人人操人人舒服| 人妻激情视频| 青青在线视频日韩欧美| 久久青青草在线视频| 东京热大香焦| 青青国产在线拍揄自揄拍| 日本熟妇熟色97一本在线观看| 国产操偷| 福利色色| 国产成人www免费人成看片| WWW操逼| 91操熟妇| 搡老女人老91妇女老熟女| 新91视频.cmp| 国产白丝网站| 中文字幕99999| 99超碰碰| 午夜九九九九九九| 91欧美色| 9色国产精品一区粉嫩| 国产精品欧美在线观看| 亚洲色图91| 夜色综合| av网站在线观看了| 91在线|亚| 九九亚洲| 久久国产视频专区一二三| 91N综合网| 日本免费一区二区不卡| 国产精品动态一区二区三区四四| 五十路人妻在线| 日日夜夜模| 2026国产精品视频| 竹菊一区二区三区AV线| 欧美姓爱综合网| 91亚洲高清| 操碰97| 99久久精品无码一区二区毛片免费| 亲子敌伦对白在线播放| 亚洲 欧美 精品专区 极品| 一级性爱视频免费观看| 久久美女国产| 亚洲操操| 97超碰逼| 欧美精品欧美精品系列 | 欧美日韩亚洲五月天婷婷| 淫乱图区 | 看黄片视频免费| 小情侣高清国产在线视频| 国产在线视视频有精品| 色色色色色色色色色色色色色色综合| 三级片大波波| 素人伊尹大香蕉免费下载视频| chaopen97久久| 欧美丝袜亚洲| 东京日日夜夜| 啊啊啊好湿久久| 330dv亚洲成年视频网| 天天草AV| 狠狠操狠狠操操| 成人性爱av| 亚洲激情在线一区二区| 情色av电影| 久久99草| 另类亚洲一区二区三区| 亚洲精品成人激情在线| 九区国产| 成年人黄色视频免费| 强歼乱伦资源网| 欧洲色| 啊啊啊在线观看免费视频| 亚洲文学偷乱拍啪啪啪啪| 天美传媒AV在线| 一本大道不卡一二三区| 青青国产精品在线| 一二三区视频在线观看| 亚洲欧美综合区自拍另类| 久久综合五月天| 超硑97精品| 青青草这里只有精品| 美日韩男女操屄视频| 中国探花熟女| 天天躁狠狠躁av| 欧美牲| 操逼操操操91| 久久精品人妻一区二区| 日韩无码a片| 久7色| 综合天天。| 国产真乱mangent| 成人在线日韩| 欧美第五页| 91午夜无码| 美女人妻色网站| 亚洲精品第一| 欧美中文字幕一区| 最新日本中文字幕| 欧美另类色图片| 东北女人高潮视频| 国产超碰人人操| 91 综合 色| 最新岛国大片| 日本高清视频在线观看黄已三辽| 视频国产精品未满十八禁止在线观看| 超碰97男人| 久久在线观看免费视频| 啊啊啊好舒服好爽啊啊啊视频| 成人精品在线免费视频| 中文字幕日韩国产传媒欧美精品| 欧美日韩久久精品爱爱| 97精品国产97久久久久久户外免费| 中文字幕av片| 天天爽人人综合免费7799| 久久精品无码不卡| 深夜操逼网| 嗯嗯啊啊啊好爽| 色99在线| 日韩中文字墓| 欧美亚洲AN| 1人人看人人摸人人操| 91天射| 成人a大片在线观看| a人欧美综合天堂麻豆| 久久久精品电影| 狠狠躁天天躁日日躁97| 91Chinese在线| 精品国产乱码久久久影院| 日本3级一区二区免费 | 91高清欧美| 熟女六十路| 欧美激情亚洲| 蜜臀精品1区2区| 久草国产在线视频| 97Ai亚洲| 69精品人人人人| 亚洲免费人妻在| 熟女91网| 亚洲人妻中文高清| 中文字幕一区日韩精| 看日韩黄片| 欧美系列在线一区二区| 老司机香蕉久久久久| 欧美老熟另类| 一级特级aaaa毛片免费观看| 91狠狠| 国模不卡一本二本三电影| 国产一区在线观看无码AV| 日夜尻逼网| 久久欧美按摩999| 精品成人无码| 91无码人妻精品一区二区三区蜜桃 | 无码最新| 欧美色另类| 大香蕉天天看妹子| 国产一区二区在线电影| 老司机福利青青草| 人妻 欧美亚洲| 久久手机好看网站| 一区二区三区机械有限公司| 欧美黄色大香蕉一区二区| 日1区2区3区2020| 久久婷婷在线观看视频| 国内毛片免费h片在线| 亚洲性爱成人| 91无码精品| 国产丰满熟夫69mpp| 男人的天堂2010| 黄片国产精品一区二区| 91观看 国产白丝| 狠狠夜色午夜久久综合在线| 亚洲欧美精品一区天堂久久 | 日韩人妻少妇中文字幕| 久久精品国产72国产精品福利| 另类图片综合| 五月天亚洲色图| 欧美青青草视频| 97人亚洲综合字幕| 欧美亚洲综合色| 国产精品久久久久久久毛片1| 一起草在线视频| 精品在线78| 97久久久精品| wwe 天天干.com| 亚洲人成网www| 免费AV播放| 日本色色色视频| 午夜激情成人在线观看| 亚洲中文一区二区三区| 午夜福利免费福利视频| 大黄片做爱的大的| 久久久久9| 91老熟女老女人国产老太| 亚洲欧美一区二区三区在钱蜜桃| 久久婷五月天| 九九成人| 天天综合网站| 999在线电影香蕉| 伊人成人中文字幕久久网| 1024人妻熟女一区二区三区| 亚洲欧美中文一区二区三| 国产精品久久久久久久电影渣男| 第四色奇米影视777| 91在线免费精品视频| 免费视频一二三区| 国产免费黄色一级大片| 欧美夜夜草视频| 成人线上超碰| 91在线秘 男同| 亚洲精品一二区| 国产操逼逼网| www久久99| 欧美美女自慰一区二区三区| 国产午夜福利视频在线| 青青草色插素人| 日本免费一区二区不卡| 久久精品电影在线| 黑人猛交| 国产伦精品一区二区三区在线观| 亚洲激情四射| 欧美 中文字幕 一区| 熟妇亚洲一区二区三区| 欧美色图人妻| 日韩精品人妻| 色丁香久久| 国产精品一区二区麻豆| 日天天九九天堂666| 亚洲日韩精品一区二区| 成人一道本免费视频| 亚洲欧美在线观看免费| 9 9精品一区二区三区| 歐美一級亂黃99在綫精品| 狠综合网| 东京热,男人的天堂| 日日摸天天爽夜夜欢| 国内毛片国产欧美拍| 久久AV无码网址| 五月婷婷无码| 久操在97| 五月丁香黄色网| 十八禁成人网站在线观看| 五月婷婷综合网| 亚洲吊色| 97亚洲欧美| 亚欧视频在线| 欧美最婬乱婬爆婬性视频| 丝袜狂射91| 96久久久| 日本理论在线| 天天天天天超碰| 97干在线视频| 久久久久九九九| 强上我不卡卡| 国产精品农村妇女| 国产精品一级片在线看| 香港日本韩国人妇99www.wccm20| 国产91福利小视频在线观看| 超碰日本97美女人妻人人玩人人爱| 试看福利| www.99中文字幕| 久九九九九九九热| 特污精品女优骚货黄色视频在线免费观看| 欧美亚洲另类在线蜜桃| 91天堂视频| 亚洲97在线| 日本99视频| 蜜桃臀一区二区三区久久| 懂色中文一区二区三区| 色性荡荡荡荡视频| 九九九九AV| 免费A V在线| 欧美成人色| 日本一区二区不卡| 美女尤物福利视频| 天天综合-91入口| 全球成人中文在线| 亚州Av天美传媒| 国产精品久久天天干| 亚洲欧美一区二区三区在钱蜜桃| 亚洲资源站| 首页亚洲国产高跟丝袜诱惑视频 | 日本精品一级二级三级| oumeisetu综合| 三及片网站| 欧美啪啪女女| 国产午夜精品一区二区三区牛牛| 成人国产精品三级A片| A男人的天堂| 中文字幕中文字幕一区二区| 久久久久9999妇女| 欧洲亚洲国产综合在线| 高潮嗯啊性感美女久久久| 国内毛片热久久思思热| 熟女久久久| 国产精品婬乱一级毛片彝族| 黑人干亚洲| 黄色视频特级毛片| 精品无码久久| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 操死我了啊啊啊| 一级性爱aaaa| 亚洲高清视频在线免费观看| 91色爽欧美| 亚洲导航深夜福利| 婷婷精品久久av影视| 色久综合| 国产最新小视频在线播放下载| 97就爱干| 青草视频在线看看看看看看看看看| 人人妻人人玩人人澡人人爽| 91色爽欧美| 国产成人无码a| 亚洲大色鬼| 色色色综合网| 人人潮人人摸| 亚洲欧洲日韩中文字幕一区| 欧美最婬乱婬爆婬性视频 | 国产日本顶级一区二区三区| 久久国产精品一级二级三级| 国产一区二区三区久久久精品| 91美女視頻| 五月综合久久| 中国一级操逼视频| 热热色中文无码| 丝袜无码a片| 一区二区三区机械有限公司| 日韩免费中文字幕视频| 婷婷丁香人妻| 9久精品视频在线观看| 中文字幕成人| 午夜乱轮操逼视频免费看| 久久久久久久综合,国产| 亚洲天堂另类美腿| 蜜桃无码AV一区二区| 日本久久女同性恋视频| AV女优男人的天堂| AV中文字幕剧情1区2区3| 啊啊啊用力在线观看| 色噜噜精品一区二区三| 美国日韩黄片| 射久久| 内射中国少妇高清视频免费视频| Av色五月| 玖玖97综合| 日韩AV熟女乱伦| 亚洲密乳AV| 91国模| 91狠狠综合久久| 久湿久久 | 国产偷仑| 热久日综合| 欧美专利1区2区3区4区5区免费| av天堂5| 日韩性爱1级片视频| 免费观看日本操逼视频| 免费国产视频| 免费AV中文网在线观看| 欧美色就是色| 欧美性色网| 色噜噜狠狠色综无码久久| 欧美精品 - 91爱爱| 亚洲一区深夜| 日韩一级二级| 一区二区三区 丝袜 高跟 美腿| 激情五月婷婷综合| 99热这里是精品| 大香蕉久久| 久久婷婷色| 一级久久性爱视频| 亚洲砖码砖专无区2023| 大香蕉五月天| 丁香色色网| av国产无码| 九九色热| 奸色色 男人天堂 天天射| 熟妇熟女视频一区二区三区| 激情网五月天| 老女人爆菊| 国产欧美一区二区| 久久综合精品一区二区三区| 5252色欧美在线| 久久只有精品一区二区三区| 国产又大又粗又长视频在线| 久久久久密臀视频| 91精品少妇搡搡搡| 国产精品一区二区三区在线| 欧美在线播放| 国产精品视频麻豆入口| 免费精品福利在线观看| 99这里只有精品| 中文高清一区二区的| 极品五月天噜噜| 怡红院怡春院| 九区国产| 热热色中文无码| 97视频网站| 韩国手机不卡无码三级视频| 免费中文在线| 日本免费中文一区二区三区四区 | 欧美视频一| 欧美精品一区二区少妇免费A片| 国产亚洲精品美女久久久| 乱伦av国产| 婷婷激情综合网| www鬼畜国产男人的天堂| 黑人天8A∨高清网站| 99爱爱| 亚洲色电影在线| 2018天天日天天日| 国产精品免费视频不卡| 一区二区久久天天干狠狠| 啊啊啊啊啊啊好湿好爽视频| 精品国产乱码久久久久久久| 试看日韩黄片| AV九九| 婷婷色香| 色香综合| 天天操天天舔| 天天综合网在线| 国产精品69久久久久孕妇欧美 | 日本天堂网| 少妇内射视频| 国产福利电影| 91精品91久久久中77777| 伊人国产视频| 日本成a人v网站在线观看| a v网站在线播放| 超碰超碰欧美| 日韩熟女精一区二区三区不卡| 国产久久成人| 97亚洲国产影视| 夫妻AV网站| 日本色色视频网站| 欧美亚性天堂| 精品久久97观看在线视频| 美女尤物人人操| 久久精品亚洲婷婷| 91天堂| 26uuu国产免费观看| 97超碰天天爱天天爱| 久久久91| 91精品久久久久久77777| 97欧美色资源| 嫩草美女久久| 欧美性爱一内片一区二区三区| 国产suv精品一区| 伊人影院综合是一个与深夜成人在线| 免费9 1久久| 精品91日日夜夜超清资源| 色99视频| 后入人妻无码| 中文字幕 国产区| 91超碰在线播放| 亚洲不卡不卡中文字幕不卡| 亚洲色图A| 午夜免费福利视频一区| 日韩欧美久久婷婷网站| 亚洲aV无码成人在线观看| 国产精品一区二区后入| 亚洲最大的综合性av| 加勒比人妻综合| 亚洲精品国产专区在线观看| 精品久久久久久久久久久久| 国产日韩在线播放av| 久久鲁夜| 久久久久久久久成人av解说| 茄子社区国产精品| 99久久久无码国产精品性男| 欧美亚洲手机在线| 91在线页| 日本羞羞的视频在线播放| 一区二区首页| 欧美性生活免费网| 在线小视频| av婷婷色婷婷色六月| 香蕉国产97| 香蕉久久国产AV一区二区| 精品一区二区三区麻豆| 中文字幕91综合| 国产精品盗摄 偷窥盗摄| 91国产美女丝袜足交精品视频| 亚洲一区二区三区播放在线| 色97国产69香蕉| 99久久99久久综合| 98人妻精品一区二区色欲| 人人超碰在线观看黄| 伊人影院综合是一个与深夜成人在线| 97超碰国产亚洲精品| 亚洲色欲天天人妻无码系列专区| 亚洲欧美另类图片| 精品九九九九九九九| 久久九九国产精品| 国产精品操| 狠狠亚洲| 欧美性特| 黄片com.| 日本精品五区| 男人的天堂无码| 天天欧美色| 亚乱色| 久久夜夜| 黄站在线免费观看| 蜜臀AV成人精品蜜臀AV久久| 国产97色在线| 午夜无遮挡男女啪啪视频| 麻豆色约约| 久久97资源 网| 91久热| 日韩国产欧美伦理在线 | 日本一本一区二区三区四区五区欧美日韩中文字幕 | 夜夜欧美| 老司机午夜福利视频一区二区| 激情综合五月| 少妇3P性爱自拍| 91无遮挡| 78m啪啪啪| a片亚洲一本通视频| 精品久久視頻在线| www.av在线观看| 午夜国产乱伦视频| 亚洲欧美日韩免费观看| 91情色在线| 走光一区92下载| 伊人97色天使| 狠狠操天天干| 日本一级性爱| 综合操逼| 艹精品| 亚洲男人综合| 亚洲不卡三级手机播放| 久草综合网| 美女91色黄18| 超碰天天操| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 太久视频| 国产强奸乱伦xd| 呦呦一区| 97色碰| 国产精品扒开腿做爽爽爽视频| 欧美,日韩,中文,另类| 欧美一区二区三区黄色影视| 9999亚洲精品| 天天综合网AV91| 美骚妇av高清在线| 国产乱码精品久久久久久| 欧美18禁91| 狠狠操一区二区| 超碰 另类 欧美| 久超碰这里只有精品| 久热大香蕉网站| 丰满人妻一区二区三区免费| 女人高潮抽搐喷水视频网站| 四虎影视永久在线观看精品免费网站 | 中文字幕第2页| 99热这里只有精品1| 久久久久久久久国产| 97伦乱| 亚洲色综网| 啊啊啊轻点在线观看| 999熟女精品| 爱丝福利| 美欧色综合| 久久男人的天堂| 性夜影院爽黄A爽免费动漫| 91处女在线观看| 国产精品国产亚洲区艳妇糸列| 国产肏逼网站| 日韩美女操b| 日韩乱伦视频| 九九九九九九九精品视频| 中文字暮97| 福利风月五月天影院| 看黑丝美女操逼青青网站| 狠狠操狠狠操操| 亚洲欧美成人网站AAA| 国产二区三区免费视频| 亚洲国产欧美另类自拍| 国内自拍 日韩激情 99| 97电影院超碰| 亚洲吊色| 大香蕉中文201| 囯产精品久久久久久久久久梁医生| 囯戸精品高潮呻吟旡码| 日韩欧美亚洲一区二区三区影院| 99热超碰| 蜜臀久久久国产| 欧美综色欧| 另类图片欧美激情综合| 亚洲av影院在线观看| 五月丁香啪啪啪| 一区二区三区四区久久视1| 1204人成网站色www| 超碰成人人人爽人人爽| 无码免费精品高清| 久久的网站啊啊啊啊啊| 亚洲狠狠入| 亚洲日韩美女丝袜美腿人妻视频| 亚洲国产97| blacked精品一区国产| 夜夜中出国产| 9997se| 欧美大香蕉久| 婷色五月| 岛国不卡超碰护士AV在线播放| 欧美不在线| 亚洲精品aa久久伊人| 蜜桃精品一区二区三区ww| 羞答答AV中文字| 国产视频一区二区三区在线免费观看 | 欧美男人一区| WWW美腿丝袜香蕉中文| 视频一区二区免费在线| 成人电影一区| 自拍第一页| 秋霞一级A片黄色视频| 好吊妞转入那个网| 超碰吊日色| 欧美视频一区二区在线| 青青草啪啪网| 国产美女高潮| h在线看免费版在线看| 东京热99999| 啪啪啪东京| 人妻一区久久二区三区色播| 精品在线蜜臀| 伊人久久88国产女| 四虎在线视频| 亚洲欧美日韩综合在线尤物 | 成人一道本免费视频| 欧美黑人XXXⅩ高潮交| 亚洲图片小说欧洲| 五月婷婷基地| 日韩欧美中文字幕搭讪巨乳美人妻视频| 色噜噜精品一区二区三| 午夜国产成人精品视频| 97色色网| 精品69网| 91久热这里只有精品| 天天爽天天操啊啊啊| 啊啊啊好爽快点啊啊啊嗯嗯| 亚洲高清综合网| 涩五月婷婷| 97亚洲在线| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 人人操人人大香蕉| 97久久国产亚洲精品超碰热| 国产69精品久久久久99尤物| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 白嫩少妇| 极品内射| 国产白嫩漂亮KTV在线| 亚洲色入欧美| 日韩黄色一区二区三区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 啊啊啊啊啊好舒服视频| 中文字幕成人理论在线| 全国男人天堂网| 欧美有码激情视频一区二区三区| 国产高清成人免费视频| 你草精品在线视频| 最近2019中文字幕国语免费版| 热热色综合网| 大香蕉碰| 久久av一级av少妇av高潮 | 午夜激情成人在线观看| 久久久成人免费av电影| 这里只有精品久久| 欧美日韩啪啪电影| 热热色青青草| 少妇毛片久久| www国产天美久久久| 大香蕉狠狠爱| 精品视频97| 成人国产精品三级A片| 成人久久久| 久干网| 有码专区最新中文字幕有码| 久久精品一区二区三区不卡| 亚洲激情综合另类男同| 欲香欲色综合天天伊人| 97亚洲资源| 99超级碰免费视频| 操逼日批| 国产熟女无套内射| 日韩中文字幕2020| 人妻天堂综合网| 芊芊操逼视频无码| 欧美天天综合| 91日日夜夜| 一区=区三区视频| 欧美性生活综合| 欧美性爱免费短视频| 99热这里都是精品| 亚洲男人天堂2013| 精品视频123区小说区| 成人免费不卡在线视频| www.亚洲黄色| 狠日欧美| 欧美肥臀在线| 久久久男人的天堂| 亚洲最大的黄色电影网站。| 亚洲天堂热| 亚洲国产成人福利在线观看| 99热| 久久久久久久久一区二区三区| 日影院久久婷婷夜夜网| 美女露胸露奶头| 日本久久99| 亚欧Av| 亚洲精品xxx| 午夜福利1区2区3区| 国产熟女无套内射| 久久久精品,3| 国产乱不卡| 亚州男人的天堂| 99青青草国产视频| 一区二区三区四区五区高清无码永久视频 | 日韩人妻播放| 加勒比在线观看一区二区| 中文字幕欧美日韩三级| 啊啊啊爽爽| 国产精品乱码久久久久久久久| 久久精品日韩专区免费观看| 99热这里只有是精品10| 青青草日本中文字幕| 国产自产91区13区| 麻豆久久久久久久久丝袜 | 九九热三级片| 97超碰欧美手机| 欧美日韩久久精品爱爱| 精品97久久| 奶水 人妻 哺乳 在线| 香港久久久| 亚欧洲日韩国产精品| 精品在线78| 97在线视频免费看| 78超碰| av影片在线观看不卡| 欧美天天综合网| 欧美中文综合| 夜草网站| 午夜操逼不卡| 操逼视频亚洲| 亚洲AV无码乱码在线观看性色| 婷婷色导航| 天天舔天天| 婷婷国产精品九区| 久久久久久91香蕉国产| 美性中文综合网| 国产性爱欧美性爱在线| 欧洲自拍第一页| 中文字幕第2页| 人妻精品免费一二三区| 中日亚韩免费视频| 人、人、摸,人、人、草| 99无码视频| 欧美亚综合色图| 天天综合网AV91| 午夜九九| 国产免费黄色一级大片| 乱伦一区二区三区‘| 丁香九月激情啪| 久久久com| 91麻豆一二三区| 欧美色蜜桃97| 韩美日操逼| 国语av最新自产拍在线观看| 99爱视频| 精品人妻一区春色| 日韩精品一区二区人人人| A 天堂| 五月丁香社区婷婷日韩欧美精品影院 | 97天天爽| 秋霞福利网| 中欧人妻丝袜中文字幕| 99在线无码精品秘 入口黑人| 日韩啪啪视频| 欧美色一二三| 欧洲精品二区| 啪啪啪精品视频| 日韩偷拍色图| 激情婷婷丁香网| 日本伦乱九九九综合| 日本精品一区二区中文字幕| 国产视频一区二区三区久久亚洲天堂| 亚洲欧美日韩中文久久自慰| 麻豆精品一区二区三区四区免费观看| 人妻少妇被猛烈进入中| 天天添天天干电影| 骚日日av| 韩国一级AAA| 99热超碰| 91狠狠综合久久| 一本一道波多野毛片中文在线| 伊人久久青青草| 午夜福利合集| AA特级绝黄| 国产中文福利| 夜夜骑夜夜操| 人妻久久久久久| 影音资源男人日韩| 精品九九国产无码| 欧美色九九九| 极品色| 六月丁香五月婷婷| 欧美色图自拍| 无码国产精品久久久久| 国模不卡一本二本三电影| 亚洲欧美日韩激情不卡| 色婷婷导航| 亚洲在钱| 岛国在线一区二区三区| 欧美暴力猛交| 亚洲成aⅴ人片不卡无码| 91女网站| 天天看天天日| 人妻天天操天天爽视频免费 | 97久精品| 亚洲色婷婷久久久综合日本| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 国产激情久久| 国产午夜福利合集| 探花一区在线| 久久久久深夜无码| 麻豆国产免费影片| 久久有码视频| 色婷婷电影网| 成人久久久| 天天干天天日天天射黄色| 九九九九九九视频免费| 91超碰人人| 日本一区二区亚洲综合| 日本中文字幕高跟| 男女激烈网站最新| 欧美韩日精品资源| 在线视频日韩欧美国产| 亚洲国产97在线精品一区| 中文字幕在线免费观看视频| 色淫网站优优视频| 超踫中文字幕| 亚洲一区二区三区春色| yazhousetuoumei| 国产精品网址| 超碰视97中文| 久久香蕉网| 日韩精品在线视频,日韩精品……| 久久9精品视频| 亚洲春色欧美激情自拍| 欧美日韩天堂| 九九黄色网| 91夜色| 亚洲国内精品成人不卡| 九九综合久久| 九九九九热| 热久日综合| 韩国一级婬片A片AAAAA| 精品久| 97超碰资源网| 婷色五月| 黑人精品XXX一区一二区| 一二三四视频在线社区中文字幕| 日韩av一级黄片| 综合 亚洲 欧美| 美女91在线观看| 色爱三区| 国产精品午夜AV完会免费| baiduhicn.com。| 97婷婷色| 欧美亚洲一级在线观看| 欧美在线大香999| 欧美日日夜夜| 日韩乱插| 情趣丝袜无码操逼视频| 久久成人东京热人妻| 中日无幕一二三四区| 精品人妻av在线播放| 天天亚洲| 久久熟女久| 综合网欧美在线| 欧美αv.com| 精品黄色电影| 2019亚洲男人天堂| 好爽,再快点啊哈嗯嗯嗯嗯| 凸凹视频在线观看| 1769一区| 久久丝袜| 97超碰中文| 色婷婷在线视频精品导航| 性爱精品一区| 国产日逼视频| 97超碰色| 国产一线二线三线av| 色老牛| 久久色一区| 色婷婷亚洲婷婷| 人人操人人搞人人草| 久久久新亚洲AV| 嗯嗯不要 视频| 自拍亚洲综合| 性色国产东北露脸精品视频| 夜夜操二区| 日本三级R| 美女尤物人人操| 久久这里只精品免费福利| 青草一区二区| 91日韩网站| 神马九九九| 蜜屁Av| 中文幕97| 97精品视频免费| 精品人妻1237| 日本久久久久久久久| 五月综合视频| 久久ww| 色爱综合网| 入口操逼网站| α√在线| 亚洲成?V人片在线观看福利| 天天综合网日韩7799| 久综合国内精品自在自线| 青娱乐休闲视频在线观看| 色欲久久99国产精品久久久久久| 日韩AV噜噜噜一区二区三区四区| 在线五区| 久久久久久九九九九九九| 国产女人9999| 嗯~啊~快点 死我视频免费看网站| 青青草字幕AV| 国产精品久久久久久久久久久久久久久久 | 久久久久人妻| 五月激情小说| 天天日少妇逼AV| 精品一区二区三区蜜桃臀赵总 | 午夜传煤十二区精品| 亚洲AV无码AV吞精久久久久| 日本高清免费一本视频在线观看| 一区二区三区美女超清| 一本色道综合久久欧美| 操www| 欧美日韩性爱无码| 国产AV久久久蜜爱影集| 桃花色涩综合影院| 国产女人高潮视频| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 丝袜亚洲91| 欧美激情黑人| 凌辱美少妇久久aV| 久久永久无码人妻视频| 日产欧美电影一区二区三区| 国产精品一区二区久久精品| 亚洲精品天堂久久A∨51成人漫| 亚洲乱码国产乱码精网站| 久久久国产成人一区二区三区在线| 日韩激情啪啪| 亚洲精品一区中文字幕乱码| 北条麻妃99精品青青久久| 成人天天看站长推荐| 亚洲 无码 有码 中文字幕| 校园春色 亚洲| 日本阿v天堂在线观看| av无线看| 九九RE视频在线精品| 99999精品视频| 夜夜爽爽夜夜精品视频| 東南亚性呦成人伦理资源在线视频| 999久久久| 中日亚韩免费视频| 99这里有精品视频| 色综和网| 伊人麻豆传媒| 天堂俺去俺来也www久久婷婷| 制服乱伦| 美女97超碰| 淫纸中9区| 无码人妻精品一区二区三区99不卡| 久久久久国产精品喷潮免费观看臀| 丁香久久| 美女黄码视频午夜| 2017大香蕉| 户外裸露刺激视频第一区| 北京专精特新企业招聘信息| 校园春色欧美| 绯色一区二区三区不卡少妇| 亚洲最大AV网| 婷婷五月天久久精品视频一区二区三区| 久久美国毛片| 2024年最新色情网站在线观看| 欧美极度丰满熟妇hd| 男人天堂站| 久久老熟女| 综合操逼| 精品国产99| 亚洲精品97| 综合色99| 97se综合| 翔田千里无码中出中文字幕| 亚洲天堂电影精品一区| 日韩黄色av中文字幕| 五月天激情国产综合婷婷婷| 无码男人天堂| 襙一襙| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 亚洲青色欧美| 精品免费视频国产一区| 99综合免费视频| 蜜臀无码一区二区| 日本操逼视频不卡直接放| 老鸭窝亚洲毛片| 亚洲男人在线观看天堂 | 人妻大香蕉| 国产精品视频麻豆入口| 美女高潮视频91| 久久精品熟女亚洲AV麻豆软件| 亚洲欧美成人在线| 91精品国产长腿丝袜美女| 午夜爽爽爽在线观看永久入口姬片| 91亚洲影院综合| 国产精品福利资源在线尤物| 成人综合色网| 骚女天天综合网| 久久久蜜桃一区二区三区| 99热精品在线观看| 97最新在线播放视频| 乱色老一区二区三区的观看方式| 91九色蝌蚪在线观看| 日韩人妻无码精品系列| 超碰人人操97碰| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 羞答答AV中文字| 7777欧美成是人在线观看| 二级毛片| 国产日韩欧美三级片| 久草电影网| 99操逼| 91成人无码| 日本天天人人狠狠在线日美女| 亚洲日韩国产精品| 麻豆区99999| 2019精品国产无码成人| 绑缚麻绳人妻寝取完整版| 国产免a费看黄片在线| 东方亚洲在线操逼天堂| 亚欧韩av| 日韩9区| 嗯嗯啊啊亚欧精品| 日韩激情啪啪啪| 视频二区熟女人妻| 久久婷色| 97在线观看免费视频| 狠肏骚人妻| 欧美成人AⅤ大片在线观看| 国产天天噜一噜久久久| 婷婷五月天成人网| 精品无码久久久久久久杏吧| 人人澡综合涩| AV无码久久久精品| 男人天堂新| 欧美精品久久96人妻无码| 老司机射| 欧美美女视频| 欧美一区二区三区大综合| AV污污污污| 躁躁躁日日躁2020| 欧美72网页| 亚洲欧洲国产综合av| 天天综合网91| 久久久久久久久久久999| 操逼网站地址| 少妇综合| 亚洲诱惑天堂| 青娱乐亚洲热| 日韩一级成人毛片免费观看| 伊色久人大在线| 操b网站亚洲无码| 日韩性爱视频免费在线| 国产老太乱伦一区| 天天拍天| 97综合在线观看| 国产极品一区二区三区三州| 久久久久久性爱免费视频| 中出789在线视频| 激情五月天网| xxxx网站亚洲精品| 资源新线在线天堂| 在线观看午夜婷婷久久久久清性观看| www.婷婷五月天| 国产av波波国产精品| 99av| 97久久天天综合色天天综合色电影| 麻豆天美电影一区二区| 欧美日韩国产中文精品字幕自在自线 | 天堂8在线新版官网| 国产精品久久久久久久无码AV| 亚洲欧美天| 一区二区三区蜜桃成人撸久久东京热| 日韩av乱伦| 精品人妻av在线播放| 思思久热在线精品66| 欧美综合色图片| 亚洲视频二区| 中文字幕一二三区| 色五月激情网| 国语国产操逼伊人AV网| 无遮挡又黄又刺激的视频| 综合色欧美| 日韩色图 一区二区| 在线视频五十市| www.欧精品| 色噜噜狠狠色综无码久久合欧美| 欧美日韩 强奸乱伦| 妇女性内射冈站HDWWWCOM| 亚洲在饯| 欲香欲色综合天天伊人| 日韩亚洲97| 60秒免费小视频| 天美一二三在线观看Av| 殴美,日韩国产伦精品| 久久久久婷婷| 亚洲中文字母在线播放| 太久视频| 九色精品视频导航1| 成人97人人超碰人人| 中文乱码字字幕在线第5页| 日本免费人成视频播放120秒| 亚洲毛片基地专区| 97资源久久| 97干在线视频| 国产精品久久久亚洲第一牛牛_在线观看 | 亚洲日韩资源| 999九九精品| 久色99999| 亚精品无码毛片一区二区三区| 麻豆一区二区三区精品| 日日AV加勒比| 久超超碰| 动漫av中文| 九九九九免费视频| 插B在线观看| 快播久久人人aV| 久久线上视频免费看| 视频二区美腿制服人妻欧美| 东京热,男人的天堂| 91bbbbbb| 九九热AV| 澳门黄片一香蕉视频| 国产精品久久久无码aV去| 欧美日韩国产另类综合| 欧美色视频在线| 亚洲欧洲国产综合av| 超碰碰碰碰| 国产精品久久久视频| 性生活久久久久久久久久| 18禁久极品美女久久哦哟呀!|