特性更新!DistSQL 集群治理能力详解
2022/3/26 19:22:51
本文主要是介绍特性更新!DistSQL 集群治理能力详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
江龙滔,SphereEx 中间件研发工程师,Apache ShardingSphere Committer。 主要负责 DistSQL 及安全相关特性的创新与研发。
兰城翔,SphereEx 中间件研发工程师,Apache ShardingSphere Committer。 目前专注于 DistSQL 的设计和研发。
背景
从 Apache ShardingSphere 5.0.0-Beta 版本发布以来,DistSQL 迅速走进了用户的视野,因其“动态生效、无需重启”的独有优势和接近标准 SQL 的优美语法,越来越受到开发者和运维人员的喜爱。随着 5.0.0 和 5.1.0 版本的迭代,ShardingSphere 社区再次为 DistSQL 新增了大量语法,带来了众多实用的特性。
本文将从“集群治理”的角度,为大家解读 DistSQL 的最新功能。
ShardingSphere 集群
在典型的由 ShardingSphere-Proxy 构成的集群中,一般包含多个计算节点,多个存储节点,如图:
为了便于交流,在 ShardingSphere 中,我们将 Proxy 称为计算节点,将 Proxy 管理的分布式数据库资源(如 ds0,ds1),称为资源或存储节点。
其中,多个 Proxy 计算节点连接到同一注册中心,共享配置和规则,并互相感知在线状态。与此同时,这些计算节点也共享底层的存储节点,它们可以同时对存储节点进行读写操作。此时,用户的应用程序连接到任一计算节点上,都能进行等效的操作。
通过这种集群架构,在计算资源不足时,用户可以快速的对 Proxy 进行水平扩展,也能够在一定程度上降低单点故障带来的风险,提高系统可用性。
应用程序与计算节点间还可以增加负载均衡的机制,此处不扩展。
计算节点治理
计算节点治理,适用于 Cluster 模式,关于模式的更多信息可参考《ShardingSphere Mode 运行模式详解》。
集群准备
这里以单机模拟三个 Proxy 计算节点为例,使用如下模式配置:
mode: type: Cluster repository: type: ZooKeeper props: namespace: governance_ds server-lists: localhost:2181 retryIntervalMilliseconds: 500 timeToLiveSeconds: 60 maxRetries: 3 operationTimeoutMilliseconds: 500 overwrite: false
分别执行启动命令:
sh %SHARDINGSPHERE_PROXY_HOME%/bin/start.sh 3307 sh %SHARDINGSPHERE_PROXY_HOME%/bin/start.sh 3308 sh %SHARDINGSPHERE_PROXY_HOME%/bin/start.sh 3309
三个 Proxy 实例启动成功后,计算节点集群就准备好了。
SHOW INSTANCE LIST
使用客户端连接到任一计算节点,如 3307:
mysql -h 127.0.0.1 -P 3307 -u root -p
查看实例列表:
mysql> SHOW INSTANCE LIST; +----------------+-----------+------+---------+ | instance_id | host | port | status | +----------------+-----------+------+---------+ | 10.7.5.35@3309 | 10.7.5.35 | 3309 | enabled | | 10.7.5.35@3308 | 10.7.5.35 | 3308 | enabled | | 10.7.5.35@3307 | 10.7.5.35 | 3307 | enabled | +----------------+-----------+------+---------+
各字段含义如下:
instance_id
:实例的 id,目前由 host 和 port 组成;
host
:主机地址;
port : 端口号;
status
: 实例的状态,enabled
和 disabled
分别表示启用和禁用状态。
DISABLE INSTANCE
DISABLE INSTANCE
语句用于将指定计算节点设置为禁用状态。需要注意的是,该指令并不会终止目标实例的进程,只是在逻辑上对其进行停用。DISABLE INSTANCE
支持以下语法形式:
DISABLE INSTANCE 10.7.5.35@3308; # 或 DISABLE INSTANCE IP=10.7.5.35, PORT=3308;
示例:
mysql> DISABLE INSTANCE 10.7.5.35@3308; Query OK, 0 rows affected (0.02 sec) mysql> SHOW INSTANCE LIST; +----------------+-----------+------+----------+ | instance_id | host | port | status | +----------------+-----------+------+----------+ | 10.7.5.35@3309 | 10.7.5.35 | 3309 | enabled | | 10.7.5.35@3308 | 10.7.5.35 | 3308 | disabled | | 10.7.5.35@3307 | 10.7.5.35 | 3307 | enabled | +----------------+-----------+------+----------+
执行 DISABLE INSTANCE
语句后,通过再次查询能够看到,端口为 3308 的实例状态已更新为 disabled
,表示该计算节点已被禁用。
此时若有连接至 10.7.5.35@3308
的客户端,执行任意 SQL 均会提示异常:
1000 - Circuit break mode is ON.
这篇关于特性更新!DistSQL 集群治理能力详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南