ABAP Daemons 和 ABAP 后台作业的区别

文摘   2024-10-08 07:00   四川  

由于孩子每天早上 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 具体的编程实现,大家可以阅读笔者四年前写的文章,也可以继续关注笔者本公众号接下来新发布的文章。感谢阅读。

汪子熙
企业管理软件领域开发专家
 最新文章