Apache DolphinScheduler 3.2.0 版本已经呼之欲出,8 月 中下旬,这个大版本就要和用户见面了。为了让大家提前了解到此版本更新的主要内容,我们已经制作了几期视频和内容做了大致介绍,包括《重磅预告!Apache DolphinScheduler 3.2.0 新功能“剧透”》《3.2.0 版本预告!Apache DolphinScheduler API 增强相关功能》

今天,我们来介绍另一个用户比较关心的新功能——Remote logging(远程日志),看看是否能帮助你的工作变得更简单吧!

https://www.bilibili.com/video/BV1U14y1q74N/?spm_id_from=333.999.0.0

今天由为大家介绍 Apache DolphinScheduler 3.2.0 的一个新特性,叫做 Remote logging。我们会从三个部分来说明这个功能,第一,它是什么,解决什么问题;第二,它如何配置;第三,我们怎么去使用它?

远程日志是什么?解决什么问题?

在没有这个功能之前,我们的任务日志流向是这样子的,任务运行完的时候,Worker 会将日志写到 Worker 本地,当用户需要去查看任务日志的时候,我们会发送请求这个 Worker 的日志,然后展示给用户。当一些意外情况出现,导致这个 Worker 的日志不存在,或者是这个 Worker 不存在的时候,用户在页面上就看不了日志了。

但是有了 Remote Logging,这个问题就能得到比较好的解决。它整体的流程如下所示:

我们只是增加了这条线的部分以及下面 Remote Logging 的部分,当我们的 Worker 将日志写到本地的时候,会有个异步线程将写到本地的 log 同步到 Remote Logging。当一些意外情况发生导致日志丢失,但用户想要看日志详细信息的时候,我们会有个请求将日志从远端拉到本地,然后本地返回。

为什么我们要设置这样一个动作呢?这样做首先能保证接口的一致性,就是日志全部都是从 Worker 发送给 API Server,然后去读取的。其次是尽量减少我们远端的带宽,只有当本地日志缺失的时候,我们才会去下载远端的日志。

如何配置?

接下来我们快速说明一下如何配置 Remote Logging。在我们的发版文件里会有关于如何启动和配置的简单介绍。

首先,我们要修改 Common Properties 文件,将这个 remote.logging.enable 设置存储并且设置为你想要存储的远端存储介质。目前我们支持了 OSS、S3 和 GCS。

其次就是一些第三方远端存储的配置,比如 AccessKey、Secret 以及对应的 bucket 和 region 等。

如何使用?

我们回到页面,体验一下 Remote Logging 是如何使用,以及我们是如何判断它是生效的。

我们这里有一个简单的工作流,它只有两个任务,分别打印了 1 和 2 这两个信息。手动触发这个工作流并观察日志,看看它是否正常地被写到远端。

当我们触发了工作流运行,并且工作流是运行成功的,我们将日志写到远端。当任务被运行成功的时候,我们就开始写日志了。

这一行就能很明显地看到,日志被写成功之后,会同时有一个异步线程将日志同步到远端的存储。

因为我们这里使用的是 S3,它将本地的路径的日志同步了一份到远端。回到 S3 的页面,可以看到 log 已经存在了。

接着我们模拟一下当本地 Worker 的日志缺失的时候,我们如何去读日志。 我们手动将这个日志文件删除,可以看到这个文件夹下面有两个日志文件,分别是 3 和 4。将这两个文件都删除,可以看到这里已经没有对应的日志文件了。

此时,如果是之前的版本,我们已经不能查看最新的 instance 的日志文件了,但是有了 Remote Logging,就会发现本地不存在这个日志,将日志从远端下载到本地给用户查看。

模拟一下,这里我们点击查看任务日志,会发现任务日志已经被显示出来了。再去查看一下本地文件,会发现刚刚不存在的日志已经下载下来了,并且只下载了我们需要的那一个。

接下来看看另一个任务的日志,同样发现是能被显示的,本地的两个日志文件也被下载下来了。查看服务日志,我们发现它已经检测到日志文件不在本地出现,会去远端获取这个日志文件。

这就是 Remote Logging 功能的大致介绍,如果它能解决你的问题,欢迎在 8 月中下旬发布 3.2.0 版本的时候,升级版本来体验一下!

本文由 白鲸开源 提供发布支持!

