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相关推荐
- Spring Boot项目集成AWS SDK连接到AWS S3,实现上传下载功能
本文主要描写在Spring Boot项目里集成AWS SDK连接到AWS S3,实现上传下载功能的具体代码和注意事项.如有不足和错误之处,欢迎指正. AWS S3相关介绍 AWS S3(官网): ht ...
- 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成
前提:先搭建好本地的单机运行项目:http://www.cnblogs.com/EasonJim/p/7643630.html 说明:下面的示例是基于Spring Boot搭建的,对于Spring项目 ...
- 从服务器基础环境配置到搭建Docker+Gitlab+Gitlab Runner,完整介绍Spring Boot项目的持续集成与持续交付具体实现!
1. 序言 在大学的课程学习,非常注重团队协作的培养,在企业开发中,团队协作开发项目的场景更是甚多.另外,在当下的热门技术栈中,微服务开发模式.前后端分离开发模式逐渐盛行,Spring Boot.VU ...
- Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)
说明: (1)介绍了两种创建Spring Boot项目的方式:[Spring 官网start.spring.io]方式,[IDEA集成的Spring Initializr]方式: (2)更推荐使用[I ...
- Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能
Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...
- 后端开发实践:Spring Boot项目模板
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 作者 ...
- 后端开发实践:Spring Boot项目模板,拿去用吧!
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:干掉 Navicat:这个 IDEA 的兄弟真香!个人原创100W+访问量博客:点击前往,查看更多 作者:无知者 ...
- idea创建springboot项目+mybatis_从spring boot项目创建到netty项目过渡1
本文要讲解三点 1 spring boot 项目创建 2 spring boot 项目基础上面创建netty项目(下一篇) 3 netty websocket支持wss以及配置负载均衡(下一篇) No ...
- Spring Boot项目学习之通用权限管理项目01
权限管理系统是一个十分常见的系统,在这个系统中是基于角色访问控制的,用户是通过角色与权限进行关联.换句话说,就是一个用户拥有若干个角色,每一个角色拥有若干权限,这样就可以形成一个关系模型:用户-角色- ...
最新文章
- 解决onclick事件调用其它带参数的函数方法无效的问题
- 皮一皮:谁还不是个孩子...
- s:textfield format date
- 反病毒引擎设计全解(三)
- C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
- 电路上的ESR是什么意思?
- php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询
- 大学物理实验长度的测量实验报告_大学物理实验教案长度和质量的测量两篇
- LeetCode 2133. 检查是否每一行每一列都包含全部整数
- 【华为云技术分享】【玩转Atlas200DK系列】应用开发之 交叉编译第三方库并在工程中使用(jsoncpp)
- 大数据 ---(4)大数据驱动的金融业务创新(用户画像-数据架构-标签建模)
- Exchange 2003 升级 2010地址列表升级
- Ruby on rails3新手谈(1):Ruby on rails环境搭建
- ORACLE 制定时间 加N月
- 微信红包技术架构首次流出,贼牛逼啊!
- 关于微信小程序(应用号),这是三节课的全部看法和建议
- 毕设题目:Matlab优化充电
- 开源的免费听音乐程序
- 基因改造食物安全测试的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Android的APPT工具会优化PNG吗?
热门文章
- win10如何修改IP地址
- css3修改input[type=radio]样式
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本对齐,段落中超出屏幕部分文字自动换行...
- 在linux内核3.14.43添加自己的驱动源码,linux内核如何加入自己的驱动
- 关于Trie的一些算法
- CentOS 更改MySQL数据库目录位置
- 自考感悟,话谈备忘录模式
- SpringSource通过Spring for Android 1.0将Spring Framework引入到Android上
- java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作
- Centos7安装SVN+HTTP