首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

十五张图带你快速入门 shardingsphere-proxy

编程知识
2024年08月25日 11:35

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


From:https://www.cnblogs.com/makemylife/p/18378826
本文地址: http://shuzixingkong.net/article/1421
0评论
提交 加载更多评论
其他文章 Flutter调试debug或者打包release帧率只有60的原因
问题描述 最近发现Flutter中引入像素较大的静态图片或者字体导致调试或者打包之后在高刷手机上帧率只有60的问题。 测试设备为小米13,可在开发者选项中直接打开帧率显示, 也可使用statsfl插件显示帧率 StatsFl( maxFps: 120, // Support custom FPS t
Cloudflare R2 - 免费图床
之前看了一篇文章,关于介绍 Cloudflare R2 来搭建图床的方案,主要是白嫖 Cloudflare 的空间和 cdn 服务。我现在博客 DevNow 的 CDN 使用的是七牛云,偶尔还是有一点点的支出。虽然不多,但是吧,看到有白嫖的方案,还是蠢蠢欲动,这不今天就来试着弄下看看。
Cloudflare R2 - 免费图床 Cloudflare R2 - 免费图床 Cloudflare R2 - 免费图床
使用 setResponseStatus 函数设置响应状态码
title: 使用 setResponseStatus 函数设置响应状态码 date: 2024/8/25 updated: 2024/8/25 author: cmdragon excerpt: 通过 setResponseStatus 函数,你可以轻松地在 Nuxt.js 中设置响应的状态码。这
使用 setResponseStatus 函数设置响应状态码 使用 setResponseStatus 函数设置响应状态码
C++容器算法
容器算法 <algorithm>是c++自带的容器算法,提供一系列实用的算法。在谈到容器算法,我们大概率会用到谓词predicate,谓词返回的类型是布尔类型(bool)可以是lambda表达式、函数对象以及其它可调用的对象。 查找 find()查找元素 find接受三个参数,第三个参数
基于python的文字转图片工具
地址 https://hub.docker.com/r/rainsccc/strtoimg 拉取镜像后,可以启动一个容器来运行该应用程序。以下命令会启动容器并将其端口映射到主机上: docker run -d -p 5000:5000 rainsccc/strtoimg:latest -d:在后台运
修改kubeadm证书过期时间及更新k8s集群证书
一、为什么要修改 kubeadm 证书时间 Kubernetes 官方提供了 kubeadm 工具安装 kubernetes 集群,使用这个工具安装集群非常便捷,使部署和升级 Kubernetes 变得简单起来。 不过该工具有点坑的就是,使用其安装的 kubernetes 集群的大部分证书有效期只有
计算机组成原理【3】:数据的表示和运算-下
概述 浮点数的表示和运算 浮点数的表示;IEEE 754标准;浮点数的加/减运算 浮点数的表示与运算 浮点数的表示 浮点数表示法是指以适当的形式将比例因子表示在数据中,让小数点的位置根据需要而浮动。这样在位数有限的情况下,既扩大了数的表示范围,又保持数的有效精度。 浮点数的表示格式 浮点数由符号、尾
计算机组成原理【3】:数据的表示和运算-下 计算机组成原理【3】:数据的表示和运算-下 计算机组成原理【3】:数据的表示和运算-下
Graphics2D绘图方法总结
使用Java的Graphics2D类,绘制业务需要的图形模板,然后在具体流程中填充数据,并且将图形存储起来。
Graphics2D绘图方法总结 Graphics2D绘图方法总结