1.谈谈如何看源码

    个人觉得拿到一个开源的项目,首先要先使用一下。

  如果是有页面的那种,可以先把测试平台部署起来,然后到处随意点点,然后用一下最基础的功能,走一遍基础的使用流程。不用担心会把系统弄坏,弄坏了说明没有配置好或者本身代码有bug,这时候可以尝试先自己解决一下,如果能解决是好的,如果不能解决,那就更好了,因为这个时候会激发出你的好奇心,好奇心会驱使你有更浓厚的兴趣去研究源码。

  如果是没有页面的,比如服务器软件或者中间件等,那么也是先使用一下这个软件最基础的功能。

  对这个软件有一些了解之后,我们就可以开始自己想想,如果是自己去实现这个软件的某个功能点,比如调度系统举例的话,调度系统是怎么拉起linux进程来执行程序的,执行完成程序后是如何获取结果和执行过程中的日志的。这些都可以自己想一想,想的时间越长,你会越好奇这个软件是怎么实现的。这个时候其实你就有了一个切入点,有个切入点去看代码,就像在一个陌生城市行走突然有了地图一样。你会把不相干的代码暂时跳过,只看对解决我当前的疑问有帮助的那些代码。这时候,一个有上千个文件的工程此时与你相关的就变成数十个了,你只需通过这个切入点来看明白这数十个对解决你当前疑惑有直接帮助的源代码文件就好了。

2.谈谈对DolphinScheduler平台的一些疑惑

   最开始使用这个平台时候,我相信很多人和我一样,会先建立一个项目,然后拉一个最简单的shell节点先执行一下。执行成功后会生成一个成功的运行实例。实例点开是能看到此次执行的日志的。

  就这么简单的一个流程,我就比较好奇在几个点:

    1 )这个调度平台是怎么拉起一个linux进程的?

    2 )这个调度平台如何获取执行的结果和日志的?

    3 )这个调度平台的前后台是如何交互的?前台的一个shell节点存储在数据库是怎么样的一个结构。

    4 )如果有很多的依赖,是如何存储和解决这些依赖的?

    5 )这个号称分布式的调度系统,是如何保证高可用的?

  以上这些是我最初的时候想到的一些疑惑,所以我就决定带着这些疑惑,作为一个个切入点,去解决掉,并要求自己一定要写为每个问题写一篇文章记录一下揭秘的过程。因为我相信我现在走的路,很多后来的人都会再走一遍,如果有走过的人写一下记录一下,应该会好很多吧。我们后边见~~~

DolphinScheduler1.3.2源码分析(一)看源码前先把疑问列出来的更多相关文章

  1. [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast

    [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑 ...

  2. NIO 源码分析(05) Channel 源码分析

    目录 一.Channel 类图 二.begin 和 close 是什么 2.1 AbstractInterruptibleChannel 中的 begin 和 close 2.2 Selector 中 ...

  3. NIO 源码分析(02-1) BIO 源码分析

    目录 一.BIO 最简使用姿势 二.ServerSocket 源码分析 2.1 相关类图 2.2 主要属性 2.3 构造函数 2.4 bind 方法 2.5 accept 方法 2.6 总结 NIO ...

  4. Spring Ioc源码分析系列--Ioc源码入口分析

    Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...

  5. k8s client-go源码分析 informer源码分析(3)-Reflector源码分析

    k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...

  6. NIO 源码分析(02-2) BIO 源码分析 Socket

    目录 一.BIO 最简使用姿势 二.connect 方法 2.1 Socket.connect 方法 2.2 AbstractPlainSocketImpl.connect 方法 2.3 DualSt ...

  7. drf的基本使用、APIView源码分析和CBV源码拓展

    cbv源码拓展 扩展,如果我在Book视图类中重写dispatch方法 -可以实现,在get,post方法执行之前或者之后执行代码,完成类似装饰器的效果 def dispatch(self, requ ...

  8. HashMap源码分析(二):看完彻底了解HashMap

    上文讲到HashMap的增加方法,现在继续 上文链接 HashMap在上一篇源码分析的文章中,如果使用put的时候如果元素数量超过threshold就会调用resize进行扩容 1.扩容机制 想要了解 ...

  9. jQuery1.11源码分析(1)-----Sizzle源码概览[原创]

    最近在啃jQuery1.11源码,上来就遇到Sizzle这个jQuery的大核心,虽然已经清楚了Sizzle的用途,先绕过去也没事,但明知山有虎偏向虎山行才是我们要做的. 本文面向的阅读对象:正在学习 ...

随机推荐

  1. maven打包 依赖jar与不依赖jar

    ?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.a ...

  2. 关于Objects类的getClass方法为什么可以得到子类的地址的思考

    这一段时间,总是很纠结为什么Objects中的getClass方法可以返回包含子类地址信息的东西(我不确定返回值类型). 因为在Java中,我们定义的父类,我想破脑袋也想不出怎么可以得到子类的信息. ...

  3. ocelot 中间件的变化

    ocelot 中间件的变化 Intro 之前我们使用 ocelot 的时候自定义了一些中间件来实现我们定制化的一些需求,最近博客园上有小伙伴问我怎么使用,他用的版本是 16.0 版本,16.0 和 1 ...

  4. js--实现限制input输入框数字输入,实现每四位一个空格效果(银行卡号,手机号等)

    前言 工作学习中经常能遇到输入框限制输入数字,并且每四位一空格的情况,比如表单中银行卡号,手机号等输入框的限制,这里介绍一下使用js具体的实现方法.不需要引用第三方ui库. 正文 1.input标签的 ...

  5. 【MyBatis】MyBatis 缓存

    MyBatis 缓存 文章源码 什么是缓存 像大多数的持久化框架一样,MyBatis 也提供了缓存策略,通过缓存策略来减少数据库的查询次数,从而提高性能. Mybatis 中缓存分为一级缓存,二级缓存 ...

  6. 【C++】《C++ Primer 》第十三章

    第十三章 拷贝控制 定义一个类时,需要显式或隐式地指定在此类型地对象拷贝.移动.赋值和销毁时做什么. 一个类通过定义五种特殊的成员函数来控制这些操作.即拷贝构造函数(copy constructor) ...

  7. win7安装oracle11g和oracle client和pl/sql

    一.安装oracle11g 1.下载Oracle 11g R2 for Windows的版本 下载地址:hhttps://www.oracle.com/technetwork/database/ent ...

  8. Linux tar压缩和解压

    经常会忘记 tar 压缩和解压命令的使用,故记下来. 1. 打包压缩 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 tar -jcvf pack.tar. ...

  9. 【RAC】安装rac的时候。报错checking for oracle home incompatibilities failed

    背景:由于oracle安装的时候中途出现了问题,解决过后,发现报错了 图形化安装的时候,有这个问题出现 解决办法: 删除安装过的所有缓存,和文件即可 1.删除ORACLE_BASE下的所有文件 2.删 ...

  10. web测试误区:浏览器后退键退出系统会话失效

    通过最近测试的项目,认识到实际:浏览器后退键退出系统,会话仍旧有效.打破了之前认为浏览器后退键就会退出系统登录的认知. 一,了解Cookie和Session的作用,具体来说cookie机制采用的是在客 ...