ShardingSphere及Sharding-Proxy
2021-08-23 17:39:43 1 举报
AI智能生成
ShardingSphere及Sharding-Proxy
作者其他创作
大纲/内容
ShardingSphere其他
SPI模块
SQL解析
用于规定用于解析SQL的ANTLR语法文件
主要接口
SQLParserEntry
内置实现
MySQLParserEntry
PostgreSQLParserEntry
SQLServerParserEntry
OracleParserEntry
数据库协议
用于Sharding-Proxy解析与适配访问数据库的协议
主要接口
DatabaseProtocolFrontendEngine
内置实现
MySQLProtocolFrontendEngine
PostgreSQLProtocolFrontendEngine
数据脱敏
用于规定加密解密器的加密、解密、类型获取、属性设置等方式
主要接口
Encryptor
QueryAssistedEncryptor
内置实现
AESEncryptor
MD5Encryptor
分布式主键
主要用于规定如何生成全局性的自增、类型获取、属性设置等
主要接口
ShardingKeyGenerator
内置实现
UUIDShardingKeyGenerator
SnowflakeShardingKeyGenerator
分布式事务
主要用于规定如何将分布式事务适配为本地事务接口
主要接口
ShardingTransactionManager
内置实现
XAShardingTransactionManager
SeataATShardingTransactionManager
XA事务管理器
著用于规定如何将XA事务的实现者适配为统一的XA事务接口
主要接口
XATransactionManager
内置实现
AtomikosTransactionManager
NarayXATransactionManager
BitronixXATransactionManager
注册中心
主要用于规定注册中心初始化、存取数据、更新数据、监控等行为
主要接口
RegistryCenter
内置实现
Zookeeper
编排治理
编排治理模块提供
配置中心/注册中心
配置动态化
数据库熔断禁用
调用链路
.....
配置中心
配置集中化
越来越多的运行时实例,使得散落的配置难于管理,配置不同步导致的问题十分严重
将配置集中与配置中心,可以更加有效进行管理
配置动态化
配置修改后的分发,是配置中心可以提供的另一个重要能力
可支持数据源、表与分片及读写分离策略的动态切换
数据结构
配置中心在定义的命名空间的config下,以YAML格式存储,包括数据源,数据分片、读写分离、Properties配置,可通过修改节点来实现对于配置的动态管理
config.authentication
Sharding-Proxy权限配置
config.sharding.props
属性配置,如:sql.show=true
config.schema
Schema配置
schemaName.datasource
多个数据库连接池的集合,不同数据库连接池属性自适配
sharding_db.rule
数据分片配置
masterslave.rule
读写分离独立使用时使用
动态生效
在注册中心上修改、删除、新增相关配置,回动态推送到生产环境并立即生效
注册中心
注册中心存放运行时的动态/临时状态数据,如可用的proxy实例,需要禁用或熔断的datasource实例
通过注册中心,可以提供熔断数据库访问程序对数据库的访问和禁用从库的访问的编排治理能力
治理仍然有大量未完成的功能
数据结构
注册中心在定义的命名空间的state下,创建数据库访问对象运行节点,用于区分不同数据库访问实例
包括instances和datasources节点
state.instances
数据库访问对象运行实例信息,子节点是当前运行实例的标识
运行实例标识由运行服务器的IP地址和PID构成
运行实例标识均为临时节点,当实例上线时注册,下线时自动清理
注册中心监控这些节点的变化来治理运行中实例对数据库的访问
state.datasources
可以控制读写分离,可动态添加/删除/禁用
熔断实例
可以在IP地址@-@PID节点写入DISABLED表示禁用该实例,删除DISABLED表示启用
禁用从库
在读写分离场景下,可在数据源名称子节点中写入DISABLED表示禁用从库数据源,反之表示启用
支持的配置中心和注册中心
ShardingSphere在数据库治理模块使用SPI方式载入数据到配置中心/注册中心,进行实例熔断和数据库禁用
目前,支持Zookeeper和Etcd这种常用的配置/注册中心
此外,可以使用其他第三方配置/注册中心,如Apollo、Nacos,并通过SPI注入到ShardingSphere
应用性能监控
APM,主要功能在于分布式系统的性能诊断,主要功能包括调用链展示,应用拓扑分析等
ShardingSphere并不负责复合采集、存储以及展示应用性能监控的相关数据,而是将SQL解析和SQL执行这两块数据分片的最核心的相关信息发送至应用性能监控系统,并交由其处理
ShardingSphere仅负责产生具有价值的数据,并通过标准协议递交至相关系统
可以通过两种方式对接
使用OpenTracingAPI发送性能追踪数据,面向OpenTracing协议的APM产品都可以和ShadingSphere自动对接
SkyWalking
Zipkin
Jaeger
使用SkyWalking的自动探针
ShardingSphere团队和SkyWalking团队共同合作,在SkyWalking中实现了ShardingSphere自动探针,可以将相关的应用性能数据自动发送到SkyWalking中
Sharding-Proxy
介绍
Sharding-Proxy是ShardingSphere的第二个产品,定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持
目前先提供MySQL版本,可以使用任何兼容MySQL协议的访问客户端
向应用程序完全透明,可直接当作MySQL使用
适用于任何兼容MySQL协议的客户端
Sharding-Proxy优势在于对异构语言的支持,以及为DBA提供可操作入口
使用过程
下载压缩包
解压缩,修改conf/server.yaml和以config-前缀的文件,进行分片规则、读写分离规则配置
引入依赖
如果后端连接MySQL数据库,需要下载MySQL驱动,拷贝至\lib目录
连接PostgreSQL数据库,不需要引入额外依赖
运行bin/start.sh或bin/start.bat启动
使用客户端工具连接
mysql -h 127.0.0.1 -p 3307 -u root -p root
注意事项
默认不支持hint
如需支持,修改配置将props的属性proxy.hint.enabled=true
Sharding-Proxy中,HintShardingAligorithm的泛型只能是String类型
默认使用3307端口
可以通过启动脚本追加参数作为启动端口号,如: bin/start.sh 3308
使用 /conf/server.yaml 配置注册中心、认证信息以及共用属性
支持多逻辑数据源,每个以“config-”做前缀命名yaml配置文件,对应一个逻辑数据源
0 条评论
下一页