ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

特性更新!DistSQL 集群治理能力详解

2022-03-26 14:35:02  阅读:196  来源: 互联网

标签:false 10.7 enabled 5.35 DistSQL 集群 proxy 节点 详解


江龙滔,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.

标签:false,10.7,enabled,5.35,DistSQL,集群,proxy,节点,详解
来源: https://www.cnblogs.com/sphereex/p/16058717.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有