愚公系列2022年04月 .NET架構(gòu)班 039-分布式中間件 ShardingSphere-Proxy之分庫

      網(wǎng)友投稿 648 2022-05-29

      一、ShardingSphere-Proxy之分庫

      將hmms分成hmms-0和hmms-1的步驟如下:

      1、創(chuàng)建數(shù)據(jù)庫

      創(chuàng)建數(shù)據(jù)庫hmms、hmms-0、hmms-1三個數(shù)據(jù)庫

      2、然后在config-sharding.yaml中添加分庫配置

      # 3、創(chuàng)建客戶端連接庫 schemaName: hmms #1、連接mysql dataSources: hmmsdatasources-0: url: jdbc:mysql://localhost:3306/hmms-0?serverTimezone=UTC&useSSL=false username: root password: 123456 connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 minPoolSize: 1 hmmsdatasources-1: url: jdbc:mysql://localhost:3306/hmms-1?serverTimezone=UTC&useSSL=false username: root password: 123456 connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 minPoolSize: 1 # 2、分片規(guī)則 rules: - !SHARDING tables: user: actualDataNodes: hmmsdatasources-${0..1}.user-${0..1} tableStrategy: standard: shardingColumn: useid shardingAlgorithmName: use_MOD databaseStrategy: #分庫規(guī)則 standard: shardingColumn: useid shardingAlgorithmName: use_MOD keyGenerateStrategy: column: useid keyGeneratorName: snowflake shardingAlgorithms: use_MOD: type: MOD props:

      二、ShardingSphere-Proxy數(shù)據(jù)查詢分庫分表原理

      對查詢語句進(jìn)行分析: select * from user where useid= 1

      方案:

      1.SQL解析

      2.查詢優(yōu)化

      3.SQL路由

      4.SQL改寫

      5.SQL執(zhí)行

      6.結(jié)果歸并

      技術(shù)

      1、SQL解析

      SQLParserFacade 配置用于SQL解析的詞法分析器和語法分析器入口

      SQLVisitorFacade SQL 語法樹訪問器入口

      2、路由解析

      – 使用ModShardingAlgorithm分片算法

      SQLRouter ShardingSQLRouter 用于處理路由結(jié)果

      2.1 數(shù)據(jù)分片

      ModShardingAlgorithm分片算法

      3、SQL改寫

      【愚公系列】2022年04月 .NET架構(gòu)班 039-分布式中間件 ShardingSphere-Proxy之分庫

      SQLRewriteContextDecorator ShardingSQLRewriteContextDecorator 用于處理 SQL 改寫結(jié)果

      4、SQL執(zhí)行

      SQLExecution SQL執(zhí)行過程

      5、結(jié)果歸并

      ResultProcessEngine ShardingResultMergerEngine 用于處理分片結(jié)果集歸并

      過程

      1、先取出ProductId % 2 然后進(jìn)行取模得到 0 1

      2、如果結(jié)果為0:根據(jù)路由ShardingSQLRouter 找到真實表seckill_0 數(shù)據(jù)就存儲到第一張庫。如果結(jié)果為1:根據(jù)路由ShardingSQLRouter 找到真實表seckill_1 數(shù)據(jù)就存儲到第二張表。

      總結(jié)

      ShardingSphere-Proxy的分庫分表就介紹到這里了。下面是對應(yīng)遇到數(shù)據(jù)庫問題方案選擇總結(jié)。

      1.數(shù)據(jù)庫瓶頸

      不管是IO瓶頸,還是CPU瓶頸,最終都會導(dǎo)致數(shù)據(jù)庫的活躍連接數(shù)增加,進(jìn)而逼近甚至達(dá)到數(shù)據(jù)庫可承載活躍連接數(shù)的閾值。在業(yè)務(wù)Service來看就是,可用數(shù)據(jù)庫連接少甚至無連接可用。接下來就可以想象了吧(并發(fā)量、吞吐量、崩潰)。

      1.1 IO瓶頸

      第一種:磁盤讀IO瓶頸,熱點數(shù)據(jù)太多,數(shù)據(jù)庫緩存放不下,每次查詢時會產(chǎn)生大量的IO,降低查詢速度 -> 分庫和垂直分表。

      第二種:網(wǎng)絡(luò)IO瓶頸,請求的數(shù)據(jù)太多,網(wǎng)絡(luò)帶寬不夠 -> 分庫。

      1.2 CPU瓶頸

      第一種:SQL問題,如SQL中包含join,group by,order by,非索引字段條件查詢等,增加CPU運算的操作 -> SQL優(yōu)化,建立合適的索引,在業(yè)務(wù)Service層進(jìn)行業(yè)務(wù)計算。

      第二種:單表數(shù)據(jù)量太大,查詢時掃描的行太多,SQL效率低,CPU率先出現(xiàn)瓶頸 -> 水平分表。

      .NET 分布式

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:RabbitMQ 第1章 RabbitMQ部署
      下一篇:安全治理云圖Compass,免費公測!
      相關(guān)文章
      亚洲熟妇av一区二区三区下载| 亚洲av永久无码精品漫画 | 亚洲国产最大av| 久久精品国产亚洲AV香蕉| 亚洲成在人线av| 亚洲αv在线精品糸列| 在线观看亚洲av每日更新 | 99久久亚洲精品无码毛片 | 亚洲国产成人久久综合一区77| 亚洲AV成人片无码网站| 亚洲AV成人片无码网站| 国产亚洲精品成人久久网站 | 亚洲精品乱码久久久久久V| 四虎亚洲精品高清在线观看| 亚洲成a人片77777群色| 亚洲精品国产免费| 亚洲av无码片在线观看| 亚洲jjzzjjzz在线观看| 亚洲午夜在线播放| 亚洲欧洲精品成人久久曰| 亚洲AV电影天堂男人的天堂| 久久人午夜亚洲精品无码区| 亚洲国产电影av在线网址| 亚洲中文字幕成人在线| 亚洲色欲久久久综合网| 亚洲成a人片在线观看无码| 亚洲成人动漫在线| 亚洲天堂福利视频| 久久夜色精品国产噜噜亚洲a| 国产 亚洲 中文在线 字幕| 亚洲va中文字幕| 亚洲 另类 无码 在线| 亚洲人成无码www久久久| 亚洲裸男gv网站| 亚洲Av综合色区无码专区桃色 | 亚洲精品久久无码av片俺去也| 亚洲AV香蕉一区区二区三区| 亚洲?V无码成人精品区日韩| 中文亚洲成a人片在线观看| 午夜亚洲AV日韩AV无码大全| 亚洲国产精品综合久久网各 |