You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
背景:通过执行JDBC代码时指定数据源标识,实现JDBC可以获取不同数据源配置,以支持JDBC多数据源切换
Background: By specifying the data source identifier when executing JDBC code, JDBC can obtain different data source configurations to support JDBC multi-data source switching
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
背景:通过执行JDBC代码时指定数据源标识,实现JDBC可以获取不同数据源配置,以支持JDBC多数据源切换
Background: By specifying the data source identifier when executing JDBC code, JDBC can obtain different data source configurations to support JDBC multi-data source switching
问题1: JDBC引擎启动过程中,对数据源配置的加载逻辑在哪
DefaultEngineCreateService类中的方法createEngine内,包含这句逻辑
//4. 请求资源
val (resourceTicketId, resource) = requestResource(engineCreateRequest, labelFilter.choseEngineLabel(labelList), emNode, timeout)
在requestResource方法内,会组装管理台中用户对引擎配置的启动参数,放到properties中,
针对JDBC引擎为例,可以在此插入这样的逻辑嘛?如果用户提交脚本时,指定了一个数据源名称,就去拿这个数据源名称对应的引擎配置参数,来替换放到properties中,
JDBC的Executor拿到引擎配置,对应地连接不同的JDBC服务。
解答:
jdbc参数是在ec端拿的,截图如下:
并发引擎如jdbc、presto拿取的是运行时参数加实时拉取的参数,如果后续改为数据源的话,也建议修改为改这里。这样就可以支持多个jdbc 的连接
问题2: 脚本执行时,数据源切换标识加在哪里比较合适?
用户请求/entrance/execute或/entrance/submit,
%data_source_1
select * from table1
%data_source_2
select * from table2
类似VarSubstitutionInterceptor拦截器,增加数据源标识的拦截器,解析到数据源标识data_source_1或data_source_2之后,
把这个标识数据放在哪里合适好呢?jobRequest的labels中 还是 params中?放置好之后可以往下传递 然后被各种Request所感知到
解答:
放到运行时参数里面比较好的,因为这个是运行时的数据源参数,之前有预留datasource这个Key的。
Beta Was this translation helpful? Give feedback.
All reactions