JFinal如何接入分布式数据库中间件(如阿里的TDDL、美团的zebra)

  如题,最开始用EOVA(JFinal做的)系统只是单点单机,随着用户增加,需要做成分布式,准备第一步,先从数据库开始,接入“分布式数据库中间件”,翻看了下源码,在EovaConfig类中的regDataSource方法写死了获取数据库相关配置的文件,如果分布式,该怎么改?

regDataSource(Plugins plugins) {
    String datasource = xx.getConfig()(xx.isEmpty(datasource)) {
        RuntimeException()} {
        String[] var6var5 = (var6 = datasource.split()).length(var4 = var4 < var5++var4) {
            String ds = var6[var4]ds = ds.trim()String url = xx.getConfig(ds + )String user = xx.getConfig(ds + )String pwd = xx.getConfig(ds + )DruidPlugin dp = .initDruidPlugin(urluserpwd)ActiveRecordPlugin arp = .initActiveRecordPlugin(urldsdp)LogKit.info(+ url + + user)dataSources.add(ds)arps.put(dsarp)plugins.add(dp).add(arp)}

    }
}


评论区

Jieven

2020-05-07 19:22

虽然没用过Zebra, 但是可以提供几点思路:
1.需要参考DruidPlugin写一个 ZebraPlugin
2.public class ZebraPlugin implements IPlugin, IDataSourceProvider
3.public interface IDataSourceProvider {
DataSource getDataSource(); 核心就是实现获取数据源
}
4.Zebra如何创建一个数据源, 应该看Zebra文档, 或者寻求Zebra团队的协助. 因为是内部的东西, 所以外部很难给予太多支持.
5. 既然是美团集团覆盖率95%的 数据访问层, 兼容性, 肯定不会太差, 应该是无侵入的设计.
6.如果一切猜想都成立, 那就是只需要写一个 Plugin就可以搞定了.
7.咨询了美团的高级架构师, 意思应该是left join 语法得优化一波, 其它的单sql应该默认就可以兼容.
业务代码无感,主要是sql,单表一般问题不大,就看一下他们代码sql的品控了。太多了left join肯定要先修一波。