1. 集群模式介绍
所谓集群模式,就是把配置发到一个公共的地方 如 zookeeper/etcd 等
这样多个微服务就不需要都维护一份了,且修改zookeeper /etcd 可以实时生效
例如,主库挂掉,手动切换备库的时候,就改下 zookeeper /etcd 就OK了,不用每个微服务都去改一遍再重启
官方文档介绍:https://shardingsphere.apache.org/document/current/cn/user-manual/common-config/builtin-algorithm/metadata-repository/
2. zookeeper 集群搭建(二进制包安装方式)
可参考 ZooKeeper集群环境搭建,网上很多
我使用的是3.8.4 版本,
3. 分库分表+读写分离搭建,集成 单例模式
我们在此基础上稍作修改就可以了
4. 添加依赖
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-cluster-mode-repository-zookeeper</artifactId>
<version>5.5.2</version>
</dependency>
5. 修改配置
# 主要是配置,官网文档地址https://shardingsphere.apache.org/document/5.5.2/cn/user-manual/shardingsphere-jdbc/yaml-config/mode/
#mode:
# type: Standalone
mode:
type: Cluster
repository:
type: ZooKeeper
props:
namespace: governance_mysql_cluster_rw_ds
server-lists: 192.168.3.17:2181,192.168.3.27:2181,192.168.3.37:2181
retryIntervalMilliseconds: 30000
timeToLiveSeconds: 60
maxRetries: 3
operationTimeoutMilliseconds: 30000
# 逻辑数据库名称,自定义的名字
databaseName: sharding_db
#第一次 zookeeper上没有的时候放开,会写入后到zookeeper中,
# 后续最好不要打开,虽然测试折zookeeper上有的话不会覆盖 ,
#在zookeper上修改,会实时生效,不需要 改配置 和重启应用
#dataSources:
# ds_0: # 数据源名称317a_master
# dataSourceClassName: com.zaxxer.hikari.HikariDataSource # 数据源完整类名
# driverClassName: com.mysql.cj.jdbc.Driver # 数据库驱动类名,以数据库连接池自身配置为准
# jdbcUrl: jdbc:mysql://192.168.3.17:33067/a_db_order?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true # 数据库 URL 连接,以数据库连接池自身配置为