DolphinScheduler在2020年2月24日发布了新版本1.2.1,从版本号就可以看出,这是一个小版本。主要涉及BUG修复、功能增强、新特性三个方面,我们会根据其发布内容,做简要的源码分析。

  由于涉及内容较多,前端功能不再分析。

Worker Server日志脱敏

  主要是对日志中的密码进行脱敏。我们知道worker的日志是通过logback打印的,官方也就是通过配置conversionRule来实现过滤的。实现逻辑比较简单,核心代码如下:

@Override
public String convert(ILoggingEvent event) { // get original log
String requestLogMsg = event.getFormattedMessage(); // desensitization log
return convertMsg(requestLogMsg);
}
public static final String DATASOURCE_PASSWORD_REGEX = "(?<=(\"password\":\")).*?(?=(\"))";

  其实就是在打印日志的时候,通过正则表达式,把password给过滤掉了。个人不太喜欢这个实现方式,毕竟原PR的需求就是不要打印调度本身配置的数据源的密码信息,结果官方把所有的日志中的password都给脱敏了!

配置文件适当合并

  这主要是设计配置项的合并,就是把多个配置文件合并成一个,减少配置文件数量。据说后面的版本又要拆开了。

可创建包含 "." 的用户名

  这个主要是修改了用户名校验的正则表达式。

public static final Pattern REGEX_USER_NAME = Pattern.compile("^[a-zA-Z0-9._-]{3,20}$");

可切换 Spark 版本

  主要是解决多spark版本切换的问题。核心代码如下,其实就是根据当前参数选择对应的spark-submit

  private static final String SPARK1_COMMAND = "${SPARK_HOME1}/bin/spark-submit";
private static final String SPARK2_COMMAND = "${SPARK_HOME2}/bin/spark-submit"; ..................
String sparkCommand = SPARK2_COMMAND; if (SparkVersion.SPARK1.name().equals(sparkParameters.getSparkVersion())) {
sparkCommand = SPARK1_COMMAND;
}

去除 Master 和 Worker 监听端口(5566,7788)

  issue里面说的比较清楚,就不再分析

其他的都是一些BUG修复,或特性的增强,整体来说分析的意义不是很大,就不再一一研究,等下一个改动较大的版本再说。

新特性:

  • [#1497] 通过 API 创建的工作流在前端展示时自动调整布局。
  • [#747] Worker server 运行日志脱敏。
  • [#1635] 配置文件适当合并。
  • [#1547] 节点内容编辑支持全屏缩放。

增强:

  • [#184] 被工作流引用的 worker 不能被删除。
  • [#1441] 可创建包含 "." 的用户名。
  • [#839] 可切换 Spark 版本。
  • [#1511] 前后端编译文件合并。
  • [#1509] 去除 Master 和 Worker 监听端口(5566,7788)。
  • [#1575] 去除 kazoo ,简化部署。
  • [#1300] 邮件内容可右对齐。
  • [#1599] 增加前端部署的 nginx 配置文件。
  • 支持 Mac 进行开发和 debug。

Bug 修复:

  • 特定情况下弹出框不能关闭。
  • [#1399] 日志信息中字段顺序错误。
  • [#1379] sql 任务节点日期转换错误。
  • [#1477] 特定情况下,数据库延迟的时候,任务会一直执行。
  • [#1514] 队列关联用户后修改队列信息,新修改的队列信息未保存到数据库。
  • [#1768] 用户管理分页错误。
  • [#1770] 用户取消租户关联后,仍能使用原租户 hdfs 的资源。
  • [#1779] 子进程失败后仍显示成功。
  • [#1789] 通过任务实例页面查看任务执行历史显示错误。
  • [#1810] 特定情况下,依赖节点不显示具体依赖。
  • [#1816] 添加多个依赖后,再添加新的依赖时,依赖列表读取错误。
  • [#1828] UDF 授权后,UDF 文件路径授权错误。

  

DolphinScheduler1.2.1源码分析的更多相关文章

  1. DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目

    前置依赖组件安装 找一台服务器,或者本地的虚拟机,然后在服务器上安装好jdk,zookeeper,mysql. 1.源码调试环境搭建 源码环境搭建可以参考DolphinScheduler官方网站的开发 ...

  2. DolphinScheduler1.3.2源码分析(一)看源码前先把疑问列出来

    1.谈谈如何看源码   个人觉得拿到一个开源的项目,首先要先使用一下. 如果是有页面的那种,可以先把测试平台部署起来,然后到处随意点点,然后用一下最基础的功能,走一遍基础的使用流程.不用担心会把系统弄 ...

  3. ABP源码分析一:整体项目结构及目录

    ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...

  4. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

  5. nginx源码分析之网络初始化

    nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...

  6. zookeeper源码分析之五服务端(集群leader)处理请求流程

    leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...

  7. zookeeper源码分析之四服务端(单机)处理请求流程

    上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...

  8. zookeeper源码分析之三客户端发送请求流程

    znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...

  9. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

随机推荐

  1. 对接口运用扩展方法 Applying Extension Methods to an Interface 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-15

  2. Set,Multiset,Iterator(迭代器)详解

    Set,Multiset,Iterator(迭代器) Iterator:迭代器 我们可以发现所谓一些数据结构比如说数组和链表,它们都有一些相似的性质.我们看下面两个例子: 数组:定义数组\(int~a ...

  3. Docker在树莓派的安装与使用(Ubuntu Arm Server v19.10)

    最近由于冠状病毒疫情的原因,只能够和小朋友家里蹲.这几天把尘封已久的那个树莓派拿出来继续捣鼓.希望能够做一个异构的分布式系统框架,于是想把Docker也安装到树莓派上,以便后期做进一步的开发和实验. ...

  4. robotframework,移动端(小程序)自动化,滚动屏幕的方法

    场景描述: 小程序端定位元素有无法定位弹出层内容的问题(自动化工具只能识别到背景主层,无法识别到弹出层) 解决思路: 1.弹出层元素与背景主层元素位置一致,当点击出弹出层时,在定位背景主层即可定位到弹 ...

  5. geoserver wfs属性查询

    Geoserver参考连接:http://docs.geoserver.org/latest/en/user/services/wfs/reference.html 使用实例: http://loca ...

  6. liberty | 在IDEA整合Springboot与IBM liberty

    在IDEA整合Springboot与IBM liberty 简介 Liberty 是一款全新的轻量级应用服务器,它将用户的良好开发体验作为最主要的出发点.其主要特点和内容包括: 高模块化--该功能允许 ...

  7. Java 程序是如何执行的

    Java 程序是如何执行的 了解任何一门语言的精髓都是先俯览其全貌,从宏观的视角把握全局,然后再深入每个知识点逐个击破,这样就可以深入而快速的掌握一项技能.同样学习 Java 也是如此,本节就让我们先 ...

  8. 目标检测——深度学习下的小目标检测(检测难的原因和Tricks)

    小目标难检测原因 主要原因 (1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素 ...

  9. 学习记录一(Python算数运算符与if语句)

    从网上找到一个Python的学习视频,之前的环境都装好了,今天看的就是算术运算符和变量的命名 其中Python的除法直接就是 / %用于求余 其中还可以进行幂运算**    例如2 ** 3 = 8 ...

  10. MSVC下快速Unicode I/O

    http://blog.kingsamchen.com/archives/863 如果需要往console输出包含非ASCII字符的宽字符串,一个比较快速的方法是使用WriteConsoleW这个AP ...