Sharding-JDBC MasterSlave 示例文档

读写分离,简单来说,就是将DML交给主数据库去执行,将更新结果同步至各个从数据库保持主从数据一致,DQL分发给从数据库去查询,从数据库只提供读取查询操作。读写分离特别适用于读多写少的场景下,通过分散读写到不同的数据库实例上来提高性能,缓解单机数据库的压力:

Name Remark
DQL 数据查询语言,比如select查询语句
DML 数据操纵语言,比如insert、delete、update更新语句
DDL 数据定义语言,比如create/drop/alter等语句
DCL 数据控制语言,比如grant/rollback/commit等语句

Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在Java的JDBC层以对业务应用零侵入的方式额外提供数据分片,读写分离,柔性事务和分布式治理能力。并在其基础上提供封装了MySQL协议的服务端版本,用于完成对异构语言的支持。

基于JDBC的客户端版本定位为轻量级Java框架,使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

封装了MySQL协议的服务端版本定位为透明化的MySQL代理端,可以使用任何兼容MySQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench等)操作数据,对DBA更加友好。

以上内容摘抄至Sharding-JDBC官网 (http://shardingjdbc.io/document/legacy/2.x/cn/00-overview/)

本文主要探讨在SpringBoot环境下如何使用Sharding-JDBC提供的读写分离解决方案;

关于Java代码的一些优化技巧

减少重复计算

1
2
3
4
5
6
7
for (int i = 0; i < list.size(); i++) {
// do something;
}
for (int i = 0; int len = list.size(); i < len; i++) {
// do something;
}
// 不要觉得麻烦, 尽量减少变量的重复计算, 这在大量数据集合遍历时非常有效.

不要创建大量的对象引用

1
2
3
4
5
6
7
8
9
for (; ;) {
Object obj = new Object();
}

Object obj = null;
for (; ;) {
obj = new Object();
}
// 能省就省.

Spring Cloud Config 高可用架构

何为高可用?

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间.

1) 假设系统一直能够提供服务,我们说系统的可用性是100%.

2) 如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%.

举个例子,百度的搜索首页是业界公认的高可用保障非常出色的系统

我们通常会通过ping baidu.com来判断网络是否通畅,这也恰巧说明了百度首页的可用性非常之高,值得信赖.

高可用的实现方式

  1. 主从复制: 主服务挂掉后,从服务升级为主服务继续工作.
  2. 双机热备: 一台工作,一台备用,工作服务器挂掉后,备用服务器继续工作.
  3. 分布式集群: 多台实例同时工作,当其中一台挂掉后,前端或者代理踢出这台服务器,负载均衡算法将不再调度它.

Config Server高可用的实现

Config Server 的高可用方案,是借助Eureka(注册中心)实现的,也就是上面提到的分布式集群方案.

多个Config Server同时工作,任何一台挂掉后,Eureka服务器都会通知客户端, 客户端后续将不再从这里请求配置信息.

1. 将Config Server注册到Eureka

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×