第2章 实时应用的基本组件

本章将带领读者熟悉近实时系统的基本构建模块,向读者介绍这些应用的高级逻辑、物理原理和技术视图,并将涉及系统中每个构建模块的技术选型。

本章主要包括以下内容

  • NRT系统及其构建模块
  • 数据采集
  • 流处理
  • 分析层—服务终端用户
  • NRT的高级系统视图
  • NRT的技术视图

本章读者遇到的首要问题可能是“什么时候应该将应用程序称为NRT应用程序?”简单来讲,一个能够非常接近实时地进行消费、处理和生成结果的应用程序可以称为NRT应用程序,也就是说,从事件发生到结果产生的时间间隔非常小,量级从几纳秒到最多几秒。

传统的单体应用无法满足NRT应用系统的需求,原因主要有以下几个关键点。

  • 后端数据库:单点单体数据访问。
  • 摄入流:管道复杂,容易导致端到端流的延迟。
  • 故障与恢复:系统容易发生故障,恢复方法困难、复杂。
  • 同步和状态捕获:捕获和维护系统中的事务状态非常困难。多样化的分布式系统和实时系统故障的出现使得这类系统的设计和维护变得更加复杂。

解决上述问题的方案之一是以流式传输为架构,从而基于源源不断的实时数据流使终端用户能够实时看到一些实用的结论。设计流处理系统需要考虑几个挑战,并在以下几点中加以说明。

  • 大规模高速系统的局部状态和系统的一致性。
  • 数据不会按相同时间间隔到达,它不断流入,并且一直在流式传输。
  • 后端数据库没有单一的事实状态,而是应用程序订阅或利用事实数据流。

在进一步深入研究之前,我们有必要先来了解一下时间表示法,如图2-1所示。

图2-1

图2-1已经非常清楚地将SLA与每种实现类型(批处理、近实时和实时)以及每个实现所满足的用例类型关联起来。例如,批处理实现的SLA范围从几小时到几天不等,这些解决方案主要用于封闭/预生成报告和趋势预测。实时解决方案具有几秒到几小时的SLA量级,可满足需要AdHoc查询、中等分辨率的聚合器等场景。在SLA方面,实时应用程序是最关键的任务,分辨率是每个事件的计数,其结果必须在事件发生后的毫秒到秒量级延迟后返回。 ...

Get 实时数据处理和分析指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.