3.2.0 版本预告!远程日志解决 Worker 故障获取不到日志的问题的更多相关文章

  1. 安装docker17.06.0版本报错和解决方法

    本人在自己电脑的虚拟机里安装docker ce 17.06.0版本的时候报如下错误: [root@manager2 yum.repos.d]# yum install docker-ce-17.06. ...

  2. pip升级到18.0版本过程中报错解决方法

    我这台电脑是windows10系统,一般在cmd命令行界面下执行pip的升级命令:pip install –upgrade pip 安装的时候,会有拒绝访问报错:这个时候应该是权限的问题,于是在win ...

  3. 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决

    一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...

  4. Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决)

    Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决) 论坛里的帮助:http://bbs.csdn.net/topics/39 ...

  5. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  6. 解决IDEA2018.1.5或者Android Studio 3.0版本的输入法不跟随光标问题

    问题1:IDEA2018.1.5版本的输入法不跟随光标 解决办法1:修改JDK版本,步骤如下: 1. 使用快捷键ctrl+shift+A,在输入框中输入Switch Boot JDK,如图所示 2.替 ...

  7. Django2.0版本以上与pymsql 不匹配问题以及解决方法

    Django2.0版本以上与pymsql 不匹配问题以及解决方法 Django 2.0 以上 如果使用pymysql0.93,需要一下两步操作: # 1 第一次报错信息: File "D:\ ...

  8. 解决 Electron 5.0 版本出现 require is not defined 的问题

    Electron已经发布了5.0正式版,升级后发现原来能运行的代码报错提示require is not defined 经查相关资料,原来官方在5.0版本修改了nodeIntegration的默认值, ...

  9. 使用mysql5.7版本的mysqldump备份mysql8.0版本的数据库报错解决办法

    使用mysql5.7版本的mysqldump命令执行备份mysql8.0版本的数据库时会报错: mysqldump: Couldn't execute 'SET SQL_QUOTE_SHOW_CREA ...

  10. mysql8.0以后的版本开启远程连接:

    mysql8.0以后的版本开启远程连接: 1 CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; 2 GRANT ALL ON *.* TO 'root'@'%' ...

随机推荐

  1. 微信支付普通商户与AppID账号关联管理-授权

    微信支付普通商户与AppID账号关联管理 二.名词解释 名词 释义 微信支付普通商户 公司企业.政府机关.事业单位.社会组织.个体工商户.个人卖家.小微商户.(微信支付商户接入指引) AppID 已通 ...

  2. iOS开发之弹窗管理

    前言 "千淘万漉虽辛苦,吹尽狂沙始到金."在这快速变化的互联网行业,身边的朋友有的选择了勇敢创业,有的则在技术的海洋中默默耕耘.时常在深夜反思,作为一个开发者,我们的价值何在?答案 ...

  3. .NET下 支持大小写不敏感的JSON Schema验证方法

    问题 有很多应用程序在验证JSON数据的时候用到了JSON Schema. 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它 ...

  4. TGI 基准测试

    本文主要探讨 TGI 的小兄弟 - TGI 基准测试工具.它能帮助我们超越简单的吞吐量指标,对 TGI 进行更全面的性能剖析,以更好地了解如何根据实际需求对服务进行调优并按需作出最佳的权衡及决策.如果 ...

  5. 【Playwright+Python】手把手带你写一个自动化测试脚本

    ​ 如何使用代理方式打开网页 在 playwright.chromium.launch() 中传入 proxy 参数即可,示例代码如下: 1.同步写法: 1 from playwright.sync_ ...

  6. Power BI进阶秘籍,干货满满!如何将度量值转化为切片器(动态切换分析指标),实操指南来了!

    Power BI进阶秘籍,干货满满!如何将度量值转化为切片器(动态切换分析指标),实操指南来了!   想要在Power BI中让度量值也能像维度一样灵活筛选?没问题,这里就为你揭秘如何将度量值转化为切 ...

  7. (Java)日志框架体系整理

    # JUL 指的是Java Util Logging包,它是Java原生的日志框架,使用时不需要另外引用第三方的类库,相对其他的框架使用方便,学习简单,主要是使用在小型应用中.@紫邪情 # JUL的组 ...

  8. ABP框架开发实例教程-获取前端样式和脚本

    1.运行生成的ABP框架,设置WEB.MVC项目为启动项目,点击开始运行,界面如下,样式和脚本文件不存在,所以导致界面无法正常显示,这个我研究ABP遇到的第二个坑,第一个坑是生成数据库. 2.为什么没 ...

  9. 汇编语言--cpu的工作原理(寄存器)--手稿

    03

  10. 委托之Action与Func

    1 例程代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...