DolphinScheduler1.2.1源码分析
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源码分析的更多相关文章
- DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目
前置依赖组件安装 找一台服务器,或者本地的虚拟机,然后在服务器上安装好jdk,zookeeper,mysql. 1.源码调试环境搭建 源码环境搭建可以参考DolphinScheduler官方网站的开发 ...
- DolphinScheduler1.3.2源码分析(一)看源码前先把疑问列出来
1.谈谈如何看源码 个人觉得拿到一个开源的项目,首先要先使用一下. 如果是有页面的那种,可以先把测试平台部署起来,然后到处随意点点,然后用一下最基础的功能,走一遍基础的使用流程.不用担心会把系统弄 ...
- ABP源码分析一:整体项目结构及目录
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...
- HashMap与TreeMap源码分析
1. 引言 在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- zookeeper源码分析之五服务端(集群leader)处理请求流程
leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
- zookeeper源码分析之三客户端发送请求流程
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
- java使用websocket,并且获取HttpSession,源码分析
转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...
随机推荐
- Python中类属性和实例属性的区别
在Python中经常会混淆类属性和实例属性的概念,今天专门记录一下个人理解以免日后忘记. 看下面的例子: class Tencent(): i = 10 # 此处i为类属性 def __init__( ...
- Object类、常用API_2
主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 学习目标 -[ ] 能够说出Object类的特点 -[ ] 能够 ...
- iOS开发tip-图片方向
概述 相信稍微接触过iOS图片相关操作的同学都遇到过图片旋转的问题,另外使用AVFoundation进行拍照的话就会遇到前后摄像头切换mirror问题就让人更摸不着头脑了.今天就简单和大家聊一下iOS ...
- Oracle数据库、实例、用户、表空间、表之间的关系
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...
- CSS-- 实用CSS样式
自用实用CSS样式 1.清除DIV浮动 <span style="font-family:KaiTi_GB2312;">clear: both;</span> ...
- JVM 面试题汇总
JVM 面试题汇总 1.什么是 JVM?它有什么作用? 答:JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,顾名思义它是一个虚拟计算机,也是 Java 程序能够实现跨平 ...
- python中Threadlocal变量
在多线程环境下,每个线程都有自己的数据.一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁. 不加锁就会出现变量会被修改的问题,进而 ...
- java配置文件集
<!-- 激活组件扫描功能,扫描aop的相关组件组件 --> <context:component-scan base-package="com.yingjun.ssm.a ...
- objectarx 统计面积
除了最后一个输出面积到excel没做,其他都是做了的.只支持AcDbPolyline和AcDbCircle.这是我模仿网上的动态图做的,主要是为了练习.下面我把自己的一些心得分享出来.使用到的一些帮助 ...
- ARTS Week 9
Dec 23, 2019 ~ Dec 29, 2019 Algorithm Problem 69 Sqrt(x) 实现求解平方根函数Sqrt(x) 题目链接 题目描述:给定一个非负数x,求解该数字的平 ...