无限水平扩容服务之 Infra
概述
整洁架构 Infra 基础设施层,Dubbo 生产者服务角色,向注册中心注册服务,即可水平扩容。
但当 Dubbo 服务访问的数据库是 Primary/SECONDARY 架构时,Infra 需要进行改造。
改造调整
接上篇文章
1. 把H2切换成 Primary/SECONDARY 架构的 MySQL MGR集群
2. Spring Datasource Driver 切换成 ShardingSphere-JDBC
秒级搭建 MySQL MGR 集群
Docker和Docker-Compose环境下,使用 万里数据库 docker-compose yml
yml下载地址:https://gitee.com/GreatSQL/GreatSQL-Docker/blob/master/docker-compose/mgr-3nodes.yml
调整 mgr-3nodes.yml
调整了 镜像版本,ports,subnet
version: '2'
services:
mgr2:
image: greatsql/greatsql:8.0.25-16 #指定镜像
container_name: mgr2 #设定容器名字
hostname: mgr2 #设定容器中的主机名
ports:
- "3302:3306"
networks: #指定容器使用哪个专用网络
mgr_net:
ipv4_address: 172.16.0.2 #设置容器使用固定IP地址,避免重启后IP变化
restart: unless-stopped #设定重启策略
environment: #设置多个环境变量
TZ: Asia/Shanghai #时区
MYSQL_ROOT_PASSWORD: root #允许root账户空密码
MYSQL_INIT_MGR: 1 #初始化MGR集群
MYSQL_MGR_LOCAL: '172.16.0.2:33061' #当前MGR节点的local_address
MYSQL_MGR_SEEDS: '172.16.0.2:33061,172.16.0.3:33061,172.16.0.4:33061' #MGR集群seeds
MYSQL_MGR_START_AS_PRIMARY: 1 #指定当前MGR节点为Primary角色
MYSQL_MGR_ARBITRATOR: 0
mgr3:
image: greatsql/greatsql:8.0.25-16
container_name: mgr3
hostname: mgr3
ports:
- "3303:3306"
networks:
mgr_net:
ipv4_address: 172.16.0.3
restart: unless-stopped
depends_on:
- "mgr2"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: root
MYSQL_INIT_MGR: 1
MYSQL_MGR_LOCAL: '172.16.0.3:33061'
MYSQL_MGR_SEEDS: '172.16.0.2:33061,172.16.0.3:33061,172.16.0.4:33061'
MYSQL_MGR_START_AS_PRIMARY: 0
MYSQL_MGR_ARBITRATOR: 0 #既非Primary,也非Arbitrator,那么就是Secondary角色了
mgr4:
image: greatsql/greatsql:8.0.25-16
container_name: mgr4
hostname: mgr4
ports:
- "3304:3306"
networks:
mgr_net:
ipv4_address: 172.16.0.4
restart: unless-stopped
depends_on:
- "mgr3"
envi