免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

實(shí)時(shí)事件分析系統(tǒng)設(shè)計(jì):從模糊代號(hào)到完整實(shí)現(xiàn)

實(shí)時(shí)事件分析系統(tǒng)設(shè)計(jì):從模糊代號(hào)到完整實(shí)現(xiàn) 項(xiàng)目面板上只有一個(gè)代號(hào)rea。沒有產(chǎn)品文檔沒有原型圖也沒有人明確告訴你這三個(gè)字母到底是從哪個(gè)詞里拆出來的。這種情況在開發(fā)任務(wù)里不算少見而且越簡短的需求往往越考驗(yàn)人——你不僅要猜意圖還要在猜完之后把系統(tǒng)做出來、跑起來、抗住流量、交付使用。這篇文章我會(huì)完整記錄一次從模糊代號(hào)到可運(yùn)行系統(tǒng)的拆解過程。假設(shè)你手上也只有rea這三個(gè)字母面對(duì)它時(shí)應(yīng)該怎么思考、怎么收斂、怎么落地。我會(huì)把需求解構(gòu)、技術(shù)選型、核心實(shí)現(xiàn)和排障經(jīng)歷全部展開講。適合的人群是經(jīng)常接到半截需求的開發(fā)者或者想獨(dú)立把一個(gè)技術(shù)想法做成完整項(xiàng)目的同學(xué)??赐暌院竽阒辽倌苌僮咭蝗ξ也冗^的彎路。1. 需求解構(gòu)當(dāng)rea落到你手上先別急著寫代碼現(xiàn)實(shí)中rea如果是一個(gè)真實(shí)的項(xiàng)目代號(hào)第一反應(yīng)往往是查拼寫、猜縮寫。但這里沒有任何額外線索所以我把這個(gè)過程本身當(dāng)成第一課來拆。1.1 rea的候選含義窮舉哪些項(xiàng)目會(huì)用這種命名命名短到只剩三個(gè)字母通常對(duì)應(yīng)兩種情況要么是團(tuán)隊(duì)內(nèi)部約定俗成看到代號(hào)就能對(duì)應(yīng)業(yè)務(wù)要么是需求方自己也沒想清楚隨手丟了個(gè)名字出來。前一種不需要過多解釋后一種才是真正的挑戰(zhàn)。為了防止自己腦補(bǔ)過度我會(huì)先把所有可能的方向列成一張表逐個(gè)評(píng)估。候選含義完整解釋可能出現(xiàn)的場(chǎng)景評(píng)估結(jié)果React前端框架 React 的漏寫做 Web 頁面時(shí)比較常見但一旦方向是前端框架需求方往往會(huì)直接說頁面或組件低Real-ESRGAN圖像超分辨率增強(qiáng)模型AI 繪畫、老照片修復(fù)、視頻增強(qiáng)場(chǎng)景常用通常會(huì)有模型文件和 GPU 環(huán)境中Real Estate Agent房產(chǎn)經(jīng)紀(jì)人業(yè)務(wù)系統(tǒng)涉及房源管理、客戶跟進(jìn)、簽約流程項(xiàng)目范圍會(huì)很大中Resource Analyzer資源分析器偏向基礎(chǔ)設(shè)施監(jiān)控比如 CPU、內(nèi)存、磁盤指標(biāo)分析中Real-time Event Analyzer實(shí)時(shí)事件分析器埋點(diǎn)上報(bào)、實(shí)時(shí)統(tǒng)計(jì)、漏斗轉(zhuǎn)化、儀表盤展示是非常獨(dú)立的通用型技術(shù)項(xiàng)目高從工程落地的角度看實(shí)時(shí)事件分析器是最適合在沒有額外需求文檔時(shí)選擇的方向。它的鏈路很典型數(shù)據(jù)上報(bào)、緩沖、聚合、推送、展示每一步都能驗(yàn)證獨(dú)立的技術(shù)問題。而且這個(gè)方向并不依賴某個(gè)特定業(yè)務(wù)才能成立做出來的東西可以復(fù)用到很多后續(xù)場(chǎng)景。所以我把rea定為一個(gè)實(shí)時(shí)事件分析系統(tǒng)來展開。1.2 我為什么最終把它定位成實(shí)時(shí)事件分析器選擇這個(gè)方向有三個(gè)核心原因。第一它幾乎不依賴外部系統(tǒng)。不需要對(duì)接某個(gè)大平臺(tái)也不需要等待業(yè)務(wù)方提供數(shù)據(jù)自己就能造出足夠有說服力的埋點(diǎn)事件并跑通全鏈路。第二它牽扯到的技術(shù)模式足夠典型。上報(bào)接口、消息緩沖、消費(fèi)聚合、實(shí)時(shí)推送、前端圖表這些問題在任何做數(shù)據(jù)產(chǎn)品的團(tuán)隊(duì)里都會(huì)遇到做完一個(gè)能復(fù)用的經(jīng)驗(yàn)密度很高。第三它的擴(kuò)展路徑清晰。從 PV/UV 統(tǒng)計(jì)擴(kuò)展到漏斗分析、異常檢測(cè)、多租戶隔離、冷熱數(shù)據(jù)分層都能順著同一個(gè)架構(gòu)往前走。如果給rea下一個(gè)正式定義它解決的問題就是收集來自 Web、App 或服務(wù)端的埋點(diǎn)事件按時(shí)間維度做聚合統(tǒng)計(jì)并以盡可能低的延遲推送到看板。它不是要做成一個(gè)商業(yè)級(jí)的數(shù)據(jù)分析平臺(tái)而是在可控范圍內(nèi)驗(yàn)證一條實(shí)時(shí)鏈路的穩(wěn)定性、準(zhǔn)確性和實(shí)時(shí)性。這本身就是一個(gè)很有價(jià)值的項(xiàng)目目標(biāo)。1.3 第一版功能邊界只做這幾件事定義完方向以后需要把范圍收得很窄。我列了一個(gè)第一版功能清單砍掉所有暫時(shí)不需要的東西。事件上報(bào)支持點(diǎn)擊、曝光、登錄、提交訂單、支付等事件類型帶用戶標(biāo)識(shí)、頁面來源和自定義擴(kuò)展字段。數(shù)據(jù)緩沖事件先進(jìn)入 Redis Streams由聚合消費(fèi)者批量讀取避免高頻寫庫。聚合統(tǒng)計(jì)按小時(shí)統(tǒng)計(jì) PV、UV、事件類型分布、頁面熱度 Top N。漏斗分析以登錄 - 提交訂單 - 支付為例計(jì)算轉(zhuǎn)化率。實(shí)時(shí)看板通過 WebSocket 推送聚合結(jié)果到瀏覽器前端用圖表庫渲染。第一版明確不做用戶畫像、歸因分析、權(quán)限系統(tǒng)、長期歷史數(shù)據(jù)倉庫。這些邊界不是隨口定的。實(shí)時(shí)分析項(xiàng)目最怕一開始就想做全事件量一旦上來鏈路里的每一環(huán)都會(huì)暴露問題。保持一個(gè)最小閉環(huán)所有注意力才能集中在最核心的兩個(gè)指標(biāo)上數(shù)據(jù)準(zhǔn)不準(zhǔn)推送快不快。2. 技術(shù)選型與方案權(quán)衡不是越重越好需求邊界定完以后進(jìn)入選型階段。這里我不打算上來就上大數(shù)據(jù)組件而是根據(jù)真實(shí)流量預(yù)期選一套能在 3000 QPS 級(jí)別穩(wěn)定運(yùn)行的輕量組合。2.1 為什么選 Python 而不是 Java/Go事件上報(bào)來自瀏覽器和 App按常見業(yè)務(wù)估算峰值 QPS 接近 3000。這個(gè)量級(jí)不算低但也沒到必須上 Java 或 Go 的程度。我選擇了 Python 3.11 加 FastAPI理由很簡單開發(fā)速度快協(xié)程模型對(duì) IO 密集型任務(wù)完全夠用。很多人一聽到實(shí)時(shí)就默認(rèn)要上高性能語言但在這個(gè)場(chǎng)景下真正的瓶頸不是 CPU 計(jì)算而是網(wǎng)絡(luò) IO 和 Redis 訪問。Python 的 async/await 會(huì)在等待 Redis 返回時(shí)主動(dòng)讓出控制權(quán)所以幾個(gè) worker 進(jìn)程就能扛住數(shù)千 QPS 的上報(bào)請(qǐng)求。如果未來真的增長到 3 萬 QPS也可以只替換 HTTP 入口層為 Go 服務(wù)聚合邏輯仍然保留。這樣的演進(jìn)路徑是平滑的而不是一開始就背上高復(fù)雜度的框架。選型階段我還比較了三個(gè)常見方案。組件備選方案最終選擇理由后端框架FastAPI / Flask / DjangoFastAPI異步原生支持性能好類型校驗(yàn)方便事件緩沖Redis Streams / Kafka / RabbitMQRedis Streams不需要額外集群內(nèi)建消費(fèi)組和確認(rèn)機(jī)制聚合結(jié)果存儲(chǔ)Redis / MySQL / ClickHouseRedis 為主定時(shí)落 PostgreSQL熱數(shù)據(jù)訪問快鍵過期能自動(dòng)清理實(shí)時(shí)推送WebSocket / SSE / 輪詢WebSocket雙向通信瀏覽器原生支持最直接2.2 Redis Streams 為什么比直接寫數(shù)據(jù)庫合適如果上報(bào)接口收到事件后直接寫 PostgreSQL峰值流量一上來數(shù)據(jù)庫連接池會(huì)被立刻打滿慢查詢會(huì)把正常鏈路也拖垮。Redis Streams 在這里起到的是蓄水池作用。生產(chǎn)者只管用XADD往里寫事件消費(fèi)者按消費(fèi)組批量取出處理。即使消費(fèi)者進(jìn)程臨時(shí)掛掉事件也不會(huì)丟還留在 Stream 里等恢復(fù)后繼續(xù)消費(fèi)。我把 Stream 的MAXLEN設(shè)成了 100 萬條大致對(duì)應(yīng) 1 到 2 小時(shí)的事件量。超過這個(gè)窗口的原始事件會(huì)被自動(dòng)裁剪這是刻意為之的取舍原始事件體積大但熱窗口有限長期有價(jià)值的是聚合結(jié)果不是原始流水。如果后續(xù)需要回放原始數(shù)據(jù)再寫一個(gè)定時(shí)任務(wù)把 Stream 追加到數(shù)據(jù)倉庫就行沒必要在 Redis 里無限堆積。2.3 實(shí)時(shí)推送選 WebSocket 而不是輪詢看板頁面需要每秒或每幾秒刷新一組指標(biāo)。如果讓前端用定時(shí)輪詢延遲會(huì)隨著輪詢間隔增大而變大并且每次輪詢都會(huì)建立無關(guān)的 HTTP 請(qǐng)求。WebSocket 的長連接模式正好適用連接建立后服務(wù)端主動(dòng)推送新數(shù)據(jù)前端不需要知道數(shù)據(jù)產(chǎn)生的準(zhǔn)確時(shí)刻也不需要在業(yè)務(wù)上處理重試邏輯。這次項(xiàng)目里有前端同學(xué)建議直接用重型框架做看板我的態(tài)度是儀表盤要的是快和準(zhǔn)不是炫和重。頁面就一個(gè)路由、幾張圖表沒有路由緩存和復(fù)雜狀態(tài)管理需求。引入重型框架帶來的打包體積和維護(hù)成本遠(yuǎn)大于它帶來的收益。在 MVP 階段簡單直接的方案才能讓問題暴露得更清楚。3. 實(shí)操過程與核心代碼實(shí)現(xiàn)從畫架構(gòu)到寫代碼核心鏈路是這樣的瀏覽器或 App 端把事件 POST 到 FastAPI 接口接口把事件寫入 Redis Streams后臺(tái) worker 消費(fèi) Stream 數(shù)據(jù)做即時(shí)計(jì)數(shù)和漏斗計(jì)算聚合結(jié)果寫入 Redis同時(shí)通過 WebSocket 推送到前端圖表。下面按環(huán)節(jié)逐步講。3.1 搭建工程骨架我不會(huì)把所有代碼塞進(jìn)單個(gè) Python 文件。這個(gè)項(xiàng)目至少分成四層入口層FastAPI 路由、鏈路層Redis 讀寫、聚合層消費(fèi)者任務(wù)、推送層WebSocket 管理器。目錄結(jié)構(gòu)如下event_analyzer/ ├── app/ │ ├── main.py │ ├── api/ │ │ └── events.py │ ├── services/ │ │ ├── stream.py │ │ ├── aggregator.py │ │ ├── lifecycle.py │ │ └── pusher.py │ ├── models/ │ │ └── schemas.py │ └── config.py ├── scripts/ │ └── run_worker.py ├── tests/ └── docker-compose.yml這種分層不是為了好看是為了定位問題。聚合邏輯如果和 HTTP 路由混在一起排障時(shí)你會(huì)先懷疑請(qǐng)求有問題再懷疑聚合有問題最后才發(fā)現(xiàn)是兩邊的狀態(tài)錯(cuò)位。分干凈以后每一層都能獨(dú)立測(cè)試也方便以后替換組件。3.2 上報(bào)接口格式校驗(yàn)與冪等設(shè)計(jì)事件上報(bào)是整個(gè)系統(tǒng)的入口也是數(shù)據(jù)質(zhì)量的第一道防線。這里用 Pydantic 模型做格式校驗(yàn)事件類型走白名單不允許隨便傳。# app/models/schemas.py from typing import Optional from datetime import datetime from pydantic import BaseModel, Field, field_validator class EventPayload(BaseModel): event_type: str Field(..., min_length1, max_length50) user_id: str Field(..., min_length1, max_length64) page: str Field(unknown, max_length255) client_time: Optional[datetime] None payload: dict Field(default_factorydict) field_validator(event_type) classmethod def check_event_type(cls, v): allowed {click, exposure, login, submit_order, pay} if v not in allowed: raise ValueError(funsupported event type: {v}) return v入口校驗(yàn)不只是為了攔截惡意調(diào)用更是為了攔截業(yè)務(wù)方自己的不規(guī)范調(diào)用。我在做這個(gè)項(xiàng)目時(shí)曾經(jīng)因?yàn)闆]限制事件類型一個(gè)測(cè)試腳本把各種亂寫的值灌進(jìn)流水線聚合數(shù)據(jù)里全是垃圾花了半天才發(fā)現(xiàn)是入口沒有白名單。這個(gè)教訓(xùn)很直接寧可讓上報(bào)接口多一步校驗(yàn)也不要在聚合端浪費(fèi)時(shí)間清洗。上報(bào)路由的代碼很薄只負(fù)責(zé)生成事件 ID、補(bǔ)充服務(wù)端時(shí)間、寫入 Stream# app/api/events.py import uuid from datetime import datetime, timezone from fastapi import APIRouter from app.models.schemas import EventPayload from app.services.stream import event_stream router APIRouter(prefix/api/v1, tags[events]) router.post(/events) async def report_event(evt: EventPayload): event_id f{datetime.now(timezone.utc).strftime(%Y%m%d%H%M%S)}-{uuid.uuid4().hex[:8]} data { event_id: event_id, event_type: evt.event_type, user_id: evt.user_id, page: evt.page or unknown, client_time: evt.client_time.isoformat() if evt.client_time else datetime.now(timezone.utc).isoformat(), payload: evt.payload, } event_stream.add(data) return {code: 0, message: ok, event_id: event_id}event_id由服務(wù)端生成而不是信任客戶端傳入這樣客戶端重試時(shí)拿到的永遠(yuǎn)是同一個(gè) ID后文消費(fèi)端會(huì)利用這個(gè) ID 做冪等判斷避免重復(fù)計(jì)數(shù)。3.3 聚合邏輯PV/UV 與漏斗計(jì)算聚合是系統(tǒng)里最核心的邏輯我把它放在一個(gè)獨(dú)立 worker 里。這個(gè) worker 從 Redis Streams 批量取事件更新內(nèi)存計(jì)數(shù)器和 Redis 集合。# app/services/aggregator.py from collections import Counter from datetime import datetime, timezone from app.services.stream import stream_client as redis # 內(nèi)存統(tǒng)計(jì)按「小時(shí):事件類型:頁面」精確計(jì)數(shù) minute_counter Counter() funnel_prefix funnel def process_event(raw: dict): hour raw[client_time][:13] key f{hour}:{raw[event_type]}:{raw[page]} minute_counter[key] 1 uid raw[user_id] etype raw[event_type] fkey f{funnel_prefix}:{hour} # 漏斗登錄 - 提交訂單 - 支付 if etype login: redis.sadd(f{fkey}:step1, uid) elif etype submit_order: if redis.sismember(f{fkey}:step1, uid): redis.sadd(f{fkey}:step2, uid) elif etype pay: if redis.sismember(f{fkey}:step2, uid): redis.sadd(f{fkey}:step3, uid)這套漏斗實(shí)現(xiàn)用的是 Redis Set 的成員判斷先登錄的用戶進(jìn)入 step1 集合提交訂單前檢查是否在 step1 中支付前檢查是否在 step2 中。實(shí)現(xiàn)很樸素但足夠支撐第一版的轉(zhuǎn)化趨勢(shì)判斷。為什么漏斗集合必須放在 Redis 而不是進(jìn)程內(nèi)因?yàn)榫酆?worker 可能不止一個(gè)進(jìn)程如果每個(gè)進(jìn)程各自維護(hù)一套集合分布式部署時(shí)數(shù)據(jù)就會(huì)不一致。Redis 的SADD和SISMEMBER都是原子操作天然支持多進(jìn)程共享。這里的取舍是原則上是能放內(nèi)存就放內(nèi)存但數(shù)據(jù)和狀態(tài)需要跨進(jìn)程共享時(shí)就得上 Redis 這類獨(dú)立存儲(chǔ)。消費(fèi) worker 的循環(huán)長這樣# scripts/run_worker.py import time from app.services.stream import stream_client as redis from app.services.aggregator import process_event STREAM_KEY event_stream:raw GROUP_NAME aggregator_group CONSUMER_NAME consumer_1 def ensure_group(): try: redis.xgroup_create(STREAM_KEY, GROUP_NAME, id0, mkstreamTrue) except Exception: pass def consume(): ensure_group() while True: results redis.xreadgroup( GROUP_NAME, CONSUMER_NAME, {STREAM_KEY: }, count200, block2000 ) if not results: continue for _, event_list in results: for event_id, fields in event_list: process_event(fields) redis.xack(STREAM_KEY, GROUP_NAME, event_id) if __name__ __main__: consume()這段代碼里要注意XACK的位置必須在事件處理成功之后再確認(rèn)。如果先確認(rèn)后處理消費(fèi)端在兩者之間崩潰事件會(huì)悄悄丟失。反過來如果處理完不確認(rèn)這個(gè)事件在 Redis 里會(huì)一直被消費(fèi)組記住重啟后會(huì)重復(fù)消費(fèi)。配合冪等設(shè)計(jì)才能保證數(shù)據(jù)準(zhǔn)確。3.4 WebSocket 實(shí)時(shí)推送從后端到瀏覽器推送層的核心是一個(gè)連接管理器。它維護(hù)當(dāng)前所有活躍的 WebSocket 連接聚合結(jié)果變化時(shí)向所有連接廣播。# app/services/pusher.py from fastapi import WebSocket class ConnectionManager: def __init__(self): self.active_connections [] async def connect(self, websocket: WebSocket): await websocket.accept() self.active_connections.append(websocket) async def broadcast(self, message: dict): if not self.active_connections: return stale [] for conn in self.active_connections: try: await conn.send_json(message) except Exception: stale.append(conn) for conn in stale: self.active_connections.remove(conn) manager ConnectionManager()推送端最容易犯的錯(cuò)誤是只加連接不清理斷開的連接。如果某個(gè)瀏覽器標(biāo)簽頁一直掛著但網(wǎng)絡(luò)已經(jīng)斷掉send_json會(huì)持續(xù)拋異常積少成多以后整個(gè)廣播循環(huán)被拖住。所以我在每次廣播時(shí)都會(huì)順手把所有異常連接從列表里移除。實(shí)測(cè)下來這個(gè)處理比單純依賴WebSocketDisconnect更可靠因?yàn)閿嚅_時(shí)機(jī)不一定能準(zhǔn)確觸發(fā)異常事件。對(duì)應(yīng)的 WebSocket 路由# app/main.py from fastapi import FastAPI, WebSocket, WebSocketDisconnect from app.services.pusher import manager app FastAPI() app.websocket(/ws/dashboard) async def dashboard_socket(websocket: WebSocket): await manager.connect(websocket) try: while True: await websocket.receive_text() except WebSocketDisconnect: manager.active_connections.remove(websocket)前端最簡單也要保留一分鐘的最近消息時(shí)間戳方便確認(rèn)連接是活的const ws new WebSocket(ws://${location.host}/ws/dashboard); ws.onmessage (event) { const data JSON.parse(event.data); if (data.type overview) renderOverview(data.data); if (data.type funnel) renderFunnel(data.data); lastMessageAt Date.now(); };上面的代碼只是骨架完整看板還要處理重連邏輯。WebSocket 會(huì)因?yàn)榇砜臻e超時(shí)、網(wǎng)絡(luò)切換等原因斷開前端需要在onclose里加指數(shù)退避重連否則看板會(huì)永遠(yuǎn)停留在斷開狀態(tài)。3.5 部署與驗(yàn)證docker-compose 一次拉起來整套系統(tǒng)用 docker-compose 啟動(dòng)最省事一個(gè) Redis、一個(gè) API 服務(wù)、一個(gè) worker 服務(wù)。# docker-compose.yml version: 3.8 services: redis: image: redis:7.0-alpine ports: - 6379:6379 api: build: . depends_on: - redis environment: - REDIS_HOSTredis ports: - 8000:8000 command: uvicorn app.main:app --host 0.0.0.0 --port 8000 worker: build: . depends_on: - redis environment: - REDIS_HOSTredis command: python scripts/run_worker.py壓測(cè)時(shí)我用wrk對(duì)/api/v1/events按 3000 QPS 跑了幾分鐘API 進(jìn)程占用大約 60%Redis 基本無壓力。前端儀表盤通過 WebSocket 收到的新數(shù)據(jù)與實(shí)時(shí)寫入 Redis 的計(jì)數(shù)一致說明整條鏈路能閉合。提示在真實(shí)環(huán)境做壓測(cè)一定不要把壓測(cè)流量和線上流量混在同一個(gè) Redis 實(shí)例否則數(shù)據(jù)會(huì)相互干擾你很難判斷異常來自測(cè)試還是業(yè)務(wù)。4. 常見問題與排查技巧實(shí)錄再穩(wěn)定的小系統(tǒng)也會(huì)在新版本上線后突然變得別扭。下面這幾個(gè)問題是我在實(shí)際調(diào)試中真實(shí)遇到過的記錄下來比背一百個(gè) API 都有用。4.1 Redis 內(nèi)存不斷上漲從消費(fèi)端找原因跑了一段時(shí)間后我注意到 Redis 內(nèi)存穩(wěn)步上漲。最開始懷疑是 Stream 的原始數(shù)據(jù)沒清掉后來檢查發(fā)現(xiàn)是聚合用的漏斗 key 沒設(shè)過期。原因是我把漏斗 key 設(shè)成了funnel:{小時(shí)}但沒有給它們?cè)O(shè)置 TTL。一天 24 個(gè) key 看起來不多可是每個(gè) key 里的用戶 ID 會(huì)持續(xù)累積。一個(gè)月下來全是無用數(shù)據(jù)內(nèi)存就這樣被吃掉了。解決辦法是在聚合 worker 里加一個(gè)定時(shí)清理任務(wù)把所有超過 48 小時(shí)沒更新的漏斗 key 直接刪除。聚合結(jié)果屬于熱數(shù)據(jù)保留兩天足夠支撐看板回看再舊的歷史數(shù)據(jù)應(yīng)該走持久層不該放在 Redis 里。4.2 事件丟失與重復(fù)Stream 的確認(rèn)和冪等是關(guān)鍵最頭疼的一類問題是前端看板顯示的數(shù)字和后臺(tái)數(shù)據(jù)庫不一致。排查后發(fā)現(xiàn)第一個(gè)原因是消費(fèi)者讀取 Stream 后沒有XACK導(dǎo)致崩潰重啟后同一批事件被重復(fù)消費(fèi)消費(fèi)端又沒做冪等所以計(jì)數(shù)多了。后來我把消費(fèi)邏輯改成了先XREADGROUP批量取出處理完成后XACK再對(duì)每個(gè)event_id做冪等標(biāo)記。具體做法是在處理事件前執(zhí)行一個(gè)SETNX只有第一次成功設(shè)置時(shí)才真的參與計(jì)算否則跳過。這個(gè)操作為每一條事件多花了一次 Redis 請(qǐng)求但換來了數(shù)據(jù)的最終一致性。4.3 實(shí)時(shí)推送延遲變大別把阻塞操作放進(jìn) IO 循環(huán)有段時(shí)間儀表盤數(shù)據(jù)要延遲十幾秒才刷新最初懷疑 WebSocket 連接斷了后來發(fā)現(xiàn)是聚合 worker 在處理事件時(shí)調(diào)用了一個(gè)同步的外部配置接口。Python 協(xié)程調(diào)度被這個(gè)同步請(qǐng)求卡住整個(gè) worker 的處理速度被拖慢。線上排查這類問題最直接的方式是看 worker 的日志時(shí)間戳如果處理日志中間有很長的空洞基本可以斷定有阻塞調(diào)用。實(shí)時(shí)鏈路里盡量不要混用同步阻塞庫。如果一定要調(diào)用外部服務(wù)用httpx.AsyncClient或把配置緩存到 Redis短時(shí)間內(nèi)不重復(fù)獲取。實(shí)時(shí)系統(tǒng)最怕的就是某個(gè)不起眼的阻塞點(diǎn)拖住整個(gè)消費(fèi)進(jìn)度。4.4 數(shù)據(jù)與圖表對(duì)不上窗口對(duì)齊的坑曾有一次漏斗轉(zhuǎn)化率和前端曲線相互矛盾明明系統(tǒng)顯示的是 10% 的轉(zhuǎn)化率手工數(shù)事件卻發(fā)現(xiàn)對(duì)不上。原因是聚合時(shí)我用了消費(fèi)端本地時(shí)間做小時(shí)分桶但上報(bào)事件本身帶有client_time在跨時(shí)區(qū)場(chǎng)景下兩者會(huì)出現(xiàn)錯(cuò)位。后來統(tǒng)一改成只按client_time分桶服務(wù)端和前端展示用同一個(gè)時(shí)間維度數(shù)據(jù)才真正對(duì)齊。窗口問題在實(shí)時(shí)分析里很容易被忽略。建議從第一天就統(tǒng)一時(shí)間語義事件時(shí)間還是消費(fèi)時(shí)間。趨勢(shì)看板通常應(yīng)該用事件時(shí)間因?yàn)樗咏鼧I(yè)務(wù)真實(shí)發(fā)生時(shí)間只有關(guān)心系統(tǒng)吞吐時(shí)才用消費(fèi)時(shí)間。4.5 常見問題速查表癥狀可能原因處理建議Redis 內(nèi)存持續(xù)上漲聚合 key 未設(shè)過期或 Stream 未裁剪給 key 加 TTL設(shè)置 MAXLEN看板數(shù)據(jù)偏大重復(fù)消費(fèi)導(dǎo)致重復(fù)計(jì)數(shù)XACK 加 SETNX 冪等推送延遲高同步阻塞調(diào)用 / 連接池滿改異步調(diào)用提高連接池上限漏斗數(shù)據(jù)對(duì)不上時(shí)間窗口不統(tǒng)一統(tǒng)一用 client_time 分桶WebSocket 頻繁掉線代理空閑超時(shí)加心跳消息縮短 ping 間隔5. 后續(xù)擴(kuò)展思路這套骨架還能長成什么做完第一版以后很容易產(chǎn)生要不直接上 ClickHouse的想法。我的建議是別急先把架構(gòu)能延伸的方向理清楚再?zèng)Q定下一步往哪兒長。5.1 從指標(biāo)分析到異常檢測(cè)當(dāng) PV/UV 和漏斗數(shù)據(jù)穩(wěn)定運(yùn)行后自然會(huì)產(chǎn)生一個(gè)需求系統(tǒng)能不能自動(dòng)發(fā)現(xiàn)異常。比如某小時(shí) PV 掉了 40%或者某個(gè)頁面的點(diǎn)擊率突然飆升。這種功能可以從簡單的規(guī)則開始每個(gè)小時(shí)跑一次統(tǒng)計(jì)把當(dāng)前指標(biāo)和過去 14 天的同期均值做差超過 3 倍標(biāo)準(zhǔn)差就發(fā)出告警。我試過先用最簡單的方式實(shí)現(xiàn)不引入專門的學(xué)習(xí)庫只用numpy算均值和標(biāo)準(zhǔn)差把告警規(guī)則寫進(jìn)配置文件。這樣做的最大好處是透明可解釋出了問題你能直接定位是哪個(gè)指標(biāo)觸發(fā)的告警而不是像黑盒模型那樣無從下手。5.2 多租戶隔離把 project_id 寫進(jìn)每個(gè)事件如果這個(gè)系統(tǒng)要服務(wù)多個(gè)業(yè)務(wù)方最簡單的做法不是在數(shù)據(jù)庫層做復(fù)雜隔離而是在每個(gè)事件里加一個(gè)project_id字段。所有 Redis key 都以project_id作前綴聚合邏輯不變只是查詢維度多了一個(gè)過濾條件。需要注意的坑是 WebSocket 推送不能再把所有項(xiàng)目的數(shù)據(jù)全量推給每個(gè)連接。前端連接時(shí)帶上project_id后端維護(hù)一個(gè)按項(xiàng)目區(qū)分的連接映射這樣才能避免不同業(yè)務(wù)方的數(shù)據(jù)串臺(tái)。這個(gè)問題我在測(cè)試期踩過當(dāng)時(shí)一個(gè)測(cè)試項(xiàng)目的曝光數(shù)據(jù)直接出現(xiàn)在另一個(gè)項(xiàng)目的看板上排查了很久才意識(shí)到是連接映射沒加過濾。5.3 冷熱數(shù)據(jù)分層從 Redis 到數(shù)據(jù)倉庫Redis 保存熱數(shù)據(jù)沒問題但要長期保存歷史趨勢(shì)、做深層次回溯它就不合適了。建議每天凌晨定時(shí)把前一天的聚合結(jié)果從 Redis 導(dǎo)出到 PostgreSQL并為按天建分區(qū)表。這樣歷史查詢走持久層實(shí)時(shí)看板走 Redis兩個(gè)鏈路互不干擾。如果事件量之后漲到千萬級(jí)甚至更高可以在 PostgreSQL 前面加一個(gè)輕量 OLAP 引擎做維度查詢。擴(kuò)展的關(guān)鍵仍然是要先把熱鏈路跑穩(wěn)再讓冷數(shù)據(jù)落地而不是一上來就鋪一堆基礎(chǔ)設(shè)施。最后分享一個(gè)我認(rèn)為最值得記住的經(jīng)驗(yàn)?zāi)玫筋愃苧ea這種看不出含義的代號(hào)時(shí)不要把時(shí)間全花在猜測(cè)語義上。先找一個(gè)能獨(dú)立形成閉環(huán)的落地方向把上報(bào)、聚合、推送三條鏈路串起來讓數(shù)據(jù)真正流動(dòng)起來之后所有疑問都會(huì)在真實(shí)運(yùn)行中自行顯形。模糊的稱呼只是起點(diǎn)清晰的技術(shù)邊界才是你能掌控的東西。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
综合色播| 操99| 六月激情婷婷| 丁香五月婷婷av影院| 激情九色| 丁香五月激情婷婷婷婷在线观看| 五月天激情在线视频| 亚洲第二AV| 婷婷五月天色色| 五月天开心成人网| 异能之下短剧免费观看全集| 久久与婷婷| 婷婷在线日韩综合| 能看的av片| 黄急一级视频| 婷婷色婷婷| 99热的无码| 久操热| 亚洲韩国日产综合AV| 97资源碰碰| 色色哒五月婷婷六月丁香| 91九色精品女同系列| 日韩野外 无套| 一区二区三区视频| 超碰女人天堂| 亚洲av免费在线| 五月丁香欧美综合| 5月婷婷激情网| 日本精品。999| 天堂爱啪啪| 亚洲 在线 另类| 久久99网站| 99热精品在线播放| 99av视频| 操逼福利视频| 深爱婷婷色| 国产精品人妻在线网址| 99热狠狠操| 国产首页在线| 久久精彩视频99| 久久AAAA片一区二区| 九九99免费视频| 日日噜噜夜夜狠狠久久丁香六月| 婷婷六月天| 激情婷婷五月基地| 欧美成人色婷婷| 丁香五月婷婷骚视屏| 婷婷丁香第一页| 天天做天天爱天天爽夜夜揉| 91男人操女人视频| 黄色av网站在线免费播放| 国产精品久久久久久久久久| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 婷婷开心激情| 无码免费人妻A片AAA毛片西瓜| 欧美日韩成人| 婷婷五月天激情电影小说| 99热这里只有精品98| 五月丁香在线视频观看| 婷婷五月天激情亚洲小说| 99这里只有精品视频免费| 嫩草视频观看| 九月丁香婷婷综合激情| 亚洲五月天狠狠| 狠狠999| 开心五月丁香综合久久| 成人开心五月天| 久久爱婷婷| 丁香色婷婷五月天| 天天爽夜爽| 日日夜夜干| 人妻体体内射精一区二区| 国产真人做爰视频免费| 久艹伊| 久久五月婷婷视频| 成人五月天综合网| 98永久精品| 丁香五月影院| 亚洲黄网AV| 九九视频在线观看| www.五月丁香| 超碰无码老师| 综合激情五月天| 99热乎| 五月久熟女| 久久99精品久久久久久三级| 精品人妻午夜一区二区三区四区 | 五月丁香网站在线播放| 亚洲天堂色色| 欧亚成人A片一区二区| 91无码色色| 婷婷丁香综合色AV| 五月丁香美女| 久久久免费精彩视频| 久久婷婷综合基地| 激情6月| 激情性爱网站| 99视频这里只有久久精品| 五月婷婷五月天激情网| 天天色播| 色五月91| 在线只有精品| 亚洲久久天堂| 天天色综和网| 大香蕉伊人99| 91精品丝袜久久久久久久久粉嫩| 伊人六月丁香婷婷| 五月婷六月| 色综色网| 婷婷色色综合激情| 亚洲综合视频在线| 啪啪色激情五月天| 五月丁香花免费视频| 99激情视频| 久久香蕉影院| 天天看A片| 欧美日韩AAA| 久久色天堂| 成人精品视频99在线观看免费| 97sese婷婷| 色色色五月婷婷| 五月丁香六月婷婷亚洲综合| 五月桃花网综合| 三级三久久线久久99久目本WW| www.俺去也com| 激情综合五月天| 色插人人| 天天爽天天草| 色九九中文字幕| 日韩一区二区在线播放| 99爱在线视频| 色色色色色级无码| 伊人无码高清| 青青操绿aaa一区日v| 五月婷婷在线视频观看| 丁香熟女乱| 亚洲婷婷开心五月| 婷婷爱五月| 天天肏在线观看| 一级黄色尤物综合视频手机在线观看| 丁香婷婷五月天成人| yazhou seshipin| 中文字幕永久免费| 婷婷激情五月| 九九视频在线| 成人网丁香五月| 99久在线精品99re8| 久久九九爽| 99性爱视频| 99riAV成人在线视频| 五月天婷婷自拍图片在线观看| WWW.99热| 激情婷婷五月女| 色色操| 91九色 婷婷| 无码人妻一区| 久久99大全| 婷婷丁香十月| 婷婷伊人久久| 亚洲激情网| 亚洲激情四射| 99在线精品免费视频| 精品五月丁香| www.丁香黄色五月天人与| 婷婷五月丁香综合激情小说| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 丁香五月AV| 国产精品电影| 爱超碰性| 97九色视频| www.色综合.com| 中文字幕av久久爽一区| 99在线观看这里都是精品| 婷婷丁香六月| 五月婷在线视频免费看| 中文字幕综合| 四LLL少妇BBBB槡BBBB| 男人天堂亚洲综合| www久久久久久| 婷婷婷婷婷开心无码播放| 五月天婷婷丁香人人操91| 日日噜噜久久婷婷五月天| 五月玖玖| 六月丁香婷婷视频综合在线观看| 免费无码毛片一区二区A片| 夜夜夜夜做天天天做无码视频| 国产黄色在线观看| 激情综合国产| 久一这里有精品国产| 亚洲精品又粗又大又爽A片 | 中文aV网| 69色婷婷| 人妻体体内射精一区二区| 99re26视频| 99久久五月婷婷| 五月天色区| 婷婷性爱网| 日本天天操| 五月婷色啪| 九九热青青草| CHINESE熟女老女人HD视频| 色五月丁香在线| 怡春院久操| 狠狠色婷婷7777久| 欧美大道不卡| 国语精品探花| 色五月婷婷五月丁香五月激情五月视频 | 九九这里只这里只有精品| av婷婷六月丁香社区在线观看| 99这里有精品| 婷婷五月丁综合| 久久伦乱| 91趴趴| 六月婷婷综合| 日韩人妻无码精品| 久久久久久人妻久久久久久久久久人妻久久久 | 国产做A爰片毛片A片美国| 激情婷婷啪啪| 婷婷天天综合| 99热99日…..| 激情五月开心五月在线视频| 无码区婷婷五月花开| 免费无码毛片一区二区A片| 色色激情网| 99热在线观看免费| 先锋av性爱成人电影| 五月丁香好婷婷A片网| 中文字幕 中文字幕明步| 99热只有| 婷婷香五月天| 日屌日日操日日色| 99久久综合精品五月天| 色综合五月婷婷狠狠干| 色另类五月天| 99这里的视频都是精品| 丁香久久| 久激情网| 日韩啪啪网| 玖玖99精品视频| 96丁香婷婷九月蜜桃综合久久| 91日本在线观看| 久久99热久久99精品| 婷久看人爽| 日本精品99网站| 任你弄在线视频免费| 99热精品在线| 成熟妇人A片免费看网站| 人人操AV| 激情四射五月天| 久久五月天婷婷| 久久人妻系列| 秋霞三及片| 天天撸夜夜爽| 婷婷涩五月天综合| 97丁香五月| 玖玖九九99| 婷婷丁香五月天亚洲| 这里只有精品免费观看网占| 天天夜天天色天天| 亚洲性爱区无码区| 亚洲热久久| 丁香五月色情| 天天日夜夜曹| 丁香五月色欲| 99在线精品视频| 九九99免费视频| 操逼巨乳91| 激情五月婷| 五月天色丁香| 色综合久久888| caop在线| 欧美 日韩 人妻 高清 中文| 两性婷婷丁香五月| 婷婷色吧| 九九99在线观看视频| 四色永久成人网站| 精品人妻久久久久久久| 狠狠爱婷婷丁香| 亚洲精品视频在线播放| 中字幕视频在线永久在线观看免费| 五月花婷婷| 日日夜夜干| 亚洲经典三级| 久久玖玖综合| 小视频在线亚洲| 手机激情网| 婷婷五月天亚洲丁香| 婷婷天天色| 成人电影AV在线观看| 久99| 97人人操人人插| 91亚洲免费片| 九九热10| 婷婷五月天视频免费在线观看| 97操碰在线视频| 激情五月天啪啪视频| 激情综合自拍五月婷婷色五月| 五月婷婷六月丁香激情综合网| 免费观看的AV| 99九九精品| 538在线精品| 亚洲最大视频网站| 九玖视频这里只有精品| 99综合| www.狠狠| 91碰碰碰| 色婷婷女优有码五月亭| 综合久色五月| 97热这里精品在线视频| 人人妖人人97| 五月综合激情久久| 中文字幕激情综合| 亚洲网站观看视频| 婷婷激情小说网| 五月综合色播播丁香婷婷| 91操片| 五月天婷婷色| 久久最新色色色| 色高清无码视频| A在线观看| 久久视频在线视频| 久99久在线| 玖玖九九99| 99ri在线观看视频| 丁香五月综合久久综合| 五月丁香色狠狠干大屄| 五月天丁香网| 色999五月色| 九色婷婷| 激情五月丁香亭亭 | 啪啪婷婷五月天激情| 亚洲色欲AAAAAA| 婷婷香蕉| 五月婷婷啪啪| 婷婷97碰碰| 丁香激情五月天| 五月丁香少妇A| 99热碰碰热| 操操操91| 青青草成人网| 九九色天堂| 婷婷五月天色综合| 色色色免费视频| 五月天激情视频| 黄色成人网站在线播放| 色五月婷婷91| 99毛片| 深爱激情丁香五月| 91久久九九| 五月社区婷婷激情| 久热精品免费视频4| 日日婷婷不卡| 天天碰夜夜操| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪 | 色播色丁香五月| 热久国产| 久久久久人妻网址| 丁香六月婷婷久久高清| 五月婷婷草| 91VIP在线观看| 婷婷五月天激情综合深爱| 六月婷婷五月丁香| 欧美黑人大吊| 亚洲成人av在线| 色欲久久久久| 超碰在线观看成人视| 操啊操av| 在线观看免费狠狠色丁香香综合| 色开心五月婷婷丁香HD| 婷婷五月,偷窥偷拍网| 婷色视频| 色狠狠色| 丁香亚洲婷婷五月| 久久99激情五月天| 啪啪啪啪五月天| a久久免费视频| 另类图片天天影视在线观看| 婷婷免费精品视频| 国产精品第一国产精品| 五月天最新网| 91avse| 色狠狠综合| 玖玖在线视频福利| 色婷婷狠狠18| www.久久久久久久| 亚洲视频在线观看| 亚洲视频图片婷婷五月| 99精品国产热久久91色欲| 丁香婷婷五月| 五月丁香做爱视频| 色哟哟精品| 伊人99热| 婷婷五月激情丁香| 色色成人網| 亚洲精品第一国产综合亚AV| 亚洲av综合网| 婷婷综合在线观看视频| 亚洲婷婷丁香| 日逼AV影音先锋男人资源站| 色天堂在线| 天天搞夜夜叫| 性爱网六月丁香| 久久久99久久| va亚洲中文在线| 亚洲成人av在线| 成人做爰A片免费看视频| 婷婷六月伊人| 女人露出p毛视频www网站| 91妻人人爽人人看片| 成年人丁香五月| 99精品国产在热久久| WWW.色婷婷.COM| 久久大香蕉同僚| 亚洲精品无AMM毛片| 丁香五月天堂网| 黄色aaaaa| 操97在线观看| 婷婷五月av| 丁香六月婷婷综合欧美| 999激情视频| 日本va欧美va欧美精品88| 综合色图区| 曰本久久女| 9色视频在线| 五月丁香婷婷激激激综合网色播| 99国产小视频2013| 色碰干| AV五月婷婷露脸| 综合亚洲六月婷婷在线| 久久婷婷五月综合成人d啪| 精品国产一区二区三区四区阿崩| 婷婷久久网| 操人妻视频91| 婷婷激情啪啪| 久久五月网| 97精品自拍| 热婷婷久| 久久免费干| 大香蕉啪啪啪| 99视频精品在线| 这里有精品| 日逼免费视频| 激情五月六月丁香| 婷婷五月天AV激情| 99热这里只有精品亚洲| 婷婷免费精品视频| 天天爽夜夜爽夜夜爽精品| 国产视频福利| 特级操b片| 婷婷五月综合免费在线| 亚洲99热| 婷婷九九色| 国产乱子轮XXX农村| 亚洲第精品| 丁香五月婷婷亚洲色图| 丁香五月天在线视频| 五月天堂婷婷| 97色婷婷成人综合在线观看| 黄网网站在线播放| 五月丁香琪琪| 丁香六月婷婷开心| 婷婷五月香蕉| 五六月婷婷| 99久久99久久综合| 五月丁香色婷婷婷基地| 丁香婷婷人妻综合网| 婷婷色色综合激情| 五月丁香成人| 2w在线视频| 久99久热只有精品国产99| 丁香五月AV综合激情| 免费精品66| 婷婷激情综合无月| 天天色天天爱天天爽| 这里只有精品日韩精品| 97久久五月丁香婷婷| 3DAV亚洲香蕉久久 一区二区| 丁香六月AV| 91丨九色丨熟女高潮| 丁香五月天激情视频| 久久久久er热| 国产偷人爽久久久久久老妇APP| AA片在线观看视频在线播放| 丁香花狠狠婷婷亚洲中文字幕| 一起草日本| 国产综合81p| 人人澡玖玖一| 六月丁香激情最新更新| 影音先锋777xfplay色资源网站| 狠狠的日| 五月婷婷,六月丁香| 大香蕉AV在线| 狠狠婷婷日韩| 色色五月丁香婷婷| 伊人六月无码视频| 99久久五月婷婷| 久久人人超| 性爱综合网| 色www99| 大香蕉人人人| 做爱夜夜干天天操| 五月色天情| 激情久久久久久久久久| AA片在线观看视频在线播放| 嫩草国产| 激情校园 亚洲| 亚洲激情婷婷| 免费无码毛片一区二区A片| 丁香五月天堂亚洲社区| 九九视频免费| 五月亭亭开心网| www.色婷婷| av电影在线播放| 六月激情婷婷| 99re视频精品| 激情综合五| 99re视频在线| 五月婷婷丁香大陆免费| 91九色丨国产丨爆乳| 99国产精品白浆在线观看免费| 香蕉99网| 五月天婷婷久色| 色婷婷色99国产综合精品| 久久99热这里只频精品6学生| 六月婷婷操逼| 人人爽人人爽人人爽人人爽| 这里只有精品视频99| 婷婷九九色| 婷婷黄色网| 亚洲五月婷婷在线| av在线免费网站 | 91热久| 色情五月天小说| 婷婷丁香五月综合免费视频百花| 亚洲人成播放网站| 天天天干夜夜夜操| 国产操肏网站| 99色热综合| 伊人激情啪啪| 加勒比日本一区二区三区| 激情五月丁香色婷婷| 女同激情久久av久久| 五月色激情综合网| 国内精品玖玖| 2025超碰| 5月婷婷激情6月| 丁香六月五月天| 香蕉大综综综合久久| 五月激情网络| 色综合射婷婷| 中文字幕日产A片在线看| 2017狠狠干| 天天综合中文| 久久综合综合综合| 综合激情站| 我淫我色婷婷五月天激情四射| 激情小说五月天社区丁香| 五月天婷综合| 亚洲精品在线视频| 综合另类视频| 狠狠综合网| 殴美日比视频| 丁香婷婷综合激情五月色| 婷婷五月天色| 99色色| 婷婷激情中文综合| 高清无码入口| 五月丁香综合激情在线观看| 99色在线| www激情网| 欧美日本韩国亚洲| www.五月天社区| 九九精品9| 999热成人在线综合网| 五月婷婷涩涩爱| 九九热99精品在线| www.婷婷久久五月天| 丁香5月婷婷| 99精品手机在线视频| 天天摸色吧天天摸色吧| 婷色五月天| 色色自拍视频网站| 免费无码毛片一区二区A片 | 国产精品99久久久久久久女警| 在线观看熟女少妇| 国产XXXX搡XXXXX搡麻豆| 九九久久99| 婷婷中文综合网| 久久九九视频| www.色综合.com| 亚洲欧美综合7777色婷婷| 日韩综合网络男女香蕉a片| 99热91| 蜘蛛女免费观看完整版高清电影| 五月欧美丁香在线观看| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 9l视频自拍九色9l视频在线观看| 久久久人妻人伦| 白人荫道BBWBBB大荫道| www.99热视频| 色婷婷五月天av在线| 中文字幕在线免费看线人| 天天操,夜夜骑| 丁香视频| 丁香九月婷婷| 深爱激情丁香| 亚洲日本激情| 欧美婷婷色五月网| 狠狠色噜噜狠狠狠狠综合| 五月色导航| 丁香色影院| 色播五月| 婷婷丁香人妻天天爽| 色色色色色热| Av在线不卡一区| 五月丁香大香蕉| 色欲五月婷婷| 婷婷五月丁香伊人网| 9热在线视频精品| 大香蕉手机视频| 久久这里只有精品网| 啪啪五月综合| 日本色婷婷| 日本va欧美va国产激情| 99在线观看免费精品视频| 99热黄| 99热都是精品| 激情五月天影院| 有码人妻久久| 99在线视频精品| 日韩ww| 五月综合色| 深情五月天| 色欲操| 色综合久久88色综合天天看| AV成人在线网站| 亚洲超碰在线| 99性爱| 婷婷五月天日日日干干干| 五月婷婷六月色| 五月天婷婷在线观看| 久一这里有精品国产| 思思99久久| 狠狠色综合久久久久| 欧美色婷婷| 激情综合网址| nvrentiantang av| 99精色| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 日韩久久视频| 六月撸婷婷| 丁香五月婷婷高清| 91精选国| 五月开心色| ji'qing'luan'ren'lun| Se.婷婷五月天| 久久停停超碰| 亚欧州精品视频| 99热亚洲综合| 夜夜AVV| 曰本久久女| 99国产在线精品视频| 天天爱天天操| 少妇大叫太大太粗太爽了A片| 激情五月影院| 丁香在线视频| 99热久| 婷婷五月丁香五月| 日本欧美成人片AAAA| 99亚洲天堂| 五月天激情网图片| 激情综合五月婷婷| 乱精品一区字幕二区| 日日夜夜天天| 麻豆AV一区二区三区| 色婷婷成人做爰A片免费看网站| 任你搞在线观看视频| 无码一区精品一区视频| 婷婷五月天美女视频| 五月丁香六月婷婷综合网| 好吊丝aV| 欧洲第一久色| 深爱婷婷网| 激情小说五月天| 婷婷狠狠18禁久久| 亚洲AV成人精品日韩在线播放| 黄网免费看| 91精品综合久久久久久五月丁香| 久久五月视频| 亚洲视频在线网站| 日本色色影院| 91成人视频| 色VA| 五月丁香A∨在线| 伊人激情网| 99九九视频精彩在线| 婷婷五月天奸女| 99久热在线精品| 婷婷在线操| 六月天丁婷婷| 久99久精品| 五月天开心网| 伊人激情综合| 久久婷.com| 丁香婷婷丁香五月欧美人| 天天摸天天高潮天天爽| 五月天激情国产综合婷婷婷| 五月婷婷之综合激情| 色婷婷成人做爰A片免费看网站| 99热99精品在线观看| 色婷婷综合成人| 激情综合5月| 五月丁香龟婷婷| 日本啪啪网| 少妇性按摩无码中文A片| 青青草五月天| 久久精品一区二区三区四区| 婷色视频| 激情的五月| 无码色| 六月丁丁香| 综合色视频| 狠狠操之狠狠操| 色久五月天| 热久精品| 久久九精品| 色青青五月| 91久久九久久九久久九久久九久久| 五月婷婷色色| 久久婷婷丁香| 我要看激情五月天| 五月天性色| 久久久久亚洲AV无码网影音先锋| 超碰日韩人妻在线| 亚洲操逼网| 日韩五月丁香| 成人午夜天| 中文无码婷婷| 爱草人视频| 亚洲春色奇米影视| 丁香色六月| 婷婷 伊人 久久| 色吧网91| 五月婷婷色播网| 99黄色性生活| 99re热在线视频观看| av网站中文| 欧美大肥婆大肥BBBBB| 日本一毛片| 婷婷婷婷色| 五月婷婷爽爽爽| 婷婷五月综合色中文字幕| 97色色综合| 亚洲无码免费看| www.操逼comm| 五月丁香婷婷啪啪| 色婷婷五月天中文字幕| 成人av在线电影| 五月婷婷,六月婷婷| 激情综合网 激情五月天| 五月天丁香网| 色婷婷五月影视| 婷婷在线精品| 久9热在线视频| 射区导航| 97丁香五月| 99视频在线| 国产精品涩涩涩视频网站| yw国产AV| 色狠狠色狠狠| 色色色9 9 9| 五区毛片七区毛片| 中字幕视频在线永久在线观看免费| 日本色婷婷| 色婷婷狠狠禁久久| 亚洲精品五月| 天天日天天肏天天奸| 大波美女VA网站| 日本九九视频| 婷婷丁香六月| 久久九九99| 婷婷狠狠97| 无码A片一区二区免费| 日韩成人电影AV| 操碰99| 天天色激情| 国产FREESEXVIDEOS性中国| 婷婷五月天成人| 色色色色色色网站| eeuus五月婷| 深爱激情五月天| 狠狠操天天操天天操| 可以看的av| 久久ER视频com| 国产欧美精品AAAAAA片| 丁香六月成人网| 日本97在线观看| 99综合| 51成人| 国产精品电影| 亚洲一区二区无码蜜乳av| 五月婷三级片| 婷婷 色 丁香 夜| 日本啪啪网| 天天插天天插| 婷婷五月天伊人网在线观看视频| 丁香五月停停av| www.99热精品| 亭亭丁香aV| 国产免费性爱| 几激情五月婷婷色五月色天堂| 五月婷婷九九热| 天天插天天日| 米奇影视五月天| 天天综合网~91| 精品久久艹| 亚洲小说欧美激情| 高清国产AV| 97人人干人人操| 五月之婷婷| 色婷婷www| 乱精品一区字幕二区| 婷婷五月天第三页| 九九这里只有精品在线视频| 国产麻豆视频| 丁香婷婷五月天激情四射| 天天爽天天弄| 51XX嘿嘿午夜无码| 99无码| 色婷婷成人五月| 久久五月婷婷电影| 日韩AV成人电影| 这里只有精品久久| 婷婷天天日婷婷| 电影蜘蛛女| 百度4399有码精品V在线观看| 另类图片五月天| 91婷婷五月天嫩女| 婷婷AV丁香| 超碰a女人的天堂| 一本色道久久88加勒比| 欧洲亚洲免费视频9 | 婷婷五月天AV| 精品自拍97| 久99视频| 91丨九色丨熟女丰满| 天天开心AV色综合婷婷五月天| 久久99网址| 碰超亚洲| 成人做爰A片免费看视频| 五月天丁香成人社| 五月综合色播播丁香婷婷| 日本色频| 啪啪六月婷婷| 色九月丁香婷婷蜜桃在线观看| 久99热| 成人av中文字幕| 亚州操人在线视频| 婷婷丁香五月激情图片| 99热在线播放| 九九干视频| 美女被肏网站在线看| 中字幕视频在线永久在线观看免费| 成人版视频在线观看| 综合伊人狠狠| 五月婷婷免费| 丁香五月色播中文在线播放| 激情综合色网| 9有码中文| 在线91日韩| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 国产亚洲成AV人片在线| AV中文网| 办公室少妇激情呻吟A片在线观看| 激情AV| 久综合色| 99狠狠| 99色在线| 色色色综合| 色综合视频在线| 久草热在线视频| 日本三级中国三级99人妇网站| 五月天婷婷综合网| 亚洲综合五月天| 五月天色影院| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 丁香五月婷婷激情完整版| 九月丁香婷婷网| 3p九色在线| 九热网站| 92久久久| 99re6久热只有精品6在线直播| 99热中国| 玖玖资源站中文| 噜噜五月天综合| 国产精品VA在线| 婷婷五月天av| 婷婷月综合| 91seav| 99亚洲精品视频| 天天插天天爽| 国产做爰视频免费播放| 97高清国语自产拍| 国产一区二区av免费| 96自拍视频九色在线观看| 五月婷婷精品无在线| 99日这里只有精品| 另类激情首页| 武则天精品久久| 激情五月天电影| 超碰在线人妻| 婷婷综合性爱网| 久久久人人操A V| 99啪在线| 日本久久99| 日本va欧美va精品发布视频| 丁香五月天啪啪激情综合网| 丁香婷婷六月在线资源观看| 天天日日综合| 成人版视频在线观看| 丁香五月婷婷影院| 婷婷丁香六月| 久久44| 超碰97干| 五月停停直播| 思思热久热| 亚洲综合久| 成人做爰高潮A片免费视频| 九九爱激情| 偷拍91九色| 色99亚洲| 丰满熟女人妻一区二区三| 久久婷.com| 成人国产欧美大片一区| www.色色com| 99色综合网| 亚洲丁香五月| 色婷天天| 综合AV网| 丁香五月影视| 色婷婷激情视频| 丁香五月在线自慰| 丁香五月在线观看完整版| 婷婷五月天成人网| 午夜不卡久久精品无码免费 | 丁香花婷婷五月天| 亚洲VA欧美VA| 五月天亭亭俺也| 人妻人人操| 狠狠色狠狠爱| 婷婷五月欧美综合| 亚洲精品色| 欧美性色A片免费免费观看的 | 思思热视频在线观看| 婷婷综合国产| 婷五月天天| 狠狠操狠狠操| 国产无遮挡又黄又爽免费网站| 综合色婷婷| 天天 日综合| 六月丁香综合| 色九四色| 五月丁香激情综合啪| 囯产精品久久欠久久久久久九大| 国产成人精品亚洲线观看| 久久性操| 色九月丁香婷婷蜜桃在线观看| 久久永久网址| 激情五月婷黄版| 激情久久伊人| 五月天色婷婷激情综合| 99人妻碰碰碰久久久久视| 欧洲MV日韩MV国产| 99热婷婷| 超碰色色综合| 日韩AV中文字幕在线| 婷婷六月综合在线| 激情五月天丁香| 伊人五月天97| 99免费视频网| 99久久国产宗和精品1上映| 9久久婷婷国产综合精品性色| 69色色视频| 亚洲精品一区无码A片| 婷婷五月天色色| 婷婷五月天伊人| 超碰色热| 久久久久99精品成人片| 亚洲五月天激情| 国产精品天天狠天天看| 色色五月丁香| 丁香狠狠色婷婷| 青青日韩| 久久爱婷婷| 色播色丁香五月| www.五月激情红色| 国外亚洲成AV人片在线观看 | 伊人深爱综合| 99久久综合| 精品一二三区视频立| 99热在线只有精品| 91丨九色丨熟女|新版| 99热资源在线| 超碰在线中文字幕| 日本天天操| 婷婷六月综合基地| 久热免费视频| 综合激情肏逼网| 91人碰| 99精品一二三四视频| 超碰三级片| 久久五月天色婷婷| 91超碰在线播放| 天天搡日日搡aaaaⅩ| 五月久久婷婷| 99re热在线视频| 依人大香蕉| 只有精品在线观看| 婷婷五月天网| 午夜 外网 精品 在线| 被强行糟蹋的女人A片| 天天综合色综合| 97超级啪啪在线观看| 深爱激情丁香五月| 色五月婷婷激情基地| 91热网址| 久九色| 色婷婷成人| 五月婷婷精品视频| 啪啪九九色| 人人摸人人澡人人| 97香蕉碰碰人妻国产欧美| 色香欲综合| 天天色五月| 激情婷婷在线| 久久婷婷五月天激情四射| 91超级碰碰碰| 亚洲精品一区无码A片| 色综合综合网| 亚洲综合另类| 五月丁香亭亭| 97好吊操| 91ncm视频| 久热伊人| 色噜噜狠狠插综合| 亚洲综合视频网| 中文字幕成人| 天天天天色天天天天天干| 色婷婷色九月| 人人爱操| 婷婷五月天日本无码| 伊人综合色干| 99热这里是精品| 日韩在线aaa| 日韩影院三级| 激情98色婷婷五| 六月婷婷啪啪| 中文不卡一二三区| 极品另类| 色婷婷电影网| 五月天久久婷婷| 欧洲激情网站| 蜜臀av 粉嫩av 懂色av| 67194成I人在线观看线路1| 精品99久久久久成人网站免费| 色婷婷AV在线观看| 五月花激情| 久久视频这里99| 色婷婷五月天中文字幕| 91美女啪啪| 婷婷视频网| 人妻精品一区二区三区| 思思久ren热| 一区三区视频有限公司| 精品亚洲国产成AV人片传媒| 婷婷五月色激情欧美激情| 日日爽日日操| 五月色婷婷影院| aaaa久久| 国产精品成人在线| 少妇性按摩无码中文A片| 激情五月综亚网| 婷婷免费无马| 91综合网| 少妇水多A片太爽了| 久久久激情视频| 俺也去在线视频 | 五月婷婷 激情按摩| 亚州色色色| 亚洲精品永久久久久久| 亚洲综合婷婷五月| 精品五月视频婷婷在线观看| 久久久精品99| 狠狠干最新地址| 亚洲激情综合| 日韩色久| 久色资源| 色久激情在线| 婷婷丁香五另类网站| 99热99干| 视频一二区| 五月色婷婷夜色| 日本色色影片| 97五月天| 色五月av| 淫视馆aV二区一区| 色在线99| 99亚洲视频| 五月激情婷婷六月| 99精品7| 天天粽合合合合| 丁香五月综合激情久久潮喷| 99九九在线| 91超级碰在线| 国产综合81p| 艹色18p| 九97免费视频| 99爱操| 99热香港| 99热在线极品极品| 男人大jjc女人免费视频| 人妻体体内射精一区二区| www99热| 99综合视频一体| 色九九综合| 丁香色婷婷| 久久免费精彩视频| 97色色色| 免费视频WWW在线观看网站| 婷婷导航| 大陆极品少妇内射AAAAAA| 人妻丰满精品一区二区A片| 99国产精品白浆在线观看免费| 久久综合婷婷| 99玖玖精品| 91丨九色丨白浆秘| 热五月婷婷| 婷婷五月丁香久久| 五月婷婷啪| 五月婷婷婷| 色色婷婷丁香| 欧美性生交XXXXX无码小说| 99噜噜噜在线播放| 欧美婷婷丁香社区在线播放| www天堂99| 亚洲另类AV| 午夜成人综合| 91狠狠综合久久| 色色亚洲无码| 欧洲高清免费久久| 色色色色五月| 激情综合国产| 婷婷五月天网| 久热婷婷综合| 69人人操人人爽| 人人操人人爽成人AV| WWW.99热| 色五月婷婷在线视频| 99热色在线精品| 婷婷综合在线| 国产精品大香蕉| 风流少妇A片一区二区蜜桃| 久久婷综| 婷婷激情四射网| 精品99这里有| 五月综合亚洲婷婷| 婷婷久久色| 任你艹| 91紱請| 超碰99资源站| 激情宗合哪里能看| 五月婷婷干| 五月婷婷五月天| 婷婷狠狠操| 色色五月天 亚洲| 狠狠爱婷婷| VA国产在线综合网站| 婷婷情色激情| 婷婷伊人中文字幕| 亚洲中文字幕AV在线| 久久999久久999久久999久久| 9久久久久久久久久久| 桃色Av色哟哟| 亚洲色色香蕉| 一级性爱视频| 啪啪啪丁香五月| 色色色五月婷婷| 丁香五月av在线| 超碰人人艹| 色综色网| 91Chinese在线| 亚洲夜夜操| 亚洲精品婷婷| 婷婷五月天丁香久久| 天天摸天天舔在线视频| 99热免| 97五月天| 六月婷婷色色色| 五月天综合区| 大香蕉五月天婷婷| 色五月丁香91| 天天色天天搡| 色五月天综合网| 亚洲无AV在线中文字幕| 九九热在线99| 99九九视屏| 26uuu精品一区二区| 亚洲视频1区| 久久综合伊人综合在线| 成人国产综合| 五月婷婷精品视频| 色综合播放| 91色婷婷综合久久中文字幕二区| 伊人大香蕉爱聚| 亚洲视频色色| 六月婷婷激情| 五月婷婷黄网站大全| 综合99在线| VA色婷婷| 啪啪东京热| 婷婷五月天在婷| 中国丰满熟女A片免费观| 五月丁香婷婷中文| 99热这里只有精品99| www.9操| 激情丁香婷婷五月天| 大香蕉久艹| 激情图片婷婷丁香五月| 欧美激情综合色综合色| 极品人妻XXXXOOOO| 91丨九色丨东北熟女| 色爽九九| se99热久久一本| 丁香婷婷婷五月| 精品成人在线| 五月婷久久| 婷婷色婷婷| 这里只有精彩小视频视频网站| 婷婷五月综激情| 欧美人人女女精品综合五月天| 深爱激情网综合| 激情五月天。| 丁香六月天色婷婷| 国产乱子轮XXX农村| 欧美激情丁香五月天久久婷婷一区| 五月婷婷婷| 人人爽天天莫| 久碰视频| 婷婷在线播放av| 丁香六月五月天| 亚洲色五月| 色屌丝中文字幕| 四色综合网| www.色99| 国产日批视频| 国产精品美女久久久久AV超清| 丁香六月婷婷综合激情欧美 | 色综合香蕉| 玖玖五月丁香| 婷婷五月天综合久久| 欧美精产国品一二三区| 久久草中文日韩欧美| 久婷婷| 人人爱干人人爱草| 69精品人人人人人人人人人| 噜色精品|