日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

ShardingSphere-Proxy是在數據庫和應用程序之間起到了一個橋梁的作用,對于應用程序來說,它不需要感知ShardingSphere-Proxy的存在,依然可以使用原來的方式操作數據庫。

1. 簡介

ShardingSphere-Proxy是ShardingSphere分布式數據庫中間件的一部分,它提供了「數據庫代理」功能。通過引入ShardingSphere-Proxy,可以在無需改動應用程序代碼的情況下,實現分庫分表的數據庫分片、讀寫分離、邏輯表達式分片等功能。ShardingSphere-Proxy獨立運行于應用程序和數據庫之間,充當數據庫的代理,自動將請求路由至相應的數據庫節點。

官網地址:https://shardingsphere.Apache.org

2. 下載代理數據庫

官網下載(5.4.0版本):https://shardingsphere.apache.org/document/current/cn/downloads/

官網下載很慢,網盤下載(推薦):「apache-shardingsphere-5.4.0-shardingsphere-proxy-bin.tar.gz」來自UC網盤分享https://drive.uc.cn/s/cc1882af6a9a4

3. 配置MySQL驅動

下載 mysql-connector-JAVA-8.0.11.jar,并將其放入 ext-lib 或 lib 目錄下。

mysql-connector-java-8.0.11.jar包下載地址:來自UC網盤分享https://drive.uc.cn/s/f9b1c5d7c0f64

4. 配置 server.yaml

conf目錄下server.yaml配置文件,主要配置代理數據庫的用戶名、密碼、權限。

  • 用戶名 root
  • 密碼 123456
  • 權限 ALL_PERMITTED
authority:
  users:
    - user: root
      password: 123456
  privilege:
    type: ALL_PERMITTED

props:
  max-connections-size-per-query: 1
  kernel-executor-size: 16  # Infinite by default.
  proxy-frontend-flush-threshold: 128  # The default value is 128.
  sql-show: false
  check-table-metadata-enabled: false

5. 配置 config-sharding.yaml

conf目錄下sconfig-sharding.yaml配置文件,主要配置具體的分庫分表規則:

  • 代理數據庫名稱 sharding_db。
  • 邏輯數據源 ds_0 指向 jdbc:mysql://127.0.0.1:3306/sharding_0。
  • 邏輯數據源 ds_1 指向 jdbc:mysql://127.0.0.1:3306/sharding_1。
  • company表的分片規則是id_inline,根據id取模。
  • product表沒有配置分片規則,用默認分配規則,根據company_id取模。
  • permission表是廣播表,插入(更新)數據的時候每張表都會插入(更新),讀取的時候隨機一張表讀取。
  • 取模算法ds_$->{id % 2} 偶數在ds_0,奇數在ds_1。
databaseName: sharding_db

dataSources:
  ds_0:
    url: jdbc:mysql://127.0.0.1:3306/sharding_0?serverTimezone=UTC&useSSL=false
    username: root
    password: "123456"
  ds_1:
    url: jdbc:mysql://127.0.0.1:3306/sharding_1?serverTimezone=UTC&useSSL=false
    username: root
    password: "123456"

rules:
  - !SHARDING
    tables:
      company:
        actualDataNodes: ds_$->{0..1}.company
        databaseStrategy:
          standard:
            shardingColumn: id
            shardingAlgorithmName: id_inline
      product:
        actualDataNodes: ds_$->{0..1}.product
    defaultDatabaseStrategy:
      standard:
        shardingColumn: company_id
        shardingAlgorithmName: database_inline
    shardingAlgorithms:
      database_inline:
        type: INLINE
        props:
          algorithm-expression: ds_$->{company_id % 2}
      id_inline:
        type: INLINE
        props:
          algorithm-expression: ds_$->{id % 2}

  - !BROADCAST
    tables: # 廣播表規則列表
      - permission

注意上面是url,而不是jdbcUrl,官方這么說的:

圖片圖片

否則啟動代理數據庫會出現如下異常:

