实时、准实时和批处理的定义是什么?请举例说明每种情况。

11
我试图得到一个关于实时、准实时和批处理的良好定义。我不是在谈论同步和异步,尽管对我来说它们是不同的维度。以下是我的想法:
- 实时是同步 Web 服务或异步 Web 服务。 - 准实时可以是 JMS 或消息系统,或者大多数事件驱动系统。 - 批处理对我来说更像是一个定时系统,在它唤醒时进行处理。
请给出每个示例,并随意纠正我的假设。

2
嗯,我一直以为批处理是指启动旧的O29计算机并将卡片带到窗户旁。 - Richard Pennington
首先阅读“关于实时”的标签。 - andersoj
然后在029之后,就到了083,然后是407。我的教练会在分类箱中的卡片之间放小橡皮筋。 - dbasnett
4个回答

31

https://stackoverflow.com/tags/real-time/info

实时

实时意味着活动完成的时间是其功能正确性的一部分。例如,sqrt()函数的正确性大致如下:

如果对于所有x>=0,sqrt(x) = y,则sqrt()函数已正确实现,且y^2 == x。

在这种情况下,执行sqrt()过程所需的时间不是其功能正确性的一部分。某些定性意义上更快的算法可能更好,但并不更正确或更不正确。

假设我们有一个名为sqrtrt()的神话般的函数,它是平方根的实时版本。例如,我们需要计算速度的平方根,以便在防抱死制动系统中正确执行下一个刹车应用程序。在这种情况下,我们可能会说:

如果对于所有x>=0,sqrtrt(x) = y,则sqrtrt()函数已正确实现,且y^2 == x,并且sqrtrt()返回结果小于等于275微秒。

在这种情况下,时间约束不仅是性能参数。如果 sqrtrt()未在275微秒内完成,则您可能会延迟刹车,触发打滑或减少制动效率,可能导致事故。时间限制是例程功能正确性的一部分。将其提升几层,您将得到一个实时系统,其中包含具有及时性作为其功能正确性条件的活动(至少部分组成)。

准实时

准实时系统是指完成时间、响应性或相对于挂钟时间的感知延迟等方面是系统质量重要方面的系统。典型的例子是股票行情系统-您希望在价格变化后相当快地获取报价。对于我们大多数非高速交易者来说,这意味着可感知的数据可用性和我们看到它之间的延迟可以忽略不计。
“实时”和“准实时”的区别在于精度和数量级的差异。实时系统的时间约束范围从微秒到小时不等,但这些时间约束往往相当精确。准实时通常意味着更窄的数量级范围-在人类感知容忍范围内-但通常没有明确定义。
我认为可以称准实时系统为实时系统,但它们的时间限制仅是概率性的:

股票价格将在其在交易所变化后500ms内显示给用户,概率p> 0.75。

批处理

批处理操作是指被视为大型计算任务块的操作,只有宏观、人为或过程引起的截止日期。通常情况下,计算的具体上下文并不重要,批处理计算通常是一个自包含的计算任务。实时和准实时任务通常与物理世界紧密耦合,其时间约束来自于对物理/真实世界交互的需求。相比之下,批处理操作可以在任何时间和任何地点进行计算;它们的输出仅由在定义批处理时提供的输入定义。

原始帖子

我认为实时意味着完成操作所需的时间(而不仅仅是正确的输出)是其正确性的一部分。

准实时是想要与实时相同的东西,但不想去保证纪律/努力/成本的诡辩话语。

批处理是“准实时”,在这种情况下,您甚至更容忍长时间的响应时间。

通常这些术语(在我看来很糟糕)用于区分人类对延迟/性能的感知。人们认为实时是非常快的,例如,毫秒级或其他东西。准实时通常是秒或毫秒级。批处理是几秒、几分钟、几小时甚至几天的延迟。但我认为这些区别并不特别有用。如果您关心及时性,有学科可以帮助您实现这一点。


你会如何给它打标签?你会如何以正确的方式表达它? - Albert T. Wong
@Albert - 这是一个更全面的回答尝试。如果您想要有针对性的额外回复,请更新您的问题,我会尝试进一步完善。 - andersoj
1
我喜欢“准实时”是一个概率时间限制的想法。这与我的观念相符,即准实时系统通常能够跟上现实世界的输入,但可能会有一些延迟,并且在处理突发的快速输入时可能会落后一些(但当输入速率再次减慢时,它应该最终赶上)。您的定义还与机器学习中的“可能近似正确”有一个很酷的相似之处。(如果不熟悉,每个人都应该查找一下这个概念,它非常强大。) - travc

2
我对此很感兴趣,实时和批处理已经有了明确定义并由其他人覆盖(尽管请注意,在某些上下文中,它们是具有非常特定的技术含义的专业术语)。然而,“准实时”对我来说似乎更加模糊。
我倾向于(并一直在使用)“准实时”来描述一个信号处理系统,该系统可以平均跟上,但有时会滞后。想象一下处理偶尔发生的事件的系统... 假设它具有足够的缓冲能力,并且处理事件所需的时间小于事件之间的平均时间,则它可以跟上。
在信号处理环境中: - 实时似乎意味着保证在接收到信号后的指定(短)延迟后完成处理的系统。需要最小缓冲区。 - 准实时(如我一直在使用的那样)意味着接收和处理完成之间的延迟可能偶尔会变得相对较大,但系统不会(除非在病态条件下)落后到缓冲区被填满的程度。 - 批处理对我来说意味着后处理。传入的信号只是保存(可能带有一些实时预处理),然后稍后进行分析。
这提供了一个很好的框架,即实时和准实时是可以(理论上)连续运行并获取新数据的系统... 处理与采集同时进行。批处理发生在收集所有数据之后。
无论如何,我可能会与我不知道的某些技术定义相冲突...并且我认为如果需要的话,这里的某个人会欣然纠正我。

1
这些答案都存在问题,因为它们的定义是有缺陷的。例如,“批处理”仅意味着将交易分组并一起发送。实时意味着事务性,但也可能有其他含义。因此,当您将“批处理”与实时和准实时相同属性组合在一起时,该属性的目的变得不清晰。定义变得不够紧密,不够清晰。这将使使用数据创建的任何应用程序更加脆弱。我猜想,从业者最好采用明确定义的分类法,例如:
  • 属性1:批处理(分组)或单个交易。
  • 属性2:计划(时间驱动),事件驱动。
  • 属性3:每笔交易的速度。对于批处理,这将是平均速度/交易。
  • 属性4:协议/技术:SOAP、REST、组合、FTP、SFTP等数据传输方式。
  • 属性x:随意。

Attribute4与我正在做的事情更相关,因此您可以将其排除或扩展列表以实现您想要实现的目标。对于每个这些属性值,可能会有其他特定的属性。但是为了将信息汇集起来,我们需要考虑使集体数据有用所需的内容。例如,我们需要知道批处理和事务流之间的差异,以使它们一起有用。例如,您可以考虑为每个属性提供能够理解给定时间段内总吞吐量的能力。看起来很有趣,我们可以为业务客户创建概念、逻辑和物理数据模型(希望如此),但我们并不总是将这种思考方式应用于如何定义我们讨论中的术语。


0
任何系统中,产生输出的时间都是重要的。这通常是因为输入对应于物理环境或世界中的某些运动,而输出必须与相同的运动相关。从输入到输出的延迟时间必须足够小,以满足可接受的时间表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接