精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

分庫分表,讀寫分離后,數據庫中間件扮演了一個怎樣的角色?

數據庫 MySQL
前面一篇文章圖解分布式系統架構(看推薦閱讀)大概講了一下分庫分表,以及讀寫分離出現的場景,分庫分表為了解決高并發和海量數據的問題。

分庫分表,讀寫分離會帶來哪些問題?

前面一篇文章圖解分布式系統架構(看推薦閱讀)大概講了一下分庫分表,以及讀寫分離出現的場景,分庫分表為了解決高并發和海量數據的問題。

分庫后會出現新的問題

1、跨庫join問題

如有2個庫,訂單庫,用戶庫,要查詢買了某件商品的所有用戶信息

2、事務問題

用戶下訂單的時候需要扣減商品庫存,如果訂單數據和商品數據在一個數據庫中,我們可以使用事務來保證扣減商品庫存和生成訂單的操作要么都成功要么都失敗,但分庫后就無法使用數據庫事務了,這時就要用到分布式事務了

分表后也會出現新的問題

1、join操作

水平分表后,數據分散在多個表中,如果需要與其他表進行join查詢,需要在業務代碼或數據庫中間件中進行多次join查詢,然后將結果合并

2、count()操作

業務代碼或者數據庫中間件對每個表進行count(*)操作,然后將結果相加。或者新建一張表,假如表名為“記錄數表”,包含table_name和row_count兩個字段,每次插入或刪除子表數據成功后,都更新“記錄數表”

3、order by操作

水平分表后,數據分散到多個字表中,排序操作無法再數據庫中完成,只能由業務代碼或數據庫中間件分別查詢每個子表中的數據,然后匯總進行排序

而高并發這個階段,肯定是需要做讀寫分離的,啥意思?因為實際上大部分的互聯網公司,一些網站,或者是 app,其實都是讀多寫少。所以針對這個情況,就是寫一個主庫,但是主庫掛多個從庫,然后從多個從庫來讀,那不就可以支撐更高的讀并發壓力了嗎?

那么如何實現 MySQL 的讀寫分離?

其實很簡單,就是基于主從復制架構,簡單來說,就搞一個主庫,掛多個從庫,然后我們就單單只是寫主庫,然后從庫讀取bin log進行重放,這樣主庫和從庫數據就一樣,只不過并發量比較高時,會有主從同步延時問題

放個圖理解一下MySQL主從復制的原理,這塊面試經常被問到

總的來說,MySQL復制有三個步驟

1、在主庫上把數據更改記錄到二進制日志中(Binary Log)中(這些記錄被稱為二進制日志事件)

2、備庫將主庫上的日志復制到自己的中繼日志(Relay Log)中

3、備庫讀取中繼日志中的事件,將其重放到備庫數據之上

現在理論知識都有了,就剩怎么實現了?本來就是為了實現一個功能,現在好了,單寫讀寫分離,跨庫join,分布式事務,排序操作等就夠你忙的了。

這時候你就應該想起數據庫中間件了,它能幫你進行上述操作,把你從復雜的數據處理中解放出來,專注于開發業務代碼。

數據庫中間件能幫你做什么?

目前國內用的最多的中間件就是sharding-jdbc,mycat,別的用的很少,不再介紹

而數據庫中間件針對數據源管理,目前主要有兩種思路

1、客戶端模式,在每個應用程序模塊中配置管理自己需要的一個(或者多個)數據源,直接訪問各個數據庫,在模塊內完成數據的整合,sharding-jdbc的實現方式

2、通過中間代理層來統一管理所有的數據源,后端數據庫集群對前端應用程序透明,mycat的實現方式

放兩張圖就能理解區別了

一般的建議是小公司用sharding-jdbc,大公司用mycat,因為維護一套mycat集群也需要人力,物力。鑒于篇幅限制,本文就介紹一下mycat的基本使用

以一個最形象的例子,讓你明白mycat到底幫你做了什么?

先介紹一下什么是分片?簡單來說,就是通過某種特定的條件,將我們存放在同一個數據庫中的數據,分散存放到多個數據庫上面,以達到分散單臺設備負載的效果

