2020年下半年高級架構設計師?論文
?
? ? ? 2020年11月7日我參加了高級架構設計師的考證,以前在私企工作時,時間都比較緊,大家都不太會去關注一系列的考證。2018年到了國企工作,有一定的自由時間,為了不在游戲和頭條中荒廢度日,我決定去考證,一來可以申請減免個稅,二來可以加強理論知識的掌握,給自己充充電。
? ? ? 本次高級架構設計師考證下午論文題目之一:論數(shù)據(jù)庫分庫常用算法hash算法,一致性算hash法,range分段算法。考后查詢了一下資料,我居然答對了,希望自己能過吧。
?
?1:什么是hash算法
? ? ? hash算法是指對某一字段取hash值來確定你的數(shù)據(jù)應該落在那個分庫上,常用的hash算法就是對某一字段求模取余。
?1.1:hash算法優(yōu)點
第一:數(shù)據(jù)分布相對比較均勻,不容易出現(xiàn)熱點和并發(fā)訪問的瓶頸。
第二:算法簡單,一眼就知道數(shù)據(jù)落入那個分庫。使用分庫字段進行范圍查
? ? ? ? ? 找時,可快速定位分庫進行快速查詢,有效避免跨分庫查詢的問題。
?1.2:hash算法缺點
第一:后期分庫集群擴容時,需要遷移舊的數(shù)據(jù)很難,往往需要重新計算和
? ? ? ? ? 移動數(shù)據(jù),數(shù)據(jù)抖動太厲害。
第二:容易面臨跨庫查詢的復雜問題(解決這個問題的較好處理方式是針對
? ? ? ? ? 業(yè)務的一個唯一標記做hash,保證涉及這個業(yè)務的所有數(shù)據(jù)都落入
? ? ? ? ? 同一個分庫來避免跨庫操作)。
??
?2:什么是一致性hash算法
? ? ? 一致性hash算法描述起來比較復雜,大家可以百度下“一致性hash環(huán)”,了解其原理也就了解一致性hash算法。本文主要分析下優(yōu)缺點

2.1:一致性hash算法優(yōu)點
第一:數(shù)據(jù)冷熱分別均勻,不會出現(xiàn)數(shù)據(jù)庫瓶頸問題
第二:數(shù)據(jù)集群擴展或者分庫宕機,造成的數(shù)據(jù)抖動較小
3:什么是range分段算法
? ? ? range分段算法比較簡單,就是針對某一數(shù)值字段做分段,比如1-1000落入分庫1,1001-2000落入分庫2,2001-3000落入分庫3.....
3.1:range分段算法優(yōu)點
第一:算法簡單,一眼就知道數(shù)據(jù)落入那個分庫,使用分庫字段進行范圍查
? ? ? ? ?找時,連續(xù)分庫可快速定位分庫進行快速查詢,有效避免跨分庫查詢
? ? ? ? ?的問題。
第二:表大小可控
第三:利于水平擴展
3.2:range分段算法缺點
? ? ?缺點亦很明顯,數(shù)據(jù)冷熱分布不均衡,熱點數(shù)據(jù)容易產(chǎn)生瓶頸問題。例如按時間字段分庫,有些分庫存儲最近時間段內(nèi)的數(shù)據(jù),可能會被頻繁的讀寫,而有些分庫存儲的歷史數(shù)據(jù),則很少被查詢。
