日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring boot项目集成Sharding Jdbc

發布時間:2023/12/10 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring boot项目集成Sharding Jdbc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  環境
  
  jdk:1.8
  
  framework: spring boot, sharding jdbc
  
  database: MySQL
  
  搭建步驟
  
  在pom 中加入sharding 依賴
  
  <dependency>
  
  <groupId>io.shardingjdbc</groupId>
  
  <artifactId>sharding-jdbc-core-spring-boot-starter</artifactId>
  
  <version>2.0.3</version>
  
  </dependency>
  
  將原來的 spring DataSource 注釋掉,加入 sharding 的配置
  
  sharding:
  
  jdbc:
  
  datasource:
  
  names: ds_0,ds_1
  
  ds_0:
  
  type: com.zaxxer.hikari.HikariDataSource
  
  driver-class-name: com.mysql.jdbc.Driver
  
  jdbc-url: jdbc:mysql://sharding0
  
  username: mams_test
  
  password: mams_test
  
  ds_1:
  
  type: com.zaxxer.hikari.HikariDataSource
  
  driver-class-name: com.mysql.jdbc.Driver
  
  jdbc-url: jdbc:mysql://sharding1
  
  username: mams_test
  
  password: mams_test
  
  config:
  
  sharding:
  
  default-data-source-name: ds_0
  
  tables:
  
  task:
  
  actual-data-nodes: ds_${0..1}.task
  
  database-strategy:
  
  inline:
  
  sharding-column: id
  
  algorithm-expression: ds_${id % 2}
  
  key-generator-column-name: id
  
  reverse_display:
  
  actual-data-nodes: ds_${0..1}.reverse_display
  
  database-strategy:
  
  inline:
  
  sharding-column: task_id
  
  algorithm-expression: ds_${task_id % 2}
  
  key-generator-column-name: id
  
  props:
  
  sql.show: true
  
  注:
  
  這個配置只是針對分庫,sharding jdbc 還支持讀寫分離,主從等模式,具體可以看文檔sharding jdbc configuration
  
  faq
  
  只有網友的分享例子,沒有文檔
  
  sharding jdbc 的鏈接 shardingjdbc.io 訪問是不可用的,在碼云上找到了一份文檔,地址是sharding-jdbc-doc
  
  spring boot的 health check 顯示為down
  
  看了一下 DataSourceHealthIndicator 類的實現,要求 select 1 返回的大小為 1才認為數據庫是健康的,但是經過分庫之后,這個list size 應該了是數據庫的數量,所以顯示數據庫為down。
  
  可以將db 個health check關掉,配置management.health.db.enabled=false 即可。
  
  不過這種情況下數據庫如果掛掉的話注冊中心是不知道的,需要定制一個自己的數據庫檢查類
  
  @Component
  
  public class CustomDataSourceHealthCheck extends AbstractHealthIndicator {
  
  private JdbcTemplate jdbcTemplate;
  
  private String databases;
  
  private int databaseCount;
  
  private String query www.tiaotiaoylzc.com= "SELECT 1 ";
  
  @PostConstruct
  
  public void init() {
  
  databaseCount = databases.split(",").length;
  
  }
  
  @Override
  
  protected void doHealthCheck(Health.Builder builder) throws Exception {
  
  try {
  
  List<Map<String, Object>> result = jdbcTemplate.queryForList(query);
  
  if (result.size(www.mytxyl1.com) == databaseCount) {
  
  builder.up();
  
  } else {
  
  builder.down();
  
  }
  
  } catch (Exception e) {
  
  builder.down(e);
  
  }
  
  }
  
  public JdbcTemplate getJdbcTemplate() {
  
  return jdbcTemplate;
  
  }
  
  @Autowired
  
  public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  
  this.jdbcTemplate = jdbcTemplate;
  
  }
  
  public String getDatabases() {
  
  return databases;
  
  }
  
  @Value("${sharding.www.yongshi123.cn jdbc.datasource.names}")
  
  public void setDatabases(String databases) {
  
  this.databases = databases;
  
  }
  
  public int getDatabaseCount() {
  
  return databaseCount;
  
  }
  
  public void setDatabaseCount(int databaseCount) {
  
  this.databaseCount = www.zhenghongyule.com/ databaseCount;
  
  }
  
  public String getQuery(www.xtd912.com) {
  
  return query;
  
  }
  
  public void setQuery(String query) {
  
  this.query = query;
  
  }
  
  }

轉載于:https://www.cnblogs.com/qwangxiao/p/10419659.html

總結

以上是生活随笔為你收集整理的Spring boot项目集成Sharding Jdbc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。