<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          FA10# 數(shù)據(jù)庫(kù)組件功能設(shè)計(jì)點(diǎn)整理

          共 1893字,需瀏覽 4分鐘

           ·

          2022-02-11 21:53


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

          • 分庫(kù)分表
          • 數(shù)據(jù)復(fù)制
          • 數(shù)據(jù)同步平臺(tái)
          • 全局唯一主鍵
          • 運(yùn)維自動(dòng)化可視化
          一、分庫(kù)分表

          分庫(kù)分表組件主要為分擔(dān)數(shù)據(jù)庫(kù)壓力,通過多庫(kù)多表承接請(qǐng)求。盡管擁有眾多的分庫(kù)分表組件,Apache ShardingSphere作為Apache的頂級(jí)項(xiàng)目依舊是主流。無論直接使用還是基于其二次開發(fā)或者自研,均值得研究。

          1.ShardingSphere-JDBC

          客戶端直連數(shù)據(jù)庫(kù),分布式無中心化,主要針對(duì)java語(yǔ)言,數(shù)據(jù)庫(kù)連接消耗多。

          2.ShardingSphere-Proxy

          客戶端先連接到Proxy代理,通過代理連接數(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è)方案中,還沒DB的mesh,下沉能力的同時(shí),也帶來了數(shù)據(jù)面和控制面板的復(fù)雜性。

          https://github.com/apache/shardingsphere.git

          備注:當(dāng)前還是客戶端直連數(shù)據(jù)庫(kù)為主流,中心化的Proxy依然有公司采納然占比依舊很少,至于Sidecar模式的大規(guī)模使用還在未來。

          二、數(shù)據(jù)復(fù)制

          1.單向搬運(yùn)

          將Mysql數(shù)據(jù)同步到消息隊(duì)列或者其他數(shù)據(jù)存儲(chǔ)源,常用開源組件為canal。

          https://github.com/alibaba/canal

          ![](https://gitee.com/laoliangcode/md-picture/raw/master/img/mysql binlog 解析.png)

          2.雙/單向同步

          在異地多活場(chǎng)景中數(shù)據(jù)庫(kù)的雙向同步、跨機(jī)房災(zāi)備的單向同步等場(chǎng)景,常用組件otter。

          https://github.com/alibaba/otter

          其他類似組件: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)景越來越多,為每個(gè)不同的數(shù)據(jù)源寫一個(gè)同步插件變得復(fù)雜和不好維護(hù),此時(shí)可以考慮搭建一個(gè)數(shù)據(jù)同步平臺(tái)。

          • 通過ReaderPugin和WriterPlugin插件化
          • 插件化對(duì)接入的數(shù)據(jù)源和目標(biāo)數(shù)據(jù)源只需要編寫插件即可
          • 數(shù)據(jù)轉(zhuǎn)換為提高吞吐性能可以引入Flink批處理框架

          備注:數(shù)據(jù)同步平臺(tái)社區(qū)也有開源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的方案有很多,常見的有:

          • 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_28

          https://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)控可視化

          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线日本黄色视频 | 成人网站在线进入 | www.黄色网址 | 尻逼网站| 美女操鸡巴视频 |