如上圖所表示,數據被分到多個分片數據庫后,應用如果需要讀取數據,就要需要處理多個數據源的數據。如果沒有數據庫中間件,那么應用將直接面對分片集群,數據源切換、事務處理、數據聚合都需要應用直接處理,原本該是專注于業務的應用,將會花大量的工作來處理分片后的問題,最重要的是每個應用處理將是完全的重復造輪子。

所以有了數據庫中間件,應用只需要集中與業務處理,大量的通用的數據聚合,事務,數據源切換都由中間件來處理。

那么數據庫中間件是怎么做到的呢?

綠色的部分為mycat的邏輯節點,藍色的部分為物理節點(即數據庫的部署地址)

schema:邏輯庫

通常對實際應用來說,并不需要知道中間件的存在,業務開發人員只需要知道

數據庫的概念,所以數據庫中間件可以被看做是一個或多個數據庫集群構成的邏輯庫

table:邏輯表

既然有邏輯庫,那么就會有邏輯表,分布式數據庫中,對應用來說,讀寫數據的表就是邏輯表。邏輯表,可以是數據切分后,分布在一個或多個分片庫中,也可以不做數據切分,不分片,只有一個表構成

datanode:分片節點

數據切分后,一個大表被分到不同的分片數據庫上面,每個表分片所在的數據庫就是分片節點

datahost:節點主機(上圖藍色節點)

數據切分后,每個分片節點(dataNode)不一定都會獨占一臺機器,同一機器上面可以有多個分片數據庫,這樣一個或多個分片節點(dataNode)所在的機器就是節點主機(dataHost),為了規避單節點主機并發數限制,盡量將讀寫壓力高的分片節點(dataNode)均衡的放在不同的節點主機(dataHost)。

rule:分片規則

前面講了數據切分,一個大表被分成若干個分片表,就需要一定的規則,這樣按照某種業務規則把數據分到某個分片的規則就是分片規則,數據切分選擇合適的分片規則非常重要,將極大的避免后續數據處理的難度。

實戰Mycat

為了快速熟悉各種配置,一般直接從git上下載代碼,本地用idea打開啟動,方便練習一波,小編演示本文就是用的這種方法

mycat的配置其實是蠻簡單的,最主要的是熟悉各配置文件的規則。如用戶名,密碼,分片規則,都是在配置文件中定義的

關于配置文件,conf目錄下主要以下三個需要熟悉,要是本地測試用idea打開在resources目錄下

小編演示一個最簡單的映射配置,找一個數據庫服務器,建立3個庫,db1,db2,db3,把id為0-500 0000的數據放在db1,id為500 0001到1000 0000的數據放在db2,以此類推

server.xml是Mycat服務器參數調整和用戶授權的配置文件(省略了一些配置,后面2個配置文件一樣) 

  1. <mycat:server xmlns:mycat="http://io.mycat/">  
  2.     <user name="root" defaultAccount="true">  
  3.         <property name="password">123456</property>  
  4.         <property name="schemas">TESTDB</property>  
  5.     </user>  
  6. </mycat:server> 

schema.xml是邏輯庫,邏輯表定義以及分片定義的配置文件 

  1. <mycat:schema xmlns:mycat="http://io.mycat/">  
  2.     <!--邏輯庫名-->  
  3.     <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">  
  4.        <!--rule的值和rule.xml的實現對應-->  
  5.         <table name="tb_test" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />  
  6.     </schema>  
  7.     <!--dataHost可以配置不同主機上的數據庫,這里為了演示就配置了一個主機上的不同數據庫-->  
  8.     <dataNode name="dn1" dataHost="localhost1" database="db1" />  
  9.     <dataNode name="dn2" dataHost="localhost1" database="db2" />  
  10.     <dataNode name="dn3" dataHost="localhost1" database="db3" />  
  11.     <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"  
  12.               writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">  
  13.         <!--心跳語句-->  
  14.         <heartbeat>select user()</heartbeat>  
  15.         <!--這里我本地mycat配了一個遠程mysql-->  
  16.         <writeHost host="hostM1" url="遠程mysql的ip地址:3306" user="root"  
  17.                    password="2014">  
  18.         </writeHost>  
  19.     </dataHost>  
  20. </mycat:schema> 

