摘要:個人對分布式系統(tǒng)的涉及很感興趣,但分布式系統(tǒng)涉及的知識非常多,剛開始學(xué)習(xí)時也是各個點分散的學(xué)習(xí)。前兩天對于數(shù)據(jù)拆分這一塊做了一個總結(jié),因此記錄下來。
個人對分布式系統(tǒng)的涉及很感興趣,但分布式系統(tǒng)涉及的知識非常多,剛開始學(xué)習(xí)時也是各個點分散的學(xué)習(xí)。前兩天對于數(shù)據(jù)拆分這一塊做了一個總結(jié),因此記錄下來。
技術(shù)出現(xiàn)的原因都是為了解決問題,本文章也是按照這個思路去探討的。
為什么需要將數(shù)據(jù)庫內(nèi)的數(shù)據(jù)進行拆分一臺機器的處理能力有限,當數(shù)據(jù)量大了后性能下降,而且硬件單機成本不高。
如何拆分垂直分庫(根據(jù)業(yè)務(wù)單元的不同把表分到不同的主機,單臺機器能夠處理的請求數(shù)量有限)
水平分表(當一張表的數(shù)據(jù)多了之后查詢效率就會很慢,可以根據(jù)字段范圍劃分不同的表,學(xué)生表的id字段,1~10000分為一張表,10000~20000分為另一張表)
拆分帶來的問題單機ACID打破,引入了分布式事務(wù)(難點)
join操作困難,查詢跨庫
自增id受到困難
解決方案
分布式事務(wù):兩階段提交(2pc),大概意思就是分布式系統(tǒng)中有一個事務(wù)管理器(TM),執(zhí)行分布式事務(wù)時向每個資源申請,資源返回全都OK后再向每個資源提交事務(wù),同樣等待每個資源返回OK后就完成事務(wù),其中任何一個環(huán)節(jié)出現(xiàn)erro則回滾。 壞處很明顯性能太差,高并發(fā)系統(tǒng)根本不能使用。
業(yè)界現(xiàn)使用消息隊列來解決分布式事務(wù)(RocketMQ)具體步驟如下: 1.MQ發(fā)送方發(fā)送消息到MQServer 2.MQServer接收并回應(yīng),表明以成功到達 3.MQ發(fā)送方Commit本地事務(wù) 4.若Commit成功則通知MQServer該消息可被消費,失敗則表明該消息應(yīng)被丟棄 5.若MQ發(fā)送方超時未對MQServer發(fā)送狀態(tài),則主動回查事務(wù)狀態(tài)
跨庫join操作:轉(zhuǎn)化為多個數(shù)據(jù)庫的查詢,我們設(shè)計數(shù)據(jù)庫時也應(yīng)盡量避免產(chǎn)生跨庫操作。
自增id:多帶帶做一個id生成器的服務(wù),對于每次請求還可以分配一段id,減少請求次數(shù),增加速度。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/68040.html
摘要:為了幫助用戶更好地完成消費決策閉環(huán),馬蜂窩上線了大交通業(yè)務(wù)?,F(xiàn)在,用戶在馬蜂窩也可以完成購買機票火車票等操作。第二階段架構(gòu)轉(zhuǎn)變及服務(wù)化初探從年開始,整個大交通業(yè)務(wù)開始從架構(gòu)向服務(wù)化演變。 交通方式是用戶旅行前要考慮的核心要素之一。為了幫助用戶更好地完成消費決策閉環(huán),馬蜂窩上線了大交通業(yè)務(wù)。現(xiàn)在,用戶在馬蜂窩也可以完成購買機票、火車票等操作。 與大多數(shù)業(yè)務(wù)系統(tǒng)相同,我們一樣經(jīng)歷著從無到有...
閱讀 1998·2021-11-24 09:39
閱讀 2793·2021-10-14 09:43
閱讀 3411·2021-10-08 10:10
閱讀 2421·2021-09-22 15:54
閱讀 2413·2019-08-29 17:20
閱讀 1631·2019-08-28 18:14
閱讀 2432·2019-08-26 13:28
閱讀 1182·2019-08-26 12:16