随着创新速度的持续加快,开发人员需要在任意给定时间段内分析太字节甚至拍字节的数据。这当然带来了诸多优势。但如何处置所有这些数据?要找到加速这些技术的最佳方法可能很困难,特别是在需要快速反应的场景下。
对于数字化优先的企业而言,如何最优地使用实时处理、批处理和流处理已成为日益重要的问题。本文将解释这些数据处理类型的基本差异。
实时操作系统通常指对数据的反应。如果一个系统能够保证在严格的现实截止时间内(通常为几秒或几毫秒)完成反应,则可归类为实时系统。股票市场使用的系统就是实时系统的最佳范例之一。如果股票报价应在下单后10毫秒内从网络传来,这将被视为实时过程。无论这是通过利用流处理的软件架构实现,还是仅通过硬件处理实现,都无关紧要;严格截止时间的保证才是使其成为实时的关键。
虽然这类系统听起来具有颠覆性,但现实是通过常见软件系统实现实时系统极为困难。由于这些系统控制了程序执行,它们带来了全新层次的抽象。这意味着程序的控制流与源代码之间的区别不再明显,因为实时系统选择在那一刻执行哪个任务。这有其益处,因为通过更高抽象可以提高生产力,并使设计复杂系统更容易,但也意味着整体控制力减弱,这可能使调试和验证变得困难。
实时操作系统的另一个常见挑战是任务并非孤立实体。系统决定调度哪些任务,并先发送高优先级任务,然后再处理低优先级任务,从而延迟后者的执行,直到所有高优先级任务完成。越来越多的软件系统开始采用一种实时处理的变体,其中截止时间不再是绝对要求,而是概率性的。这种称为软实时系统,通常或一般能够满足截止时间,但如果错过太多截止时间,性能将开始下降。
当您持续输入和处理数据,并处理稳定的数据输出流时,就需要实时处理。以下是一些需要实时处理的实际场景:
批处理是一次性处理大量数据。数据很容易包含一天内的数百万条记录,并可以多种方式(文件、记录等)存储。作业通常以不间断的顺序同时完成。批处理数据作业的一个典型例子是金融机构可能在一周内提交的所有交易。
批处理数据处理是处理随时间收集的大量数据的极其高效的方式。它还有助于减少企业可能在劳动力上花费的运营成本,因为它不需要专业的数据录入文员来支持其运行。它可以离线使用,并让管理人员完全控制何时开始处理,无论是在夜间、周末还是薪酬周期结束时。
与任何事物一样,使用批处理软件也有一些缺点。企业面临的最大问题之一是调试这些系统可能很棘手。如果您没有专门的IT团队或专业人员,在发生错误时尝试修复系统可能会带来损害,导致需要外部顾问协助。
批处理的另一个问题是公司通常为了省钱而实施它,但软件和培训在初期需要相当多的费用。管理人员需要接受培训以理解:
对于时间敏感性较低的工作,批处理可能是一个高效的选择。当处理可能需要数小时甚至数天时间无关紧要时,您不需要实时或近实时选项。
流处理是能够几乎即时分析从一个设备流到另一个设备的数据的过程。这种连续计算方法在数据流经系统时发生,对输出没有强制性的时间限制。由于几乎即时的流动,系统不需要存储大量数据。
如果您希望跟踪的事件频繁发生且在时间上接近,流数据处理非常有益。如果事件需要立即检测并快速响应,最好使用它。因此,流处理对于欺诈检测和网络安全等任务很有用。如果交易数据经过流处理,欺诈性交易甚至可以在完成之前就被识别和停止。
以下细节说明数据流处理的工作原理:
组织在流处理中面临的最大挑战之一是系统的长期数据输出速率必须与长期数据输入速率一样快或更快,否则系统将开始出现存储和内存问题。
另一个挑战是试图找出应对正在生成和移动的海量数据的最佳方法。为了保持数据流经系统在最高水平运行,组织有必要制定计划,以减少副本数量、定位计算内核,以及以最佳方式利用缓存层次结构。
流处理在几个核心功能中很有帮助:
虽然所有这些系统都有优势,但最终组织应考虑每种方法的潜在好处,以决定哪种方法最适合具体用例。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。