rule.xml是分片規則的配置文件 

  1. <mycat:rule xmlns:mycat="http://io.mycat/">  
  2.     <tableRule name="auto-sharding-long">  
  3.         <rule>  
  4.             <!--根據哪個列進行分片-->  
  5.             <columns>id</columns>  
  6.             <!--分片規則,連續分片-->  
  7.             <algorithm>rang-long</algorithm>  
  8.         </rule>  
  9.     </tableRule>  
  10.     <function name="rang-long"  
  11.        <!--分片規則的實現類-->  
  12.         class="io.mycat.route.function.AutoPartitionByLong">  
  13.         <!--分片規則配置文件-->  
  14.         <property name="mapFile">autopartition-long.txt</property>  
  15.     </function>  
  16. </mycat:rule> 

autopartition-long.txt詳細的分片策略 

  1. # range start-end ,data node index  
  2. K=1000,M=10000 
  3. 00-500M=0  
  4. 500M-1000M=1  
  5. 1000M-1500M=2 

這個配置的意思是,id在0到500w放在***個分片,以此類推

小編這里用Navicat(數據庫連接工具)連接到本地的mycat

主機:localhost

端口:8066

用戶名:root(server.xml中配置好的用戶名密碼)

密碼:123456

看到有一個TestDB庫,在這個庫里面執行建表語句 

  1. CREATE TABLE `tb_test` (  
  2.   `id` int(11) NOT NULL,  
  3.   `name` varchar(255) DEFAULT NULL,  
  4.   PRIMARY KEY (`id`)  
  5. ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

然后到對應的物理數據庫db1,db2,db3上看,3個庫都有了這個表。

在邏輯數據庫中插入如下三條數據 

  1. insert into tb_test (id, name) values (1, "1");  
  2. insert into tb_test (id, name) values (5000001, "5000001");  
  3. insert into tb_test (id, name) values (10000001, "10000001"); 

可以看到id為1的數據插入到物理數據庫中的db1,id為5000001的數據插入到db2,id為10000001的數據插入到db3

在邏輯數據庫中執行如下語句又能拿到這3條記錄 

  1. select id, name from tb_test 

執行如下語句,可以看到mycat從三個數據庫中取了記錄,LIMIT 100是因為schema.xml中配置了sqlMaxLimit=“100” 

  1. explain select id, name from tb_test 

有了mycat以后,我們的數據庫地址配置成mycat即可,它幫我們做了很多,其他各種分片規則,讀寫分離等的配置就不再演示,理解整個框架的大概運行流程就行

***再分享一個知識點,mycat1.5 開始會支持本地 xml 啟動,以及從 zookeeper 加載配置轉為本地 xml 的兩種方式,即原來分享的zookeeper可以用作配置中心 

責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2022-12-05 07:51:24

數據庫分庫分表讀寫分離

2018-02-24 19:37:33

Java8數據庫中間件

2021-05-08 18:50:57

分庫分表中間件

2020-01-03 16:30:14

數據庫讀寫分離分庫

2019-01-16 14:00:54

數據庫分庫分表

2020-04-10 17:00:33

Mycat分庫分表SpringBoot

2023-03-10 18:20:07

客戶端開源中間件

2019-05-13 15:00:14

MySQLMyCat數據庫

2017-12-01 05:04:32

數據庫中間件Atlas

2017-11-27 05:36:16

數據庫中間件TDDL

2017-11-27 05:06:42

數據庫中間件cobar

2022-04-08 09:23:50

數據管理區塊鏈大數據

2017-07-18 17:07:40

數據庫 MyCATJoin

2020-11-06 15:30:23

分庫分表Sharding-JD數據庫

2024-12-04 13:02:34

數據庫分庫分表

2011-08-10 13:03:58

CJDBC數據庫集群

2022-06-15 07:32:24

數據庫分庫分表

2017-05-23 18:55:05

mysql-proxy數據庫架構

2024-08-02 15:47:28

數據庫分庫分表

2017-12-11 13:30:49

Go語言數據庫中間件
點贊
收藏

51CTO技術棧公眾號

日韩欧美中文免费| 国产福利精品一区| 国产亚洲精品美女久久久久| 欧美伦理片在线观看| 呦呦在线视频| 成人h精品动漫一区二区三区| 欧美怡春院一区二区三区| xxx在线播放| 麻豆国产一区| 色偷偷成人一区二区三区91| 椎名由奈jux491在线播放| 天天操天天干天天爽| 毛片基地黄久久久久久天堂| 久久久久亚洲精品成人网小说| 日韩乱码人妻无码中文字幕久久| 日本高清久久| 在线亚洲免费视频| 福利在线一区二区| 男人在线资源站| 高清久久久久久| 国产精品永久免费在线| 久久久夜色精品| 日韩在线看片| 亚洲欧美日韩中文在线| 四虎国产精品永久免费观看视频| 国精产品一区二区三区有限公司| 亚洲成av人片在线| 一区高清视频| yiren22亚洲综合伊人22| 成人免费高清在线观看| 成人免费激情视频| 最近中文字幕在线视频| 国产精品毛片在线看| 欧美高清在线播放| 三级黄色在线观看| 啪啪亚洲精品| 日韩成人在线观看| 中文字幕99页| 中文字幕久久精品一区二区| 欧美精品一卡两卡| 黄色片在线免费| 韩国久久久久久| 精品国产乱码久久久久久天美| 成年人看的毛片| 天使と恶魔の榨精在线播放| 亚洲欧美成aⅴ人在线观看 | 亚州一区二区| 91麻豆精品国产91久久久久| www.se五月| 韩国精品视频在线观看 | 一区二区的视频| 青青草97国产精品免费观看 | 爽爽爽爽爽爽爽成人免费观看| av网站有哪些| 亚洲ab电影| 亚洲免费电影一区| 国产中年熟女高潮大集合| 日本一道高清一区二区三区| 日韩av网站导航| 可以直接看的无码av| 亚洲另类春色校园小说| 亚洲免费一级电影| av在线网站观看| 国产成人一区| 中日韩美女免费视频网址在线观看 | 国产精品久久久久久久久果冻传媒| 丝袜足脚交91精品| 8888四色奇米在线观看| 国产精品全国免费观看高清| 亚洲一区在线免费| 搞黄网站在线观看| 亚洲午夜久久久久久久久电影网| 成人性生活视频免费看| 日本不卡免费高清视频在线| 色综合色综合色综合| 免费看污污网站| 色噜噜成人av在线| 日韩一级大片在线| 国产又黄又粗又猛又爽的视频| 亚洲精品亚洲人成在线| 一个人www欧美| 俄罗斯毛片基地| 中文无码久久精品| 国内精品视频一区| 亚洲av无码乱码国产精品fc2| 精品一区二区三区欧美| 国产传媒一区二区| 欧美成人免费| 日韩毛片视频在线看| 免费拍拍拍网站| 色豆豆成人网| 日韩美女一区二区三区| 性欧美成人播放77777| 日韩久久久久| 精品视频9999| 欧美一级淫片免费视频黄| 久久精品噜噜噜成人av农村| 国产精品免费一区二区三区观看| 色在线免费视频| 日韩一区日韩二区| 欧美日韩一道本| 国产高清亚洲| 亚洲精品中文字幕av| 天海翼在线视频| 六月婷婷一区| caoporen国产精品| 18视频免费网址在线观看| 亚洲一二三四在线| 欧美三级午夜理伦三级富婆| 国产成人福利av| 日韩在线视频观看| 天天综合天天干| 国产成人免费av在线| 亚洲福利av在线| 一二三四视频在线中文| 欧美一区二区啪啪| 日本理论中文字幕| 国产亚洲综合精品| 97在线电影| 黄视频在线观看网站| 色天使色偷偷av一区二区| 乳色吐息在线观看| 四季av一区二区三区免费观看| 97**国产露脸精品国产| 国产99对白在线播放| 国产精品免费免费| 国产精品少妇在线视频| 久久久久久毛片免费看| 欧美高清无遮挡| 国产男男gay体育生白袜| 久久精品一区八戒影视| 国产成人无码a区在线观看视频| 日本成人精品| 久久不射电影网| 91精品在线视频观看| 欧美激情一区二区在线| 国产主播在线看| 日本午夜精品| 88国产精品欧美一区二区三区| 成人免费一级视频| 夜夜揉揉日日人人青青一国产精品| 日韩成人精品视频在线观看| 清纯唯美亚洲综合一区| 国产精品久久久久久久久影视| 三级理论午夜在线观看| 欧美视频中文在线看| 污污内射在线观看一区二区少妇| 亚洲高清久久| 精品一卡二卡三卡四卡日本乱码 | 国产一级二级在线观看| 亚洲国产日本| 久久国产日韩欧美| 国产高清视频色在线www| 精品国产91洋老外米糕| 国产无套内射又大又猛又粗又爽| 丰满亚洲少妇av| www.射射射| 先锋影音国产精品| 国产91热爆ts人妖在线| 国产精品99999| 欧美日韩国产一二三| 五月天免费网站| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美午夜一区| 国产精品久久亚洲| 欧亚av在线| 在线观看不卡av| 国产精品怡红院| 亚洲无人区一区| 国产伦精品一区二区三区妓女| 日一区二区三区| 欧美日韩视频免费在线观看| 中文字幕日韩在线| 69久久夜色精品国产69| 国产高清在线| 欧美一区二区免费| 91浏览器在线观看| 日本一区二区三区国色天香| 亚洲制服中文字幕| 亚洲黄色毛片| 日韩精品极品视频在线观看免费| 成人污污www网站免费丝瓜| 久久久久久12| 国产乱理伦片a级在线观看| 欧美日韩mp4| 日本三级2019| 国产欧美1区2区3区| 亚欧美一区二区三区| 国产亚洲毛片| 少妇熟女一区二区| 日韩福利视频一区| 成人妇女淫片aaaa视频| 色是在线视频| 久久好看免费视频| 无码国精品一区二区免费蜜桃| 欧美中文字幕不卡| 久久久久无码国产精品 | 免费中文字幕日韩| 99久久99久久综合| av亚洲天堂网| 久久xxxx精品视频| 欧美黄色免费网址| 国产一区二区在线| 国产精品18毛片一区二区| 国产精品久久亚洲不卡| 欧美激情视频给我| 91网在线播放| 亚洲精品99999| 国产精品高潮呻吟av| 色综合激情久久| 国产精品1234区| ●精品国产综合乱码久久久久| 黄色国产在线观看| 丁香亚洲综合激情啪啪综合| 中文字幕av不卡在线| 亚洲欧美视频| 久久av综合网| 中文一区一区三区免费在线观看| 天堂社区 天堂综合网 天堂资源最新版 | 三级欧美韩日大片在线看| 精品一二三四五区| 91九色精品| 视频三区二区一区| 亚洲精华一区二区三区| 国外成人免费视频| 在线日韩成人| 5g影院天天爽成人免费下载| 国产在视频一区二区三区吞精| 欧美亚洲免费电影| 免费影视亚洲| 久久精品国产v日韩v亚洲| 丁香在线视频| 在线视频欧美日韩| 嫩草研究院在线观看| 日韩经典第一页| 少妇高潮一区二区三区69| 日韩欧美亚洲一区二区| 国产特级aaaaaa大片| 欧美人与禽zozo性伦| 中文字幕有码视频| 欧美怡红院视频| 懂色av蜜臀av粉嫩av分享吧最新章节| 日韩欧美在线视频| 国产性xxxx高清| 精品久久久香蕉免费精品视频| 91精品国产高潮对白| 精品福利一区二区| 天天插天天操天天干| 午夜欧美视频在线观看| xxxxxx国产| 欧美日韩国产影院| 亚洲天堂2024| 成人网页在线观看| 中文字幕在线永久| 91色porny| 亚洲第一综合网| 日本一区二区免费在线| 中文字幕乱码av| 亚洲乱码日产精品bd| 久久久久久久久艹| 天天操天天综合网| av网站中文字幕| 欧美日韩在线综合| 国产精品系列视频| 欧美大片日本大片免费观看| 欧美一级淫片免费视频魅影视频| 亚洲电影av在线| 久久经典视频| 麻豆一区二区在线观看| 男女免费观看在线爽爽爽视频| 57pao精品| 欧美美女福利视频| 91在线看网站| 西瓜成人精品人成网站| 午夜免费电影一区在线观看| 天天综合网网欲色| 国产一区二区三区小说| 久久不射网站| 想看黄色一级片| 99视频精品免费视频| 91麻豆制片厂| 亚洲大型综合色站| 在线免费观看av网址| 这里只有精品电影| 天堂a中文在线| 色视频www在线播放国产成人| av片在线观看| 国产ts一区二区| 国产精品欧美一区二区三区不卡| 国产精品12| 久久电影院7| 欧美 日本 亚洲| 国产乱人伦精品一区二区在线观看 | 秋霞av一区二区三区| 日韩手机在线导航| 国产露出视频在线观看| 欧美精品免费看| 美女18一级毛片一品久道久久综合| 成人综合网网址| 亚洲国产欧美日韩在线观看第一区| 亚洲第一综合网站| 久久久久99| 国产ts在线观看| 欧美韩日一区二区三区| 懂色av.com| 在线电影一区二区三区| 理论视频在线| 久久噜噜噜精品国产亚洲综合| 成人高清一区| 精品久久sese| 欧美精品一区二区三区久久久竹菊| 国产免费毛卡片| 国产 欧美在线| 亚洲少妇xxx| 日韩欧美国产黄色| 免费观看黄色一级视频| 久久精品电影网站| 国产精品亲子伦av一区二区三区| 激情五月综合色婷婷一区二区 | 精品人妻午夜一区二区三区四区 | 美女航空一级毛片在线播放| 国产精品三级久久久久久电影| 日本一区福利在线| 夜夜添无码一区二区三区| 国产自产v一区二区三区c| 亚洲黄色小说视频| 精品日本美女福利在线观看| 不卡av中文字幕| 日韩亚洲精品视频| 99久久精品一区二区成人| 欧美一级二级三级九九九| 亚洲看片一区| 超碰人人cao| 亚洲激情六月丁香| 国产按摩一区二区三区| 精品激情国产视频| 日韩美女在线| 亚洲一区在线免费| 久久av中文字幕片| 九九九视频在线观看| 欧洲国内综合视频| 国产综合视频一区二区三区免费| 日本a级片电影一区二区| 亚洲精品白浆高清| 成人在线观看黄| 国产欧美久久久精品影院| 波多野结衣二区三区| 一区二区三区高清国产| 韩日一区二区| 亚洲蜜桃av| 国产一二精品视频| 欧美毛片在线观看| 精品久久久久久久久久久久久久久久久| 欧美xxxx视频| 国产伦精品一区二区三区在线| 亚洲激情黄色| 亚洲AV无码片久久精品| 在线欧美日韩国产| avtt亚洲| 91青青草免费在线看| 黄色av一区| 动漫精品一区二区三区| 91精品1区2区| 久操视频在线| 超碰97在线资源| 一本一本久久| 久久免费手机视频| 在线成人午夜影院| 第四色日韩影片| 欧美极品一区二区| 蜜桃久久久久久久| 波多野结衣家庭教师| 亚洲成人久久网| 美女网站视频一区| 免费观看黄色的网站| 成人成人成人在线视频| 黄色av网站免费观看| 另类色图亚洲色图| 欧美精品国产白浆久久久久| 久草综合在线观看| 亚洲伦理在线精品| 日本中文字幕一区二区有码在线 | 日本不卡在线观看视频| 中文字幕av一区二区三区| 99久久婷婷国产一区二区三区| 97香蕉久久超级碰碰高清版| 手机在线电影一区| 完美搭档在线观看| 欧美色区777第一页| 青草青在线视频| 日韩一本精品| 国产69精品久久777的优势| 国模私拍一区二区| 欧美黑人性视频| 久久在线视频| 在线观看国产免费视频| 7777精品伊人久久久大香线蕉的 | 色哟哟一区二区| 手机av在线播放| 日韩欧美一区二区三区四区|