對于上述需要使用userId進(jìn)行查詢的場景 , 我們完全可以新建庫和表 , 數(shù)量和結(jié)構(gòu)與訂單庫表完全一致 , 唯一不同點(diǎn)是ShardingKey改用userId , 這樣就可以使用userId查詢了 。
現(xiàn)在又引出一個(gè)新問題 , 業(yè)務(wù)不可能每次都將數(shù)據(jù)寫入多個(gè)數(shù)據(jù)源 , 這樣會(huì)帶來性能問題和數(shù)據(jù)一致行為 。怎么解決老庫和新庫數(shù)據(jù)同步問題?我們可以使用阿里開源的canal組件解決這個(gè)問題 , 看一張官網(wǎng)介紹canal架構(gòu)圖:
canal組件的主要用途是基于MySQL數(shù)據(jù)庫增量日志解析 , 提供增量數(shù)據(jù)訂閱和消費(fèi)服務(wù) , 工作原理如下:
(1) canal偽裝成為MySQL slave模擬交互協(xié)議向master發(fā)送dump協(xié)議(2) master收到canal發(fā)送的dump請求 , 開始推送binlog給canal(3) canal解析binlog并發(fā)送到存儲(chǔ)目的地 , 例如MySQL、Kafka、Elasticsearch
canal組件下游可以對接很多其它數(shù)據(jù)源 , 這樣給業(yè)務(wù)提供了更多選擇 。我們可以像上述實(shí)例中新建用戶維度訂單表 , 也可以將數(shù)據(jù)存在ES中提供運(yùn)營檢索能力等等 。
7 熱我們來分析這樣一個(gè)場景:社交業(yè)務(wù)有一張用戶關(guān)系表 , 主要記錄誰關(guān)注了誰 。其中有一個(gè)明星粉絲特別多 , 如果以userId作為分片 , 那么其所在分片數(shù)據(jù)量就會(huì)特別大 。
不僅分片數(shù)據(jù)量特別大 , 而且可以預(yù)見這個(gè)分片訪問頻率也會(huì)非常高 。此時(shí)數(shù)據(jù)量大并且訪問頻繁 , 很有可能造成系統(tǒng)壓力 。
7.1 熱點(diǎn)概念我們將訪問行為稱為熱點(diǎn)行為 , 將訪問對應(yīng)的數(shù)據(jù)稱為熱點(diǎn)數(shù)據(jù) 。我們通過實(shí)例來分析 。
在電商雙11活動(dòng)中百分之八十的訪問量會(huì)集中在百分之二十的商品上 。用戶刷新、添加購物車、下單被稱為熱點(diǎn)行為 , 相應(yīng)商品數(shù)據(jù)就被稱為熱點(diǎn)數(shù)據(jù) 。
在微博場景中大V發(fā)布一條消息會(huì)獲得大量訪問 。用戶對這條消息的瀏覽、點(diǎn)贊、轉(zhuǎn)發(fā)、評論被稱為熱點(diǎn)行為 , 這條消息數(shù)據(jù)被稱為熱點(diǎn)數(shù)據(jù) 。
在秒殺場景中參與秒殺的商品會(huì)獲得極大的瞬時(shí)訪問量 。用戶對這個(gè)商品的頻繁刷新、點(diǎn)擊、下單被稱為熱點(diǎn)行為 , 參與秒殺的商品數(shù)據(jù)被稱為熱點(diǎn)數(shù)據(jù) 。
我們必須將熱點(diǎn)數(shù)據(jù)進(jìn)行一些處理 , 使得熱點(diǎn)訪問更加流暢 , 更是為了保護(hù)系統(tǒng)免于崩潰 。我們從發(fā)現(xiàn)熱點(diǎn)數(shù)據(jù)、處理熱點(diǎn)數(shù)據(jù)來展開分析 。
7.2 發(fā)現(xiàn)熱點(diǎn)數(shù)據(jù)我們把發(fā)現(xiàn)熱點(diǎn)數(shù)據(jù)分為兩種方式:靜態(tài)發(fā)現(xiàn)和動(dòng)態(tài)發(fā)現(xiàn) 。
靜態(tài)發(fā)現(xiàn):在開始秒殺活動(dòng)之前 , 參與商家一定知道哪些商品參與秒殺 , 那么他們可以提前將這些商品報(bào)備告知平臺 。
在微博場景中 , 具有影響力的大V一般都很知名 , 網(wǎng)站運(yùn)營同學(xué)可以提前知道 。技術(shù)同學(xué)還可以通過分析歷史數(shù)據(jù)找出TOP N數(shù)據(jù) 。對于這些可以提前預(yù)判的數(shù)據(jù) , 完全可以通過后臺系統(tǒng)上報(bào) , 這樣系統(tǒng)可以提前做出預(yù)處理 。
動(dòng)態(tài)發(fā)現(xiàn):有些商品可能并沒有上報(bào)為熱點(diǎn)商品 , 但是在實(shí)際銷售中卻非常搶手 。在微博場景中 , 有些話題熱度突然升溫 。這些數(shù)據(jù)成為事實(shí)上的熱點(diǎn)數(shù)據(jù) 。對于這些無法提前預(yù)判的數(shù)據(jù) , 需要?jiǎng)討B(tài)進(jìn)行判斷 。
我們需要一個(gè)熱點(diǎn)發(fā)現(xiàn)系統(tǒng)去主動(dòng)發(fā)現(xiàn)熱點(diǎn)數(shù)據(jù) 。大體思路是首先異步收集訪問日志 , 再統(tǒng)計(jì)單位時(shí)間內(nèi)訪問頻次 , 當(dāng)超過一定閾值時(shí)可以判斷為熱點(diǎn)數(shù)據(jù) 。
7.3 處理熱點(diǎn)問題(1) 熱點(diǎn)行為熱點(diǎn)行為可以采取高頻檢測方式 , 如果發(fā)現(xiàn)頻率過高則進(jìn)行限制 ?;蛘卟捎脙?nèi)存隊(duì)列實(shí)現(xiàn)的生產(chǎn)者與消費(fèi)者這種異步化方式 , 消費(fèi)者根據(jù)能力處理請求 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 湯姆索亞歷險(xiǎn)《當(dāng)海盜去》記這一文章用了什么寫法?
- 一文讀懂全國哪些城市限行外地車輛 全國外地車限行的城市
- 一文了解額溫槍及使用方法 額溫槍正確使用方法及溫度范圍值
- 一文復(fù)盤雅戈?duì)柕纳虡I(yè)版圖:雅戈?duì)柕亩嘣l(fā)展,是對還是錯(cuò)?
- 輔酶Q10是輔助治療慢性心衰的常用藥,可以長期服用嗎?一文講清
- 什么是i386,x86,RISV ? 一文了解處理器架構(gòu)
- 一文了解天貓精靈連接手機(jī)的方法 天貓精靈怎么連接的手機(jī)的
- 一文錢等于多少人民幣
- 考研統(tǒng)一文具什么樣
- 3000育人故事
