ABAP Daemons 和 ABAP 后台作业的区别

文摘   2024-10-08 18:18   北京  

由于孩子每天早上 7:40 必须到校开始早读,所以我被迫早起。

送孩子上学路上,顺手把刚刚发布的《使用 ABAP 实现 Web Socket 编程 - 服务器端部分的实现》转发到群里,一个朋友联想到了 ABAP Daemons.

其实介绍 ABAP Daemons 的文章,笔者 2020 年 3 月就写过:

SAP ABAP 守护进程(ABAP Daemons)的实现方式

ABAP Daemons 是 ABAP Platform 1809 引入的新功能之一。ABAP Platform 1809 是 SAP S/4HANA 1809 的底层技术平台,作为 SAP S/4HANA 1809 的一部分随之一起发布。

什么是 Daemon?

Daemon 在计算机科学领域的含义是守护进程。在《计算机操作系统专业课》里讲过,以 Linux 系统为例,Linux 守护进程是运行在后台的一种特殊进程,独立于控制终端并且周期性地执行某种任务,或等待处理某些将要发生的事件。

Linux 系统很多服务都通过守护进程实现,常见的例子有系统日志进程 syslogd,web服务器 httpd,邮件服务器 sendmail 和数据库服务器 mysqld 等。

同理, ABAP Deamons(守护进程)是一种特殊的 Long-Living ABAP Session,其功能与 Linux 守护进程或者 Windows 的 Service 服务进程类似。

一旦 ABAP 应用程序服务器启动 ABAP 守护进程之后,该进程的生命周期可以说没有限制(No Limit of Lifetime)。

即使 ABAP Daemons 在执行过程中出现运行时错误,ABAP Runtimes 也会自动重启这些守护进程。

ABAP 守护进程和后台作业的相同点

有些朋友觉得上述描述的 ABAP 守护进程的行为,与 ABAP 传统的通过 SM36 事务码,将 ABAP 程序以后台作业方式调度运行的做法,二者有相似之处。

确实这两种技术,有以下的相似之处:

🐍 后台运行:ABAP Daemons 和普通的 ABAP 后台作业都在 SAP 系统的后台运行,这意味着它们不需要用户的直接干预。这两种任务都可以在用户下班后或者系统空闲时执行,从而优化系统资源的使用。

🧪 异步处理:无论是 Daemons 还是普通的后台作业,都可以处理异步任务。它们不依赖用户会话的存续,可以在后台执行一系列任务并且独立于前台应用程序。

处理复杂任务:这两种技术都能够处理复杂的业务任务,例如数据批量处理、系统日志分析以及定期的系统维护任务。无论是通过后台作业运行的定时数据清理,还是 Daemon 监听的实时数据变化,都能够有效提高系统的效率。

这些相似点体现了两者作为后台任务处理机制的核心功能,但它们在设计的初衷和实际操作上存在关键的不同。

ABAP 守护进程和后台作业的区别

1. 运行时的持续性

普通的 ABAP 后台作业是一次性的。即使它们可以设置为定期运行,实际上每一次执行都是一个独立的作业实例。一旦任务完成,作业就会结束,直到下一次调度时间来临。因此,后台作业并不适合需要长时间持续运行的任务,例如实时数据监控或者长时间的数据同步。

相比之下,ABAP Daemons 是持续运行的。它们启动后会一直在后台保持活跃,直到明确地终止。这使得 Daemons 非常适合处理需要长期监听和响应的任务,比如实时数据流处理或物联网设备的数据同步。在这些场景中,Daemons 可以有效地保持后台进程的长时间活跃,确保系统可以随时响应外部事件。

比如一家全球零售公司在管理库存时,如果使用传统的 ABAP 后台作业,需要每隔一小时调度一次作业来同步库存数据。这种方式虽然能够处理大部分任务,但在高峰期或者需要实时更新时,系统会因为时间间隔而造成数据延迟。

而 ABAP Daemons 可以持续监控库存数据的变化,实时同步所有仓库的库存状态,不会因为作业调度的间隔而导致数据滞后。

2. 响应速度与事件驱动

ABAP Daemons 的另一个显著优势在于它们是事件驱动的,可以在后台持续监听特定的事件或条件变化,并在触发时立即做出反应。通过这种方式,Daemons 能够即时处理任务,确保系统能够迅速对外部变化做出响应。

普通的 ABAP 后台作业通常通过定时调度执行,因此即使任务是简单的,也会有一定的等待时间。如果一个任务被设定为每隔一小时运行一次,任务执行与实际事件发生之间可能会有长达一个小时的延迟。

比如在银行业务处理系统中,实时交易监控至关重要。如果使用传统的 ABAP 后台作业来处理交易记录,通常会设定每隔几分钟运行一次的作业。然而,银行不能承受任何交易延迟。通过使用 ABAP Daemons,系统可以在每笔交易发生时立即触发监控任务,确保所有的交易数据都能实时进行记录和风控处理。

3. 可靠性与恢复能力

普通的 ABAP 后台作业在执行时如果遇到错误,通常会停止,并通过 SAP 系统中的错误处理机制进行记录。这可能会导致未完成的任务需要重新启动,并且系统管理员需要手动干预来处理失败的任务。

而 ABAP Daemons 具有内置的错误处理和自动恢复机制。即使在任务执行过程中出现故障,Daemons 也能够自动重新启动并继续任务,确保系统的高可用性。特别是在长时间运行的任务中,Daemons 的这种自恢复能力至关重要。

比如一家公司使用 ABAP 后台作业进行定期的数据备份。如果作业在某次执行中遇到系统故障,作业会失败,并需要手动重启,可能导致数据备份的不完整。而使用 ABAP Daemons,数据备份任务会在后台持续运行,并且即使出现系统崩溃,Daemon 也会自动恢复运行,确保数据备份的完整性和持续性。

关于 ABAP Deamons 具体的编程实现,大家可以阅读笔者四年前写的文章,也可以继续关注笔者本公众号接下来新发布的文章。感谢阅读。

码农干货铺
永远要保持一种无论何时何地都逼着自己更努力更优秀来享受更好生活的学习状态
 最新文章