新聞中心
引言
數(shù)據(jù)庫(kù)中間件承擔(dān)應(yīng)用與數(shù)據(jù)庫(kù)之間的粘合與潤(rùn)滑,數(shù)據(jù)庫(kù)中間件設(shè)計(jì)的合理應(yīng)用跑起來(lái)就絲滑,否則會(huì)拉胯。本文就常見(jiàn)數(shù)據(jù)庫(kù)組件相關(guān)的功能設(shè)計(jì)點(diǎn)做個(gè)歸納整理:

創(chuàng)新互聯(lián)建站是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶(hù)提供滿(mǎn)意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的十年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶(hù),如邊坡防護(hù)網(wǎng)等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶(hù)的一致贊揚(yáng)。
- 分庫(kù)分表
- 數(shù)據(jù)復(fù)制
- 數(shù)據(jù)同步平臺(tái)
- 全局唯一主鍵
- 運(yùn)維自動(dòng)化可視化
一、分庫(kù)分表
分庫(kù)分表組件主要為分擔(dān)數(shù)據(jù)庫(kù)壓力,通過(guò)多庫(kù)多表承接請(qǐng)求。盡管擁有眾多的分庫(kù)分表組件,Apache ShardingSphere作為Apache的頂級(jí)項(xiàng)目依舊是主流。無(wú)論直接使用還是基于其二次開(kāi)發(fā)或者自研,均值得研究。
1.ShardingSphere-JDBC
客戶(hù)端直連數(shù)據(jù)庫(kù),分布式無(wú)中心化,主要針對(duì)java語(yǔ)言,數(shù)據(jù)庫(kù)連接消耗多。
2.ShardingSphere-Proxy
客戶(hù)端先連接到Proxy代理,通過(guò)代理連接數(shù)據(jù)庫(kù),能夠跨語(yǔ)言,消耗數(shù)據(jù)庫(kù)的連接數(shù)少(僅代理直接連接數(shù)據(jù)庫(kù)),但是中心化風(fēng)險(xiǎn)點(diǎn)也主要在此。
3.ShardingSphere-Sidecar
網(wǎng)格化代理還在規(guī)劃中,從當(dāng)前螞蟻對(duì)外提供的service mesh商業(yè)方案中,還沒(méi)DB的mesh,下沉能力的同時(shí),也帶來(lái)了數(shù)據(jù)面和控制面板的復(fù)雜性。
https://github.com/apache/shardingsphere.git
備注:當(dāng)前還是客戶(hù)端直連數(shù)據(jù)庫(kù)為主流,中心化的Proxy依然有公司采納然占比依舊很少,至于Sidecar模式的大規(guī)模使用還在未來(lái)。
二、數(shù)據(jù)復(fù)制
1.單向搬運(yùn)
將Mysql數(shù)據(jù)同步到消息隊(duì)列或者其他數(shù)據(jù)存儲(chǔ)源,常用開(kāi)源組件為canal。
https://github.com/alibaba/canal

2.雙/單向同步
在異地多活場(chǎng)景中數(shù)據(jù)庫(kù)的雙向同步、跨機(jī)房災(zāi)備的單向同步等場(chǎng)景,常用組件otter。
https://github.com/alibaba/otter
其他類(lèi)似組件:dataLink、databus
https://github.com/ucarGroup/DataLink
https://github.com/linkedin/databus?
備注:在單/雙向同步場(chǎng)景中通常伴隨著DDL的同步。
三、數(shù)據(jù)同步平臺(tái)
當(dāng)隨著數(shù)據(jù)同步的場(chǎng)景越來(lái)越多,為每個(gè)不同的數(shù)據(jù)源寫(xiě)一個(gè)同步插件變得復(fù)雜和不好維護(hù),此時(shí)可以考慮搭建一個(gè)數(shù)據(jù)同步平臺(tái)。
- 通過(guò)ReaderPugin和WriterPlugin插件化
- 插件化對(duì)接入的數(shù)據(jù)源和目標(biāo)數(shù)據(jù)源只需要編寫(xiě)插件即可
- 數(shù)據(jù)轉(zhuǎn)換為提高吞吐性能可以引入Flink批處理框架
備注:數(shù)據(jù)同步平臺(tái)社區(qū)也有開(kāi)源DataX可供參考。
https://github.com/alibaba/DataX/blob/master/introduction.md
Flink-CDC
https://github.com/ververica/flink-cdc-connectors
四、全局唯一主鍵
在分布式數(shù)據(jù)庫(kù)中最好使用分布式全局唯一ID作為數(shù)據(jù)記錄的唯一標(biāo)識(shí),原因也很簡(jiǎn)單,主要是避免主鍵沖突。
- 跨庫(kù)數(shù)據(jù)遷移避免主鍵沖突
- 雙活數(shù)據(jù)庫(kù)雙向同步時(shí)避免主鍵沖突
- 唯一鍵設(shè)計(jì)合理對(duì)排序和識(shí)別均有良好的輔助作用
生成全局唯一ID的方案有很多,常見(jiàn)的有:
- UUID
- 數(shù)據(jù)庫(kù)發(fā)放不同的ID區(qū)段
- 雪花算法(snowflake)生成唯一標(biāo)識(shí)
雪花算法: 由Twitter創(chuàng)建生成全局唯一ID算法,一個(gè)Snowflake ID組成共64位構(gòu)成如下,如果不需要這么多位可以改造縮短一些長(zhǎng)度。
Twitter Scala 版本:
https://github.com/twitter-archive/snowflake/tree/scala_28https://github.com/twitter-archive/snowflake/releases/tag/snowflake-2010
雪花算法java版本參考:
https://github.com/beyondfengyu/SnowFlake/blob/master/SnowFlake.java
五、運(yùn)維自動(dòng)化可視化
將常用的一些與DB相關(guān)需要手動(dòng)的創(chuàng)建的自動(dòng)化、可視化。
- 數(shù)據(jù)庫(kù)申請(qǐng)與創(chuàng)建
- DDL變更自動(dòng)化
- SQL執(zhí)行結(jié)果導(dǎo)出
- 同步任務(wù)申請(qǐng)自動(dòng)化
- 任務(wù)運(yùn)行監(jiān)控可視化
當(dāng)前題目:聊聊數(shù)據(jù)庫(kù)組件功能設(shè)計(jì)點(diǎn)
網(wǎng)頁(yè)網(wǎng)址:http://www.5511xx.com/article/dhspccs.html


咨詢(xún)
建站咨詢(xún)
