十五张图带你快速入门 shardingsphere-proxy
haoteby 2025-06-08 21:14 3 浏览
Apache ShardingSphere 是一款分布式的数据库生态系统,它包含两大产品:
- ShardingSphere-Proxy
- ShardingSphere-JDBC
很多同学对于 ShardingSphere-JDBC 已经能非常熟悉的使用了,但关于网上关于 ShardingSphere-Proxy 5.5 的使用教程却非常少。
所以这篇文章,笔者尝试带大家快速入门 ShardingSphere-Proxy 5.5 ,理解它的基本原理以及实战流程。
1 理解 Proxy 模式
ShardingSphere-Proxy 定位为透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。 目前提供 MySQL 和 PostgreSQL 协议,透明化数据库操作,对 DBA 更加友好。
- 向应用程序完全透明,可直接当做 MySQL/PostgreSQL 使用;
- 兼容 MariaDB 等基于 MySQL 协议的数据库,以及 openGauss 等基于 PostgreSQL 协议的数据库;
- 适用于任何兼容 MySQL/PostgreSQL 协议的的客户端,如:MySQL Command Client, MySQL Workbench, Navicat 等。
代理层介于应用程序与数据库间,每次请求都需要做一次转发,请求会存在额外的时延。
这种方式对于应用非常友好,应用基本零改动,和语言无关,可以通过连接共享减少连接数消耗。
2 Proxy 模式 VS JDBC 模式
当我们在 Proxy 和 JDBC 两种模式选择时,可以参考下表对照:
JDBC Proxy 数据库 任意 MySQL/PostgreSQL 连接消耗数 高 低 异构语言 仅Java 任意 性能 损耗低 损耗略高 无中心化 是 否 静态入口 无 有
ShardingSphere-Proxy 提供静态入口以及异构语言的支持,独立于应用程序部署,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。
ShardingSphere-JDBC 采用无中心化架构,与应用程序共享资源,适用于 Java 开发的高性能的轻量级 OLTP 应用;
在业务相对复杂的场景里,可以采用混合部署的模式。
通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合于当前业务的最佳系统架构。
3 快速启动
ShardingSphere-Proxy 的启动方式有三种:二进制包、Docker 和 Helm,可以选择单机部署或集群部署。
本文将介绍如何通过单机二进制包方式启动 ShardingSphere-Proxy 版本号:v 5.5.0 。
1、下载
访问 下载页面,获取 ShardingSphere-Proxy 二进制安装包, 解压缩的文件目录如下:
2、将 MySQL 的 JDBC 驱动复制到 ext-lib 目录
下载驱动
mysql-connector-java-5.1.49.jar 或者
mysql-connector-java-8.0.11.jar 放入 lib 包。
3、进入 conf 目录 , 内容如下图:
4、模式配置 global.yaml
因为默认文件内容被注释掉了,所以去掉注释,如下图:
5、验证启动 proxy 服务
在 Linux 操作系统上,运行 bin/start.sh;在 Windows 操作系统上,运行 bin/start.bat,以启动 ShardingSphere-Proxy。
然后使用 MySQL 终端命令连接 ShardingSphere-Proxy 服务端:
# 将 {xx} 替换为实际参数
mysql -h {ip} -u {username} -p{password} -P 3307
# 示例命令
mysql -h 127.0.0.1 -u root -proot -P 3307
4 配置订单分片策略
现在我们需要展示新的订单库(8个分片),需要修改分片策略 。
ShardingSphere-Proxy 支持配置多个逻辑数据源,每个以database- 前缀命名的 YAML 配置文件,即为一个逻辑数据源。
因为我们是自定义分片算法,shardingsphere 内置算法并不满足,所以我们必须先编写自定义算法类。
1、 实现 ShardingAlgorithm 接口定义的算法实现类 HashSlotAlgorithm ;
2、在项目 resources 目录下创建 META-INF/services 目录 ;
3、在 META-INF/services 目录下新建文件
org.apache.shardingsphere.sharding.spi.ShardingAlgorithm ;
4、 将实现类的全限定类名写入至文件
org.apache.shardingsphere.sharding.spi.ShardingAlgorithm ;
5、将上述 Java 文件打包成 jar 包, 将上述 jar 包拷贝至 ext-lib 目录;
6、配置分片文件 database-myorder.yaml , 该文件用来定义订单的 4 个分片的路由策略;
最后,我们启动 Proxy 服务 , 我们发现通过 MySQL Client 查询数据库时,出现了我们配置的订单库 : myorder ,以及订单库里的三个逻辑表 。如下图:
4 Navicat 连接 shardingsphere proxy
通过 shardingjdbc5-spring 模块,插入多条记录到 4 个分片里,可以通过 navicat 连接 proxy 查看效果:
然后我们模拟在 myorder 逻辑数据库中新增一条订单记录,执行成功并且查询页正常的情况下,发现分片 ds0 中存储了刚插入的那条数据。
笔者将 proxy 算法模块也添加到了分库分表实战项目 shardingsphere-jdbc-demo 里,有兴趣的同学,可以看看这个项目。
Github 地址:https://github.com/makemyownlife/shardingsphere-jdbc-demo
相关推荐
- “你的朋友宁愿听你吐槽,也不想参加你的葬礼”
-
来源:这里是美国嗨,最近过得还好吗?美国君今天在逛论坛时刷到了一条很热的帖子,了解完背后的故事后顿时觉得很治愈,想分享给大家~今天立冬,希望这些也可以温暖到你们的冬天这是一个组织在伦敦一座桥上立的一块...
- 浏览器代理插件Proxy SwitchyOmega安装与使用
-
个人博客:无奈何杨(wnhyang)个人语雀:wnhyang共享语雀:在线知识共享Github:wnhyang-OverviewProxySwitchyOmega轻松快捷地管理和切换多个代理设置...
- 可靠的IP代理网站大盘点,你用过哪些?
-
在互联网时代,IP代理成为了很多企业和个人必不可少的工具。无论是为了提升网络安全,还是进行数据抓取,选择一个可靠的IP代理服务至关重要。本文将为大家盘点几家可靠的IP代理网站。1.711Proxy...
- 三层交换机Super vlan技术Arp-proxy转发收藏
-
一、作用隔离广播风暴防止病毒攻击控制端口二层互访二、用户需求用户多vlan多IP地址是同一个网段,实现彼此之间二层隔离个别VLAN之间有互访的需求(需要用到对应的subvlan开启ARP代理)...
- ShardingSphere-Proxy分库分表以及多租户安装使用
-
需求:你提供SAAS服务,你有你有2个租户(商户),各自的数据进各自的库,而你不希望你的微服务java里默认配置多个租户数据源,数据连接池太多,而且后面动态增加也不方便,诸如此类很多问题。...
- nginx proxy_pass 头信息处理(nginxproxypass原理)
-
简介有些应用需要验证请求和响应的头部信息。而现在的架构基本都会在前端使用nginx进行转发。如果没有处理头部信息,就会导致信息丢失,无法通过验证,出现403等请求异常的情况。...
- Proxy-Lite实战:3步部署+2个案例,轻松掌握轻量级网页自动化
-
大家好,我是何三,80后老猿,独立开发者一、Proxy-Lite模型概述...
- Telegram代理指南:好处及设置步骤
-
Telegram是一款广受欢迎的通讯软件,它能让你和世界各地的用户进行交流。然而想要访问Telegram却受到限制怎么办?Telegram代理是一个完美的解决方案,它不仅能帮助用户绕过地理限制,还能提...
- 会Python?那么你一定要试一试mitmproxy
-
mitmproxy是一款工具,也可以说是python的一个包,使用这个工具可以在命令行上进行抓包(现在也可以在web页面上查看上抓的数据包了),还可以对所抓到的包进行脚本处理,非常有用。和...
- IP地址与DNS是什么?搞懂它们,网络再也不卡!
-
今天聊聊很多人都会遇到的一个基础问题:IP地址和DNS。虽然这两个名词在我们日常上网时经常听到,但很多人可能对它们的具体含义和作用并不清楚。别担心,看完这篇文章你就能搞懂它们的区别和作用!IP地址,简...
- 十五张图带你快速入门 shardingsphere-proxy
-
ApacheShardingSphere是一款分布式的数据库生态系统,它包含两大产品:...
- 好玩的Docker之“NginxProxyManager”自动申请SSL证书教程
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:BIGWEI1992前言:本人一个非著名不专业的业余玩家,也是靠着经常看各种大佬的视频教程学习进步。把自己学习到的一些知识,利用业余时间出一...
- Proxy 与 Object.defineProperty 优劣对比?
-
答:1:Proxy的优势:Proxy可以代理整个对象,而Object.defineProperty只能代理对象的某个属性...