在 YAML 语法中,!READWRITE_SPLITTING
是一个 自定义类型标签(Tag),它的核心作用是标识该配置节点需要被解析为 ShardingSphere 框架中定义的读写分离规则(ReadwriteSplittingRule
类)。以下是详细解释:
1. YAML 标签(Tag)的作用
!
前缀:表示这是一个自定义类型,而非 YAML 原生数据类型(如字符串、数字等)。READWRITE_SPLITTING
:是 ShardingSphere 内部约定的标识符,对应框架的读写分离规则实现类。- 功能:相当于告诉 YAML 解析器:“这个节点的内容需要被反序列化为
ReadwriteSplittingRule
类型的对象”。
2. ShardingSphere 中的具体行为
当 ShardingSphere-Proxy/JDBC 加载配置文件时:
- 步骤1:YAML 解析器遇到
!READWRITE_SPLITTING
,会调用 ShardingSphere 的规则构造器。 - 步骤2:将后续的键值对(如
dataSourceGroups
、loadBalancerName
)映射到ReadwriteSplittingRule
类的属性上。 - 结果:生成一个内存中的读写分离规则对象,用于后续 SQL 路由。
3. 对比原生 YAML
# 原生 YAML(普通键值对)
rule_name: READWRITE_SPLITTING
# ShardingSphere YAML(带类型标签)
- !READWRITE_SPLITTING
dataSourceGroups: ...
前者只是一个字符串值,后者会被框架转换为具体的规则对象。
⚠️注意事项
- 严格依赖框架支持:
如果自行编写 YAML 工具解析该文件,没有 ShardingSphere 的类定义时,!READWRITE_SPLITTING
会被视为普通字符串。 - 与其他规则的并列关系:
在 ShardingSphere 中,多个规则需用列表形式(以-
开头)并列配置:
rules:
- !READWRITE_SPLITTING # 读写分离规则
...
- !SHARDING # (可选)分片规则
...
💡总结
YAML片段 | 实际作用 |
---|---|
!READWRITE_SPLITTING |
ShardingSphere将其实例化为读写分离规则对象,后续子项是该规则的配置参数。 |
这种设计使得配置文件既能保持人类可读性(YAML),又能精确绑定到代码中的复杂对象模型。
内容由零声教学AI助手提供,问题来源于学员提问