为什么要自建一个离线平台

  1. 可以优化资源利用率。
  2. 业务平台应该把精力放在业务上。

什么是实时计算

  1. 强调响应时间短(相对于离线计算):毫秒级、亚秒级、秒级。T+1 的报表都是离线计算。
  2. 数据的价值随着时间的流逝而迅速降低。
  3. 常见技术方案:
    1. 流计算 + 实时存储 or 消息队列
    2. 流计算 + 实现 OLAP

什么是流式计算

  1. 实时且无界。
  2. 数据驱动计算,事件触发。
  3. 有状态及持续集成。
  4. 流计算引擎:Spark Streaming、Flink Streaming、Storm/JStorm、Samza 等。

Spark Streaming 模型

  1. Micro-Batch 模式。看起来是流式处理的,实际上还是一小批一小批处理的。从批处理走到流处理。
  2. 最小延时:batch 的处理时间
  3. 最大延时:batch interval(通常2s-10s) + batch 处理时间。
  4. 使用场景:数据清洗(实时数据通道)、数据 ETL 等。
  5. 对于熟悉 Spark 批处理的 RD 非常容易上手。

Flink Streaming

  1. Native Streaming。
  2. 低延时,通常在毫秒级。
  3. 使用场景:事件驱动、实时风控、在线业务等。
  4. 比 Spark 更新。

Druid.io

  1. 实时数据存储及多维度聚合计算引擎。
  2. 服务于时间序列数据。
  3. 低延时数据写入(只写消费 kafka),实时数据可见。
  4. 快速交互式查询(99% 查询1秒内返回)。
  5. 支持 SQL 及 DSL 两种查询语言。
  6. 适用场景:实时报表、实时监控。

Presto 模型及服务

  1. 基于全内存计算的分布式 SQL 查询引擎。
  2. 针对响应时间 20S 以内的 OLAP 场景。
  3. 通过 Connector 支持多种数据源。

重流还是轻流

  计算到底是在存储里 OLAP 里算出来,还是从存储里导出来,用流来计算的?

用调整算子并发的方式,可以提升性能瓶颈。