数据源注册过程
最后更新:2024-12-06 12:38:36
|
状态:未完成
一、 自动注册
系统启动时读取配置文件,先根据anyline.datasource-list读取数据源列表,再根据列表读取每个数据源的连接、帐号密码等参数,最后调用DataSourceHolder.reg()方法
二、 手动注册
动态数据源经常需要在运行过程中注册,如用户动态提交的数据源,与自动注册类似,在接收到数据源参数后同样调用DataSourceHolder.reg()方法
reg方法内根据数据源参数特征到holder池中匹配到相应的Holder,这里的特征主要是指连接协议、驱动类、数据库产品名称等,如果以上特征无法准确识别可能直接添加&adapter=mysql参数来显示指定holder类型。如ElasticSearch等使用通用的http协议、doris,mysql都用了同样的jdbc:mysql协议
Holder.reg()执行过程
1. 先创建连接池对象(JDBC类型数据源)
2. 为当前数据源创建事务管理器
3. 创建DataRuntime对象,runtime创建过程中会创建service,dao
并直接或间接维护了一组数据源标识,数据源特征,事务管理器、adapter、actuator
后续操作数据源时通过service来操作,每个service上都绑定了上面说到的一组对象
系统启动时读取配置文件,先根据anyline.datasource-list读取数据源列表,再根据列表读取每个数据源的连接、帐号密码等参数,最后调用DataSourceHolder.reg()方法
二、 手动注册
动态数据源经常需要在运行过程中注册,如用户动态提交的数据源,与自动注册类似,在接收到数据源参数后同样调用DataSourceHolder.reg()方法
reg方法内根据数据源参数特征到holder池中匹配到相应的Holder,这里的特征主要是指连接协议、驱动类、数据库产品名称等,如果以上特征无法准确识别可能直接添加&adapter=mysql参数来显示指定holder类型。如ElasticSearch等使用通用的http协议、doris,mysql都用了同样的jdbc:mysql协议
Holder.reg()执行过程
1. 先创建连接池对象(JDBC类型数据源)
2. 为当前数据源创建事务管理器
3. 创建DataRuntime对象,runtime创建过程中会创建service,dao
并直接或间接维护了一组数据源标识,数据源特征,事务管理器、adapter、actuator
后续操作数据源时通过service来操作,每个service上都绑定了上面说到的一组对象