成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開源一個教學型分庫分表示例項目

數據庫 其他數據庫
分庫分表之所以被廣泛使用,因為工程相對簡單,但分庫分表并不僅僅是分片,還是需要考慮如何擴縮容(全量同步、增量同步、數據校驗等)。

在筆者心中,消息隊列,緩存,分庫分表是高并發解決方案三劍客。

分庫分表之所以被廣泛使用,因為工程相對簡單,但分庫分表并不僅僅是分片,還是需要考慮如何擴縮容(全量同步、增量同步、數據校驗等)。

圖片圖片

因此,筆者做了一個教學型分庫分表示例項目 ,計劃將分庫分表的技術體系都實際演示一遍。

圖片圖片

https://github.com/makemyownlife/shardingsphere-jdbc-demo

當前項目包含三個模塊 :

  • shardingjdbc4-spring:使用 shardingsphere-JDBC 4.X 實現分庫分表功能
  • shardingjdbc5-spring:使用 shardingsphere-JDBC 5.X 實現分庫分表功能
  • idgenerator: 基于 grpc 實現一個簡單的服務端 ID 生成器

下面我們展示如何運行 shardingjdbc4-spring 模塊,shardingsphere JDBC 4.x 如何整合 spring 實現分庫分表功能。

1 業務分析

筆者曾經為武漢一家 O2O 公司訂單服務做過分庫分表架構設計 ,當企業用戶創建一條采購訂單 , 會生成如下記錄:

  • 訂單基礎表 t_ent_order  :單條記錄
  • 訂單詳情表 t_ent_order_detail  :單條記錄
  • 訂單明細表 t_ent_order_item:N  條記錄

訂單每年預估生成記錄 1 億條,數據量不大也不小,筆者參考原來神州專車的分庫分表方式,制定了如下的分庫分表策略:

  • 訂單基礎表按照 ent_id (企業用戶編號) 分庫(四個分庫),訂單詳情表保持一致。
  • 訂單明細表按照 ent_id (企業用戶編號) 分庫 (四個分庫),同時也要按照 ent_id (企業編號) 分表(八個分表)。

2 環境準備

創建 4 個庫,分別是:ds_0、ds_1、ds_2、ds_3  。

然后這四個分庫分別執行 doc 目錄下的 shardingjdbc-spring.sql 文件。

圖片圖片

執行結果如下圖所示,每個分庫都包含訂單基礎表 , 訂單詳情表 ,訂單明細表 。但是因為明細表需要分表,所以包含多張表。

圖片圖片

3 項目結構

打開項目,如下圖所示:

圖片圖片

這是一個典型的 springboot 項目,包含控制器層、實體層、服務層 。

1、pom 文件配置依賴

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.1.1</version>
</dependency>

2、分片配置 application-test.yml

圖片圖片

  • 配置數據源,上面配置數據源是:ds0、ds1、ds2、ds3 ;
  • 配置打印日志,也就是:sql.show ,在測試環境建議打開 ,便于調試;
  • 配置哪些表需要分庫分表 ,在 shardingsphere.datasource.sharding.tables 節點下面配置:

圖片圖片

上圖中我們看到配置分片規則包含如下兩點:

1.真實節點

對于我們的應用來講,我們查詢的邏輯表是:t_ent_order_item 。

它們在數據庫中的真實形態是:t_ent_order_item_0 到  t_ent_order_item_7。

真實數據節點是指數據分片的最小單元,由數據源名稱和數據表組成。

訂單明細表的真實節點是:ds$->{0..3}.t_ent_order_item_$->{0..7} 。

2.分庫分表算法

分別配置分庫策略和分表策略 , 每種策略都需要配置分片字段( sharding-columns )和分片算法。

4 測試接口

修改配置文件 application-test.yml ,配置好 MySQL 數據庫 和 Redis 服務 。

啟動 Main 函數:

圖片圖片

啟動過程中,會打印 shardingsphere jdbc 日志 。

圖片圖片

啟動成功之后,訪問 swagger ui 地址:

http://localhost:9793/shardingsphere-jdbc-server/doc.html#/home

接下來,我們進行兩個測試:新增訂單和按照訂單 ID 查詢

1、測試存儲訂單

圖片圖片

點擊發送按鈕,接口響應成功。

圖片圖片

我們插入1 條訂單記錄、1 條訂單詳情表進入 ds3 分片,并且 2 條訂單條目表進入 ds3 分片的 t_ent_order_item_7 表。

2、測試存儲訂單

圖片圖片

參數名稱是 orderId , 參數值:609335823493160961 ,點擊發送按鈕,接口響應成功 , 返回訂單信息。

圖片 圖片

責任編輯:武曉燕 來源: 勇哥Java實戰
相關推薦

2015-07-29 10:00:16

開源項目

2014-10-21 10:25:50

程序員

2025-04-07 04:00:00

教學型任務調度系統

2021-03-02 14:50:57

開源技術 項目

2017-11-07 11:36:57

開源項目代碼

2021-06-24 09:53:05

前端架構開源

2013-08-19 12:40:18

開源項目

2022-02-28 08:23:02

開源項目重構

2024-07-02 08:28:17

開源代碼社區

2022-05-20 12:24:45

分庫分表Java依賴

2022-06-30 07:34:46

分庫分表外賣訂單系統

2020-04-10 10:15:29

算法開源Github

2022-01-04 09:01:10

開源項目開源技術

2019-04-26 13:07:14

GitHub開源代碼倉庫

2019-01-15 10:02:06

Kubernetes開源工具微服務

2017-07-19 15:19:19

數據庫DB分庫實施策略

2018-02-08 18:00:49

Spark文件測試

2024-06-24 03:00:00

2012-07-30 09:40:52

Lua
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产永久免费 | 欧美精品久久久久 | 欧洲国产精品视频 | 全部免费毛片在线播放网站 | 99视频在线免费观看 | 日韩欧美精品 | 盗摄精品av一区二区三区 | 国产精品久久久久久吹潮 | 日韩一区中文字幕 | 九九热在线精品视频 | 日韩视频―中文字幕 | 久久99国产精品 | 久久精品亚洲 | 中文字幕一区二区三区四区五区 | 亚洲国产精品一区二区三区 | 精品一区二区三区四区 | 欧美日韩综合一区 | 久久国产精品99久久久大便 | 色视频在线播放 | 国产资源一区二区三区 | 国产aⅴ爽av久久久久久久 | 日韩精品免费 | 韩日三级 | 啪一啪 | 精品国产1区2区3区 在线国产视频 | 国产欧美在线 | 天堂网色| 国产精品日韩在线观看 | 91免费看片 | 国产乱码精品一区二区三区忘忧草 | 欧美色综合天天久久综合精品 | 麻豆视频在线免费看 | 亚洲一区在线日韩在线深爱 | 999久久久久久久久 国产欧美在线观看 | 成人在线不卡 | 国产精品成人久久久久 | 九九伦理片 | 午夜精品一区 | 最新国产精品视频 | 91麻豆蜜桃一区二区三区 | 亚洲一区高清 |