DELETE FROM biz_tableWHERE id >= #{minId}AND id <= #{maxId}AND id <= #{endId}LIMIT 500
3 換換是指換一個(gè)存儲(chǔ)介質(zhì) , 當(dāng)然并不是說完全替換 , 而是用其它存儲(chǔ)介質(zhì)對(duì)數(shù)據(jù)庫(kù)做一個(gè)補(bǔ)充 。例如海量流水記錄 , 這類數(shù)據(jù)量級(jí)是巨量的 , 根本不適合存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中 , 那么這些數(shù)據(jù)可以存在哪里呢?
現(xiàn)在互聯(lián)網(wǎng)公司一般都具備與之規(guī)模相對(duì)應(yīng)的大數(shù)據(jù)服務(wù)或者平臺(tái) , 那么作為業(yè)務(wù)開發(fā)者要善于應(yīng)用公司大數(shù)據(jù)能力 , 減輕業(yè)務(wù)數(shù)據(jù)庫(kù)壓力 。
3.1 消息隊(duì)列這些海量數(shù)據(jù)可以存儲(chǔ)至Kafka , 因?yàn)槠浔举|(zhì)上就是分布式的流數(shù)據(jù)存儲(chǔ)系統(tǒng) 。使用Kafka有如下優(yōu)點(diǎn):
第一個(gè)優(yōu)點(diǎn)是Kafka社區(qū)活躍功能強(qiáng)大 , 已經(jīng)成為了一種事實(shí)上的工業(yè)標(biāo)準(zhǔn) 。大數(shù)據(jù)很多組件都提供了Kafka接入組件 , 經(jīng)過生產(chǎn)驗(yàn)證并且對(duì)接成本較小 , 可以為下游業(yè)務(wù)提供更多選擇 。
第二個(gè)優(yōu)點(diǎn)是Kafka具有消息隊(duì)列本身的優(yōu)點(diǎn)例如解耦、異步和削峰 。
假設(shè)這些海量數(shù)據(jù)都已經(jīng)存儲(chǔ)在Kafka , 現(xiàn)在我們希望這些數(shù)據(jù)可以產(chǎn)生業(yè)務(wù)價(jià)值 , 這涉及到兩種數(shù)據(jù)分析任務(wù):離線任務(wù)和實(shí)時(shí)任務(wù) 。
離線任務(wù)對(duì)實(shí)時(shí)性要求不高 , 例如每天、每周、每月的數(shù)據(jù)報(bào)表統(tǒng)計(jì)分析 , 我們可以使用基于MapReduce數(shù)據(jù)倉(cāng)庫(kù)工具Hive進(jìn)行報(bào)表統(tǒng)計(jì) 。
實(shí)時(shí)任務(wù)對(duì)實(shí)時(shí)性要求高 , 例如根據(jù)用戶相關(guān)行為推薦用戶感興趣的商品 , 提高用戶購(gòu)買體驗(yàn)和效率 , 可以使用Flink進(jìn)行流處理分析 。例如運(yùn)營(yíng)后臺(tái)查詢分析 , 可以將數(shù)據(jù)同步至ES進(jìn)行檢索 。
還有一種分類方式是將任務(wù)分為批處理任務(wù)和流處理任務(wù) , 我們可以這么理解:離線任務(wù)一般使用批處理技術(shù) , 實(shí)時(shí)任務(wù)一般使用流處理技術(shù) 。
3.2 API上一個(gè)章節(jié)我們使用了Kafka進(jìn)行海量數(shù)據(jù)存儲(chǔ) , 由于其強(qiáng)大兼容性和集成度 , 可以作為數(shù)據(jù)中介將數(shù)據(jù)進(jìn)行中轉(zhuǎn)和解耦 。
當(dāng)然我們并不是必須使用Kafka進(jìn)行中轉(zhuǎn) , 例如我們直接可以使用相關(guān)Java API將數(shù)據(jù)存入Hive、ES、HBASE等 。
但是我并不推薦這種做法 , 因?yàn)閷⒈4媪魉@樣操作耦合進(jìn)業(yè)務(wù)代碼并不合適 , 違反了高內(nèi)聚低耦合的原則 , 盡量不要使用 。
3.3 緩存從廣義上理解換這個(gè)字 , 我們還可以引入Redis遠(yuǎn)程緩存 , 把Redis放在MySQL前面 , 攔下一些高頻讀請(qǐng)求 , 但是要注意緩存穿透和擊穿問題 。
緩存穿透和擊穿從最終結(jié)果上來說都是流量繞過緩存打到了數(shù)據(jù)庫(kù) , 可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)掛掉或者系統(tǒng)雪崩 , 但是仔細(xì)區(qū)分還是有一些不同 , 我們分析一張業(yè)務(wù)讀取緩存流程圖 。
我們用文字簡(jiǎn)要描述這張圖:
(1) 業(yè)務(wù)查詢數(shù)據(jù)時(shí)首先查詢緩存 , 如果緩存存在數(shù)據(jù)則返回 , 流程結(jié)束假設(shè)業(yè)務(wù)方要查詢A數(shù)據(jù) , 緩存穿透是指數(shù)據(jù)庫(kù)根本不存在A數(shù)據(jù) , 所以根本沒有數(shù)據(jù)可以寫入緩存 , 導(dǎo)致緩存層失去意義 , 大量請(qǐng)求會(huì)頻繁訪問數(shù)據(jù)庫(kù) 。
(2) 如果緩存不存在數(shù)據(jù)則查詢數(shù)據(jù)庫(kù) , 如果數(shù)據(jù)庫(kù)不存在數(shù)據(jù)則返回空數(shù)據(jù) , 流程結(jié)束
(3) 如果數(shù)據(jù)庫(kù)存在數(shù)據(jù)則將數(shù)據(jù)寫入緩存并返回?cái)?shù)據(jù)給業(yè)務(wù) , 流程結(jié)束
緩存擊穿是指請(qǐng)求在查詢數(shù)據(jù)庫(kù)前 , 首先查緩存看看是否存在 , 這是沒有問題的 。但是并發(fā)量太大 , 導(dǎo)致第一個(gè)請(qǐng)求還沒有來得及將數(shù)據(jù)寫入緩存 , 后續(xù)大量請(qǐng)求已經(jīng)開始訪問緩存 , 這是數(shù)據(jù)在緩存中還是不存在的 , 所以瞬時(shí)大量請(qǐng)求會(huì)打到數(shù)據(jù)庫(kù) 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 湯姆索亞歷險(xiǎn)《當(dāng)海盜去》記這一文章用了什么寫法?
- 一文讀懂全國(guó)哪些城市限行外地車輛 全國(guó)外地車限行的城市
- 一文了解額溫槍及使用方法 額溫槍正確使用方法及溫度范圍值
- 一文復(fù)盤雅戈?duì)柕纳虡I(yè)版圖:雅戈?duì)柕亩嘣l(fā)展,是對(duì)還是錯(cuò)?
- 輔酶Q10是輔助治療慢性心衰的常用藥,可以長(zhǎng)期服用嗎?一文講清
- 什么是i386,x86,RISV ? 一文了解處理器架構(gòu)
- 一文了解天貓精靈連接手機(jī)的方法 天貓精靈怎么連接的手機(jī)的
- 一文錢等于多少人民幣
- 考研統(tǒng)一文具什么樣
- 3000育人故事
