偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

數(shù)據(jù)庫中間件的分片規(guī)則如何選擇,這篇文章告訴你

數(shù)據(jù)庫
本文對常用數(shù)據(jù)分片規(guī)則進(jìn)行優(yōu)缺點以及適應(yīng)場景的介紹,希望對讀者朋友們有所幫助!

在做數(shù)據(jù)的分庫分表時,選擇合適分片規(guī)則是一件很重要的事情,如果分片規(guī)則選擇不合理,可能會導(dǎo)致以下兩種情況:

  • 數(shù)據(jù)分布不均衡,系統(tǒng)產(chǎn)生單點故障
  • 后期數(shù)據(jù)擴(kuò)容難

因此本文對常用數(shù)據(jù)分片規(guī)則進(jìn)行優(yōu)缺點以及適應(yīng)場景的介紹,希望對讀者朋友們有所幫助!

時間范圍分片

時間范圍分片要求分片鍵為時間類型字段,可以支持按年、按月、按日、按小時等范圍進(jìn)行數(shù)據(jù)分片

優(yōu)點:

此分片規(guī)則在擴(kuò)容時只需要添加節(jié)點,指定日期范圍,可以避免擴(kuò)容時的數(shù)據(jù)遷移

缺點:

負(fù)載不均衡,容易導(dǎo)致單節(jié)點故障,假設(shè):2016.1->2016.6這個時間段(上圖DB2節(jié)點),公司在做產(chǎn)品推廣,那么這個時間段的數(shù)據(jù)量會比較大,會導(dǎo)致DB2節(jié)點負(fù)載會比較高,而節(jié)點負(fù)載又比較低。

適應(yīng)場景:

具有時間屬性的數(shù)據(jù),適合做范圍分片,比如日志數(shù)據(jù),前期查詢頻率比較高,可以按照季度或者月份進(jìn)行范圍分割,后期不需要直接把整個節(jié)點遷移走或者進(jìn)行數(shù)據(jù)清空,如下圖,假如DB1所在數(shù)據(jù)不需要,直接遷移走即可。

如下圖是一個數(shù)據(jù)擴(kuò)容示例,假設(shè)之前的分片規(guī)則規(guī)劃至2016年底,那么為了支持2017年的數(shù)據(jù),只需要增加對應(yīng)節(jié)點、并修改分片規(guī)則即可(DB4節(jié)點),不需要遷移原有數(shù)據(jù)

數(shù)值范圍分片

數(shù)值范圍分片與時間范圍分片類似,唯一不同就是每個分片數(shù)據(jù)量相對均衡,熱點數(shù)據(jù)存在但是相對較少。

比如時間范圍分片2016.1-2016.6為一個分片,在此分片上產(chǎn)生數(shù)據(jù)是不可控的,假如這個時間段公司不搞促銷,那么這個分片數(shù)據(jù)可能為1w條,如果搞可能為1千萬。

但是數(shù)值范圍分片沒有此問題,因為在設(shè)置分片時,已規(guī)定了每個分片的數(shù)據(jù)量,所以數(shù)據(jù)分布比較均衡。

優(yōu)點:

  • 此分片規(guī)則在擴(kuò)容時只需要添加節(jié)點,指定數(shù)值范圍,可以避免擴(kuò)容時的數(shù)據(jù)遷移。
  • 數(shù)據(jù)量可控,可以均衡,也可以不均衡。

缺點:

無法解決熱點問題,如果某一段數(shù)據(jù)訪問QPS特別高,就會落到單節(jié)點上進(jìn)行操作。

適應(yīng)場景:

業(yè)務(wù)場景中熱點數(shù)據(jù)比較少的業(yè)務(wù)都可以使用,比如用戶系統(tǒng),以用戶ID進(jìn)行分片,用戶Id采用全局遞增模式。

取模分片

取模顧名思義就是對分片鍵值與對應(yīng)的節(jié)點數(shù)進(jìn)行取余,如下圖,假如分片鍵為6,節(jié)點數(shù)為3,那么6%3=0,那么此分片鍵應(yīng)該保存在DB1節(jié)點

取模分片擴(kuò)展又分為基礎(chǔ)分片和hash取模分片,具體如下:

  • 基礎(chǔ)分片要求分片鍵類型為數(shù)值型或者值中必須帶有數(shù)字,然后進(jìn)行截取取余計算。
  • hash取模分片不要求字段值中必須要有數(shù)字,因為不管是字符串還是其他值,需要先進(jìn)行hash計算,然后再進(jìn)行取模

優(yōu)點:

節(jié)點負(fù)載均衡,假設(shè)key是按照全局遞增,每次保存數(shù)據(jù)時與節(jié)點數(shù)進(jìn)行取模,保存至對應(yīng)的節(jié)點。

缺點:

在擴(kuò)容時需要全量遷移,因前期是按照規(guī)定的節(jié)點數(shù)取模存儲到各個節(jié)點的,如果后期新增節(jié)點,導(dǎo)致老數(shù)據(jù)按照新的節(jié)點數(shù)取模無法匹配到對應(yīng)的節(jié)點,如下圖:

因此所有的數(shù)據(jù)需要全部遷移重新分片,如下圖:

適應(yīng)場景:

適用于需要將數(shù)據(jù)均勻分布的場景,例如:銀行類客戶業(yè)務(wù)應(yīng)用,業(yè)務(wù)邏輯主體是客戶,可使用客戶對應(yīng)的表字段(例如客戶號)作為拆分鍵

一致性hash分片

之前文章介紹過一致性hash分片各種特性,具體可查看一致性HASH算法,看這一篇就夠了,這里只做簡單介紹

一致性哈希是指將「存儲節(jié)點」和「數(shù)據(jù)」都映射到一個首尾相連的哈希環(huán)上,增加或者移除一個節(jié)點,只影響該節(jié)點在哈希環(huán)上順時針相鄰的后繼節(jié)點,其它數(shù)據(jù)不會受到影響

但是一致性哈希算法不能夠均勻的分布節(jié)點,會出現(xiàn)大量請求都集中在一個節(jié)點的情況,在這種情況下進(jìn)行容災(zāi)與擴(kuò)容時,容易出現(xiàn)雪崩的連鎖反應(yīng),如下圖

因此需要增加虛擬節(jié)點來解決數(shù)據(jù)均衡分布的問題,如下圖:

優(yōu)點:

通過增加虛擬節(jié)點后數(shù)據(jù)分布相對均衡,節(jié)點不存在熱點問題。

缺點:

數(shù)據(jù)擴(kuò)容相對復(fù)雜,理論上一致性Hash在擴(kuò)容時只需要遷移相鄰節(jié)點部分?jǐn)?shù)據(jù)即可,但是為了保證節(jié)點的數(shù)據(jù)均衡,增加了虛擬節(jié)點,導(dǎo)致相鄰過多,那么數(shù)據(jù)擴(kuò)容變得就沒那么簡單,假設(shè)增加DB4節(jié)點的虛擬節(jié)點(紅色標(biāo)識),那么相鄰的DB1和DB3數(shù)據(jù)都需要遷移。

適應(yīng)場景:

適用于需要將數(shù)據(jù)均勻分布并且在擴(kuò)容時不需要大量遷移數(shù)據(jù)的場景。

責(zé)任編輯:趙寧寧 來源: 架構(gòu)成長指南
相關(guān)推薦

2018-02-08 18:16:39

數(shù)據(jù)庫MySQL鎖定機(jī)制

2019-02-21 09:32:13

MQ中間件SQL

2020-07-09 10:21:03

網(wǎng)絡(luò)排錯TCPIP

2020-09-18 10:18:08

MySQL數(shù)據(jù)插入數(shù)據(jù)庫

2023-04-06 11:10:31

閉包JavaScript

2022-05-27 07:49:14

RocketMQ消息中間件分布式

2017-11-30 08:56:14

數(shù)據(jù)庫中間件架構(gòu)師

2017-11-27 06:01:37

數(shù)據(jù)庫中間件中間層

2017-11-27 05:06:42

數(shù)據(jù)庫中間件cobar

2017-11-27 05:36:16

數(shù)據(jù)庫中間件TDDL

2017-12-01 05:04:32

數(shù)據(jù)庫中間件Atlas

2018-02-24 19:37:33

Java8數(shù)據(jù)庫中間件

2017-05-23 18:55:05

mysql-proxy數(shù)據(jù)庫架構(gòu)

2019-01-08 07:43:53

路由器調(diào)制解調(diào)器

2017-07-12 16:56:42

卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)CNN

2017-07-05 15:42:58

卷積神經(jīng)網(wǎng)絡(luò)Non-Euclide計算機(jī)視覺

2011-08-10 13:03:58

CJDBC數(shù)據(jù)庫集群

2018-10-24 16:25:24

數(shù)據(jù)庫MySQLxtraback

2022-08-29 10:08:50

跨集群

2018-09-28 09:32:57

點贊
收藏

51CTO技術(shù)棧公眾號