Unable to find property 'jdbcUrl' on class: org.apache.shardingsphere.proxy.backend.config.yaml.YamlProxyDataSourceConfiguration

6. 配置 config-readwrite-splitting.yaml

conf目錄下config-readwrite-splitting.yaml配置文件,主要配置數據庫的讀寫分離。

往write_ds數據庫寫數據的時候會自動同步到read_ds_0、read_ds_1兩個庫中。讀取數據的時候會隨機從read_ds_0、read_ds_1選擇一個數據源進行讀取。

databaseName: readwrite-splitting_db

dataSources:
  write_ds:
    url: jdbc:mysql://127.0.0.1:3306/demo_write_ds?serverTimeznotallow=UTC&useSSL=false
    username: root
    password: 123456
  read_ds_0:
    url: jdbc:mysql://127.0.0.1:3306/demo_read_ds_0?serverTimeznotallow=UTC&useSSL=false
    username: root
    password: 123456
  read_ds_1:
    url: jdbc:mysql://127.0.0.1:3306/demo_read_ds_1?serverTimeznotallow=UTC&useSSL=false
    username: root
    password: 123456

rules:
- !READWRITE_SPLITTING
  dataSources:
    readwrite_ds:
      writeDataSourceName: write_ds
      readDataSourceNames:
        - read_ds_0
        - read_ds_1
  • 寫數據庫:write_ds
  • 讀數據庫:read_ds_0、read_ds_1

7. 執行sql腳本

創建sharding_0和sharding_1兩個數據庫。兩個數據庫完全一樣,包含如下數據表:

  1. company 企業表,根據id分庫
  2. product 商品表,根據企業idcompany_id分庫
  3. permission 權限表,廣播表不分庫
CREATE DATABASE sharding_0 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE DATABASE sharding_1 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE TABLE `company`  (
  `id` bigint(20) NOT NULL COMMENT '主鍵id',
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名稱',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

CREATE TABLE `permission`  (
  `id` bigint(20) NOT NULL COMMENT '主鍵id',
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名稱',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

CREATE TABLE `product`  (
  `id` bigint(20) NOT NULL COMMENT '主鍵id',
  `company_id` bigint(20) NULL DEFAULT NULL COMMENT '公司id',
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名稱',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

8. 啟動代理數據庫

在bin目錄下:

# mac/linux
sh start.sh 3307

# windows
start.bat 3307
  • 指定數據庫端口 3307

啟動日志位置:logs/skywalking-oap-server.log

9. 連接代理數據庫

代理數據庫對于開發人員來說與普通數據庫的操作無異,既可通過命令行,也可通過可視化工具來進行連接和操作。

通過命令連接代理數據庫

mysql -h127.0.0.1 -P3307 -uroot -p123456

通過可視化工具連接代理數據庫

圖片圖片

10. 分庫分表結果

1)company

在代理數據庫company表上添加企業數據記錄。

圖片圖片

偶數id的企業在sharding_0數據庫,奇數id企業在sharding_1數據庫。

圖片圖片

圖片圖片

2)product

在代理數據庫product表上添加商品數據記錄。

company_id為偶數的商品在sharding_0數據庫,company_id為奇數的商品sharding_1數據庫。保證了一個企業的商品全部在一個庫里面。

圖片圖片

圖片圖片

3)permission

在代理數據庫permission表上添加權限數據記錄。

被代理的兩個數據庫的數據都一樣。

圖片圖片

11. 總結

ShardingSphere-Proxy是在數據庫和應用程序之間起到了一個橋梁的作用,對于應用程序來說,它不需要感知ShardingSphere-Proxy的存在,依然可以使用原來的方式操作數據庫。也就是說,ShardingSphere-Proxy對于應用程序來說是透明的,不需要額外的代碼實現或者調整。

圖片圖片

Spring Cloud 微服務系列 完整的代碼在倉庫的sourcecode/spring-cloud-demo目錄下。

gitee(推薦):https://gitee.com/cunzAIzhe/xiaohuge-blog

Github:https://github.com/tigerleeli/xiaohuge-blog

分享到:
標簽:Spring Cloud
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定