You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2022/03/15 09:33:10 UTC

[dolphinscheduler-website] branch master updated: add news How Does 360 DIGITECH process 10, 000+ workflow instances per day (#734)

This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 5c666f1  add news How Does 360 DIGITECH process 10,000+ workflow instances per day (#734)
5c666f1 is described below

commit 5c666f14a34be02e759481c23c48c39a9128cde3
Author: lifeng <53...@users.noreply.github.com>
AuthorDate: Tue Mar 15 17:33:02 2022 +0800

    add news How Does 360 DIGITECH process 10,000+ workflow instances per day (#734)
    
    * add news How Does 360 DIGITECH process 10,000+ workflow instances per day by Apache DolphinScheduler
    
    add news How Does 360 DIGITECH process 10,000+ workflow instances per day by Apache DolphinScheduler
    
    * Update How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md
    
    * updata
---
 ...H_process_10_000+_workflow_instances_per_day.md | 175 +++++++++++++++++++++
 ...H_process_10_000+_workflow_instances_per_day.md | 156 ++++++++++++++++++
 img/2022-3-11/1.jpeg                               | Bin 0 -> 172065 bytes
 img/2022-3-11/10.png                               | Bin 0 -> 118007 bytes
 img/2022-3-11/11.png                               | Bin 0 -> 215541 bytes
 img/2022-3-11/2.png                                | Bin 0 -> 1167425 bytes
 img/2022-3-11/3.png                                | Bin 0 -> 114585 bytes
 img/2022-3-11/4.png                                | Bin 0 -> 115632 bytes
 img/2022-3-11/5.png                                | Bin 0 -> 166034 bytes
 img/2022-3-11/6.png                                | Bin 0 -> 170293 bytes
 img/2022-3-11/7.png                                | Bin 0 -> 113704 bytes
 img/2022-3-11/8.png                                | Bin 0 -> 172435 bytes
 img/2022-3-11/9.png                                | Bin 0 -> 85404 bytes
 img/2022-3-11/Eng/1.jpeg                           | Bin 0 -> 172065 bytes
 img/2022-3-11/Eng/2.png                            | Bin 0 -> 1167425 bytes
 img/2022-3-11/Eng/3.png                            | Bin 0 -> 114585 bytes
 img/2022-3-11/Eng/4.png                            | Bin 0 -> 219813 bytes
 img/2022-3-11/Eng/5.png                            | Bin 0 -> 159844 bytes
 img/2022-3-11/Eng/6.png                            | Bin 0 -> 247334 bytes
 site_config/blog.js                                |  14 ++
 site_config/home.jsx                               |  28 ++--
 21 files changed, 359 insertions(+), 14 deletions(-)

diff --git a/blog/en-us/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md b/blog/en-us/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md
new file mode 100644
index 0000000..43c634c
--- /dev/null
+++ b/blog/en-us/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md
@@ -0,0 +1,175 @@
+---
+title: How Does 360 DIGITECH process 10,000+ workflow instances per day by Apache DolphinScheduler
+keywords: Apache,DolphinScheduler,scheduler,big data,ETL,airflow,hadoop,orchestration,dataops,Meetup,Tujia
+description: ince 2020, 360 DIGITECH has fully migrated its scheduling system from Azkaban to Apache DolphinScheduler
+---
+# How Does 360 DIGITECH process 10,000+ workflow instances per day by Apache DolphinScheduler
+
+<div align=center>
+
+<img src="/img/2022-3-11/Eng/1.jpeg"/>
+
+</div>
+
+Since 2020, 360 DIGITECH has fully migrated its scheduling system from Azkaban to Apache DolphinScheduler. As a senior user of DolphinScheduler, 360 DIGITECH now uses DolphinScheduler to process 10,000+ workflow instances per day. 
+
+To meet the practical needs of big data platform and algorithm model business, 360 DIGITECH has made many modifications on DolphinScheduler such as alarm monitoring expansion,  worker maintenance mode adding, multi-server room renovation, etc. to make it more convenient for operation and maintenance. 
+
+How did they carry out the re-development? Jianmin Liu, a big data engineer at 360 DIGITECH, shared this topic in detail at the Apache DolphinScheduler February Meetup.
+
+<div align=center>
+
+<img style="width: 25%;" src="/img/2022-3-11/Eng/2.png"/>
+
+</div>
+
+Jianmin Liu, a big data engineer from 360 DIGITECH, mainly engaged in the research of ETL task and scheduling framework, and the development of big data platforms and real-time computing platforms.
+
+## Migrate from Azkaban to Apache DolphinScheduler
+
+By 2019, 360 DIGITECH used Azkaban for big data processing.
+
+Azkaban is a batch workflow task scheduler open-sourced by Linkedin. It is easy to install, users can create tasks and upload zip packages for workflow scheduling just by installing the web and executor server.
+
+Azkaban's web-executor architecture is shown as below:
+
+<div align=center>
+
+<img style="width: 40%;" src="/img/2022-3-11/Eng/3.png"/>
+
+</div>
+
+### Disadvantages of Azkaban
+
+Azkaban is suitable for simple scheduling scenarios, and after three years of use, we found three fatal flaws in it.
+
+1. Poor experience
+
+It has no visual task creation feature, and you need to upload a zip package to create and modify tasks, which is not convenient; in addition, Azkaban has no function to manage resource files.
+
+2. Not powerful enough
+
+Azkaban lacks some indispensable features for production environments, such as complement and cross-task dependencies; user and permission control are too weak, and scheduling configuration does not support per month, so we need to make up for it in many other ways in production.
+
+3. Not good enough stability
+
+The most fatal flaw of Azkaban is that it is not stable enough, and tasks are often backlogged when the executor is overloaded; tasks at the hourly or minute level are prone to miss scheduling; there are no timeout alerts, and although we have developed our own limited SMS alerts, we are still prone to production accidents.
+
+We had a retrofit in 2018 to address these shortcomings, but the Azkaban source code was complex and the retrofit was painful, so we decided to re-choose the scheduler. At that time, we tested Airflow, DolphinScheduler, and XXL-job, but the Airflow Python technology stack didn't match ours, and the XXL-job functionality was too simple, so it was clear that DolphinScheduler was the better choice.
+
+In 2019, we Folked the code of EasyScheduler 1.0, migrated parts of it with scheduling tasks in 2020, and went it live until now.
+
+### Selection Research
+
+We chose DolphinScheduler because of its four advantages:
+
+1. Decentralized structure with multiple masters and multiple workers.
+
+2. Scheduling framework is powerful and supports multiple task types with cross-project dependencies and complement capabilities.
+
+3. Good user experience, visual DAG workflows editing, and ease of operation.
+
+4.Java stack with good scalability.
+
+The conversion process was very smooth and we migrated the scheduling system to DolphinScheduler without any problems.
+
+## Use of DolphinScheduler
+
+At 360 DIGITECH, DolphinScheduler is not only used by the Big Data department, but also by the Algorithms department for some of its features. To make it easier for the Algorithms department to use DolphinScheduler's features, we integrated it into our own Yushu Big Data Platform.
+
+### Yushu Big Data Platform
+
+<div align=center>
+
+<img src="/img/2022-3-11/Eng/4.png"/>
+
+</div>
+
+Yushu is a big data platform composed of basic components, Yushu platform, monitoring&operation, and business service layer, which can do a query, data real-time calculation, message queue, real-time data warehouse, data synchronization, data governance, and others. Among them, offline scheduling uses DolphinScheduler to schedule the ETL task of scheduling data sources to Hive data warehouse, as well as supports TiDB real-time monitoring, real-time data reports, and other functions.
+
+### DolphinScheduler Nested to Yushu
+
+To support the company's algorithm modeling needs, we extracted some common nodes and nested a layer of UI with API calls.
+
+The algorithm department mostly uses Python scripts and SQL nodes, timed with box-table logic, then configured with machine learning algorithms for training, and then called the model in Python to generate model scores after assembling data. We wrapped some Kafka nodes to read Hive data and push it to Kafka via Spark.
+
+### Task Type
+
+<div align=center>
+
+<img src="/img/2022-3-11/Eng/5.png"/>
+
+</div>
+
+DolphinScheduler supports Shell, SQL, Python, and Jar task types. Shell supports Sqoop DataX mr synchronization task and Hive-SQL, Spark-SQL; SQL node mainly supports TiDB SQL (handling upstream sub-base and sub-table monitoring) and Hive SQL. Python task types support offline calls to model scripts, etc.; and Jar packages mainly support Spark Jar offline management.
+
+### Task Scenario
+
+<div align=center>
+
+<img src="/img/2022-3-11/Eng/6.png"/>
+
+</div>
+
+The task scenario of DolphinScheduler is mainly about synchronizing various data sources such as MySQL, Hbase, etc. to Hive, and then generating DW directly through ETL workflow, assembling or calling through Python scripts, generating models and rule results, and then pushing them to Kafka, which will offer risk control system quota, approval, and analysis, and feed the results to the business system. This shows a complete workflow example of the DolphinScheduler scheduling process.
+
+### Operations and Maintenance of DolphinScheduler
+
+Currently, DolphinScheduler is processing 10000+ workflows per day.  Considering the fact that many offline reports depend on DolphinScheduler, operation and maintenance is very important.
+
+At 360 DIGITECH, the operation and maintenance of DolphinScheduler are divided into three parts:
+
+* DS Dependent Components Operations and Maintenance
+
+The DolphinScheduler dependent component of DolphinScheduler is mainly for MySQL monitoring and Zookeeper monitoring.
+
+Because workflow definition meta information, workflow instances&task instances, Quartz scheduling, and Commands all rely on MySQL, MySQL monitoring is critical. There was a time when our network in the server room went down causing many workflow instances to miss schedule, and the problems are troubleshoot by the follow-up MySQL monitoring.
+
+The importance of Zookeeper monitoring also goes without saying. The master-worker state and task queue both rely on Zookeeper, fortunately, Zookeeper has been stable and no problems have occurred yet.
+
+* Master and Worker Status Monitoring
+As we all know, the Master is responsible for task slicing, which actually does not have a great impact on the business, so we just use emails to monitor it; however, a hung worker will cause task delays and increase the pressure on the cluster. In addition, if Yarn tasks are killed unsuccessfully, task tolerance may lead to repeated Yarn tasks, so we use phone alerts to monitor worker status.
+
+### Grafana Big Board Monitoring Workflow Instance Status
+
+For this, we have created a Grafana monitoring dashboard for Ops, which can monitor the status of workflow instances in real-time, including the number of workflow instances, the running status of workflow instances by project, and timeout warning settings.
+
+## DolphinScheduler Retrofit
+
+### Experience optimization
+
+1. Authorize individuals to resource files and projects, and resource files distinguish between edit and readable to facilitate authorization.
+
+2. Extend global variables (process definition id, task id, etc. included into global variables), allow tasks submitted to yarn to be tracked to the scheduled tasks, facilitate cluster management, lock resources by counting workflow instances to facilitate maintenance.
+
+3. Carry workflow replication, task instance query interface optimization to speed up query speed, and optimize UI.
+
+### Add SMS alert
+
+To make up for the weakness of the original email alert, we added an SMS alert to the UI to save the workflow definition to ensure the key tasks be monitored properly. In addition, we also changed the alert receivers to user names and extended the AlertType to SMS, email, and other alert methods to associate with user information, such as cell phone numbers, to ensure that we can receive alerts in time when important tasks fail.
+
+### Add maintenance mode to Worker 
+
+When a worker machine needs maintenance, it's necessary to ensure no new tasks are submitted to the worker. For this, we have added a maintenance mode to the worker, which consists of four main points.
+
+1. The UI sets the worker into maintenance mode, calling the API to write to the zk path specified by the worker.
+
+2.WorkerServer performs scheduled polling for maintenance mode or not.
+
+3.WorkerServer in maintenance mode, FetchTaskThread not fetching new tasks.
+
+4. The worker task finishes running and can be restarted.
+
+After the above reform, the pressure on our O&M is greatly reduced.
+
+### Multi-server room renovation
+
+Finally, we also performed a multi-server room renovation. Since we had 2 clusters in different server rooms, our goal was to set up multiple server rooms in scheduling, so that when one server room fails, we can switch to others with one click, and use the same scheduling framework in multiple server rooms.
+
+The pointcut for the renovation is to set up multi-server rooms in the scheduling to ensure that a certain task can be started in multiple server rooms. The renovation process went like this:
+
+1. ZK is deployed in each server room, and the Master and Worker are registered to the corresponding server room, the Master is responsible for task slicing, and the Worker is responsible for task processing. 
+
+2. Attach schedule and command with datacenter information.
+
+3. To ensure dual-server room task switching, resource files are uploaded for upper room tasks, while changing task interfaces, task dependencies, and Master fault tolerance all need to be modified to match the corresponding room.
diff --git a/blog/zh-cn/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md b/blog/zh-cn/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md
new file mode 100644
index 0000000..a6a05c0
--- /dev/null
+++ b/blog/zh-cn/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.md
@@ -0,0 +1,156 @@
+# 日均处理 10000+ 工作流实例,Apache DolphinScheduler 在 360 数科的实践
+
+<div align=center>
+<img src="/img/2022-3-11/1.jpeg"/>
+</div>
+
+>从 2020 年起,360 数科全面将调度系统从 Azkaban 迁移到 Apache DolphinScheduler。作为 DolphinScheduler 的资深用户,360 数科如今每天使用 DolphinScheduler 日均处理 10000+ 工作流实例。为了满足大数据平台和算法模型业务的实际需求,360 数科在 DolphinScheduler 上进行了告警监控扩展、worker增加维护模式、多机房等改造,以更加方便运维。他们具体是如何进行二次开发的呢?**360 数科大数据工程师 刘建敏** 在不久前的 Apache DolphinScheduler 2 月份的 Meetup 上进行了详细的分享。
+<div align=center>
+<img style="width: 25%;" src="/img/2022-3-11/2.png"/>
+</div>
+
+刘建敏
+
+360 数科 大数据工程师,主要从事 ETL 任务与调度框架的研究,大数据平台以及实时计算平台的开发。
+
+## 从 Azkaban 迁移到 DolphinScheduler
+
+2019 年之前,360 数科采用 Azkaban 调度进行大数据处理。
+
+Azkaban 是由 Linkedin 开源的批量工作流任务调度器。其安装简单,只需安装 web 与 executor server,就可以创建任务,并通过上传 zip 包实现工作流调度。
+
+Azkaban 的 web-executor 架构如下图所示:
+
+<div align=center>
+<img style="width: 40%;" src="/img/2022-3-11/3.png"/>
+</div>
+
+
+### Azkaban 的缺点
+
+Azkaban 适用于场景简单的调度,经过三年时间的使用,我们在发现它存在三个重要缺陷:
+
+1. 体验性差
+没有可视化创建任务功能,创建与修改任务都需要通过上传 zip 包来实现,这并不方便;另外,Azkaban 没有管理资源文件功能。
+
+2. 功能不够强大
+Azkaban 缺乏一些生产环境中不可或缺的功能,比如补数、跨任务依赖功能;用户与权限管理太弱,调度配置不支持按月,在生产上我们需要用很多其他方式进行弥补。
+
+3. 稳定性不够好
+最重要的一点是 Azkaban 稳定性不够,当 executor 负载过高时,任务经常会出现积压;小时级别或分钟级别的任务容易出现漏调度;没有超时告警,虽然我们自己开发了有限的短信告警,但还是容易出现生产事故。
+
+<div align=center>
+<img src="/img/2022-3-11/4.png"/>
+</div>
+
+
+针对这些缺陷,我们在 2018 曾进行过一次改造,但由于 Azkaban 源码复杂,改造的过程很是痛苦,因此我们决定重新选型。当时,我们测试了 Airflow、DolphinScheduler 和 XXL-job,但 Airflow Python 的技术栈与我们不符,而 XXL-job 功能又过于简单,显然,DolphinScheduler 是更好的选择。
+
+2019 年,我们 Folk 了 EasyScheduler 1.0 的代码,在 2020 年进行改造与调度任务的部分迁移,并上线运行至现在。
+
+### DolphinScheduler 选型调研
+
+为什么我们选择 DolphinScheduler?因为其有四点优势:
+
+1. 去中心化结构,多 Master 多 Worker;
+2. 调度框架功能强大,支持多种任务类型,具备跨项目依赖、补数功能;
+3. 用户体验性好,可视化编辑 DAG 工作流,操作方便;
+4. Java 技术栈,扩展性好。
+### 
+改造过程非常流畅,我们顺利地将调度系统迁移到了 DolphinScheduler。
+
+## DolphinScheduler 的使用
+在 360 数科,DolphinScheduler 不仅用于大数据部门,算法部门也在使用其部分功能。为了让算法模型部们更方便地使用 DolphinScheduler 的功能,我们将其整合进了我们自己的毓数大数据平台。
+
+### 毓数大数据平台
+
+<div align=center>
+<img src="/img/2022-3-11/5.png"/>
+</div>
+毓数是一个由基础组件、毓数平台、监控运维和业务支撑层组成的大数据平台,可实现查询、数据实时计算、消息队列、实时数仓、数据同步、数据治理等功能。其中,离线调度部分便是通过 DolphinScheduler 调度数据源到 Hive 数仓的 ETL 任务,以及支持 TiDB 实时监控,以实时数据报表等功能。
+
+### DolphinScheduler 嵌套到毓数
+
+为了支持公司算法建模的需求,我们抽取了常用的一些节点,并嵌套了一层 UI,并调用 API。
+
+<div align=center>
+<img src="/img/2022-3-11/6.png"/>
+</div>
+算法部门多用 Python 脚本和 SQL 节点,用框表逻辑进行定时,再配置机器学习算法进行训练,组装数据后用 Python 调用模型生成模型分。我们封装了一些 Kafka 节点,通过 Spark 读取 Hive 数据并推送到 Kafka。
+
+### 任务类型
+
+<div align=center>
+<img src="/img/2022-3-11/7.png"/>
+</div>
+DolphinScheduler 支持的任务类型有 Shell、SQL、Python 和 Jar。其中,Shell 支持 Sqoop DataX mr 同步任务和 Hive-SQL、Spark-SQL;SQL 节点主要是支持 TiDB SQL(处理上游分库分表的监控) 和 Hive SQL;Python 任务类型支持离线调用模型脚本等;Jar 包主要支持 Spark Jar 离线管理。
+
+### 任务场景
+
+<div align=center>
+<img src="/img/2022-3-11/8.png"/>
+</div>
+DolphinScheduler 的任务场景主要是将各种数据源,如 MySQL、Hbase 等数据源调度同步至 Hive,再通过 ETL 工作流直接生成 DW。通过 Python 脚本组装或调用,生成模型和规则结果,再推送到 Kafka。Kafka 会给出风控系统调额、审批和分析,并将结果反馈给业务系统。这就是 DolphinScheduler 调度流程的一个完整工作流示例。
+
+## DolphinScheduler 的运维
+
+目前 ,DolphinScheduler 日均处理工作流已达到 10000+ 的规模,很多离线报表依赖于 DolphinScheduler,因此运维非常重要。
+
+### 
+在 360 数科,对 DolphinScheduler 的运维主要分为三部分:
+
+* DS 依赖组件运维
+<div align=center>
+<img src="/img/2022-3-11/9.png"/>
+</div>
+
+DolphinScheduler 依赖组件的运维主要是针对 MySQL 监控和 Zookeeper 监控。
+
+因为工作流定义元信息、工作流实例和任务实例、Quartz 调度、Command 都依赖 MySQL,因此 MySQL 监控至关重要。曾经有一次机房网络中断,导致很多工作流实例出现漏调度,之后通过 MySQL 监控才得以排查。
+
+Zookeeper 监控的重要性也不言而喻,Master worker 状态和 task 队列都依赖 Zookeeper,但运行至今,Zookeeper 都比较稳定,还未有问题发生。
+
+* Master 与 Worker 状态监控
+我们都知道,Master 负责的是任务切分,实际上对业务的影响并不是很大,因此我们采用邮件监控即可;但 Worker 挂掉会导致任务延迟,增加集群压力。另外,由于之前 Yarn 运行任务不一定被成功地 kill,任务容错还可能导致 Yarn 任务重复运行,因此我们对  Worker 状态采用电话告警。
+
+### Grafana 大盘监控工作流实例状态
+
+<div align=center>
+<img src="/img/2022-3-11/10.png"/>
+</div>
+此外,我们还为运维创建了 Grafana 监控看板,可以实时监控工作流实例的状态,包括工作流实例的数量,各项目工作流实例运行状态,以及超时预警设置等。
+
+## DolphinScheduler 改造
+
+### 体验性改造
+
+1. 增加个人可以授权资源文件与项目,资源文件区分编辑与可读权限,方便授权;
+2. 扩展全局变量(流程定义id, 任务id等放到全局变量中),提交到yarn上任务可追踪到调度的任务,方便集群管理,统计工作流实例锁好资源,利于维护
+3. 工作流复制、任务实例查询接口优化,提高查询速度,以及 UI 优化。
+### 增加短信告警改造
+
+因为原有的邮箱告警不足以保证重要任务的监控,为此我们在 UI 上增加了 SMS 告警方式,保存工作流定义。另外,我们还把告警 receivers 改造成用户名,通过 AlertType 扩展成短信、邮箱等告警方式关联到用户信息,如手机号等,保证重要性任务失败后可以及时收到告警。
+
+### Worker 增加维护模式改造
+
+此外,当 worker 机器需要维护时,需要这台 worker 上不会有新的运行任务提交过来。为此,我们对 worker 增加了维护模式改造,主要包括 4 点:
+
+1. UI 设置 worker 进行维护模式,调用 API 写入worker 指定的 zk 路径;
+2. WorkerServer 进行定时调度轮询是否维护模式;
+3. WorkerServer 进行维护模式,FetchTaskThread 不获取新增任务;
+4. worker 任务运行结束,可进行重启。
+经过以上改造,我们运维的压力大大减轻。
+
+### 多机房改造
+
+最后,我们还进行了多机房改造。因为我们之前有 2 套集群,分布在不同的机房,我们的改造目标是在调度中设置多机房,这样当某一个机房出现故障后,可一键切换到其他机房使用,实现多机房使用同一套调度框架。
+
+<div align=center>
+<img src="/img/2022-3-11/11.png"/>
+</div>
+
+改造的切入点就是在调度中设置多机房,以保证某一任务可以在多机房启动。改造流程如下:
+
+1. 在各机房分别部署 ZK,Master 与 Worker 注册到对应的机房,Master 负责任务切分,Worker 负责任务处理,各自处理各机房的任务; 
+2. schedule 与 command 带上 datacenter 信息
+3. 为保证双机房任务切换,资源文件进行上机房任务上传,同时改动任务接口,任务依赖、Master容错都需要改造过滤对应机房。
\ No newline at end of file
diff --git a/img/2022-3-11/1.jpeg b/img/2022-3-11/1.jpeg
new file mode 100644
index 0000000..9a400c3
Binary files /dev/null and b/img/2022-3-11/1.jpeg differ
diff --git a/img/2022-3-11/10.png b/img/2022-3-11/10.png
new file mode 100644
index 0000000..089c503
Binary files /dev/null and b/img/2022-3-11/10.png differ
diff --git a/img/2022-3-11/11.png b/img/2022-3-11/11.png
new file mode 100644
index 0000000..9b563f3
Binary files /dev/null and b/img/2022-3-11/11.png differ
diff --git a/img/2022-3-11/2.png b/img/2022-3-11/2.png
new file mode 100644
index 0000000..2c8d6f9
Binary files /dev/null and b/img/2022-3-11/2.png differ
diff --git a/img/2022-3-11/3.png b/img/2022-3-11/3.png
new file mode 100644
index 0000000..59ddd52
Binary files /dev/null and b/img/2022-3-11/3.png differ
diff --git a/img/2022-3-11/4.png b/img/2022-3-11/4.png
new file mode 100644
index 0000000..864ba98
Binary files /dev/null and b/img/2022-3-11/4.png differ
diff --git a/img/2022-3-11/5.png b/img/2022-3-11/5.png
new file mode 100644
index 0000000..3f7be6a
Binary files /dev/null and b/img/2022-3-11/5.png differ
diff --git a/img/2022-3-11/6.png b/img/2022-3-11/6.png
new file mode 100644
index 0000000..1e9b14e
Binary files /dev/null and b/img/2022-3-11/6.png differ
diff --git a/img/2022-3-11/7.png b/img/2022-3-11/7.png
new file mode 100644
index 0000000..40f9013
Binary files /dev/null and b/img/2022-3-11/7.png differ
diff --git a/img/2022-3-11/8.png b/img/2022-3-11/8.png
new file mode 100644
index 0000000..f5939d3
Binary files /dev/null and b/img/2022-3-11/8.png differ
diff --git a/img/2022-3-11/9.png b/img/2022-3-11/9.png
new file mode 100644
index 0000000..6b22209
Binary files /dev/null and b/img/2022-3-11/9.png differ
diff --git a/img/2022-3-11/Eng/1.jpeg b/img/2022-3-11/Eng/1.jpeg
new file mode 100644
index 0000000..9a400c3
Binary files /dev/null and b/img/2022-3-11/Eng/1.jpeg differ
diff --git a/img/2022-3-11/Eng/2.png b/img/2022-3-11/Eng/2.png
new file mode 100644
index 0000000..2c8d6f9
Binary files /dev/null and b/img/2022-3-11/Eng/2.png differ
diff --git a/img/2022-3-11/Eng/3.png b/img/2022-3-11/Eng/3.png
new file mode 100644
index 0000000..59ddd52
Binary files /dev/null and b/img/2022-3-11/Eng/3.png differ
diff --git a/img/2022-3-11/Eng/4.png b/img/2022-3-11/Eng/4.png
new file mode 100644
index 0000000..1c9c3be
Binary files /dev/null and b/img/2022-3-11/Eng/4.png differ
diff --git a/img/2022-3-11/Eng/5.png b/img/2022-3-11/Eng/5.png
new file mode 100644
index 0000000..4bdcbdc
Binary files /dev/null and b/img/2022-3-11/Eng/5.png differ
diff --git a/img/2022-3-11/Eng/6.png b/img/2022-3-11/Eng/6.png
new file mode 100644
index 0000000..f356a55
Binary files /dev/null and b/img/2022-3-11/Eng/6.png differ
diff --git a/site_config/blog.js b/site_config/blog.js
index 2ff9464..dbd5468 100644
--- a/site_config/blog.js
+++ b/site_config/blog.js
@@ -4,6 +4,13 @@ export default {
         postsTitle: 'All posts',
         list: [
             {
+                title: 'How Does 360 DIGITECH process 10,000+ workflow instances per day by Apache DolphinScheduler',
+                author: 'Debra Chen',
+                dateStr: '2022-3-15',
+                desc: 'ince 2020, 360 DIGITECH has fully migrated its scheduling system from Azkaban to Apache DolphinScheduler.. ',
+                link: '/en-us/blog/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.html',
+            },
+            {
                 title: 'Exploration and practice of Tujia Big Data Platform Based on Apache DolphinScheduler',
                 author: 'Debra Chen',
                 dateStr: '2022-3-10',
@@ -153,6 +160,13 @@ export default {
         postsTitle: '所有文章',
         list: [
             {
+                title: '日均处理 10000+ 工作流实例,Apache DolphinScheduler 在 360 数科的实践',
+                author: 'Debra Chen',
+                dateStr: '2022-3-15',
+                desc: '从 2020 年起,360 数科全面将调度系统从 Azkaban 迁移到 Apache DolphinScheduler......',
+                link: '/zh-cn/blog/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.html',
+            },
+            {
                 title: '途家大数据平台基于 Apache DolphinScheduler 的探索与实践',
                 author: 'Debra Chen',
                 dateStr: '2022-3-10',
diff --git a/site_config/home.jsx b/site_config/home.jsx
index 21fd639..165744b 100644
--- a/site_config/home.jsx
+++ b/site_config/home.jsx
@@ -55,6 +55,13 @@ export default {
       title: '事件 & 新闻',
       list: [
         {
+          img: '/img/2022-3-11/1.jpeg',
+          title: '日均处理 10000+ 工作流实例,Apache DolphinScheduler 在 360 数科的实践',
+          content: '从 2020 年起,360 数科全面将调度系统从 Azkaban 迁移到 Apache DolphinScheduler...',
+          dateStr: '2022-3-15',
+          link: '/zh-cn/blog/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.html',
+        },
+        {
           img: '/img/2022-3-9/1.jpeg',
           title: '途家大数据平台基于 Apache DolphinScheduler 的探索与实践',
           content: '途家在 2019 年引入 Apache DolphinScheduler,在不久前的 Apache DolphinScheduler 2...',
@@ -68,13 +75,6 @@ export default {
           dateStr: '2022-3-7',
           link: '/zh-cn/blog/Apache_dolphinScheduler_2.0.5.html',
         },
-        {
-          img: '/img/2022-02-22/1.jpeg',
-          title: 'Apache DolphinScheduler在Kubernetes体系中的技术实战',
-          content: '基于笔者所在公司业务的特性,阐述我们使用 Kubernetes 作为Apache DolphinScheduler的技术底座的原因: ...',
-          dateStr: '2022-2-22',
-          link: '/zh-cn/blog/DolphinScheduler_Kubernetes_Technology_in_action.html',
-        },
       ],
     },
     ourusers: {
@@ -547,6 +547,13 @@ export default {
       title: 'Events & News',
       list: [
         {
+          img: '/img/2022-3-11/1.jpeg',
+          title: 'How Does 360 DIGITECH process 10,000+ workflow instances per day by Apache DolphinScheduler',
+          content: 'ince 2020, 360 DIGITECH has fully migrated its scheduling system from Azkaban to Apache DolphinScheduler....',
+          dateStr: '2022-2-24',
+          link: '/en-us/blog/How_Does_360_DIGITECH_process_10_000+_workflow_instances_per_day.html',
+        },
+        {
           img: '/img/2022-3-9/Eng/1.jpeg',
           title: 'Exploration and practice of Tujia Big Data Platform Based on Apache DolphinScheduler',
           content: 'Tujia introduced Apache DolphinScheduler in 2019...',
@@ -560,13 +567,6 @@ export default {
           dateStr: '2022-3-7',
           link: '/en-us/blog/Apache_dolphinScheduler_2.0.5.html',
         },
-        {
-          img: '/img/2022-02-24/1.jpeg',
-          title: 'Technical Practice of Apache DolphinScheduler in Kubernetes System',
-          content: 'Kubernetes is a cluster system based on container technology....',
-          dateStr: '2022-2-24',
-          link: '/en-us/blog/DolphinScheduler_Kubernetes_Technology_in_action.html',
-        },
       ],
     },
     userreview: {