TDDL DataSource 分为 AtomDataSource GroupDatasource
他们两者没有依赖关系, 都实现了 JDBC 规范, 可以作为独立的 datasource 单独使用
AtomDataSource
AtomDataSource 负责 diamond 动态配置, 它可以通过 diamond 动态改变 ds 的 ip port 账号密码等
AtomDataSource diamond 配置分为三部分
1. global config
global config 主要配置 database 信息, 主要包括如下配置
dataId:com.taobao.tddl.atom.global.qatest_normal_0 group:DEFAULT_GROUP content: ip=127.0.0.1 port=3306 dbName=qatest_normal_0 dbType=mysql dbStatus=RW
2. app config
app config 主要包括应用配置, 例如线程池等, 如下
dataId:com.taobao.tddl.atom.app.tddl_sample.qatest_normal_0 group:DEFAULT_GROUP content: userName=tddl minPoolSize=1 maxPoolSize=2 idleTimeout=10 blockingTimeout=5 preparedStatementCacheSize=15 connectionProperties=characterEncoding=gbk
3. user config
dataId:com.taobao.tddl.atom.passwd.qatest_normal_0.mysql.tddl group:DEFAULT_GROUP content: encPasswd=xxxxxxx(密文,请用tddl-atom-datasource工程下的JbossPasswordDecode加密下明文密码)
Diamond 动态配置代码结构
GroupDatasource
GroupDatasource 负责组合多个 datasource, 主要负责双机热备, 读写分离, 其中使用了 DatasourceWrapper 包装 ds, DataSourceWrapper 有一个 Weight 属性, 可以设置单个 ds 的可读可写属性, 以及读写优先级. 最后将多个 ds 组合成读写分离 ds, 实例代码
List<DataSourceWrapper> dataSourceWrappers = new ArrayList<DataSourceWrapper>(); dataSourceWrappers.add(new DataSourceWrapper("127.0.0.1:3306:db_1", "rpwp", getMySQLDataSource(1), DBType.MYSQL)); dataSourceWrappers.add(new DataSourceWrapper("127.0.0.1:3306:db_2", "rpw0p0", getMySQLDataSource(2), DBType.MYSQL)); TGroupDataSource ds = new TGroupDataSource(); ds.init(dataSourceWrappers);
分类:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
2012-10-29 从MySQL临时表谈到filesort